OS 탄생 배경
1940~50 년대 초반의 컴퓨터는 한 번에 한 개의 프로그램만 실행했다.
프로그래머는 책상에서 펀치 카드에 코드를 작성했다. 그 다음 펀치카드를 모아서 컴퓨터 운영자에게 건네주었다. 그 사람이 컴퓨터에 프로그램을 공급해주는 방식이었다. 사람이 컴퓨터에게 프로그램을 떠먹여 주는 수동적인 프로세스 였다.
시간이 흐르면서 컴퓨터는 빨라졌다.
사람이 뛰어다니면서 프로그램을 공급해 주는 속도가 실제 프로그램를 실행하고 출력하는 시간보다오래 걸리게 되었다. 컴퓨터 스스로 작동할 수 있는 방법이 필요했고 그래서 OS가 만들어 졌다.
배치 프로세싱, 일괄 처리 시스템
다음 프로그램을 바로 실행 하도록 개선함.
한 번에 하나의 프로그램을 받는 대신 컴퓨터가 프로그램을 한꺼번에 받아서 일괄적으로 배치한다. 하나의 프로그램을 완료하면 자동으로 다음 프로그램을 실행한다. 누군가가 사무실에서 다음 프로그램을 찾느라 고생하는 시간이 없어졌다.
OS는 하드웨어 중개자, 장치구동기(device driver)
멀티 태스킹
가상 메모리, 동적 메모리 할당, 메모리 보호
멀티태스킹에도 걸림돌이 있었다. 각각의 프로그램은 메모리가 필요한 데 다른 프로그램으로 전환할 때 메모리 안에 있는 이전 프로그램의 데이터를 잃을 수 없기 때문이었다. 해결책은 메모리 블록을 만들어서 프로그램마다 블록을 할당하는 것이다. 예를 들어 컴퓨터가 100개의 메모리 주소를 가지고 있다면 프로그램 a가 0에서 9까지 b는 10에서 19까지 메모리 주소를 할당해서 각 프로그램마다 메모리를 분리해서 관리하도록 했다. 만약에 프로그램 하나가 10개 이상의 메모리를 요구한다면 다른 메모리 블록에 할당해야 했다. 이 방법 은 유연했지만, 단점이 있었다. 메모리 블록 전체에 하나의 프로그램이 흩어져 있을 수 있었다.(연속되지 않고) 그래서 프로그래머가 메모리를 추적하기가 혼란스러었다. 이런 복잡성을 숨기기 위해서 운영체제는 메모리 위치를 가상화 한다.
가상메모리를 사용하면 프로그램은 메모리가 항상 주소가 0부터 시작해서 단순하게 생각할 수 있다. 실제 메모리의 물리적 위치는 운영체제에 의해서 추상화되고 숨겨져 있다. 예를 들어서 프로그램 b의 실제 물리적 메모리 주소는 10 ~19이지만 가상 메모리에 의해 0~9로 나타난다. OS과 CPU 는 가상-실제 메모리를 다시 자동으로 매핑하여 처리한다. 그래서 프로그램 b가 메모리 위치 2를 요청하면 실제 주소 12를 읽어온다. 이 가상화는 a에서 더욱 유용하다 a는 분리된 두 개의 메모리 블록이 할당되어 있다. a는 가상 메모리에서 연속적인 20개의 블록 주소가 할당되어 있다. 메모리 10을 요청하면 20으로 매핑된다.
이 메커니즘은 프로그램 메모리 크기를 유연하게 할 수 있다. 이를 동적 메모리 할당 이라고 한다. 동적 메모리 할당은 동시에 여러 프로그램을 실행하는 운영체제에 엄청난 유연성을 제공한다.
또 다른 장점은 프로그램 서로가 더 잘 격리 된다는 것, 어떤 프로그램에 버그가 생겨서 잘못 된다면 다른 프로그램의 메모리가 아닌 자신의 메모리만 버리면 된다. 다른 프로그램에 영향이 가지 않는다. 이것을 메모리 보호라고 한다. 또한 바이러스나 악의적인 소프트웨어로 부터 보호하는데 유용하다.
Atlas Supervisor는 가상메모리와 보호 메모리 둘 다 가지고 있다. 이런 기능을 지원하는 최초의 OS였다.
시분할 시스템, Multics
유닉스
현재