초기 컴퓨터
- 카드리더, 프로세서, 프린터로 구성
- 천공카드(프로그램)를 카드리더에 넣고, 프로세서가 계산, 결과를 종이에 찍어서 출력
- 프로그램을 직접 컴퓨터에 입력하는 오퍼레이터가 존재
일괄 처리 시스템 Batch Processing System
여러 프로그램을 등록시켜 놓으면 순차적으로 실행시키는 시스템이다. 긴 작업 시간을 가진 프로세스가 앞에 있다면 뒤의 프로세스들을 한참 기다려야 하는 비효율이 발생하게 되었다.
- 최초의 운영체제
- 오퍼레이터가 하는 작업 (컴파일, 링크, 로딩)을 자동화한 시스템
시분할 시스템 Time-Sharing System
하나의 프로세스가 CPU를 차지하고 있을 때, 다른 프로세스는 수행중인 프로세스가 끝나거나 I/O작업이 발생할 때까지 기다려야 했다. 따라서 프로세스의 수행 시간을 제한하고, 일정시간동안 수행되면 다른 프로세스로 스위칭하는 시분할 시스템을 도입했다.
시분할 시스템은 아주 짧은 시간동안 프로세스를 수행하고 다른 프로세스로 변경되는 것을 반복하며 여러 프로세스가 동시에 실행되는 것처럼 보이는 효과를 가졌다.
프로세스간에 통신이 가능해졌지만 스케쥴링과 메모리 문제가 발생하며 동기화 기술과 가상메모리 기법이 등장하게 되었다.
다중 프로그래밍 시스템 Multiprogramming System
초창기 메모리의 상태는 운영체제를 제외한 하나의 프로세스만 할당하여 사용 가능했으며, CPU와 I/O 장치가 교대로 동작하는데 I/O작업을 수행하는 동안 CPU는 작업이 중단 (idle 상태)된다.
메모리에 여러 프로그램을 올려 하나의 프로세스가 CPU를 차지하다 I/O작업을 수행하게 되면 다른 프로세스가 CPU를 차지하여 idle 상태의 시간을 최소화했다.
CPU가 어느 프로세스를 수행해야 하는지 선택해야 하는지에 대한 문제로 CPU 스케쥴링 기법이 등장하고, 새로 들어온 프로그램을 어느 메모리 공간에 할당해야 하는지에 대한 문제로 메모리 관리 기법이 등장하게 되었다.
인터럽트 기반 시스템 Interrupt Based System
현대 운영체제 기반이 되는 시스템이다. 프로세스가 작업을 수행하다 어떤 인터럽트가 발생하면 수행을 멈추고 해당 인터럽트를 처리한 후 다시 돌아와 작업을 이어 수행한다.
- 하드웨어 인터럽트(Hardware Interrupt) : 마우스, 키보드 등 하드웨어에서 발생한 인터럽트
- 소프트웨어 인터럽트(Software Interrupt) : 명령어로 직접 전기 신호를 CPU 에게 보내는 등의 행위
- 내부 인터럽트(Internal Interrupt) : 프로세스 수행 도중 DividedByZero 같은 잘못된 동작을 수행할 때
인터럽트(Interrupt) : CPU에게 보내는 전기 신호로서 인터럽트가 발생하면 CPU는 하던 작업을 중지, 해당 인터럽트를 처리하기 위해 OS 내부에 해당 인터럽트를 처리하는 코드, ISR (Interrupt Service Routine) 로 이동하여 인터럽트를 처리