본문 바로가기

CS/운영체제

[운영체제] 5. CPU Scheduling (1)

더보기

kocw 반효경 교수님의 운영체제 강의를 수강 후 작성한 글입니다.

1. 프로세스 특성 분류

  • I/O-bound process
    • cpu를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
    • Interactive job -> 적절한 response 제공이 필요
    • many short CPU bursts
  • CPU-bound process
    • 계산 위주의 job - 중간에 I/O가 거의 끼어들지 않음
    • few very long CPU bursts

 

2. CPU Scheduler & Dispatcher

CPU Scheduler : Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다. (하드웨어가 아닌 운영체제 안 특정 코드를 의미함)

Dispatcher : CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘긴다. 이 과정을 context switch(문맥교환)이라고 한다.

 

- Nonpreemptive : 비선점형. 강제로 빼앗지 않고 자진 반납 

- Preemptive : 선점형. 강제로 빼앗음

 

CPU Scheduling이 필요한 경우

1) Running -> Blocked (예: I/O 요청하는 시스템콜) : nonpreemptive

2) Running -> Ready (예: 할당시간만료로 timer interrupt) : preemptive

3) Blocked -> Ready (예: I/O 완료 후 인터럽트) : preemptive

4) Terminate : nonpreemptive

3. Scheduling Criteria (=Performance Index, Performance Measure, 성능 척도)

  • System 측면
    • CPU utilization (이용률) : keep the CPU as busy as possible
    • Throughput (처리량): # of processes that complete their execution per time unit
  • Process 측면
    • Turnaround time (소요시간) : amount of time to execute a particular process
    • Waiting time (대기 시간) : amount of time a process has been waiting in the ready queue
    • Response Time (응답 시간) : amount of time it takes from when a request was submitted until the first response is produced, not output

4. Scheduling Algorithms

FCFS (First-Come First-Service)

프로세스가 도착한 순서대로 CPU를 잡고 수행한다.

만약 위와 같은 프로세스에 대해서 도착 순서가 P4 -> P2 -> P3 -> P1 과 같다고 하면, average waiting time = (0 + 2 + 5 + 11)/4 = 4.5 ms 가 된다. 프로세스의 도착 순서에 따라 ATT가 달라지는 것을 확인할 수 있다. -> Convoy effect 발생

 

- Convoy effect : short process behind long process. 긴 프로세스가 먼저 도착해서 짧은 프로세스들이 오래 기다려야 하는 경우를 의미.

SJF (Shortest-Job-First)

각 프로세스의 다음번 CPU Burst time을 가지고 스케줄링에 활용

CPU burst time이 가장 짧은 프로세스를 제일 먼저 스케줄한다.

SJF is optimal - SJF 방식은 주어진 프로세스들에 대해 minimum average waiting time을 보장한다.

- Non-Preemptive SJF

  • 일단 CPU를 잡으면 이번 CPU burst가 완료될 때까지 CPU를 선점 당하지 않음

- Preemptive SJF

  • 현재 수행중인 프로세스의 남은 burst time보다 더 짧은 CPU burst time을 가지는 새로운 프로세스가 도착하면 CPU를 빼앗김
  • 이 방법은 Shortest-Remaining-Time-First (SRTF) 라고도 부름

Problem

  • 다음 CPU burst time을 어떻게 알 수 있는가?
    • estimation(추정)만이 가능. 과거의 CPU burst time을 이용해서 추정함 
    • exponential averaging : 예측값과 실제 과거의 CPU burst time에 대해 특정 a, (1-a)를 곱해 계산할 수 있음. 이때 후속 term은 선행 term보다 더 적은 가중치 값을 가지게 됨. 
  • Starvation : 낮은 우선순위를 가진 프로세스가 CPU를 잡지 못하게 됨. SJF에서는 적은 실행시간을 가지는 프로세스가 계속해서 들어오면 실행시간이 긴 프로세스가 실행되지 못하게 되는 starvation 문제가 발생할 수 있음.

Priority Scheduling

highest priority를 가진 프로세스에게 CPU를 할당한다.

  • Problem - Starvation : low priority processes may never execute.
  • Solution - Aging : as time progresses increase the priority of the process.

Round Robin (RR)

각 프로세스는 동일한 크기의 할당 시간(time quantum)을 가짐 (일반적으로 10-100 milliseconds)

  • 할당 시간이 지나면 프로세스는 preempted 당하고 ready queue의 제일 뒤에 가서 다시 줄을 선다.
  • n개의 프로세스가 ready queue에 있고 할당 시간이 q time unit인 경우, 각 프로세스는 최대 q time unit 단위로 CPU 시간의 1/n을 얻는다. -> 어떤 프로세스도 (n-1)*q time unit 이상 기다리지 않는다.
  • 대기 시간이 본인이 CPU를 사용하려는 시간에 비례한다. (CPU 사용 시간이 길다면 q 이내에 프로세스가 끝나지 않아 다시 ready queue에서 기다려야 함)
  • CPU 사용시간이 짧은 프로세스와 긴 프로세스가 섞여있을 경우 유리하다. 만약 모든 프로세스의 사용시간이 동일하다면 일정시간 돌아가며 CPU를 차지하다가 결국 같은 시간에 수행을 완료 후 나가게 된다. 이 경우 프로세스가 빨리 빠져나가지 못하고 계속 ready queue에서 기다리며 대기 시간만 늘어나게 되므로 RR을 사용하기 적절치 않다.
  • Performance
    • q large -> FCFS
    • q small -> context switch 오버헤드가 커져 전체 성능이 떨어진다.

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 6. Process Synchronization (1)  (0) 2022.12.13
[운영체제] 5. CPU Scheduling (2)  (0) 2022.12.02
[운영체제] 4. Process Management  (0) 2022.11.22
[운영체제] 3. Process (2)  (0) 2022.11.17
[운영체제] 3. Process (1)  (0) 2022.11.17