Search
Duplicate

CPU Scheduling

ํƒœ๊ทธ
1 more property

Scheduling

โ€ข
CPU๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ
โ€ข
์˜ค๋ฒ„ํ—ค๋“œ โ†“ / ์‚ฌ์šฉ๋ฅ  โ†‘ / ๊ธฐ์•„ ํ˜„์ƒ โ†“ ํ•˜๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.
โ€ข
๋ชฉํ‘œ
1.
Batch System: ๊ฐ€๋Šฅํ•˜๋ฉด ๋งŽ์€ ์ผ์„ ์ˆ˜ํ–‰. ์‹œ๊ฐ„(time) ๋ณด๋‹จ ์ฒ˜๋ฆฌ๋Ÿ‰(throughout)์ด ์ค‘์š”
2.
Interactive System: ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„. ์ ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„.
3.
Real-time System: ๊ธฐํ•œ(deadline) ๋งž์ถ”๊ธฐ.

์„ ์  / ๋น„์„ ์  ์Šค์ผ€์ค„๋ง

โ€ข
์„ ์  (preemptive) : OS๊ฐ€ CPU์˜ ์‚ฌ์šฉ๊ถŒ์„ ์„ ์ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ฐ•์ œ ํšŒ์ˆ˜ํ•˜๋Š” ๊ฒฝ์šฐ
โ€ข
๋น„์„ ์  (nonpreemptive) : ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ or I/O ๋“ฑ์˜ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์‹คํ–‰ ๋ณด์žฅ (์ฒ˜๋ฆฌ์‹œ๊ฐ„ ์˜ˆ์ธก ์–ด๋ ค์›€)

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

์Šน์ธ (Admitted)ย 
โ€ข
ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์Šน์ธ๋จ.
์Šค์ผ€์ค„๋Ÿฌ ๋””์ŠคํŒจ์น˜ (Scheduler Dispatch)ย 
โ€ข
์ค€๋น„ย ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ
์ธํ„ฐ๋ŸฝํŠธ (Interrupt)ย 
โ€ข
์˜ˆ์™ธ,ย ์ž…์ถœ๋ ฅ, ์ด๋ฒคํŠธ ๋“ฑ์ด ๋ฐœ์ƒํ•˜์—ฌ ํ˜„์žฌ ์‹คํ–‰ย ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„ ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ณ , ํ•ด๋‹น ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ.
์ž…์ถœ๋ ฅ ๋˜๋Š” ์ด๋ฒคํŠธ ๋Œ€๊ธฐ (I/O or Event wait)ย 
โ€ข
์‹คํ–‰ ์ค‘์ธย ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์ด๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ž…์ถœ๋ ฅ/์ด๋ฒคํŠธ๊ฐ€ ๋ชจ๋‘ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ.
์ž…์ถœ๋ ฅ ๋˜๋Š” ์ด๋ฒคํŠธ ์™„๋ฃŒ (I/O or Event Completion)ย 
โ€ข
์ž…์ถœ๋ ฅ/์ด๋ฒคํŠธ๊ฐ€ ๋๋‚œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜์—ฌ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์„ ํƒ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ.
๋น„์„ ์  ์Šค์ผ€์ค„๋ง :ย Interrupt,ย Scheduler Dispatch
์„ ์  ์Šค์ผ€์ค„๋ง :ย I/O or Event Wait

CPU ์Šค์ผ€์ค„๋ง์˜ ์ข…๋ฅ˜

