CS/운영체제

3.2 Process Scheduling

sliver__ 2023. 10. 24. 21:12
728x90

Process scehduler는 core에서 실행한 가능한 process를 선택한다.

하나의 코어에는 하나의 process만 수행 가능하다. (동시간에 하나의 코어에 여러개의 process 실행 불가능)

Current process가 실행되고 있다면 long state 필드 값을 실행중으로 업데이트 한다.

대부분 process는 I/O bound process, CPU bound process로 구분된다.

I/O bound process는 computation보다 대부분 I/O를 수행한다.

CPU bound process는 I/O request보다 computation을 대부분 수행한다.

 

Process Representation in Linux

PCB(Process Control Block)은 Linux OS에서 task_struct 구조체로 표현된다.

kernel soruce code directory의 <include/linux/sched.h>에 정의되어있다.

Field of task_struct

Double linked list 형태의 pointer로 active process를 관리한다.

 

Scheduling Queues

 

The ready queue and wait queues.

Process가 system에 들어오면 ready queue에 들어간다. 이는 CPU core를 할당받기 위해 기다리는 큐이다.

Wait queue는 Process가 core를 할당받고 수행하는 도중 I/O 가 발생하면 I/O 작업이 완료될 때 까지 기다리는 큐이다.

 

Queueing-diagram representation of process scheduling.

새로운 프로세스가 ready queue에 들어온다.

그리고 CPU Core 할당을 받는다. 실행 도중 event가 발생한다.

  • Process가 I/O request를 하고 I/O wait queue로 이동한다.
  • Process가 child process를 생성하고 child process가 끝날 때 까지 대기하는 queue로 이동한다.
  • Process가 interrupt되거나 또는 강제로 core에서 삭제되면 ready queue로 이동한다.

Process는 종료될 때 까지 그림과 같은 순환을 반복한다.

 

CPU Scheduling

CPU Scheduler는 ready 또는 wait queue에 있는 Process를 선택해 CPU core를 할당한다.

I/O bound process는 CPU를 조금 사용하고 I/O 기다리는데 사용할 것이다.

CPU bound process는 CPU를 더 오랜 기간동안 사용이 필요할 것이다.

하지만 더 사용하지는 못하고 그 대신 100milisecond 또는 더 짧게 CPU scheduler가 동작한다.

Swapping은 memory에 있는 process를 제거하고 process의 정보를 저장한다. 이후 disk에서 memory로 해당 process가 swapped in 했을 때 저장한 process 정보를 살린다.

이는 memory가 부족할 때 사용한다.

 

Context Switch

 

interrupt가 발생했을 때 CPU Core에서 실행되던 Process의 Context를 PCB에 저장한다.

그리고 process가 다시 실행될 때 저장한 정보를 사용한다.

CPU core switching이 발생했을 때 실행되던 Process의 상태를 저장하고 실행될 다른 process의 상태를 복구한다.

Diagram showing context switch from process to process.

Context switch가 발생하였을 때 드는 시간은 overhead이다.

Switching speed는 memory speed, 복사해야하는 register의 개수, special instruction이 존재하는지에 따라 다르다.

거의 microsecond 이내로 수행된다.

 

728x90