CPU 가상화와 프로세스 개요
1. CPU 가상화
1.1 CPU 가상화란?
하나 혹은 소수의 CPU로 마치 여러개의 CPU가 있는 것처럼 만드는 것. 보통 시분할(Time sharing)이라 불리는 기법을 이용하여 하나의 프로세스를 실행 후 중단, 다른 프로세스를 실행 .. 이를 반복한다.
1.2 가상화하는 이유
운영체제는 여러 프로그램을 동시에 동작시키길 원한다.따라서 가상의 CPU를 만들어, 여러 프로세스가 동시에 동작하도록 한다.
2. 프로세스에 대해서
2.1 프로세스 개념
프로세스는 일반적으로 실행중인 프로그램 을 의미한다.
프로세스를 잘 이해하기 위해서는 하드웨어 상태를 이해해야 한다. 프로그램이 실행되는 동안 하드웨어 상태를 읽거나 갱신하기 때문이다. 프로세스에게 중요한 하드웨어는 메모리와 레지스터이다. 프로그램이 실행되는동안 메모리에 데이터를 쓰거나 읽기 때문이다. 또한 프로그램의 실행에 필요한 명령어 등의 데이터를 일시적으로 저장하며 매우 빠르게 가져다 쓰기 위해 레지스터가 필요하다. (어떤 글에서는, CPU를 요리에 빗대어 본다면, 메모리는 조미료 혹은 냉장고, 레지스터는 도마라고 예를 들더라.)
2.2 프로세스 기본 API
운영체제는 프로세스에게 반드시 제공해야 할 기본 API가 있다.
생성(Create) : 새로운 프로세스를 생성할 방법을 제공해야 한다.
제거(Destroy) : 운영체제는 프로세스를 강제로 제거할 수 있는 인터페이스를 제공해야 한다.
대기(Wait) : 프로세스를 중단시킬 수 있어야 한다.
상태(Status) : 프로세스 상태 정보를 얻어내는 인터페이스도 제공되어야 한다.
3. 프로세스 생성 과정
프로그램은 어떻게 프로세스가 되는가. 아래와같이 4개의 과정을 거친다.
프로그램 코드와 정적 데이터(Static data)를 메모리에 탑재(load)한다. 초기 운영체제들은 프로그램 실행 전에 코드와 데이터를 모두 메모리에 탑재시켰지만, 최근의 운영체제들은 프로그램을 실행하면서 코드나 데이터가 필요할 때 필요한 부분만 메모리에 탑재한다.
일정량의 메모리가 프로그램의 Runtime Stack 용도를 위해 메모리를 할당한다.
프로그램의 heap을 위한 메모리 영역을 할당한다.
입출력과 관계된 초기화 작업을 수행한다.
4. 프로세스 상태
여기서 new
와 terminate
는 짐작하다시피 프로세스가 시작하거나 종료되는 과정에 일시적으로 머무는 상태이다. 나머지 ready
, running
, waiting
돌고 돌며 프로세스가 진행된다.
이러한 프로세스 상태를 저장하기 위해서는 자료구조가 필요할 것이다. 이러한 자료구조를 PCB (Process Control Block) 이라고 한다.
Last updated