๐Ÿ“Œ CPU Scheduling

๋ชจ๊น…ยท2023๋…„ 4์›” 4์ผ
0

๐Ÿ“– 01. CPU and I/O Bursts in Program Execution

  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด๋“  ๊ฐ„์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ Path๊ฐ€ ์ง„ํ–‰๋œ๋‹ค.

  • load store, add store, read from file : CPU์—์„œ instruction์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๊ณ„์–ด์ด๋‹ค.
    -> Running์„ ํ•œ๋‹ค๋Š” ์˜๋ฏธ
    -> ์ค‘๊ฐ„์— ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—… ํŒŒ์ผ์—์„œ ์–ด๋–ค ๋‚ด์šฉ์„ ์ฝ์–ด์˜จ๋‹ค๊ฑฐ๋‚˜ ์ด๋Ÿฐ ๋ถ€๋ถ„์ด ํ”„๋กœ๊ทธ๋žจ์•ˆ์— ํฌํ•จ์ด ๋œ๋‹ค.

  • Wait for I/O : CPU๋ฅผ ๋†“๊ณ  I/O๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋‹ค.
    -> I/O ์ž‘์—…์ด ๋๋‚˜๋ฉด ready์ƒํƒœ๋กœ ๋Œ์•„์™€์„œ CPU๋ฅผ ์–ป์–ด์™€์„œ instruction ์‹คํ–‰

  • CPU๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋„ ์žˆ์„ ๊ฒƒ์ด๊ณ  I/O๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋„ ์กด์žฌ ํ•  ๊ฒƒ์ด๋‹ค. ์–ด์จ‹๋“  ํ”„๋กœ๊ทธ๋žจ์˜ Path๋Š” CPU๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๊ฑฐ๋‚˜ I/O๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค.

  • CPU๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ CPU burst๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • I/O๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋‹จ๊ณ„๋ฅผ I/O burst๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด๋“  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์€ CPU burst์™€ I/O burst๊ฐ€ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์‹คํ–‰์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋‹จ, ํ”„๋กœ๊ทธ๋žจ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ์„œ CPU burst์™€ I/O burst๊ฐ€ ๊ต‰์žฅํžˆ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๊ณ  CPU burst๊ฐ€ ์ง„๋“ํžˆ ๋‚˜์˜ค๋‹ค๊ฐ€ I/O burst๊ฐ€ ํ•œ ๋ฒˆ ๋‚˜์˜ค๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์กด์žฌ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  • ์ฃผ๋กœ ์‚ฌ๋žŒ์ด ์ธํ„ฐ๋ ‰์…˜์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด CPU, I/O burst๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
    -> ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด์ฃผ๊ณ , ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅ๋ฐ›๊ณ  ๋“ฑ.

  • ๊ณผํ•™ ๊ณ„์‚ฐ์šฉ ํ”„๋กœ๊ทธ๋žจ 1000 x 1000 ํ–‰๋ ฌ ํ”„๋กœ๊ทธ๋žจ๋“ฑ์€ CPU burst๊ฐ€ ์˜ค๋ž˜ ์‚ฌ์šฉ๋œ๋‹ค.

๐Ÿ“– 02. CPU-burst Time์˜ ๋ถ„ํฌ

  • CPU burst์˜ time์„ ๊ทธ๋ž˜ํ”„๋กœ ์ฐ์–ด๋ณธ ๊ฒƒ์ด๋‹ค.

  • CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๊ณ  I/O ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ I/O bound job์ด๋ผ๊ณ  ํ•œ๋‹ค. (= CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์งง์€ ์‹œ๊ฐ„์— ๋นˆ๋ฒˆํ•œ ๊ตฌ๊ฐ„์กด์žฌ)

  • ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ CPU bound job์ด๋ผ๊ณ  ํ•จ.

  • ์ปดํ“จํ„ฐ ์•ˆ์—๋Š” ๋˜‘๊ฐ™์€ ์ข…๋ฅ˜์˜ ํ”„๋กœ๊ทธ๋žจ๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ CPU bound job์ด๋‚˜ I/O bound job์ด ๋งŽ๋‹ค.
    -> ๋”ฐ๋ผ์„œ CPU Scheduling์ด ํ•„์š”ํ•˜๋‹ค.

  • ๋‹ค์Œ ๊ทธ๋ž˜ํ”„๋Š” I/O bound job์ด CPU๋ฅผ ์งง๊ฒŒ ์“ฐ๋Š”๋ฐ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ  CPU bound job์€ ๊ธธ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•ด์„ํ•˜๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•˜๋‹ค.

  • job์˜ ์ข…๋ฅ˜๊ฐ€ ์„ž์—ฌ์žˆ๋‹ค๋ผ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์คŒ

  • I/O๋Š” Interactive job์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž์™€ ์†Œํ†ต์„ ์ž์ฃผ ํ•ด์•ผํ•˜๋Š”๋ฐ CPU bound job์ด CPU๋ฅผ ์˜ค๋ž˜ ์žก๊ณ  ์žˆ์œผ๋ฉด ์‚ฌ์šฉ์ž์™€ ์†Œํ†ต์ด ๋Šฆ์–ด์ง„๋‹ค.
    -> CPU Scheduler๋Š” ์‚ฌ์šฉ์ž์™€์˜ ์†Œํ†ต์„ ์ค‘์‹ฌ์œผ๋กœ ์Šค์ผ€์ค„๋ง ํ•ด์•ผํ•œ๋‹ค.

  • ๋ˆ„๊ตฌํ•œํ…Œ ์šฐ์„ ์œผ๋กœ ์ค„ ๊ฒƒ์ธ๊ฐ€?, ์–ผ๋งŒํผ ์‹œ๊ฐ„์„ ์ฃผ๊ณ  ๋บ์„๊ฒƒ์ด๋ƒ?
    -> ์Šค์ผ€์ค„๋ง์˜ ๋Œ€ํ‘œ์ ์ธ ๊ณ ๋ ค์‚ฌํ•ญ

๐Ÿ“– 03. ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ ๋ถ„๋ฅ˜

๐Ÿ“– 04. CPU Scheduler & Dispatcher

  • CPU Scheduler๋Š” ์šด์˜์ฒด์ œ ์•ˆ์—์„œ CPU ์Šค์ผ€์ค„๋งํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. -> CPU๋ฅผ ๋ˆ„๊ตฌํ•œํ…Œ ์ค„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• 

  • Dispatcher ๋˜ํ•œ ์šด์˜์ฒด์ œ ๋‚ด์— ์กด์žฌํ•˜๋Š” ํŠน์ •๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.
    -> CPU์ œ์–ด๊ถŒ์„ ์‹ค์ œ๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ์—ญํ• 

  • Timer์˜ ์‹œ๊ฐ„์ด ๋‚จ์•˜๋‹ค๋ฉด ๋ณดํ†ต ์ด์ „์— ์‹คํ–‰๋˜์—ˆ๋˜ interrupt๋‹นํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU์ œ์–ด๊ถŒ์ด ๋„˜์–ด๊ฐ€๋Š”๋ฐ Priority์— ์˜ํ•ด์„œ interruptํ•œ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.





[์ถœ์ฒ˜] ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜

profile
๋ฉˆ์ถ”์ง€ ์•Š๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€