[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/운영체제

[운영체제] 다중 프로그래밍 / 시분할 시스템 / 실시간 시스템

inu 2020. 3. 26. 17:21
반응형

다중 프로그래밍

  • 메모리의 사용자영역에 프로그램이 여러개 탑재되어 있고, CPU가 이를 번갈아가며 수행한다.
  • 어떤 프로그램을 수행하다 입출력이 발생하면 해당 입출력이 처리되는 동안 CPU가 다른 프로그램을 수행하는 방식이다.
  • 여러 프로그램 중 어떤 프로그램을 선택할지는 '스케쥴링'을 통해 해결한다. 이는 적절한 정책을 통해 다음 프로그램을 결정해준다.
  • 이러한 프로세스는 각 프로그램이 입출력이 발생할 때만 발생된다. 즉, 다른 프로그램으로 작업이 이동되려면 하나의 프로그램이 입출력이 발생해야 한다.
  • 만약 하나의 프로그램에서 무한 루프가 발생된다면 스케쥴링도 일어나지 않아 나머지 프로그램도 돌아가지 않는다. 즉, 다중 프로그래밍 방식에서는 프로그램 간 간섭이 존재한다.
  • 대부분의 프로그램 실행시간에서 CPU의 사용시간은 극히 일부분이고, 입출력 시간이 대부분을 차지한다. 따라서 프로그램 1~N의 실행시간을 t1,t2,...,tn이라고 한다면, 일괄처리에서는 t1 + t2 + ... + tn의 시간이 소요되던 것이, 다중 프로그래밍에서는 거의 max(t1,t2,...,tn)에 가까운 시간이 소요됨을 알 수 있다.

버퍼링과 스풀링

  • 다중 프로그래밍이 가능해짐에 따라 출력과 동시에 다른 프로그램 수행이 가능해지면서 여러 프로그램에서 출력이 산발적으로 발생할 수 있게 되었다. 이러한 문제에 대한 해결이 필요해졌다.
  • Buffering : 입출력 시 CPU의 속도와 입출력 장치간의 속도 차이를 해소하기 위해 하드 디스크나 매모리 영역에 자료를 잠시 저장해놓는 것
  • Spooling : Buffering과 유사한 개념이지만 버퍼링은 속도의 차이를 해소하기 위한 것이었다면 Spooling은 순차적 사용장치(ex.프린터)를 병렬 수행 프로그램이 사용할 수 있도록 도와주는 방법이다. 속도가 빠르고 임의 접근이 가능한 디스크에 출력되는 자료를 임의도 모아놓고 처리한다.
  • 프로그램1에서 1의 결과를 내고 프로그램2에서 2의 결과를 냈다. 그리고 다시 프로그램1에서 3의 결과를 냈다. 결과의 처리순서는 1-2-3으로 이루어 졌지만 올바른 순서로 프린트하려면 프로그램1에서 수행한 1,3이 프린트되고 프로그램2에서 수행한 2가 프린트되어야 할 것이다. 이를 도와주는 것이 Spooling이다. 디스크에 자료를 저장했다가 프린터로 그를 보냄으로서 이를 해결한다.
  • 참고로 SPOOL은 Simultaneous Peripheral Operations On-Line의 약자이다.
  • cf. 다중 프로그래밍 방식은 여러 프로그램이 메모리에 탑재되어야 했기에 메모리 경영의 이슈를 파생시키기도 했다.

시분할 시스템

  • 다중 프로그래밍 방식은 입출력이 일어날 때만 스케쥴링이 일어나, 한 프로그램의 입출력 작업이 완료되더라도 해당 프로그램의 작업을 다시 시작할 수 없다는 단점이 있다. 이를 보완하기 위해 등장한 것이 시분할 시스템이다.
  • 시분할 시스템의 핵심은 '타임슬라이스'이다. 입출력 발생시에도 스케쥴링이 일어나지만 타임슬라이스에서 무조건 스케쥴링을 진행하는 것이다. 이에 따라 한 프로그램에서 입출력 완료 후 대기 시간이 적어졌다. 그에 따라 대화가 빈번한 프로그램도 자연스럽게 수행될 수 있게 되었다.
  • 이러한 '타임슬라이스'는 타이머 인터럽트를 통해 구현된다. 보통 10ms의 인터벌로 타이머 인터럽트를 설정해 구현된다.
  • 1960년 MTS의 CTSS가 시초가 되어 1970년에 하드웨어 상용화로 상용화되고 현재까지 운영체제의 기본 체계로 자리잡았다.
  • 이러한 시분할 시스템은 사용자 사이를 재빠르게 전환해줌으로서 사용자로 하여금 컴퓨터를 독점하고 있다고 생각할 수 있게 했다. 실제로 하나의 전산시스템을 여러 개인 모니터에 띄우게 해서 각자의 연구실에서 각자의 작업을 할 수 있도록 했다.
  • 다만 한정된 메모리에서 많은 프로그램을 돌려야 했기에 메모리 부족 현상이 일어났다. 이에 따라 '가상 메모리' 기법이 대두되게 되는데 이에 대해서는 추후 자세히 알아볼 것이다.
  • CPU의 효율성과 사용자의 편의성 모두를 증대시켰다고 할 수 있다.
  • 그 외에도 온라인 파일 시스템, 디스크 스케쥴링, CPU 스케쥴링,프로세스간 통신, 동기화 및 교착상태 처리 등 다양한 이슈가 대두되었다. 이 중 몇가지는 앞으로 알아보게 될 것이다.

실시간 시스템

  • 공장 생산 라인이나 과학실험 제어, 산업제어, 항공기/미사일 제어, 로봇, 동영상 재생 등의 시스템에서는 프로그램 동작의 실시간성이 중요했다. 즉, 엄격한 마감시간(DEADLINE)이 요구되었다. 이를 만족하는 시스템을 실시간 시스템이라 했다.
  • 경성실시간성 (Hard real-time) : 데드라인 위반시 재앙적 사건이 발생하는 분야(무기제어, 원자력발전소 등). 데드라인을 100% 만족한다는 것을 수학적 혹은 실험적으로 증명해야 한다. 가상메모리와 같은 고급기능이나 그 외 모든 부가적 자원관리를 최소화하고 하드웨어와 완전 밀착된 SW를 개발한다.
  • 연성실시간성 (Soft real-time) : 데드라인은 존재하지만 재앙적 사건이 발생하지는 않는 분야(동영상 재생 등). 실시간 작업과 일반 작업간의 우선순위 제어정도로 해결한다.
  • WCET(Worst Case Execution Time) : 데드라인 이전에 반드시 수행 시켜야 할 작업을 수행하는데 걸리는 최대 소요시간. 이를 고려하여 데드라인 이전에 해당 작업이 완료될 수 있도록 해야 한다.
  • 이러한 실시간성을 만족시키기란 매우 어려워 운영체제와는 다른 그룹에서 연구가 지속되어 오고 있다.
반응형