개요
- 초기에는 사용자가 많은 것을 기대하지 않았기 때문에 컴퓨터 시스템을 구성하는것이 어렵지 않았음
- 하지만 “사용자 편이”, “고성능”, “신뢰성“ 을 기대하는 사용자의 증가로 인해 시스템을 구성하는게 어려워짐
초기 시스템
- 운영체제는 메모리에 상주하는 루틴의 집합이였음
멀티프로그래밍과 시분할
- 시간이 흐른후, 사람들이 더 효과적으로 컴퓨터를 공유하기 시작함
- 멀티프로그래밍 시대가 도래하며 여러 프로세스가 실행 준비 상태에 있고, 운영체제는 그들을 전환하며 프로세스를 실행함
- 이런 전환은 CPU의 이용률을 증가시킴. 당시에는 특히 이러한 효율성의 개선이 중요하였음.
- 많은 사용자가 동시에 컴퓨터를 사용하고, 현재 실행중인 작업으로 부터 즉시 응답을 원하기 때문에 대화식 이용의 개념이 중요하게 됨.
- 시분할 시스템이 대중화되면서 운영체제에 메모리 보호 요구사항이 추가됨.
- 프로세스가 다른 프로세스의 메모리를 읽거나 혹은 더 안 좋게 쓰는 상황이 발생하면 안됨
주소 공간
- 위험한 행위를 하는 사용자를 염두에두고 위험에 대비하기 위해 운영체제는 사용하기 쉬운 메모리 개념을 만들 필요성이 생겼음
- 이 개념이 주소 공간 (address space) 임. 실행 중인 프로그램이 가정하는 메모리의 모습임
핵심 질문: 메모리를 어떻게 가상화하는가.
운영체제는 물리 메모리를 공유하는 다수의 프로세스에게 어떻게 프로세스 전용의 커다란 주소 공간이라는 개념을 제공할 수 있는가
- 실행 중인 프로그램(프로세스) 는 자신이 특정 주소의 메모리에 탑재되고 매우 큰 주소공간을 가지고있다고 생각하지만 실제로는 그렇지 않다.
- 프로세스 A가 주소 0 으로 부터 load 연산을 수행할때 운영체제는 하드웨어 지원을 통해 물리주소 0이 아닌 A 가 탑재되어있는 메모리 주소인 320KB 부터 읽게 해야 함
메모리 가상화의 목표
고립의 원칙
고립은 신뢰할 수 있는 시스템을 구축하는 데 중요한 원칙임. 두 개체가 서로 적절하게 고립된 경우, 한 개체가 실패하더라도 상대 개체에 아무 영향을 주지 않을 수 있음.
- 가상 메모리 시스템(VM) 의 주요 목표중 하나는 투명성(transparency)임.
- 운영체제는 실행 중인 프로그램이 가상 메모리의 존재를 인지하지 못하도록 가상 메모리 시스템을 구현해야함.
- VM 의 또다른 목표는 효율성(efficiency) 임.
- 가상화가 시간과 공간 측면에서 효율적이도록 해야 함. 프로그램이 너무 느리게 실행되서는 안되고 공간적으로도 가상화를 위해 너무 많은 메모리를 사용하면 안됨,
- 운영체제는 TLB 등의 하드웨어 기능을 포함하여 하드웨어의 지원을 받아야 함
- 마지막으로 VM의 세번째 목표는 보호(protection) 임, 프로세스를 다른 프로세스로부터 보호해야하고 자신도 프로세스로부터 보호해야함.
- 탑재, 저장, 혹은 명령어 반입 등을 실행 할 때 어떤 방법으로든 프로세스나 운영체제의 메모리 내용에 접근할 수 있어서는 안됨
'운영체제' 카테고리의 다른 글
[OSTEP-15] Address Translation (1) | 2023.12.26 |
---|---|
[OSTEP-14] Memory API (0) | 2023.12.26 |
[OSTEP-10] Multi-CPU Scheduling (1) | 2023.12.26 |
[OSTEP-9] Lottery Scheduling (0) | 2023.12.26 |
[OSTEP-8] Multi Level Feedback Queue (1) | 2023.12.26 |