1 운영체제 개념

1.1 운영체제 정의

사용자와 컴퓨터 하드웨어 사이에서 중계역할을 하면서, 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어 운영체제는 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어

운영체제는 모든 컴퓨터 자원(resource)을 관리한다.

자원: 하드웨어/소프트웨어/데이터

운영체제는 자원을 독점(exclusive)한다.

자원에 대한 접근과 관리 권한이 오직 운영체젱에게만 있음

운영체제는 관리자(supervisor)이다.

  1. 사용자 관리
  2. 프로그램의 실행에 관한 일체의 자원관리
  3. 성능 관리
  4. 보안 관리

운영체제는 소프트웨어(Software)이다.

커널(kernel), UI(User Interface), 도구 프로그램들(tool/utility), 디바이스 드라이버(device driver)로 구성

1.2 운영체제의 목적과 기능

사용자의 컴퓨터 사용 편리선 자원의 효율적 사용과 관리

  • CPU/프로세스 관리(process management)
  • 메모리 관리(memory management)
  • 파일 시스템 관리(file system management)
  • 장치관리(device managememt)
  • 네트워크 관리
  • 보안 관리
  • 기타 관리

1.3 운영체제와 응용소프트웨어

운영체제응용소프트웨어
목적컴퓨터 하드웨어나 응용소프트웨어 등 자원 관리컴퓨터 사용자들의 요구를 충족시킬 수 있도록 설계된 소프트웨어
기능프로세스, 메모리, 파일 시스템, 입출력 장치 등 자원 관리와 사용자 관리소프트웨어를 만든 특정 목적만 수행
개발 언어C/C++, 어셈블리어다양한 언어
실행부팅 시 메모리에 적재되어 실행을 시작하여 컴퓨터를 끌 때까지 실행사용자가 명령을 통해 실행시키거나 종료시킴
자원에 대한 접근 권한컴퓨터의 모든 자원에 대해 배타적 독점 사용 권한컴퓨터 자원을 사용하고자 할 때 반드시 운영체제에게 요천

2 운영체제의 태동

컴푸터가 처음 생길 때부터 운영체제가 있었던 것은 아니다.

2.1 고정 프로그램 컴퓨터 시대(1940년대)

고정 프로그램 컴퓨터란 오직 한개의 프로그램을 하드웨어로 고착화시키는 완전한 하드와이어드 프로그래밍 방식이다.

2.2 하드웨어와 소프트웨어를 분리시킨 내장 프로그래밍 등장(1945년~)

  • 폰노이만이 내장 프로그램 컴퓨터 개념을 최초로 발표

    컴퓨터를 하드웨어와 소프트웨어로 분리

  • 내장 프로그램 컴퓨터

    컴퓨터의 구조를 CPU와 전자식 메모리로 나누고, 프로그램의 명령(코드)들을 전자식 메모리에 적재, CPU가 메모리에서 명령들을 하나씩 CPU 내부로 가지고 와서 처리하는 새로운 방식의 컴퓨터 개념

  • 내장 프로그램 컴퓨터 출현의 의미 정리
    • 컴퓨터 구조에서 CPU와 메모리 분리
    • 하드웨어와 소프트웨어의 개념 분리
    • 실행할 프로그램은 메모리에 담고, CPU가 프로그램을 실행하는 방식
    • 프로그램은 입력 장치를 통해 메모리에 적재

2.3 프로그램 로더의 발견 - 운영체제 개념의 시작(1950년대)

로더(loader): 목적 프로그램을 읽어 들이는 코드 로더 프로그램이 모든 컴퓨터와 모든 개발자들에게 공통적으로 필요함 시간낭비 로더 프로그램이 운영체제로 발전하는 싹

2.4 원시 운영체제 GM OS 탄생(1955년)

GM(General Motors)에서 펀치 카드에 담긴 프로그램을 메모리에 적재하는 제대로 된 로더 프로그램을 개발하여 상대적으로 속도가 빠른 테이프에 저장해 두고, 필요할 때 실행시켜 사용자 프로그램을 메모리에 적재 오늘날 디스크 장치에 있는 사용자 프로그램을 메모리에 적재시키는 것과 동일한 개념 GM은 이 로더를 모니터(Monitor)라고 함, 후세대는 GM OS라고 함 사용자 프로그램을 읽어 실행시켜준다는 점에서 GM OS를 최초의 원시 운영체제 라고 부른다

2.5 최초의 운영체제 GM-NAA I/O 탄생(1956~1957년)

GM OS를 확장, 여러 개발자들이 작성하여 쌓아놓은 작업들을 한 번에 하나씩 순서대로 매모리에 적재하고 실행시키는 것으로, 오늘날 볼 때 일종의 배치 운영체제(batch operating system) 였다.

아래 3가지 코드로 구성

  • 어셈블러 코드: 사용자가 작성한 어셈블리어 프로그램을 기계어 코드로 번역
  • 로더 프로그램: 사용자 프로그램을 메모리에 적재
  • 공통 입출력 코드 및 메인 코드: 장치 입출력을 다루는 프로그램 코드와 운영체제 시작 코드

응용프로그램 개발자들이 공통으로 필요한 코드를 표준화하여 라이브러리 형태로 미리 만들어두어, 개발자들이 호출하는 방법만 알면 되도록 하여 개발자의 개발 부담을 줄였다. 이로써 라이브러리(library)의 개념이 등장

