dsa

  • by

블로그 카테고리의 목적:

🔎 CPU Scheduling 방법, 특징을 이해하기 위해

​​

복습:

프로그램 실행시 Cpu burst와 I/O burst가 번갈아 실행됩니다.


이때,

I / O 작업이 많지 않으면 CPU에서 Instruction을 실행하는 단계입니다.

Cpu 버스트가 길게 표시됩니다.

반대로,

I / O 작업이 많으면 CPU를 연속적으로 쓰는 단계가 짧아지고,

I/O 버스트가 오랫동안 나타나는 이유는 인터럽트가 자주 발생하기 때문입니다.

(궁극적으로 CPU 스케줄링은이 CPU 버스트 시간과 I / O 버스트 시간을 적절하게 조정합니다.

필요합니다.

.!
)

​​

(CPU Schduler)

현재 ready queue에 들어있는 프로세스 중

어떤 프로세스에 CPU를 제공할지 결정하는 메커니즘입니다.

​​

(CPU Schduler의 두 가지 문제)

  1. 어떤 프로세스에 CPU를 제공합니까?
  2. 프로그램에 CPU를 준 후 계속 사용합니까? 도중에 CPU를 공제하는 것일까?

(nonpreemptive//preemptive)

(CPU 버스트가 긴 Process에 CPU를 주었지만, ready queue에 짧게 써 가는 I/O

instruction이 있다면 어떻게 해야 합니까?

​​

(Scheduling Criteria)

1. 시스템 입장에서의 성능 스케일

  • CPU Utilization(전시간 동안 CPU가 일한 시간이 얼마나 되는지) 이용료
    • 가능한 한 많은 CPU를 만들어 전체 시간에 CPU가 작동하는 시간의 비율을 높이는 것이 좋습니다.

  • Throught ( 주어진 시간에 무엇을 처리했는지에 대한 비율)
    • 주어진 시간에 CPU가 작업을 많이 처리하는 것이 좋습니다.

2. 고객의 입장에서의 성능 척도(프로세스가 빨리 처리되는 것이 중요!
)

  • Turnaround Time(CPU를 쓰러뜨려 쓰는데 걸린 시간)
    • 대기 시간과 CPU를 얻고 작업을 종료하고 종료하는 데 걸린 총 시간
  • Waiting Time (ready queue에서 순수하게 기다린 시간)
    • CPU 할당 반환 처리 중 Waiting Time의 종합
  • Response Time (ready queue에 들어가서 처음으로 CPU를 얻는 데 걸린 시간)

​​

(Algorithm of CPU Schduler)

  • nonpreemptive (CPU를 강제로 당긴 적은 없습니다.

    )
  • preemptive (CPU를 강제로 당겼다.

    )

(현대적인 스케줄러 방식은 거의 거의 preemptive인 방법을 사용하고 있다고 하네요!
)

  1. FCFS(First-Come First-Served) ✨ 먼저 온 순서대로 처리 (nonpreemptive)

FCFS 방식의 경우, 이전에 어느 프로세스가 위치하는지에 따라

Waiting Time에 큰 영향을 미칩니다.

Convoy effect : 긴 프로세스가 먼저 도착하고 짧은 프로세스가 지나치게 많은 시간을 기다려야 함

​​

2. SJF(Shortest-Job-First)​​ ✨ 짧은 프로세스를 먼저 배치하여 CPU 관리 (nonpreemptive,preemptive)


non-preemptive 경우 :

SJF 스케줄링은 ready queue 프로세스 중 실행 시간이 가장 짧습니다.

작업에서 CPU를 할당하는 비선점형 방식으로 최단 작업 우선 스케줄링라고도 합니다.

(FCFS 스케줄링의 convoy effect를 완화하여 시스템의 효율성을 높였다고 하네요..!
)

​​

preemptive 경우 :

새로 들어간 프로세스가 실행 중인 작업을 일시중단하고 실행할 수 있습니다.

​​

🚨 SJF 방식의 두 가지 문제점 :

1.Starvation 문제: CPU 사용이 긴 프로세스는 영원히 서비스를 받지 못할 수 있습니다.

이것은 SJF 방식이 극단적으로 CPU 사용이 짧은 Job을 선호하기 때문입니다.

2. CPU 사용 시간을 추정할 수 있지만 CPU 사용 시간은 미리 알 수 없다.


(사용량이 길수록 예측하면 가중치가 줄어 평가됩니다)

​​

3. Priority Scheduling 우선 순위 스케줄링 (nonpreemtive, preemtive)

(우선 순위가 높은 process에 우선 CPU를 준다)

preemtive:

우선 순위가 높은 process가 들어오면 cpu 할당

nonpreemtive:

우선순위가 높은 process가 들어가도 cpu 보증

​​

🚨 Priority Scheduling 문제

우선순위가 낮은 프로세스는 너무 길기를 기다릴 수 있습니다.

해결책:

Aging 기술을 사용하면 낮은 프로세스의 우선 순위를 높일 수 있습니다.

기준은 기다리는 정도입니다.

​​

4. Round Robin 현대 CPU 스케줄링 기술 (preemtive)

Round Robin 방법에서는 각 프로세스에 대해 CPU가 동일한 할당 시간으로 설정됩니다.

할당 시간이 끝나면 Timer interrupt 에 의해 CPU를 뺀 것이 되어, ready queue 에

맨 뒤로 돌출되는 프로세스를 반복합니다.

​​

Round Robin 방식의 장점

CPU를 처음으로 얻을 때까지의 과정이 빠르다.

모든 프로세스에 CPU가 할당됩니다.

​​

이상으로 CPU Scheduling 발표를 종료하겠습니다.

출처: http://kocw.net/home/search/kemView.do?kemId=1046323

강의: 이화여대, 반효경(운영체제)