실재로 프로그램이 실행되면 어떤일이 일어날까? (CPU Cycle)
1. 먼저 메모리로부터 프로세서(CPU)가 명령어를 읽어들인다.
2. 읽어들인 명령어를 Decode한다.
3. 명령어에 맞추어 실행한다.
4. 그 다음 명령어로 이동한다.
이떄 OS의 역활은 다음과 같다.
1. 프로그램 실행이 쉽게 만들어준다.
2. 프로그램간 메모리 고융가 가능하게 해준다.
3. 디바이스와 프로그램간의 interact가 가능하게 해준다.
그래서
Program
---
OS : SW
---
HW
의 형태로 컴퓨터가 구성되게 된다.
이때 현대의 컴퓨터는 하나의 리소스를 여러 프로그램들이 concurrent하게 사용할 수 있도록 만든다.
Virtualization: OS는 물리적 리소스들(cpu, ssd, ram)을 virtual(가상의) 형태로 변환해준다.
그렇게 함으로 각각의 프로그램이 디바이스를 독점하고 있는 것처럼 보이도록 하는데 이 부분을 OS가 담당해준다.
즉 OS === virtual machine이라고 보이기까지 한다. (사용편리 + 강력)
이러한 디바이스를 다루기 위해 System Call이라는 것이 존재한다.
System Call : user에게 OS가 무엇을 할지를 알려준다. 그래서
App <-- 시스템콜 제공 - 요청 --> OS -- HW
간의 관계를 만들어준다.
OS 소수의 시스템콜들을 제안해준다.
OS는 CPU, 메모리, disk 리소스 관리자 역활을 한다.
OS는 다음을 하게끔 해주다.
1. CPU 공유
2. 메모리 중재/공유
3. disk 공유
## Virtualizing the CPU
그리하여 OS가 CPU를 가상화한다면 하나의 CPU를 수십개의 CPU를 제공하는 것처럼 보이도록하는 효과를 발휘한다.
이를 Virtualizing the CPU라고 부른다.