직접 조작
사람이 카드와 장치를 직접 준비해 컴퓨터가 오래 놀았다.
배치, 멀티프로그래밍, 시분할, GUI, 모바일, 클라우드는 서로 다른 시대의 병목을 해결하며 오늘날의 스케줄링, 보호, 가상화 개념으로 이어졌다.
사람이 카드와 장치를 직접 준비해 컴퓨터가 오래 놀았다.
작업을 묶고 상주 모니터가 다음 작업을 넘겼다.
I/O 대기 중인 작업 대신 다른 작업을 CPU에 올렸다.
타임 슬라이스로 여러 사용자가 즉시 반응을 느꼈다.
창, 파일, 드라이버가 대중적 사용성을 만들었다.
앱 격리, 전력, 가상화, 배포 속도가 중심이 됐다.
수동 준비와 CPU 유휴
작업 자동 전환
작업 큐, 스풀링, 배치
I/O 중 CPU가 놀음
여러 프로그램을 메모리에 공존
스케줄링, 메모리 보호, 동기화
터미널 응답 지연
짧은 시간 조각으로 선점
라운드 로빈, 인터랙티브 OS
격리와 배포 속도
가상화와 컨테이너
VM, namespace, cgroup, K8s
배치와 멀티프로그래밍은 비싼 CPU의 유휴 시간을 줄였다.
시분할은 처리량만이 아니라 사용자가 느끼는 대기를 줄였다.
메모리 보호와 앱 샌드박스는 같은 보호 문제의 다른 형태다.
드라이버와 시스템 콜은 하드웨어 차이를 공통 인터페이스로 숨긴다.
어떤 자원이 비어 있거나 막혀 있었나.
누구에게 먼저 자원을 줄지 어떤 기준이 생겼나.
해결책이 새로 만든 복잡성과 오버헤드는 무엇인가.