๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ์™€ ์ •๋ณด๊ธฐ์ˆ ์˜ ์›๋ฆฌ] 6์žฅ CPU ์Šค์ผ€์ค„๋ง

by moon101 2023. 3. 17.

cpu : ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๊ณ„์–ด ๋ช…๋ น์„ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ปดํ“จํ„ฐ ๋‚ด์˜ ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜. ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ์˜ ๊ธฐ๊ณ„์–ด ๋ช…๋ น์„ ํ•˜๋‚˜์”ฉ ์ˆ˜ํ–‰ํ•จ

program counter(pc) : ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋ผ๋Š” ์ด๋ฆ„์˜ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋ฉด ํ˜„์žฌ CPU์—์„œ ์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง

 

๊ธฐ๊ณ„์–ด ๋ช…๋ น

  • CPU ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ช…๋ น (์ฃผ๋กœ ์ผ๋ฐ˜๋ช…๋ น)
    • Add : ๋ ˆ์ง€์Šคํ„ฐ์— ์žˆ๋Š” ๋‘ ๊ฐ’์„ ๋”ํ•ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•˜๋Š” ๋ช…๋ น
    • ์ˆ˜ํ–‰ ์†๋„ ๋น ๋ฆ„. CPU์—์„œ๋งŒ ์‹คํ–‰๋ผ์„œ
  • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋ช…๋ น (์ฃผ๋กœ ์ผ๋ฐ˜๋ช…๋ น)
    • Load : ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ CPU๋กœ ์ฝ์–ด ๋“ค์ด๋Š” ๋ช…๋ น
    • Store : CPU์—์„œ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ด๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๋ช…๋ น
    • ์ˆ˜ํ–‰ ์†๋„ ๋น„๊ต์  ๋น ๋ฆ„
  • ์ž…์ถœ๋ ฅ์„ ๋™๋ฐ˜ํ•˜๋Š” ๋ช…๋ น (ํŠน๊ถŒ๋ช…๋ น, ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์ง์ ‘ ์ˆ˜ํ–‰ X, ์šด์˜์ฒด์ œ๊ฐ€ ๋Œ€์‹  ์ˆ˜ํ–‰)
    • ํ‚ค๋ณด๋“œ ์ž…๋ ฅ
    • ์ฒ˜๋ฆฌ๋œ ๊ฒฐ๊ณผ ํ™”๋ฉด ์ถœ๋ ฅ
    • ๋””์Šคํฌ ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ/์ €์žฅํ•˜๊ธฐ
    • ์ˆ˜ํ–‰ ์†๋„ ๋Š๋ฆผ

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

  • I/O ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค : I/O ์š”์ฒญ์ด ๋นˆ๋ฒˆํ•ด CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์งง๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ํ”„๋กœ์„ธ์Šค
    • ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ธํ„ฐ๋ž™์…˜์„ ๊ณ„์† ๋ฐ›์•„๊ฐ€๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰์‹œํ‚ค๋Š” ๋Œ€ํ™”ํ˜• ํ”„๋กœ๊ทธ๋žจ (interactive program)
  • CPU ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค : I/O ์ž‘์—…์„ ๊ฑฐ์˜ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ธธ๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ํ”„๋กœ์„ธ์Šค
    • ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰์˜ ์ƒ๋ฐฉ ์‹œ๊ฐ„์„ ์ž…์ถœ๋ ฅ ์ž‘์—… ์—†์ด CPU ์ž‘์—…์— ์†Œ๋ชจํ•˜๋Š” ๊ณ„์‚ฐ ์œ„์ฃผ์˜ ํ”„๋กœ๊ทธ๋žจ

 

1. CPU ์Šค์ผ€์ค„๋Ÿฌ

CPU ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ค€๋น„ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์–ด๋– ํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ์ฝ”๋“œ์ด๋‹ค.

 

CPU ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

  • ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O ์š”์ฒญ ๋“ฑ์— ์˜ํ•ด ๋ด‰์‡„(blocked) ์ƒํƒœ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ (๋น„์„ ์ ํ˜•)
  • ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ์— ์˜ํ•ด ์ค€๋น„ ์ƒํƒœ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ (์„ ์ ํ˜•)
  • I/O ์š”์ฒญ์œผ๋กœ ๋ด‰์‡„ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ I/O ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ ์ด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๊ฐ€ ์ค€๋น„ ์ƒํƒœ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ (์„ ์ ํ˜•)
  • CPU์—์„œ ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ (๋น„์„ ์ ํ˜•)

