시작하기 전에 앞서, 이 책에서는 3가지를 다루고 있으며 요약하면 아래와 같다.
주제 | 세부 내용 |
Virtualization | CPU 가상화 |
메모리 가상화 | |
Concurrency | Thread |
Lock | |
Condition Variable | |
Semaphore | |
Deadlock | |
Persistence |
프로세스(Process)
프로세스(process)란 간단하게 말해 현재 실행 중인 프로그램이다. 그렇다면, 프로그램(program)은 디스크에 저장되어 실행가능한 형태로 존재하는 것을 말한다. 컴퓨터는 이러한 프로그램을 메모리에 load하고 CPU에서 처리한다.
Multi Processes
OS는 여러 개의 프로그램을 동시에 실행할 수 있도록 CPU를 가상화하는 방법을 사용한다. 실제로 물리적인 CPU는 하나지만, 마치 여러 개의 CPU가 존재하는 것처럼 해서 여러 프로그램들을 사용할 수 있게 한다.
그렇다면, 어떻게 하면 가상화를 통해서 여러 개의 프로그램을 실행시킬 수 있을까? 바로 Time Sharing을 사용하는 것이다. 예를 들어, 실행하고자 하는 프로그램이 a, b, c가 존재할 때, a를 0.0001초, b를 0.0001초, c를 0.0001초 돌아가면서 실행하면, 사용자는 마치 프로그램이 실행되고 있는 것처럼 착각하게 된다.
그렇다면, 이러한 가상화의 Policy*를 알아보자. 위에서 말했던 Time Sharing은 마치 프로그램이 동시에 동작하는 것처럼 보이지만 실제로는 그렇지 않다. 프로그램 간의 순서를 정하고 어떤 결정을 내리는 정책이 바로 Scheduling이다. Scheduling 정책을 통해서 CPU가 지금 어떤 프로세스를 실행시켜야 할지 알려준다.
* Mechanism : 필요한 기능을 구현하는 low level 메서드나 프로토콜
Policy : Mechanism 위에 존재하는 정책, 어떤 종류의 결정을 내리는 알고리즘
Process Structure
위에서 말한 내용을 OS가 관리하기 위해서 Process Structure을 사용한다. 먼저, 프로세스는 I/O 장치, CPU, 메모리를 필요로 한다. CPU는 구체적으로 레지스터를 필요로 하며, 여기에는 PC(Program Counter)과 Stack Pointer 등이 있다. 메모리는 아래 그림과 같은 주소 공간을 필요로 한다. 각각에 대한 설명은 생략하도록 한다. (자세한 것은 이곳을 참고하면 된다.)
Process API
- Create : 새로운 프로세스를 만든다.
- Destory : 프로세스를 제거한다.
- Wait : 프로세스가 실행 중 잠시 멈출 일이 생길 때 사용한다.
- Miscellaneous Control : 잘못 동작하고 있는 프로세스를 종료할 때 사용한다.
- Status : 프로세스ID, 프로세스가 얼마 동안 실행됐는지 등에 대한 상태에 대한 정보를 알고 싶을 때 사용한다.
프로그램 실행 방법
프로그램을 실행시켜 프로세스로 만드는 방법을 알아볼 것이다. 간단하게 실행 단계를 나타내면 아래와 같다.
- Load : 디스크에 있는 프로그램을 메모리에 프로세스 형태로 적재
- Dynamic allocation : 메모리에 적재된 데이터를 위에서 본 형태로 heap, text, stack에 저장
- Initialization : 미리 처리되어야 할 I/O 관련 일을 처리
- Jump to entry point - main() : 함수의 시작 부분으로 가 프로그램이 실행
Process States
프로세스의 상태는 총 3가지, Running, Ready, Blocked로 존재한다. 각각을 자세히 알아보자.
- Running : 프로세스가 프로세서에 의해 실행되고 있는 상태. 즉 실행중
- Ready : 프로그램이 프로세스로 되기 위한 준비를 모두 마친 상태. 스케쥴링에 선택받지 못해 대기 중인 상태.
- Blocked : 실행 중에 I/O와 같은 요청이 생겨 실행중인 프로세스를 멈춘 상태.
Process Control Block
Process Control Block(PCB)은 프로세스를 관리하기 위해서 필요한 정보를 저장하는 것이다. PCB는 하나의 자료구조로 각각의 프로세스가 하나씩 가지고 있다. 프로세스 상태, 프로세스 ID(PID), PC(Program Counter), 메모리 관리 정보, CPU 스케줄링 정보 등이 저장된다. 또한 이후에 설명하게 될 Context Switch에 대한 정보도 저정되어 있다.
'CS > 운영체제' 카테고리의 다른 글
[OS] 2. Limited Direct Execution 메커니즘이란? (0) | 2024.03.09 |
---|