Early Systems
- 메모리 관점에서 기존 시스템들은 유저에게 많은 추상화를 제공하지 않음
- 기본적으로 시스템의 물리메모리는 OS와 현재 프로그램으로 구성되어 있었음
- OS는 메모리의 0번 주소부터 루틴을 설정했다.
- 그리고 나머지 메모리 공간에 프로그램을 올려서 사용했다.
- 추상화가 거의 없었다.
Multiprogramming
- Multiprogramming : 주어진 시간에 여러개의 프로세스가 실행 준비를 마치고 I/O 발생 시 OS가 프로세스 사이를 전환
- Multiprogramming은 CPU의 활용 효율성을 개선함.
Time Sharing
- Time sharing : Batch Computing의 한계를 인식하였고, 많은 사용자가 동시에 컴퓨터를 사용하며 각자 현재 실행 중인 작업의 적시 응답을 기대할 수 있기에 상호작용이 중요해져서 나타난 개념
- 시분할 구현의 한 방법은
-
- 한 프로세스를 잠시 실행
-
- 모든 메모리에 대한 전체 액세스 권한 부여 후 이를 즉각 중지
-
- 모든 상태를 일종의 디스크에 저장
-
- 다른 프로세스의 상태를 로드, 잠시 실행해 머신의 일종의 공유를 구현하는 것
- 그러나 이 방식은 메모리가 커질 수록 성능이 낮아지기에 프로세스를 메모리에 남겨두어 OS가 시분할을 효율적으로 할 수 있도록 하는 방식을 사용
- 각각의 프로세스는 물리적 메모리의 각자 작은 부분을 할당 받음.
- CPU가 1개라고 가정 시, 임의의 프로세스가 실행되면 다른 프로세스는 대기열에서 실행 대기하는 방식
- Problem : 여러 프로그램이 메모리에 상주 시 한 프로세스가 다른 프로세스의 파일을 읽기/쓰기 시 문제가 발생