ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•
CPU๋ผ๋Š” ํ•˜๋“œ์›จ์–ด ์ž์›์„ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์ด ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด, ์Šค์ผ€์ค„๋ง ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์Šค์ผ€์ค„๋ง์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ํšจ์œจ์ ์ธ CPU ์Šค์ผ€์ค„๋ง์ด ์˜คํžˆ๋ ค ์„ฑ๋Šฅ ๊ฐ์†Œ๋ฅผ ์•ผ๊ธฐ ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.

 

Scheduling Critria

CPU ์Šค์ผ€์ค„๋ง์˜ ํšจ์œจ์„ฑ์„ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • CPU Utilizaiton

  • Throughput

  • Turnarround Time

  • Wating Time

  • Response Time

 

Preemptive VS Non-Preemptive

๋‹ค์–‘ํ•œ CPU ์Šค์ผ€์ค„๋ง์„ ์•Œ๊ธฐ์— ์•ž์„œ ์„ ์ (Preemptive), ๋น„์„ ์ (Non-Preemptive) ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

Preemptive

์„ ์ ์€ ๋ง๊ทธ๋Œ€๋กœ ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜์—ฌ CPU ์‚ฌ์šฉ์„ ์„ ์ ๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Š” CPU ์ ์œ ๊ฐ€ ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ๊ธฐ์กด์— CPU๋ฅผ ์ ์œ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

Non-Preemeptive

๋น„์„ ์ ์€ ์„ ์ ๊ณผ ๋‹ฌ๋ฆฌ ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ธํ„ฐ๋ŸฝํŠธ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ ์ ์œ ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

 

CPU Scheduling Algoritms

ํ”„๋กœ์„ธ์Šค์˜ ๋„์ฐฉ ์ˆœ์„œ, ์ž‘์—…์˜ ํฌ๊ธฐ, ์„ ์ , ๋น„์„ ์  ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์„ ํ†ตํ•ด ๋‹ค์Œ์— ์‚ฌ์šฉํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์ด ์žˆ๋‹ค.

 

FCFS(First-Come, First-Served)

ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ FIFO์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์žฅ ๋จผ์ € ์ž‘์—…์„ ์š”์ฒญํ•œ ํ”„๋กœ์„ธ์Šค ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

Process Burst Time (msec)
P1 24
P2 3
P3 3

ํ‘œ์™€ ๊ฐ™์ด P1 - P3 ์ˆœ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•œ ๊ฒฝ์šฐ P1 ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ฒŒ ๋œ๋ฉฐ, FCFS๋Š” ๋น„์„ ์  ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…์„ ์ข…๋ฃŒํ•  ๋•Œ ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ ํ•  ์ˆ˜ ์—†๋‹ค.

 

์œ„์˜ ์˜ˆ์‹œ๋ฅผ FCFS๋กœ ์Šค์ผ€์ค„๋ง ํ•˜๋ฉด, CPU ์Šค์ผ€์ค„๋ง์„ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€ ์ค‘ Waiting Time์ด ์ปค์ ธ ํšจ์œจ์ ์ด์ง€ ๋ชปํ•œ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. P1 - P3์˜ Wating Time์€ ๊ฐ๊ฐ 0, 24, 27๋กœ Average Wating Time์€ 17msec๊ฐ€ ๋œ๋‹ค. ์ฆ‰, ์ž‘์—… ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๊ธด ํ”„๋กœ์„ธ์Šค๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉด ์ดํ›„์˜ ํ”„๋กœ์„ธ์Šค์˜ Wating Time์ด ๊ธธ์–ด์ง€๋Š” Convoy Effect๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

SJF(Shortest-Job-First)

ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋ฆ„์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ž‘์—… ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์„ ํƒํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

Process Burst Time (msec)
P1 6
P2 8
P3 7
P4 3

๋„์ฐฉ ์‹œ๊ฐ„์€ ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋•Œ ํ‘œ์™€ ๊ฐ™์€ ์ž‘์—… ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ, SJF๋Š” P4 - P1 - P3 - P2 ์ˆœ์œผ๋กœ ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ P1 - P4์˜ Wating Time์€ 3, 16, 9, 0์œผ๋กœ ํ‰๊ท  Average Wating Time์€ 7msec๊ฐ€ ๋œ๋‹ค. ์ด๋ฅผ FCFS๋กœ ์ฒ˜๋ฆฌํ•  ๊ฒฝ์šฐ, Average Wating Time์€ 10.25msec์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ํ˜„์‹ค์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ณผ์ •์„ ์œ„ํ•ด ์ž‘์—…ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ํŒ๋‹จํ•˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ ์ด๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋œ๋‹ค.

 

Priority

ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์„ ํƒํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋งŒ์•ฝ 1 - 10์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ๋‹ค๋ฉด Linux์—์„œ๋Š” ์ˆซ์ž๊ฐ€ ์ž‘์„ ์ˆ˜๋ก ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค

 

Process Burst Time (msec) Priority
P1 10 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2

์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์Šค์ผ€์ค„๋ง ํ•  ๊ฒฝ์šฐ P2 - P5 - P1 - P3 - P4 ์ˆœ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. ์ด ๋•Œ P1 - P5์˜ Wating Time์€ 6, 0, 16, 18, 1๋กœ Average Wating Time์€ 8.2msec๊ฐ€ ๋œ๋‹ค.

 

Starvation & Aging

์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์Šค์ผ€์ค„๋ง์„ ํ•  ๊ฒฝ์šฐ Starvation(๊ธฐ์•„) ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ์„ ์ˆœ์œ„ 5์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๊ณ  ์ƒˆ๋กœ ์ž‘์—…์„ ์š”์ฒญํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ 5๋ณด๋‹ค ๋†’์€ ๊ฒฝ์šฐ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผ ๊ธฐ์•„ ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค.

 

์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด, Wating ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์ด๋Š” Aging์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์•„๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

 

RR(Round-Robin)

ํ•ด๋‹น ๋ฐฉ์‹์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ์ž‘์—…์‹œ๊ฐ„(Time Slice)์„ ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ๋Œ€ ์ž‘์—… ์‹œ๊ฐ„์ด 3ms๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” 3ms ๋งŒํผ ์ž‘์—…์„ ํ•˜๊ณ  ์„ ์ ๋˜์–ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

Process Burst Time (msec)
P1 24
P2 3
P3 3

ํ‘œ์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ Time Slice๊ฐ€ 4mesc์ผ ๊ฒฝ์šฐ P1 - P3์˜ Wating Time์€ 6 + 4 + 7์ด๋ฉฐ Average Wating Time์€ 5.66msec๊ฐ€ ๋œ๋‹ค. ํ•˜์ง€๋งŒ Time Slice๊ฐ€ ์งง์•„์ง€๊ฑฐ๋‚˜ ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ Average Wating Time์€ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ Time Slice๊ฐ€ ํฌ๋‹ค๋ฉด FCFS์™€ ์œ ์‚ฌํ•  ๊ฒƒ์ด๊ณ , ๋„ˆ๋ฌด ์งง์„ ๊ฒฝ์šฐ Context Switchig์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜์—ฌ ํšจ์œจ์ ์ด์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ์ด์— ์ ์ ํ•œ Time Slice๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€