CPU Scheduling

CPU ์Šค์ผ€์ค„๋ง์ด๋ž€, OS๊ฐ€ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ๊ณต์ •ํ•˜๊ณ  ํ•ฉ๋ฆฌ์ ์œผ๋กœ CPU ์ž์›์„ ๋ฐฐ๋ถ„ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋งŒ์•ฝ ํ”„๋กœ์„ธ์Šคํ•œํ…Œ CPU๋ฅผ ์ œ๋Œ€๋กœ ๋ถ„๋ฐฐํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ ์‹คํ–‰๋ผ์•ผ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์ด ์•ˆ๋˜๊ฑฐ๋‚˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋“ค๋งŒ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰๋˜๋Š” ์ƒํƒœ๊ฐ€ ๋ฐ˜๋ณต๋  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„

์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ CPU ์ž์›์„ ๊ณต์ •ํ•˜๊ฒŒ ๋ฐฐ๋ถ„ํ•  ์ˆ˜ ์žˆ์„๊นŒ.

๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” CPU๋ฅผ ํ•„์š”๋กœํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์ด์šฉํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  • ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด์•ผ ํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š” ๋ฐ˜๋ฉด ๊ทธ๋ ‡์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค๋„ ์žˆ๋‹ค.

CPU bound process: CPU ์ž‘์—…์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค I/O bound process: ์ž…/์ถœ๋ ฅ ์ž‘์—…์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค

I/O bound ํ”„๋กœ์„ธ์Šค๋Š” CPU bound ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

๐Ÿค” ๊ทธ ์ด์œ ๋Š” ๋ญ˜๊นŒ?

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์„ธ์Šค๋Š” CPU์™€ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์‹คํ–‰๋œ๋‹ค.

I/O bound ํ”„๋กœ์„ธ์Šค๋Š” CPU bound์— ๋น„ํ•ด ๋Œ€๊ธฐ์ƒํƒœ์— ๋” ๋งŽ์ด ๋จธ๋ฌด๋ฅธ๋‹ค.

  • ์‹คํ–‰์ƒํƒœ๋ณด๋‹ค๋Š” ๋Œ€๊ธฐ ์ƒํƒœ์— ๋” ๋งŽ์ด ๋จธ๋ฌด๋ฅธ๋‹ค.

  • ๋Œ€๊ธฐ์ƒํƒœ์— ๋จธ๋ฌผ๊ฒŒ ๋˜๋ฉด CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— I/O ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด CPU bound ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋” ๋งŽ์ด ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

  • I/O bound ํ”„๋กœ์„ธ์Šค๋Š” ์–ด์ฐจํ”ผ ์ž ๊น CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‚˜๋ฉด, ๋Œ€๊ธฐ์ƒํƒœ๋กœ ๋จธ๋ฌด๋ฅด๊ณ  ํ•œ๋™ํ•œ CPU๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ, I/O bound ํ”„๋กœ์„ธ์Šค๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๊ณ  ์•Œ๋ ค์ ธ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์šฐ์„ ์ˆœ์œ„๋Š” ํ”„๋กœ์„ธ์Šค์— PCB์— ์ €์žฅ๋˜๊ณ , OS๋Š” PCB๋ฅผ ๋ณด๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋Š” ๋” ๋นจ๋ฆฌ, ๋” ์ž์ฃผ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

์Šค์ผ€์ค„๋ง Queue

PCB๋งˆ๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ, OS๊ฐ€ ๋‹ค์Œ์— CPU๋ฅผ ์‚ฌ์šฉํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ชจ๋“  PCB๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด OS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์Šค์ผ€์ค„๋ง ํ ์ด๋‹ค.

  • ์ž์›์„ ์ด์šฉํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ค„ ์„œ์žˆ๋Š” ๊ณต๊ฐ„์ด๋‹ค.

  • ์—ฌ๊ธฐ์„œ ์ž์›์€ CPU, ๋ฉ”๋ชจ๋ฆฌ, HHD, CD-ROM ๋“ฑ์„ ์˜๋ฏธํ•œ๋‹ค.

๋ณดํ†ต Queue ์ž๋ฃŒ๊ตฌ์กฐ๋Š” FIFO ํŠน์„ฑ์„ ๊ฐ–์ง€๋งŒ, ์Šค์ผ€์ค„๋ง Queue๋Š” FIFO์ผ ํ•„์š”๋Š” ์—†๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ํ์— ์‚ฝ์ž…๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ๋จผ์ € ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ •๋ฆฌํ•˜๋ฉด, OS๋Š” ์‹œ์Šคํ…œ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ์— ์‚ฝ์ž…ํ•ด์„œ ์ค„์„ ์„ธ์›Œ์„œ ์ž์›์„ ์ด์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

์Šค์ผ€์ค„๋ง ํ์—๋„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ, ๋Œ€ํ‘œ์ ์œผ๋กœ ์ค€๋น„/๋Œ€๊ธฐ ํ๊ฐ€ ์žˆ๋‹ค.

  • ์™ธ์—๋„ Job, Device Queue๊ฐ€ ์žˆ๋‹ค.

Ready Queue

์ค€๋น„ ํ๋Š” CPU๋ฅผ ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋Š” ์ค„์„ ์˜๋ฏธํ•œ๋‹ค. ์ค€๋น„ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค, ์–ธ์ œ๋“ ์ง€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฐจ๋ก€๊ฐ€ ๋˜์ง€ ์•Š์•„์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ค„์ด๋‹ค.

  • ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์„œ CPU ํ• ๋‹น์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ํ์ด๋‹ค.

์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋œ ํ”„๋กœ์„ธ์Šค๋Š” ๋””์ŠคํŒจ์น˜๋ผ์„œ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CPU ํ• ๋‹น ์‹œ๊ฐ„์ด ์™„๋ฃŒ๋˜๋ฉด ํƒ€์ž„์•„์›ƒ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์ค€๋น„์ƒํƒœ์— ๋“ค์–ด๊ฐ„๋‹ค.

Wating Queue

๋Œ€๊ธฐ ํ๋Š” ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋Š” ์ค„์„ ์˜๋ฏธํ•œ๋‹ค.

  • I/O ๋“ฑ ์ด๋ฒคํŠธ ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ํ์ด๋‹ค.

  • I/O ์ž‘์—…์„ ํ•ด์•ผ ๋˜์„œ, ๋‹น์žฅ CPU๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์žˆ๋Š”๊ฒƒ์ด๋‹ค.

์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ณ , ๋‹ค์‹œ CPU ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€๊ธฐ ํ์—์„œ ๋น ์ ธ๋‚˜์™€ ๋‹ค์‹œ ์ค€๋น„ ์ƒํƒœ๊ฐ€๋˜์–ด ์ค€๋น„ ํ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

์ปดํ“จํ„ฐ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž…์ถœ๋ ฅ(I/O) ์žฅ์น˜๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ธฐ ํ ์•ˆ์—๋„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

  • ๋ณดํ†ต์€ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ณ„๋กœ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

  • ๊ฐ™์€ ์žฅ์น˜๋ฅผ ์š”๊ตฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ฐ™์€ ํ์— ๋Œ€๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

Last updated