소년코딩

운영체제

운영 체제(運營 體制, 문화어: 조작 체계) 또는 오퍼레이팅 시스템(영어: operating system, OS)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. -위키백과-

컴퓨터의 관점에서 일들이 처리되는 전형적인 형태는 "입력 -> 처리(가공, 계산, 검색, 정렬 저장 등) ->출력 : IPO(Input-Process-Output) 모델이다.

즉, 사용자는 처리를 위한 요구를 키보드, 마우스 등 입력 장치를 통해서 입력하고, 그 결과를 모니터나 프린터 등 출력 장치를 통해 확인하게 되는데, 이러한 기본적인 컴퓨터 동작을 총괄하는 소프트웨어가 운영체제다.

  • 운영체제의 가장 기본 역할 중 하나는 사용자에게 하드웨어인 입출력 장치를 편리하게 사용할 수 있게 하는 것

1. 주요 기능

  • 컴퓨터의 사용자와 하드웨어 사이에서 중개 역할을 담당
  • 컴퓨터의 자원 관리자 역할을 담당
  • 컴퓨터의 자원과 사용자 정보를 보호

2. 실체 및 활동

운영체제의 목적을 한마디로 요약하면 컴퓨터 사용자들에게 서비스를 제공하는 것이며, 그 실체는 하나의 거대한 프로그램으로 메모리에 상주한다.

사용자가 정당한 서비스를 요청하면 운영체제는 그 요청을 받아 처리하고 결과를 되돌려준다.

사용자가 운영체제에 서비스를 요청하는 방법은, 시스템에 탑재된 프로그래밍 언어를 사용해서 함수 형태로 주어진 운영체제 진입 전용 라이브러리(시스템 콜 or 운영체제 인터페이스)를 호출하는 프로그램을 작성하여 실행시키는 것이다.


3. 유형(발전과정)

사용자의 프로그램들이 실행되는 방식을 기준으로 살펴본다.

1 - 단일 프로그래밍 일괄 처리 시스템(Single-stream Batch Processing Systems)

일괄 처리 시스템이란 사용자들의 프로그램을 일괄적으로 일시에 모은 후, 차례차례 실행시켜주는 운영체제 환경으로 말한다.

이런 유형의 운영체제는 1950년대 초창기의 천공 카드가 있으며, 카드 다발을 카드 입력장치에 쌓아두고 운영체제는 처리 중인 프로그램이 종료할 때마다 쌓인 카드 다발로부터 다음 처리할 프로그램으로 읽어 들였다.

단일 프로그래밍 일괄 처리 시스템은, 사용자 프로그램을 수작업으로 메모리에 적재하던 기존의 프로그램 실행 방식을 운영체제에 의한 자동 적재방식으로 발전시켰다는 점에서 컴퓨터 진화에 크게 기여했다.

  • 운영체제는 오직 하나의 프로그램만을 적재하여 차례차례 실행시킨다.

  • 적재된 프로그램이 오직 하나밖에 없었으므로 사용자 프로그램이 입출력을 요구했을 때 운영체제는 입출력이 완료될 때까지 프로세서(CPU)를 대기시켜야 했으므로 허비하는 시간이 많았다.

2 - 다중 프로그래밍 일괄 처리 시스템(Multi-programming Batch Processing Systems)

사용자가 컴퓨터에 접근하지 않고 프로그램을 작성하여 관리자에게 제출하고, 제출된 프로그램들은 한 곳에 모인 후 차례차례 처리된다는 점에서는 단일 프로그래밍 일괄 처리 시스템과 같다.

그러나, 다중 프로그래밍 일괄 처리 시스템은 두 개 이상의 프로그램을 동시에 적재할 수 있다는 점에서 다르다.

  • 프로그램을 동시에 여러 개 적재시켜 실행 중인 프로그램이 입출력을 요구하면 그 입출력 작업이 하드웨어에서 진행되는 동안에 다른 프로그램을 실행시켜줌으로써 프로세서의 유휴 시간을 줄였다.
  • 그러나 적재된 프로그램들의 완료 시간이 다른 프로그램의 입출력 요구 빈도에 따라 큰 영향을 받으므로 각 프로그램의 완료 시간의 편차가 심하다.

현재 실행 중인 프로그램이 입출력을 요구하면 반드시 프로세서를 다른 프로그램에 양보해야 하고, 반대로 현재 실행 중인 프로그램이 입출력하지 않는다면 다른 프로그램은 실행 중인 그 프로그램이 완료될 때까지 프로세서를 차지할 기회가 주어지지 않기 때문이다.

3. 시분할 시스템(Time-Sharing Systems)

다중 프로그래밍 일괄 처리 시스템은 현재 처리 중인 프로그램이 입출력을 요구하거나 완전히 종료되는 상황이 발생했을 때만 다른 프로그램 중의 하나에 처리 기회가 돌아간다. 이 시스템은 일괄 처리 환경에서는 큰 문제가 되지 않았지만, 다수의 사용자가 단말기를 통해 컴퓨터에 동시에 접속하는 대화적 업무 환경에서는 컴퓨터에 접속한 사용자들이 요청한 프로그램들의 응답 속도 편차가 심하고 응답 예측이 불가능하기 하므로 적합하지 않다.

시분할 시스템은 시간을 짧게 분할하여 여러 개의 프로그램을 골고루 처리해 주는데, 이때 짧게 분할된 시간을 타임 퀀텀 혹은 타임 슬라이스라고 한다. 즉, 하나의 프로그램을 1회에 최대 타임 퀀텀만큼의 시간 동안만 처리하고, 처리 기회를 다른 프로그램에 넘기며 이 과정을 끊임없이 반복한다.

  • 여러 개의 프로그램을 짧은 시간(타임 퀀텀) 동안 조금씩 번갈아 가면서 처리함으로써 사용자에게 시스템을 독차지하고 있다는 느낌을 준다.
  • 다수의 사용자들이 단말기를 통해서 컴퓨터에 동시 접속하는 대화적 처리 환경에 적합하다.

