운영체제

Process Control Block(PCB)와 스케줄링

소재훈 2021. 9. 23. 01:20

Process Control Block

Process Control Block(PCB) 란 프로세스가 생성되었을 때 운영체제에서 프로세스를 관리하기 위한 테이블로 그 테이블에는 프로세스의 정보가 수록되어있다. PCB에 저장되어 있는 정보로는

1. 프로세스의 상태(Process State)

2. PC(Program Counter)

3. CPU Register:  CPU는 여러 프로세스를 Time Sharing 을 통해서 작업하게 되는데, 작업을 다른 프로세스로 바꾸는 과정에서 사용하던 레지스터의 값들을 PCB에 저장한 이후에 다음 프로세스의 상태로 바꾸어 주어야 한다.


그 밖에도 여러가지 정보가 있다.

- CPU - Schduling information: 각 프로세스들에 필요한 여러 가지 정보들

- Memory Mangement:  프로세스가 사용하고 있는 메모리가 어느 부분인지

- Accounting: 파일 시스템과 관련된 부분으로, 사용자가 프로세스가 사용하고 있는 파일에 대한 정보가 들어가 있다.

PCB의 자세한 구조를 살펴보면 다음과 같다.

리눅스 프로세스 디스크립터

thread_info: context switching 이 일어났을 때 현재 프로세스의 정보를 보관한다.
mm_struct: 프로세스가 사용 중인 메모리 영역을 표시한다.

file_struct: 파일을 사용하기 위해 open 하면 디스크립터 테이블에 포인터가 할당되어 그 파일을 사용할 수 있게 되는데 디스크립터 포인터를 저장하는 영역이다.
signal_struct: 그 프로세스에 와 있는 시그널을 보관하는 테이블이다.


Process Scheduling

CPU 가 하나라면 프로세스가 몇개가 기다리고 있든 간에 한순간에 서비스할 수 있는 프로세스는 단 하나이다. 그래서 대기열에 있는 고객 중에 어떤 것을 서비스할지 결정하는 것을 Scheduling 이라고 한다. 컴퓨터에서는 Time  Sharing 방법을 써 시간을 쪼개서 할당한 다음, 그 시간 안에 종료가 되지 않으면 다른 프로세스도 동일하게 처리한 후 다시 처리하게 된다.

 

초창기의 컴퓨터는 작업을 하나 받아들여서 그것을 다 처리한 다음 그다음 작업을 하였는데, 그렇게 되니 CPU가 노는 시간이 굉장히 많다는 것을 깨닫게 되었다. 그래서  CPU의 활용도를 늘리기 위해서 멀티프로그래밍이라는 개념이 나오게 되었다. CPU가 계속 작업을 하고 있어야만 그 컴퓨터 시스템의 throughput 이 올라가게 된다. throughput은 단위 시간당 처리량을 의미한다.

 

⭐ Degree of Multiprogramming

 

현재 시스템에 있는 precoess 의 개수가 많아질수록 throughput 이 높아지다가 너무 작업이 많아져 오버 로드되면 오히려 성능이 떨어진다.

 

Scheduling Queue

프로세스가 생성되면 일단 Ready Queue 로 들어오게 된다. 실제 대기열의 구현은 어떻게 될까?

OS 안에서 프로세스가 만들어지면 자동적으로 PCB 도 만들어진다. 새로 만들어진 프로세스는 Ready라는 링크에 서로 연결되어 있고, 결국 이 큐를 실제로 구현할 때는 Ready 상태에 있는 PCB 들을 Linked List 형태로 연결함으로써 큐를 만들 수 있다.

 

마찬가지로 대기상태(wait) 로 들어갔을 때도 큐가 생성되며 wait Queue 에는 여러 종류의 프로세스가 있다.

Queueing-diagram representation of process scheduling.

먼저 Ready Queue 에 있는 프로세스 중에서 하나를 스케줄러가 선택해주면 CPU를 할당받게 된다. CPU안에서 exit으로 나가지 않고 다시 돌아오는 것 중에서 Time slice expire라는 것이 있는데 이것은 Time out이 된 프로세스라는 것을 의미한다. Time Out 이 되었다는 것은 preenption (다른 프로세스에게 넘기고 대기상태로 들어간다.)이 되었다는 것을 의미한다.

I/O 장치도 있는 것을 볼 수 있다. 입출력 장치인데, 예를 들어서 프린터 같은 입출력장치를 사용하면 그동안 Ready Queue  상태로 들어간다.

 

대기하는 이유에는 여러가지가 있을 수 있고 그 각각마다 다른 경우에 속한다. Queue를 중심으로 이런 작업들이 수행되므로 Queueing Diagram 이라고 한다.

 

새로운 프로세스는 항상 Ready Queue로 들어가게 되고, Ready큐에 있는 프로세스를 선택하는 것은 OS의 Schduler라는 프로그램이 수행해준다. 그러면 해당 프로세스가 돌 수 있게끔 작업해주는데, 이것을 Dispatch라고 하며 그러한 프로그램을 Dispatcher 라고 한다.

 

정리하면 CPU가 쓸 프로그램을 선택해 주는 것이 Scheduler, 선택된 것이 실행되게끔 해주는 것이 Dispatcher이다.