๐พ CPU Scheduling
CPU Scheduling์ด๋ OS(Operating System)๊ฐ Process๋ค์๊ฒ CPU ์์์ ๊ณต์ ํ๊ณ ํฉ๋ฆฌ์ ์ผ๋ก ๋ฐฐ๋ถํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
CPU๊ฐ ๋จผ์ ์ฒ๋ฆฌํ๋ฉด ์ข์ ์์๋๋ก ๋ฒํธ๋ฅผ ๋ถ์ฌํ ๊ฒ์ ์ฐ์ ์์(Priority)๋ผ ํ๋ฉฐ OS๋ PCB(Process Control Block)์ ์ฐ์ ์์๋ฅผ ๋ช ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด I/O Bound Process๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ ํ ๋๊ธฐ ์ํ๋ก ๋ง๋ค๊ณ CPU Bound Process์ ์ง์ค์ ์ผ๋ก CPU๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ CPU Bound Process์ ์ฐ์ ์์๋ณด๋ค I/O Bound Process์ ์ฐ์ ์์๊ฐ ๋ ๋์ต๋๋ค.
- CPU Burst: CPU๋ฅผ ์ด์ฉํ๋ ์์
- I/O Burst: I/O Device๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์์
- CPU Bound Process(CPU ์ง์ค ํ๋ก์ธ์ค): CPU Burst๊ฐ ๋ง์ Process
- I/O Bound Process(I/O ์ง์ค ํ๋ก์ธ์ค): I/O Burst๊ฐ ๋ง์ Process
๐พ Scheduling Queue
Process State Diagram With Scheduling Queue
๋งค๋ฒ ๋ชจ๋ Process๋ค์ ์ดํด๋ณธ ํ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๊ฒ์ ๋ชจ๋ Process๋ค์ ์ดํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋นํจ์จ์ ์ ๋๋ค. ์ด๋ฌํ ๋นํจ์จ์ ํด๊ฒฐํ๊ธฐ ์ํด Scheduling Queue๋ฅผ ์ฌ์ฉํฉ๋๋ค.
OS๊ฐ ๊ด๋ฆฌํ๋ Queue์๋ ๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์์ต๋๋ค.
- Process State๊ฐ Ready(์ค๋น ์ํ)์ ์๋ Ready Queue
- Process State๊ฐ Blocked(๋๊ธฐ ์ํ)์ ์๋ Waiting Queue
๐พ CPU Scheduling Algorithm
OS๋ Ready Queue์ ์๋ Process๋ค์ ์ฐ์ ์์๋ฅผ CPU Scheduling Algorithm์ ์ฌ์ฉํด ์ ํฉ๋๋ค.
CPU Scheduling Algorithm์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ด ๋๋์ด์ง๋๋ค.
ย | ์ ์ ํ ์ค์ผ์ค๋ง(Preemptive Scheduling) | ๋น์ ์ ํ ์ค์ผ์ค๋ง(Non-Preemptive Scheduling) |
---|---|---|
์ ์ | OS๊ฐ CPU๋ฅผ ์ฌ์ฉํ๊ณ ์๋ Process๋ก๋ถํฐ CPU๋ฅผ ๊ฐ์ ๋ก ๋นผ์์ ๋ค๋ฅธ Process์๊ฒ ํ ๋นํ๋ ์ค์ผ์ค๋ง | CPU๋ฅผ ์ฌ์ฉํ๊ณ ์๋ Process๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น Process๊ฐ Terminated(์ข
๋ฃ ์ํ)๊ฐ ๋๊ฑฐ๋ Blocked(๋๊ธฐ ์ํ)๊ฐ ๋๊ธฐ ์ ๊น์ง ๋ค๋ฅธ Process๊ฐ CPU๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ์ค์ผ์ค๋ง |
์ฅ์ | ์ด๋ ํ Process์ ์์ ๋
์ ์ ๋ง๊ณ Process๋ค์๊ฒ ๊ณจ๊ณ ๋ฃจ ์์คํ ์์์ ๋ฐฐ๋ถํ ์ ์์ | Context Switching ํ์๊ฐ ์ ์ ํ ์ค์ผ์ค๋ง๋ณด๋ค ์ ๊ธฐ ๋๋ฌธ์ Overhead๊ฐ ๋ ๋ฐ์ |
๋จ์ | Context Switching์์ Overhead๊ฐ ๋ฐ์ | ๋ชจ๋ Process๊ฐ ๊ณจ๊ณ ๋ฃจ ์์คํ ์์์ ์ฌ์ฉํ ์ ์์ |
์ถ๊ฐ | ํ์ฌ ๋๋ถ๋ถ์ OS์์ ์ฌ์ฉํ๋ CPU Scheduling Algorithm | ย |
CPU Scheduling Algorithm์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์์ต๋๋ค.
CPU Scheduling Algorithm | Definition |
---|---|
FCFS(First Come First Served Scheduling) | Ready Queue์ ์ฝ์ ๋ ์์๋๋ก Process๋ค์ ์ฒ๋ฆฌํ๋ ๋น์ ์ ํ ์ค์ผ์ค๋ง |
Rounding Robin Scheduling | ์ ํด์ง Time Slice๋งํผ์ ์๊ฐ ๋์ ๋์๊ฐ๋ฉฐ CPU๋ฅผ ์ด์ฉํ๋ ์ ์ ํ ์ค์ผ์ค๋ง |
Priority Scheduling | Process๋ค์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ณ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง Process๋ถํฐ ์คํํ๋ ์ค์ผ์ค๋ง |
SJF(Shortest Job First) Scheduling | Ready Queue์ ์ฝ์ ๋ Process๋ค ์ค CPU ์ด์ฉ ์๊ฐ์ ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์ Process๋ถํฐ ์คํํ๋ ๋น์ ์ ํ ์ค์ผ์ค๋ง |
SRT(Shortest Remaining Time) Scheduling | Ready Queue์ ์ฝ์
๋ Process๋ค ์ค CPU ์ด์ฉ ์๊ฐ์ ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์ Process๋ค์ ๋จผ์ ์คํํ๋ Time Slice๋งํผ ์คํํ๋ ์ ์ ํ ์ค์ผ์ค๋ง |
Multilevel Queue Scheduling | ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ Queue์ ์๋ Process๋ค์ ๋จผ์ ์ฒ๋ฆฌํ๊ณ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ Queue๊ฐ ๋น์ด ์์ผ๋ฉด ๊ทธ๋ค์ ์ฐ์ ์์ Queue์ ์๋ Process๋ค์ ์ฒ๋ฆฌํ๋ ์ค์ผ์ค๋ง |
Multilevel Feedback Queue Scheduling | ์ด๋ค Process์ CPU ์ด์ฉ ์๊ฐ์ด ๊ธธ๋ฉด ๋ฎ์ ์ฐ์ ์์ Queue๋ก ์ด๋์ํค๊ณ ์ด๋ค Process๊ฐ ๋ฎ์ ์ฐ์ ์์ Queue์์ ๋๋ฌด ์ค๋ ๊ธฐ๋ค๋ฆฐ๋ค๋ฉด ๋์ ์ฐ์ ์์ Queue๋ก ์ด๋์ํฌ ์ ์๋ ์ค์ผ์ค๋ง |
๐พ FCFS
FCFS๋ ๋จ์ํ ์ฝ์ ๋ ์์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ Convoy Effect(ํธ์ ํจ๊ณผ)๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
Convoy Effect: CPU๋ฅผ ์ ๊ฒ ์ฌ์ฉํ๋ Process๋ฅผ ์ํํ๊ธฐ ์ํด์๋ ๋จผ์ ์คํ๋์ด์ผ ํ๋ Process๋ค์ด ์๊ธฐ ๋๋ฌธ์ ๊ธด ์๊ฐ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ํ์
๐พ Round Robin Scheduling
Round Robin Scheduling์ FCFS์ Time Slice๋ผ๋ ๊ฐ๋ ์ด ๋ํด์ง ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋๋ค.
์๋ฅผ ๋ค์ด Ready Queue์ ์ฝ์ ๋ Process๋ค์ ์ฝ์ ๋ ์์๋๋ก CPU๋ฅผ ์ ํด์ง ์๊ฐ๋งํผ ์ด์ฉํ๋ ์์ง ์๋ฃ๋์ง ์์๋ค๋ฉด ๋ค์ Ready Queue ๋งจ ๋ค์ ๋ค์ ์ฝ์ ๋ฉ๋๋ค.
Round Robin Scheduling์์๋ Time Slice์ ํฌ๊ธฐ๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- Time Slice์ ํฌ๊ธฐ๊ฐ ํฐ ๊ฒฝ์ฐ: Convoy Effect๊ฐ ๋ฐ์ํ ์ ์์
- Time Slice์ ํฌ๊ธฐ๊ฐ ์์ ๊ฒฝ์ฐ: Context Switching์ ๋ฐ์ํ๋ ๋น์ฉ์ด ์ปค์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
Time Slice: ๊ฐ Process๊ฐ ์ผ๋ง๋ CPU๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ์ ํด์ง ์๊ฐ
๐พ Priority Scheduling
Priority Scheduling์์ ๋ง์ฝ ์ฐ์ ์์๊ฐ ๊ฐ๋ค๋ฉด FCFS๋ก ์ค์ผ์ค๋ง๋ฉ๋๋ค.
๊ทธ๋ฌ๋ Priority Scheduling์ Starvation ํ์์ด ์ผ์ด๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Aging ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
- Starvation(๊ธฐ์) ํ์: ์ฐ์ ์์๊ฐ ๋ฎ์ Process๋ค์ด ์ฐ์ ์์๊ฐ ๋์ Process๋ค ๋๋ฌธ์ ์คํ์ด ๊ณ์ ์ฐ๊ธฐ๋๋ ํ์
- Aging: ์ค๋ซ๋์ ๋๊ธฐํ Process์ ์ฐ์ ์์๋ฅผ ์ ์ฐจ ๋์ด๋ ๋ฐฉ์
๐พ SJF(Shortest Job First) Scheduling
SJF Scheduling์ Priority Scheduling์ ํ ์ข ๋ฅ๋ก FCFS์ ๋จ์ ์ด์๋ Convoy Effect๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๐พ SRT(Shortest Remaining Time) Scheduling
SRT Scheduling์ Priority Scheduling์ ํ ์ข ๋ฅ๋ก SJF Scheduling๊ณผ Round Robin Scheduling์ ํฉ์น ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋๋ค.
์ฆ Ready Queue์ ์ฝ์ ๋ Process๋ค ์ค CPU ์ด์ฉ ์๊ฐ์ ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์ Process๋ค์ ๋จผ์ ์คํํ๋ Time Slice๋งํผ ์คํํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋๋ค.
๐พ Mulilevel Queue Scheduling
Multilevel Queue Scheduling์ Priority Scheduling์ ๋ฐ์ ๋ ํํ๋ก์ ์ฐ์ ์์์ ๋ฐ๋ฅธ Ready Queue๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๋ ์ค์ผ์ค๋ง์ ๋๋ค.
์ฅ์ | ๋จ์ |
---|---|
Queue๋ณ๋ก Time Slice๋ฅผ ์ฌ๋ฌ ๊ฐ ์ง์ ํ ์ ์์ | Starvation ํ์์ด ๋ฐ์ํ ์ ์์ |
Queue๋ง๋ค ๋ค๋ฅธ Scheduling Algorithm์ ์ฌ์ฉํ ์ ์์ | ย |
๐พ Mulilevel Feedback Queue Scheduling
Multilevel Feedback Queue Scheduling์ Multilevel Queue Scheduling์ด ๋ฐ์ ๋ ํํ๋ก์ Process๋ค์ด Ready Queue ์ฌ์ด๋ฅผ ์ด๋ํ ์ ์๋ ์ค์ผ์ค๋ง์ ๋๋ค.
Multilevel Feedback Queue Scheduling์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋กญ๊ฒ ๋ค์ด์ค๋ Process๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ Ready Queue์ ์ฝ์
- Time Slice๋์ CPU๋ฅผ ์ฌ์ฉํ๋๋ฐ ์คํ์ด ๋๋์ง ์์๋ค๋ฉด ๋ค์ ์ฐ์ ์์์ธ Ready Queue์ ์ฝ์ ๋์ด ์คํ(์ฐ์ ์์๊ฐ ํ ๋จ๊ณ ๋ฐ๋ ค๋จ)
- $2$๋ฒ ๋ฐ๋ณต
Multilevel Feedback Queue Scheduling์ ๊ตฌํ์ด ๋ณต์กํ์ง๋ง ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ CPU Scheduling Algorithm์ ๋๋ค.