일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 별찍기
- 다운로드
- SWEA
- scheduler
- 운영체제
- 맥
- priority scheduling
- 스케줄러
- 마름모
- SJF
- acmicpc
- Eclipse
- 그림판유저
- RR
- 톰캣다운로드
- 톰캣
- 백준2869
- Server
- 백준
- BOJ
- 2805
- 달팽이는올라가고싶다
- FCFS
- 이클립스
- CPU
- swexpert
- OS
- tomcat
- srt
- 농작물수확하기
- Today
- Total
그림판유저의 은밀한 개발
[운영체제] CPU 스케줄러 - FCFS, SJF, SRT, RR, Priority Scheduling 본문
CPU 스케줄러
CPU 스케줄러란?
- 다중 프로그램 OS의 기본으로, 여러 프로세스들이 CPU를 교환하며 보다 생산적으로 동작한다.
- CPU를 선점한 프로세스가 대기하는 시간을 보다 효율적으로 사용하기 위하여 사용한다.
기본적으로 다음에 실행될 프로세스를 정하고, 프로세스들을 실행가능한 상태로 만든다.
비선점 vs 선점 스케줄링
스케줄링은 다음과 같은 때에 일어난다.
- Running → Waiting 상태 : ( ex. I/O 요청, 자식프로세스 종료 - wait() 요청을 통해 종료 )
- Running → Terminate 상태 : ( ex. 부모프로세스의 종료 )
- Running → Ready 상태 : ( ex. 인터럽트 발생 )
- Waiting → Ready 상태 : ( ex. I/O 완료 )
비선점 스케줄링
- Time-slice 가 없는 스케줄링
- CPU를 사용중인 프로세스가 자율적으로 반납하도록 하는 방식
- 따라서 프로세스가 자율적으로 CPU를 반납하는 시점에서 사용한다. [ 1, 2 번 시점 ]
선점 스케줄링
- 낮은 우선순위를 가진 프로세스보다 높은 우선순위를 가진 프로세스가 CPU를 선점하는 방식
- OS가 스케줄링의 알고리즘에 따라 적당한 프로세스에게 CPU를 할당하고, 필요시에는 회수하는 방식
- 일반적으로 3, 4 번 시점에서 사용하지만, 상황에 따라 1, 2 에서도 스케줄링이 가능하다.
CPU 스케줄링 알고리즘의 목적
일반적인 시스템에서는 다음과 같은 목적을 공통적으로 지닌다.
- No starvation : 각각의 프로세스들이 오랜시간동안 CPU를 할당받지 못하는 상황이 없도록 한다.
- Fairness : 각각의 프로세스에 공평하게 CPU를 할당해준다.
- Balance : Keeping all parts of the system busy
Batch System [일괄처리 시스템]
: 온라인처럼 일에 대한 요청이 발생했을 때, 즉각적으로 처리하는 것이 아닌 일정기간 또는 일정량을 모아뒀다가 한번에 처리하는 방식- Throughput : 시간당 최대의 작업량을 낸다.
- Turnaround time : 프로세스의 생성부터 소멸까지의 시간을 최소화한다.
- CPU utilization : CPU가 쉬는 시간이 없도록 한다.
Interactive System [대화형 시스템]
: 온라인과 같이 일에 대한 요청에 대해 즉각적으로 처리하여 응답을 받을 수 있는 시스템- Response time : 즉각적으로 처리해야하는 시스템이므로 요청에 대해 응답시간을 줄이는 게 중요하다.
Time Sharing System
: 각 프로세스에 CPU에 대한 일정시간을 할당하여 주어진 시간동안 프로그램을 수행할 수 있게하는 시스템- Meeting deadlines : 데이터의 손실을 피하며, 끝내야하는 시간 안에 도달해야한다.
- Predictability : 멀티미디어 시스템에서의 품질이 저하되는 부분을 방지해야한다.
스케줄링 알고리즘
비선점 스케줄링 [Non-preemptive scheduling]
FCFS (First Come First Served)
먼저 CPU를 요청하는 프로세스를 먼저 처리하는 방식
다음과 같은 프로세스 요청이 있다고 하자.
프로세스 Burst Time Waiting Time Turnaround Time P1 15 0 15 P2 5 15 20 P3 3 20 23
P1 → P2 → P3 순으로 프로세스가 CPU를 요청할 때, CPU는 아래와 같이 시간을 쓴다.
P3는 P1보다 걸리는 시간(Burst time)이 짧지만, CPU를 늦게 요청했기 때문에 총 걸리는 시간(Turnaround Time)이 길다.
평균 Waiting Time : (0 + 15 + 20) / 3 = 11.7
만약, P3 → P2 → P1 순으로 프로세스가 CPU를 요청할 때, CPU는 아래와 같이 시간을 쓴다.
평균 Waiting Time : (0 + 3 + 8) / 3 = 2.7
즉, CPU를 요청하는 프로세스의 burst time에 따라 평균 waiting time이 나빠진다.
SJF (Shortest Job First)
평균 waiting time 을 최소화하기 위해 사용하는 방식
버스트 시간이 짧은 프로세스부터 CPU를 할당한다.
다음과 같은 프로세스가 있다고 하자
프로세스 Burst Time Waiting Time Turnaround Time P1 6 3 9 P2 3 0 3 P3 8 16 24 P4 7 9 16 SJF에서의 스케줄링 순서는 다음과 같다.
- P2 → P1 → P4 → P3
Waiting time 을 최소화하는 데는 최적이지만, burst time이 긴 프로세스은 오랜 시간 굶주려야 하므로, 위에 언급한 No starvation을 어기게 된다.
선점 스케줄링 [Preemptive scheduling]
선점 스케줄링에는 몇가지 룰이 있다.
높은 우선순위를 가지는 프로세스는 항상 먼저 스케줄되어야 한다.
I/O-bound process는 CPU-bound process 보다 반드시 높은 우선순위에 있어야 한다.
Time slice 의 양은 CPU burst time 보다 조금만 더 많아야 한다.
time slice가 더 적을 경우, 불필요한 context switch가 많이 일어난다.
time slice가 훨씬 클 경우, I/O가 일어날 때에 CPU를 반납하거나, 다른 프로세스는 CPU에 굶주리는 현상이 일어날 수 있다.
Real-time 프로세스는 다른 프로세스에 비해 매우 높은 우선순위를 갖는다.
Dynamic priority scheme : 커널안에서 프로세스의 우선순위는 지속적으로 변한다.
Fixed priority scheme
SRT(Shortest Remaining Time)
최단 잔여시간을 우선으로 하는 스케줄링.
진행 중인 프로세스가 있어도, 최단 잔여시간인 프로세스를 위해 sleep시키고 짧은 프로세스를 먼저 할당한다.
선점형 SJF 스케줄링이라 불린다.
프로세스 도착시간 Burst Time 종료시간 Waiting Time Turnaround Time P1 0 8 17 9 17 P2 1 4 5 0 4 P3 2 9 26 15 24 P4 3 5 10 2 7
P1 → P2 → P3 → P4 순서대로 왔어도 도착시간에서의 잔여 시간을 비교해 CPU를 할당한다.
RR(Round Robin)
Time Sharing System을 위해 설계된 스케줄링
모든 프로세스가 같은 우선순위를 가진고, time slice를 기반으로 스케줄링한다.
Time slice burst가 일어나면 해당 프로세스는 스케줄링 큐의 끝으로 이동한다.
Time slice 가 3ms 일때의 RR 스케줄링을 가지는 프로세스는 다음과 같이 동작한다.
프로세스 Burst Time Waiting Time Turnaround Time P1 13 10 23 P2 7 3 10 P3 3 12 15
평균 Waiting Time : (10 + 3 + 12) / 3 = 8.3
알고리즘의 성능은 Time slice 크기와 같아진다.
Time slice 가 심하게 크다면 FCFS와 다를게 없다.
Time slice 가 너무 작다면 불필요한 Context Switch가 많이 일어난다.
Priority Scheduling (우선 순위 스케줄링)
- 우선 순위가 높은 프로세스에 CPU를 우선 할당하는 방식의 스케줄링
- 우선 순위는 시간 제한, 메모리 요구량, 프로세스의 중요성, 자원사용 비용 등에 따라 달라질 수 있다.
- 우선 순위가 같을 경우, FCFS와 다를게 없다. (비선점, 선점 둘다 사용된다.)