3 운영체제의 발전

3.1 운영체제의 태동 시절

  • 운영체제 암흑 시대
    • 운영체제의 개념 없음
    • 개발자가 프로그램 작성, 컴퓨터 관리등 모든 것을 직접 조작
  • 초기 운영체제 시작
    • 초기 형태의 배치 운영체제 개발

3.2 배치 운영체제

  • 출현 배경 노는 시간(idle time)을 줄여 컴퓨터의 활용률을 향상시킬 필요
  • 배치 운영체제 컴퓨터 시스템 배치(batch)란 한 개발자가 작성한 펀치 카드의 묶음이며 배치 작업(batch job)을 줄여 부르는 말이기도 함. 그러므로 배치가 하나의 프로그램
  • 배치 처리(batch proccessing) 여러 배치 작업들을 모아서 한꺼번에 실행하되 한 번에 한 개씩 순차적으로 실행하고, 비대화식이며, 프린터에 결과를 출력하며, 작업을 요청한 한참 뒤에너 결과를 받는다.

3.3 다중 프로그래밍(multiprogramming) 운영체제

  • 출현 배경 하드웨어 속도 개선과 컴퓨터 가격 상승 컴퓨터의 처리율(throughput, 단위 시간당 처리하는 작업의 개수)를 높이기 위해 CPU를 보다 효율적으로 사용하는 방법 고안 배치 운영체제를 사용하는 시스템에서는 I/O가 처리되는 긴 시간 동안 CPU가 논다 돈아까움
  • 다중프로그래밍 기법 여러 프로그램을 메모리에 올려놓고 동시에 실행시키는 기법 CPU가 한 프로그램을 실행하다 I/O가 발생하면 입출력이 완료될 때까지 CPU가 메모리에 적재된 다른 프로그램을 실행하여 CPU의 idle time을 줄임 메모리에 적재되어 동시에 실행되는 프로그램의 개수를 다중프로그래밍 정도(Degree Of Multiprogramming, DOM) 라고 함
  • 다중프로그래밍 운영체제를 가진 컴퓨터 시스템 다중 프로그래밍 기법으로 컴퓨터 시스템을 관리하는 운영체제
  • 다중프로그래밍 도입으로 인한 이슈
    • 큰 메모리 이슈
    • 프로그램의 메모리 할당(memory allocation) 및 관리(memory management) 이슈
    • 메모리 보호 이슈
    • CPU 스케줄링과 컨텍스트 스위칭(context switching)
    • 인터럽트(interrupt) 개념 도입
    • 동기와(synchronization)
    • 교착상태(deadlock) 해결

3.4 시분할 다중프로그래밍(Time Sharing Multiprogramming) 운영체제

여러 프로그램을 시간 단위로 나누어 번갈아 실행기키는 기법

  • 출현 배경 다음과 같은 문제점을 해결하기 위함

    • 비대화식 처리방식(non-interactive processing)
    • 느린 응답 시간과 오랜 대기 시간
  • 시분할 운영체제를 가진 시스템 여러 개의 프로그램을 메모리에 적재, 1초나 100밀리초 등 시간 할당량(time slice, 타임 슬라이스)을 정하여 시간 할당량만큼 메모리에 적재된 모든 프로그램에게 돌아가면서 CPU할당, 실행

    라운드 로빈은 각 프로그램에게 동일한 시간 할당량만큼씩 번갈아 실행시키는 스케줄링 기법

    시분할 운영체제는 다중프로그래밍 기법과 대화식 처리, 그리고 시분할 스케줄링을 결합하여 여러 프로그램을 동시에 실행시키는 운영체제

3.5 개인용 운영체제

3.6 임베디드 운영체제

임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능을 수행하며, 장치를 제어하는 프로그램이 원할이 실행되도록 하는데 목적이 있다.

3.7 모바일 운영체제

모바일 전화기, 스마트폰, 태블릿 컴퓨터 등 다양한 이동용 혹은 휴대용 장치에서 실행되도록 만들어진 운영체제이다. 데스크톱에 비해 메모리나 저장 장치의 크기가 작고 처리 능력이 낮은 CPU 등 상대적으로 열악한 모바일 장치의 하드웨어를 효율적으로 사용하고 이동중에도 다양한 응용소프트웨어들이 실행될 수 있는 환경을 제공 배터리를 주된 전원으로 사용하기 때문에, 절전에도 큰 목표를 둠

3.8 운영체제의 종류

데스크톱 운영체제

범용으로 사용, 사용하기 쉽게, 다양한 종류의 응용프로그램 실행 가능

서버 컴퓨터 운영체제

서버 소프트웨어를 실행하는 목적, 네트워크에 연결하고 24시간 365일을 중단 없이 실행, 일반적으로 주변 장치들을 가지지 않음 보안에 매우 엄격, 컴퓨터 자원을 최적으로 사용

모바일 운영체제

임베디드 운영체제

실시간 운영체제(RTOS, Real-Time Operating System)

실시간 응용프로그램 혹은 태스크가 각각 정해진 완료시간(deadline, 마감시간) 이내에 처리되도록 보장하는 것을 목표로 함 범용 운영체제와는 구조와 목표가 완전히 다름

Ref.

황기태, “명품 운영체제”, (주)생튼출판사(2021)