[운영체제] 운영체제 시스템의 발전

[운영체제] 운영체제 시스템의 발전

시스템의 발전에서 주요하게 꼽히는 부분은 바로 일괄처리 시스템에서 다중 프로그램 & 시분할 시스템으로의 발전입니다.



일괄처리 시스템(Batch System)

초기의 컴퓨터가 동작하는 방식으로서 물리적으로 콘솔에서 수행을 하던 방식에 사용하던 시스템입니다. 초기의 운영체제는 즉시적으로 데이터를 처리 할 수 있는 여건 또한 갖추지 못했습니다. 따라서 그 대안으로 일괄처리 시스템이 운영체제에 도입이 됨으로써 비슷한 것은 주기적으로 한 번에 묶어서 처리할 수 있게 되었습니다.
다만, 기계쩍인 입/출력 장치의 속도가 CPU와 같은 전자적인 장치의 속도보다 느리기 때문에 CPU가 계속해서 쉬는 상태(idle)인 경우가 많습니다.
ex) 프린트를 하라는 프린터와 같은 입출력장치의 속도가 CPU의 처리 속도보다 현저히 느림
일괄처리 시스템은 상호작용이 필요 없는 큰 단위의 작업들을 수행할 때 사용이 됩니다.
즉각적인 상호작용이 필요한 곳에서는 일괄처리 시스템이 별로 안 좋음




다중 프로그램 시스템(Multi-Programmed System)

CPU가 수행할 작업을 항상 가지도록 하는 방식
먼저 하드 디스크나 SSD에 여러 개의 프로그램을 선택해서 메인 메모리(RAM)에 적재합니다.
이후에 메모리 내에 있는 작업 중에서 하나를 선택해 차례대로 실행합니다.
이 때 수행 중인 작업이 입/출력 등 때문에 기다리는 상태(idle)에 도달하면 CPU는 다른 작업으로 넘어가서 수행을 계속합니다.
이후에 첫 번째 작업이 끝나면 현재의 작업을 중단하고 다시 첫 번째 작업이 CPU를 차지하게 되는 방식입니다.
(RAM에 Program A, B, C가 올라가 있는 상태)
다중 프로그램 시스템 덕분에 프로그램에서 카드를 읽거나 프린터를 쓰는 등의 시간에도 CPU를 계속해서 사용할 수 있게 되었습니다.




시분할 시스템(Time-Sharing System)

다중 프로그래밍의 장점을 채택하여 확장한 시스템으로서 프로그램이 수행이 되고 있을 때 아주 짧은 주기로 CPU를 각각의 프로그램에 할당해 주는 방법입니다.
시분할 시스템으로 사용자는 프로그램이 수행이 되고 있는 동안에도 상호작용(Interact)할 수 있게 됩니다. 아주 짧은 주기로 전환이 이루어지기 때문에 각 사용자는 모든 프로그램이 동시에 작동을 하고 있따고 느끼게 됩니다.
ex) 녹화 프로그램 + 한글 프로그램 실행

리눅스(Linux)와 같은 운영체제는 여러 명의 사용자가 동시에 한 대의 컴퓨터에 접속을 해서 서로 다른 처리를 할 수 있도록 해주는데 이는 시분할 시스템을 적절하게 반영한 사례라고 할 수 있다.
ex) User1은 MSSQL을 사용하고, User2는 Web server를 관리하는데 둘 다 자기가 CPU를 독점하는 것처럼 느낌




그 외 용어 정리


  • 작업 스케줄링 : 보조기억장치(HDD, SSD)에 프로그램이 저장되어 있고 그 중 일부를 선택해서 메모리에 적재하는 전략
    • ex) 바탕화면에 있는 한글, 크롬을 한번에 실행해서 메모리에 올린 후 CPU가 메모리를 관리 
  • CPU 스케줄링 : 메모리에 올라온 작업들 중에서 무엇부터 실행할지 고르는 전략




운영체제의 다양한 시스템

출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?