만약 현재 처리 중인 프로그램이 타임 퀀텀을 모두 소진하지 못하고 입출력등의 대기 상황이 발생하면 처리 기회는 즉시 다음 프로그램에 돌아간다.

4 - 병렬 처리 시스템(Parallel Processing Systems)

CPU가 하나 장착된 기존의 단일 프로세서 시스템의 성능을 향상하기 위해 다중 프로세서 시스템이 출현하였다. CPU가 여러 개이므로 CPU 개수만큼의 프로그램들이 병렬로 처리될 수 있는데, 이를 지원하기 위한 운영체제는 한층 더 복잡하고 고도화해졌다

병렬 처리 시스템의 목적은 단순히 성능 향상뿐만 아니라 프로세서의 고장에도 처리 기능을 완전히 잃지 않는 결함 허용에 있다. 예를 들어 2개의 프로세서로 구성된 병렬 컴퓨터는, 하나의 프로세서가 고장 났을 때 성능은 약간 저하되더라도 처리 기능은 여전히 유지하므로 높은 신뢰성을 가지게 된다.

일반적으로 병렬 처리(Parallel Processing)는 어느 시점을 기준으로 보았을 때 2개 이상의 프로그램을 처리하는 것을 말하고, 병행 처리(Concurrent Processing)는 단일 프로세서 시스템에서 일정 기간 2개 이상의 프로그램을 번갈아 처리하는 것을 말한다. 즉, 병행 처리는 어느 한 시점에서 보면 오직 하나의 프로그램만이 처리된다.

다중 프로세서 시스템을 넓게 보면 분산처리 시스템의 일종으로 볼 수 있는데, 프로세서들이 시스템 버스를 통해서 메모리, 주변 장치, 클록 등을 공유하므로 강결합 시스템(Tightly-coupled System)이라고 부른다.

다중 프로세서 시스템에서 처리기, 메모리 주변장치 등을 연결하는 버스는 그 구성 형태에 따라 단일 공유 버스, 다중 버스, 크로스바 스위치 버스, 계층 버스, 다중 포트 메모리 버스 등으로 분류된다.

  • 병렬 처리 시스템은 여러 개의 프로세서(CPU)를 이용하여 여러 개의 프로그램을 병렬로 처리한다.

5 - 분산 처리 시스템(Distributed Computing Systems)

여러 개의 독립된 시스템을 버스가 아닌 네트워크로 연결하여 주어진 일을 분담하여 처리함으로써 병렬 처리 그 이상의 효과를 얻고자 하는 경우를 분산 처리라 한다. 여기서 독립된 시스템이란 독자적인 하드웨어(프로세서, 메모리 등)와 운영체제를 가진 시스템을 의미한다.

분산 처리 시스템은, 프로세서들이 버스를 통해 연결되는 다중 처리기 시스템보다 결합 정도가 낮으므로 약결합(Loosely-coupled System)이라 부르기도 하고, 시스템들이 대역폭이 높은 네트워크로 가깝게 연결되므로 클러스터 시스템(Clustered System)이라 부르기도 한다.

  • 큰 문제를 여러 개의 독립된 시스템에 분할 배분하여 병렬로 처리함으로써 처리 속도 및 전체적인 처리량 향상
  • 독립된 시스템들을 연결함으로써 각 시스템에 산재해 있는 자원의 활용도 향상
  • 연결된 일부 시스템이 다운되더라도 전체 시스템의 기능을 유지함으로써 신뢰성 향상
  • 전체적인 시스템 처리 성능이 필요한 경우 새로운 시스템을 간편하게 추가 연결함으로써 점진적 시스템 향상

6 - 실시간 시스템(Real-Time Systems)

앞에선 본 운영체제들의 공통점 중 하나는 처리 대상인 프로그램들의 처리재개 마감 시한을 설정할 수 없다는 것인데, 이는 실시간 처리가 요구되는 환경이라면 허용될 수 없는 중대한 요인이다.

예를 들어, 크루즈 미사일을 통제하는 컴퓨터가 일반적인 운영체제 환경이라면 그 프로그램에 대한 처리 재개 시기가 불규칙하여 미사일이 추락할 수 있다. 즉, 측정 센서로부터 고도가 입력되면 이를 기다리던 프로그램은 운영체제에 의해 지정된 기간 내에 처리가 재개되어 미사일 날개를 신속하게 조정할 수 있어야 한다.

실간 처리 환경을 지원하는 실시간 운영체제는 처리 대상인 여러 개의 프로그램 각각의 특성을 고려하여, 모든 프로그램에 처리 마감 시한을 보장해 준다. 이를 위해서는 운영체제 기능 일부를 포기해야 하므로 유닉스(리눅스)나 윈도우는 완벽한 실시간 서비스가 아닌 실시간에 가까운 연성 실시간 시스템(Soft Real-Time System)이다.

  • Hard Real-Time System: 프로그램들의 처리 마감 시한을 엄격하게 보장
  • Soft Real-Time System: 실시간 처리를 위한 최소한의 서비스만 제공

운영체제


'컴구 이야기' 카테고리의 다른 글

3. 훑어보는 인터럽트  (0) 2020.08.30
2. 훑어보는 컴퓨터 시스템 구조  (1) 2020.08.28
정수의 표시  (0) 2019.02.16
동시성과 병렬성 훑어보기  (2) 2019.02.12
컴퓨터 시스템 훑어보기  (1) 2019.02.10
댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기