โ€ข
๋น„์„ ์  ์Šค์ผ€์ค„๋ง
1.
FCFS (First Come First Served)
โ€ข
ํ์— ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ CPU ํ• ๋‹น
โ€ข
์‹คํ–‰ ์‹œ๊ฐ„์ด ์งง์€ ๊ฒŒ ๋’ค๋กœ ๊ฐ€๋ฉด ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง
2.
SJF (Shortest Job First)
โ€ข
์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ์ž‘์—…์„ ๋จผ์ € ์ˆ˜ํ–‰
โ€ข
๊ฐ€์žฅ ์งง์€ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
โ€ข
ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค์˜ CPU ์ ์œ ์‹œ๊ฐ„(burst time)์„ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํ˜„์‹ค์ ์ด๋‹ค.
โ€ข
์„ ์  SJF๋„ ์กด์žฌํ•œ๋‹ค.
โ€ข
์„ ์  ์Šค์ผ€์ค„๋ง
1.
Priority Scheduling
โ€ข
์ •์ /๋™์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ
โ€ข
์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๋Š” Starvation ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ
โ€ข
Aging ๋ฐฉ๋ฒ•(ready queue์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ์˜ฌ๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•)์œผ๋กœ Starvation ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ
2.
Round Robin
โ€ข
FCFS์— ์˜ํ•ด ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ณด๋‚ด์ง€๋ฉด ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ์‹œ๊ฐ„์˜ย Time Quantumย ๋งŒํผ CPU๋ฅผ ํ• ๋‹ฌ ๋ฐ›์Œ
โ—ฆ
Time Quantumย orย Time Sliceย : ์‹คํ–‰์˜ ์ตœ์†Œ ๋‹จ์œ„ ์‹œ๊ฐ„
โ€ข
ํ• ๋‹น ์‹œ๊ฐ„(Time Quantum)์ด ํฌ๋ฉด FCFS์™€ ๊ฐ™๊ฒŒ ๋˜๊ณ , ์ž‘์œผ๋ฉด ๋ฌธ๋งฅ ๊ตํ™˜ (Context Switching) ์žฆ์•„์ ธ์„œ ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€
3.
Multilevel-Queue (๋‹ค๋‹จ๊ณ„ ํ)
โ€ข
์ž‘์—…๋“ค์„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ธฐ๋ฒ•
โ€ข
์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋“ค์ด ์‹คํ–‰ ๋ชปํ•˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธย Time Quantum์„ ์„ค์ • ํ•ด์ฃผ๋Š” ๋ฐฉ์‹ ์‚ฌ์šฉ
โ€ข
์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋Š” ์ž‘์€ย Time Quantumย ํ• ๋‹น. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋Š” ํฐย Time Quantumย ํ• ๋‹น.
4.
Multilevel-Feedback-Queue (๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ)
โ€ข
๋‹ค๋‹จ๊ณ„ ํ์—์„œ ์ž์‹ ์˜ย Time Quantum์„ ๋‹ค ์ฑ„์šด ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ€๊ณ  ์ž์‹ ์˜ย Time Quantum์„ ๋‹ค ์ฑ„์šฐ์ง€ ๋ชปํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์›๋ž˜ ํ ๊ทธ๋Œ€๋กœ
โ—ฆ
Time Quantum์„ ๋‹ค ์ฑ„์šด ํ”„๋กœ์„ธ์Šค๋Š” CPU burst ํ”„๋กœ์„ธ์Šค๋กœ ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ
โ€ข
์งง์€ ์ž‘์—…์— ์œ ๋ฆฌ, ์ž…์ถœ๋ ฅ ์œ„์ฃผ(Interrupt๊ฐ€ ์žฆ์€) ์ž‘์—…์— ์šฐ์„ ๊ถŒ์„ ์คŒ
โ€ข
์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— Turnaround ํ‰๊ท  ์‹œ๊ฐ„์„ ์ค„์—ฌ์คŒ

์Šค์ผ€์ค„๋ง์˜ ์ฒ™๋„ (Scheduling Criteria)

Scheduling criteria(์ฒ™๋„)๋Š” ์Šค์ผ€์ค„๋ง์˜ ํšจ์œจ์„ ๋ถ„์„ํ•˜๋Š” ๊ธฐ์ค€๋“ค์ด๋‹ค.
CPU Utilization(์ด์šฉ๋ฅ , %)
โ€ข
CPU๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๋น„์œจ
Throughput(์ฒ˜๋ฆฌ์œจ, jobs/sec)
โ€ข
๋‹จ์œ„์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์˜ ์ˆ˜(์ฒ˜๋ฆฌ๋Ÿ‰)
Turnaround time(๋ฐ˜ํ™˜์‹œ๊ฐ„)
โ€ข
์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ํ•ฉํ•œ ์‹œ๊ฐ„์œผ๋กœ ์ž‘์—…์ด ์™„๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ์ด ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
Waiting time(๋Œ€๊ธฐ์‹œ๊ฐ„)
โ€ข
CPU๋ฅผ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ready queue์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค.(๋‹ค๋ฅธ ํ์—์„œ ๋Œ€๊ธฐํ•œ ์‹œ๊ฐ„์€ ์ œ์™ธํ•œ๋‹ค.)
Response time(์‘๋‹ต์‹œ๊ฐ„)
โ€ข
์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ์—์„œ ์ž…๋ ฅ์— ๋Œ€ํ•œ ๋ฐ˜์‘ ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค. (์ž‘์—…์ด ์ œ์ผ ์ฒ˜์Œ ์‹คํ–‰๋˜๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„)