CPU ์Šค์ผ€์ค„๋ง์˜ ๋ฐฉ์‹

  • ๋น„์„ ์ ํ˜•(nonpreemptive) : CPU๋ฅผ ํš๋“ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค์Šค๋กœ CPU๋ฅผ ๋ฐ˜๋‚ฉํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” CPU๋ฅผ ๋นผ์•—๊ธฐ์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•
  • ์„ ์ ํ˜•(preemptive) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋”๋ผ๋„ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ๋ฒ•
    • CPU๋ฅผ ๋นผ์•—๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ• ๋‹น์‹œ๊ฐ„(time quatum)์„ ๋ถ€์—ฌํ•œ ํ›„ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ๋Œ€ํ‘œ์ ์ด๋‹ค.

 

2. ๋””์ŠคํŒจ์ฒ˜

  • ์ƒˆ๋กญ๊ฒŒ ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ค์ •์„ ํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ์ฝ”๋“œ
  • ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์„ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ PCB์— ์ €์žฅํ•˜๊ณ , ์ƒˆ๋กญ๊ฒŒ ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์„ PCB๋กœ๋ถ€ํ„ฐ ๋ณต์›ํ•œ ํ›„ ๊ทธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ๋„˜๊ธฐ๋Š” ๊ณผ์ •์„ ์ˆ˜ํ–‰
  • ๋””์ŠคํŒจ์น˜ ์ง€์—ฐ์‹œ๊ฐ„ (dispatch latency) : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์ง€์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„, ์ด ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์€ ๋ฌธ๋งฅ๊ตํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ์— ํ•ด๋‹น๋œ๋‹ค. 

 

3. ์Šค์ผ€์ค„๋ง์˜ ์„ฑ๋Šฅ ํ‰๊ฐ€

์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ง€ํ‘œ

 

  • ์‹œ์Šคํ…œ ๊ด€์ ์˜ ์ง€ํ‘œ
    • CPU ์ด์šฉ๋ฅ   (utilization) : ์ „์ฒด ์‹œ๊ฐ„ ์ค‘์—์„œ CPU๊ฐ€ ์ผ์„ ํ•œ ์‹œ๊ฐ„์˜ ๋น„์œจ
    • CPU ์ฒ˜๋ฆฌ๋Ÿ‰ (throughput) : ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ๋™์•ˆ ์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ๋ช‡ ๊ฐœ๋ฅผ ๋๋งˆ์ณค๋Š”์ง€(CPU ๋ฒ„์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜)
  • ์‚ฌ์šฉ์ž ๊ด€์ ์˜ ์ง€ํ‘œ
    • ์†Œ์š”์‹œ๊ฐ„ (turnaround time) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์š”์ฒญํ•œ ์‹œ์ ๋ถ€ํ„ฐ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋งŒํผ CPU๋ฅผ ๋‹ค ์“ฐ๊ณ  CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ (์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„ + ์‹ค์ œ๋กœ CPU๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„)
    • ๋Œ€๊ธฐ์‹œ๊ฐ„ (waiting time) : CPU ๋ฒ„์ŠคํŠธ ๊ธฐ๊ฐ„ ์ค‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์—์„œ CPU๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์˜ ํ•ฉ
    • ์‘๋‹ต์‹œ๊ฐ„ (response time) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์— ๋“ค์–ด์˜จ ํ›„ ์ฒซ ๋ฒˆ์งธ CPU๋ฅผ ํš๋“ํ•˜๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„

โ— CPU ๋ฒ„์ŠคํŠธ๋ž€? 

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜ํ–‰ ์ค‘ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์ง์ ‘ ๊ฐ€์ง€๊ณ  ๋น ๋ฅธ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ๋ จ์˜ ๋‹จ๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์ด I/O๋ฅผ ํ•œ ๋ฒˆ ์ˆ˜ํ–‰ํ•œ ํ›„ ๋‹ค์Œ๋ฒˆ I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ๊นŒ์ง€ ์ง์ ‘ CPU๋ฅผ ๊ฐ€์ง€๊ณ  ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ๋ จ์˜ ์ž‘์—…์ด๋‹ค. 

 

4. ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

1) ์„ ์ž…์„ ์ถœ ์Šค์ผ€์ค„๋ง (First-Come First-Served: FCFS)

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์— ๋„์ฐฉํ•œ ์‹œ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ๋‹จ์  : ์ฝ˜๋ณด์ด ํ˜„์ƒ(Convoy effect)
    • CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ธด ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋‚˜์ค‘์— ๋„์ฐฉํ•ด ์˜ค๋žœ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค. 

2) ์ตœ๋‹จ์ž‘์—… ์šฐ์„  ์Šค์ผ€์ค„๋ง (Shortest-Job First: SJF)

  • CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ œ์ผ ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ๊ฐ€์žฅ ์งง๊ฒŒ ํ•˜๋Š” ์ตœ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜(optimal algorithm)์œผ๋กœ ์•Œ๋ ค์ง„๋‹ค
  • ๋น„์„ ์ ํ˜• ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋  ๊ฒฝ์šฐ, ์ผ๋‹จ CPU๋ฅผ ํš๋“ํ•˜๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ž์ง„ ๋ฐ˜๋‚ฉํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” CPU๋ฅผ ๋นผ์•—์ง€ ์•Š๋Š”๋‹ค. 
  • ์„ ์ ํ˜• ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋  ๊ฒฝ์šฐ, ์ค€๋น„ ํ์—์„œ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ–ˆ๋‹ค ํ•˜๋”๋ผ๋„, CPU๋ฒ„์ŠคํŠธ๊ฐ€ ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•  ๊ฒฝ์šฐ CPU๋ฅผ ๋นผ์•—์•„ ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ถ€์—ฌํ•œ๋‹ค. -> SRTF (shortest remaining time)์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ.
  • ๋‹จ์  : ๊ธฐ์•„ ํ˜„์ƒ(starvation)
    • CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ๋„์ฐฉํ•  ๊ฒฝ์šฐ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ์˜์›ํžˆ CPU๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.

3) ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง (Priority Scheduling)

  • ์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ œ์ผ ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ์šฐ์„ ์ˆœ์œ„ ๊ฐ’ (priority number)์ด ์ž‘์„์ˆ˜๋ก ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•œ๋‹ค.
  • ๋น„์„ ์ ํ˜•/์„ ์ ํ˜• ๋‘ ๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ๋˜ํ•œ ๊ธฐ์•„ ํ˜„์ƒ์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธํ™”(aging) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋…ธํ™”๊ธฐ๋ฒ•์ด๋ž€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ์กฐ๊ธˆ์”ฉ ๋†’์—ฌ, ์–ธ์  ๊ฐ€๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋˜์–ด CPU๋ฅผ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

4) ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง (Round Robin Scheduling)

  • ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์˜ ์„ฑ์งˆ์„ ๊ฐ€์žฅ ์ž˜ ํ™œ์šฉํ•จ
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์—ฐ์†์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์„ ํŠน์ • ์‹œ๊ฐ„์œผ๋กœ ์ œํ•œํ•ด ์ด ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•˜๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ CPU๋ฅผ ํšŒ์ˆ˜ํ•ด ์ค€๋น„ ํ์— ์ค„ ์„œ ์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ํ•œ ๋ฒˆ์— CPU๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์‹œ๊ฐ„์„ ํ• ๋‹น์‹œ๊ฐ„(time quantum)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค
  • ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ๋Œ€๊ธฐ์‹œ๊ฐ„์€ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์— ๋น„๋ก€ํ•œ๋‹ค. -> ๊ณต์ •ํ•œ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹

5) ๋ฉ€ํ‹ฐ๋ ˆ๋ฒจ ํ (multi-level queue)

  • ์ค€๋น„ ํ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ํ•ด ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•
  • ๋ฉ€ํ‹ฐ๋ ˆ๋ฒจ ํ์—์„œ ์ค€๋น„ ํ๋Š”
    • ๋Œ€ํ™”ํ˜• ์ž‘์—…์„ ๋‹ด๊ธฐ ์œ„ํ•œ ์ „์œ„ ํ(foreground queue)์™€ -> ์‘๋‹ต์‹œ๊ฐ„์„ ์งง๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง ์‚ฌ์šฉ
    • ๊ณ„์‚ฐ ์œ„์ฃผ์˜ ์ž‘์—…์„ ๋‹ด๊ธฐ ์œ„ํ•œ ํ›„์œ„ ํ(background queue)๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์šด์˜๋œ๋‹ค. -> ์‘๋‹ต์‹œ๊ฐ„์ด ํฐ ์˜๋ฏธ๊ฐ€ ์—†์–ด FCFS ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ๋ฌธ๋งฅ๊ตํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ž„

