컴퓨터 발전의 초창기에 CPU는 국가적 자원이었기 때문에 processor의 사용률을 최대한 늘리는 방향으로 OS가 발전했습니다.
최초의 OS는 Monitor로, I/O 처리에 의해 발생하는 CPU의 대기시간에 CPU가 다른 프로그램을 처리할 수 있도록 프로그램들을 실시간으로 감시하여 메모리상 주소를 재배치 하는 batch System을 사용했습니다. (Maximize processor use)
[batch system - https://rekodo.tistory.com/11]
하지만 하드웨어의 성능이 개선될수록 컴퓨터의 가격이 싸지고 사람의 노동 가치가 비싸지면서, CPU가 사람이 수행하는 작업들에 대해 얼마나 빠른 시간안에 응답할 수 있는지가 중요해졌습니다. (Minimize response time)
물론 Processor의 효율성과 최소 응답시간을 동시에 개선하면 좋지만, 최적화 과정에서 두가지가 동시에 좋아질 수는 없고, 한쪽의 성능이 뛰어나려면 다른 한쪽에 성능은 챙기지 못하기 마련입니다.
response time을 줄이기 위해 Time Sharing이라는 System이 등장하였고 이 때부터 사용자와 컴퓨터의 상호작용이 중요해지면서 사용자가 프로그램 수행 시간에 명령을 입력할 수 있게 하는 terminal이라는 개념이 생겨났습니다.
Time Slice
초기의 time sharing은 위 그림처럼 여러 사용자가 각자의 terminel을 하나의 CPU에 연결하여 사용했습니다.
하나의 CPU를 여러 사용자가 사용하는 방법은 일정한 사용 시간을 정하여 번갈아가며 CPU가 해당 사용자의 프로그램을 처리하는 방식으로, CPU의 효율보단, 사람의 생산성을 극대화 시켰습니다.
그 분할된 시간을 Time slice 라고 합니다.
예를 들어 time slice가 0.2초라면 0.2초마다 CPU가 처리하는 프로그램이 바뀝니다.
그리고 프로그램이 자신에게 주어진 time slice를 다 사용하면 OS가 그 프로그램에서 사용되고 있는 CPU의 resource를 회수하는 것을 preemption(선점) 이라고 합니다.
이러한 Time slice system의 방식은 각각의 개별 사용자가 컴퓨터를 혼자 사용하고 있다는 오인을 하게 만듭니다.
그러자 사용자들은 중요한 개인 정보들을 입력하기 시작했고,
이를 방지하기 위해 최초로 여러 사용자에 대해 특정 데이터를 보호한다는 개념이 생겨났습니다.
이는 File System으로 발전하여 계정에 따른 파일 접근 권한을 제어할 수 있게 되었습니다.
최초의 time sharing system을 갖춘 os는 MIT에서 개발한 CTS(1962)이며 그 후 MIT와 Bell Labs에서 개발한 MULTICS(1965)로 진화하였으며, 최종적으로 UNIX가 탄생하게 되었습니다.
UNIX가 개발된 이후로는 linux, window, MAC os 같은 UNIX를 기반으로 만들어진 다양한 OS가 만들어졌습니다.
'CS > OS' 카테고리의 다른 글
OS - time interrupt (0) | 2022.04.04 |
---|---|
OS 시스템 - kernel의 이해(dual mode) (0) | 2022.03.26 |
OS 시스템의 발전 - batch System (0) | 2022.03.24 |
CPU와 I/O device (0) | 2022.03.24 |
메모리 계층 구조 - Cache (0) | 2022.03.23 |