6) ๋ฉ€ํ‹ฐ๋ ˆ๋ฒจ ํ”ผ๋“œ๋ฐฑ ํ (multi-level feedback queue)

  • CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฌ๋Ÿฌ ํ์— ์ค„ ์„ธ์šด๋‹ค๋Š” ์ธก๋ฉด์—์„œ ๋ฉ€ํ‹ฐ๋ ˆ๋ฒจ ํ์™€ ๋™์ผํ•˜๋‚˜, ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ํ์—์„œ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

7) ๋‹ค์ค‘์ฒ˜๋ฆฌ๊ธฐ ์Šค์ผ€์ค„๋ง (multi-processor scheduling)

  • CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ์‹œ์Šคํ…œ์„ ๋‹ค์ค‘์ฒ˜๋ฆฌ๊ธฐ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„ ํ์— ํ•œ ์ค„๋กœ ์„ธ์›Œ์„œ ๊ฐ CPU๊ฐ€ ์•Œ์•„์„œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊บผ๋‚ด์–ด๊ฐ€๋„๋ก ํ•œ๋‹ค
  • ๋‹ค์ค‘์ฒ˜๋ฆฌ๊ธฐ ์Šค์ผ€์ค„๋ง์˜ ๋ฐฉ์‹
    • ๋Œ€์นญํ˜• ๋‹ค์ค‘์ฒ˜๋ฆฌ : ๊ฐ CPU๊ฐ€ ๊ฐ์ž ์•Œ์•„์„œ ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹
    • ๋น„๋Œ€์นญํ˜• ๋‹ค์ค‘์ฒ˜๋ฆฌ : ํ•˜๋‚˜์˜ CPU๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“  CPU์˜ ์Šค์ผ€์ค„๋ง ๋ฐ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์ฑ…์ž„์ง€๊ณ  ๋‚˜๋จธ์ง€ CPU๋Š” ๊ทธ์— ๋”ฐ๋ผ ์›€์ง์ด๋Š” ๋ฐฉ์‹

8) ์‹ค์‹œ๊ฐ„ ์Šค์ผ€์ค„๋ง (real-time scheduling)

  • ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—์„œ๋Š” ๊ฐ ์ž‘์—…๋งˆ๋‹ค ์ฃผ์–ด์ง„ ๋ฐ๋“œ๋ผ์ธ์ด ์žˆ์–ด ์ •ํ•ด์ง„ ๋ฐ๋“œ๋ผ์ธ ์•ˆ์— ๋ฐ˜๋“œ์‹œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฒฝ์„ฑ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ(hard real-time system) : ์‹œ๊ฐ„์„ ์ •ํ™•ํžˆ ์ง€์ผœ์•ผ ํ•˜๋Š” ์‹œ์Šคํ…œ(๋ฏธ์‚ฌ์ผ ๋ฐœ์‚ฌ, ์›์ž๋กœ ์ œ์–ด ๋“ฑ)
  • ์—ฐ์„ฑ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ(soft real-time system) : ๋ฐ๋“œ๋ผ์ธ์ด ์žˆ์ง€๋งŒ ๋ชป ์ง€์ผฐ๋‹ค๊ณ  ํ•ด์„œ ์œ„ํ—˜ํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š๋Š” ์‹œ์Šคํ…œ(๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ์Šคํ…œ)
  • ๋ฐ๋“œ๋ผ์ธ์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ๋“œ๋ผ์ธ์ด ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์€ ์š”์ฒญ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” EDF(Earliest Deadline First) ์Šค์ผ€์ค„๋ง์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

5. ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ‰๊ฐ€

  • ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ์ž‰๋ชจ๋ธ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๊ตฌํ˜„ ๋ฐ ์‹ค์ธก ๋ฐฉ์‹์ด ์žˆ๋‹ค. 

๋Œ“๊ธ€