alswlfl 2026. 4. 30. 11:38

์šด์˜์ฒด์ œ์˜ CPU ๋ฐฐ๋ถ„ ๋ฐฉ๋ฒ•์„ CPU ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•œ๋‹ค. CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋Ÿฌํ•œ CPU ์Šค์ผ€์ค„๋ง์˜ ์ ˆ์ฐจ๋ฅผ ๋งํ•˜๋ฉฐ, ์ด CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฒฐ์ •ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ์ผ๋ถ€๋ถ„์„ CPU ์Šค์ผ€์ค„๋Ÿฌ๋ผ๊ณ  ํ•œ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์Šค๋ ˆ๋“œ๋„ CPU์˜ ์Šค์ผ€์ค„๋ง ๋Œ€์ƒ์ด๋‹ค. ์‹คํ–‰์˜ ๋ฌธ๋งฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์€ ์Šค์ผ€์ค„๋ง์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์šฐ์„ ์ˆœ์œ„

๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” CPU์˜ ์ž์›์„ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ฒด์ œ๋Š” ๊ณต์ •ํ•˜๊ณ  ํ•ฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ CPU์˜ ์ž์›์„ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•ด์•ผ ํ•œ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋ณ„ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํŒ๋‹จํ•ด PCB์— ๋ช…์‹œํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๋Š” CPU ์ž์›์„ ๋” ๋นจ๋ฆฌ, ๋” ๋งŽ์ด ํ• ๋‹นํ•œ๋‹ค.

๏นก์‚ฌ์šฉ์ž๊ฐ€ ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง์ ‘ ๋†’์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

์šด์˜์ฒด์ œ๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ณ ๋ ค ์š”์†Œ๋Š” CPU ํ™œ์šฉ๋ฅ ์ด๋‹ค. ์šด์˜์ฒด์ œ๋Š” ๊ฐ€๊ธ‰์  CPU ํ™œ์šฉ๋ฅ ์„ ๋†’๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

CPU ํ™œ์šฉ๋ฅ (CPU utilization): ์ „์ฒด CPU ๊ฐ€๋™ ์‹œ๊ฐ„ ์ค‘ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ

 

์šด์˜์ฒด์ œ๋Š” ๋†’์€ CPU ํ™œ์šฉ๋ฅ ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’๊ฒŒ ์œ ์ง€ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋“ค์€ CPU์™€ ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ์‹คํ–‰๊ณผ ๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ์˜ค๊ฐ€๋ฉฐ ์‹คํ–‰๋˜๋Š”๋ฐ, ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ด์šฉํ•˜๋Š” ์ž‘์—…์„ CPU ๋ฒ„์ŠคํŠธ(CPU brust)๋ผ๊ณ  ํ•˜๊ณ , ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ž‘์—…์„ ์ž…์ถœ๋ ฅ ๋ฒ„์ŠคํŠธ(I/O burst)๋ผ๊ณ  ํ•œ๋‹ค.

๋˜ํ•œ, ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ์ด์šฉํ•˜๋Š” ์‹œ๊ฐ„๊ณผ CPU๋ฅผ ์ด์šฉํ•˜๋Š” ์‹œ๊ฐ„์˜ ์–‘์—๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ณต์žกํ•œ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์ด๋‚˜ ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ CPU ์ž‘์—…์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋Š” CPU ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค(CPU bound process)๋ผ๊ณ  ํ•˜๊ณ , ๋น„๋””์˜ค ์žฌ์ƒ์ด๋‚˜ ๋””์Šคํฌ ๋ฐฑ์—… ์ž‘์—…์„ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž…์ถœ๋ ฅ ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค(I/O bound process)๋ผ๊ณ  ํ•œ๋‹ค.

 

์ž…์ถœ๋ ฅ ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ƒํƒœ๋ณด๋‹ค ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ๋Œ€๊ธฐ ์ƒํƒœ์— ๋” ๋งŽ์ด ๋จธ๋ฌด๋ฅด์ง€๋งŒ, CPU ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋ณด๋‹ค ์‹คํ–‰ ์ƒํƒœ์— ๋” ๋งŽ์ด ๋จธ๋ฌด๋ฅธ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ž…์ถœ๋ ฅ ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค์™€ CPU ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— CPU ์ž์›์„ ์š”๊ตฌํ–ˆ๋‹ค๋ฉด, ์ž…์ถœ๋ ฅ ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ์‹คํ–‰์‹œ์ผœ ๋Š์ž„์—†์ด ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ์ž‘๋™์‹œํ‚จ ๋‹ค์Œ, CPU ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค์— ์ง‘์ค‘์ ์œผ๋กœ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ด๋‹ค.

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


์Šค์ผ€์ค„๋ง ํ

์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ '์ž์›์„ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ'์„ ์š”๊ตฌํ•œ๋‹ค. CPU๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๊ณ  ์‹ถ์€ ํ”„๋กœ์„ธ์Šค, ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ํŠน์ • ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์„ธ์Šค ๋ชจ๋‘์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ค„์€ ์Šค์ผ€์ค„๋ง ํ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋œ๋‹ค.

์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์ค„์ธ ํ์—๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ, ๋Œ€ํ‘œ์ ์œผ๋กœ ์ค€๋น„ ํ์™€ ๋Œ€๊ธฐ ํ๊ฐ€ ์žˆ๋‹ค. ์ค€๋น„ ํ(ready queue)๋Š” CPU๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์„ธ์Šค์˜ PCB๊ฐ€ ์„œ๋Š” ์ค„์„ ์˜๋ฏธํ•˜๊ณ , ๋Œ€๊ธฐ ํ(waiting queue)๋Š” ๋Œ€๊ธฐ ์ƒํƒœ์— ์ ‘์–ด๋“  ํ”„๋กœ์„ธ์Šค์˜ PCB๊ฐ€ ์„œ๋Š” ์ค„์„ ์˜๋ฏธํ•œ๋‹ค.

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

์šด์˜์ฒด์ œ๋Š” ํ์— ์‚ฝ์ž…๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•˜๋˜, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ๋จผ์ € ์‹คํ–‰ํ•œ๋‹ค. ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์‹œ๊ฐ„์ด ๋ชจ๋‘ ์†Œ๋ชจํ•  ๊ฒฝ์šฐ(ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐ›์„ ๊ฒฝ์šฐ) ์ค€๋น„ ํ๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๊ณ , ์‹คํ–‰ ๋„์ค‘ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋“ฑ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ ‘์–ด๋“ค์–ด์•ผ ํ•  ๊ฒฝ์šฐ ๋Œ€๊ธฐ ํ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

๊ฐ™์€ ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ์š”๊ตฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ฐ™์€ ๋Œ€๊ธฐ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜์–ด ์™„๋ฃŒ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์šด์˜์ฒด์ œ๋Š” ๋Œ€๊ธฐ ํ์—์„œ ์ž‘์—…์ด ์™„๋ฃŒ๋œ PCB๋ฅผ ์ฐพ๊ณ , ์ด PCB๋ฅผ ์ค€๋น„ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•œ ๋’ค ํ์—์„œ ์ œ๊ฑฐํ•˜๊ณ , ํ•ด๋‹น PCB๋Š” ์ค€๋น„ ํ๋กœ ์ด๋™ํ•œ๋‹ค.


์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง๊ณผ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง

์Šค์ผ€์ค„๋ง์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ์ด๋ฃจ์–ด์ง€์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜์Œ์—๋„ ์‹คํ–‰ ๋„์ค‘ ์Šค์ผ€์ค„๋ง์ด ์ˆ˜ํ–‰๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋‘ ์‹œ์ ์ด ์žˆ๋‹ค.

  1. ์‹คํ–‰ ์ƒํƒœ์—์„œ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์œ„ํ•ด ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
  2. ์‹คํ–‰ ์ƒํƒœ์—์„œ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด ์ค€๋น„ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ

1๋ฒˆ๊ณผ 2๋ฒˆ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์Šค์ผ€์ค„๋ง ์œ ํ˜•์„ ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•˜๊ณ , 1๋ฒˆ ์ƒํ™ฉ์—์„œ๋งŒ ์ˆ˜ํ–‰๋˜๋Š” ์Šค์ผ€์ค„๋ง์„ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(preemptive scheduling): ํ˜„์žฌ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋”๋ผ๋„ ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ CPU ์ž์›์„ ๊ฐ•์ œ๋กœ ๋นผ์•—์•„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹

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

๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(non-preemptive scheduling): ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๋•Œ ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์Šค์Šค๋กœ ๋Œ€๊ธฐ ์ƒํƒœ์— ์ ‘์–ด๋“ค๊ธฐ ์ „๊นŒ์ง€๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹

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

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

์„ ์ž… ์„ ์ฒ˜๋ฆฌ ์Šค์ผ€์ค„๋ง(FCFS, First Come First Served)

์ค€๋น„ ํ์— ์‚ฝ์ž…๋œ ์ˆœ์„œ๋Œ€๋กœ ๋จผ์ € CPU๋ฅผ ์š”์ฒญํ•œ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ถ€์ž‘์šฉ์ด ์žˆ๋‹ค. ๋จผ์ € ์‚ฝ์ž…๋œ ํ”„๋กœ์„ธ์Šค์˜ ์˜ค๋žœ ์‹คํ–‰ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ๋‚˜์ค‘์— ์‚ฝ์ž…๋œ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์ด ์ง€์—ฐ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ˜ธ์œ„ ํšจ๊ณผ(convoy effect)๋ผ๊ณ  ํ•œ๋‹ค.

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

์ค€๋น„ ํ์— ์‚ฝ์ž…๋œ ํ”„๋กœ์„ธ์Šค ์ค‘ CPU๋ฅผ ์ด์šฉํ•˜๋Š” ์‹œ๊ฐ„์˜ ๊ธธ์ด๊ฐ€ ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ถ„๋ฅ˜๋˜์ง€๋งŒ, ์ตœ์†Œ ์ž”์—ฌ ์‹œ๊ฐ„ ์šฐ์„  ์Šค์ผ€์ค„๋ง์ฒ˜๋Ÿผ ์„ ์ ํ˜•์œผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜๋„ ์žˆ๋‹ค.

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

์„ ์ž… ์„ ์ฒ˜๋ฆฌ ์Šค์ผ€์ค„๋ง์— ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋ผ๋Š” ๊ฐœ๋…์ด ๋”ํ•ด์ง„ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์œผ๋กœ, ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ •ํ•ด์ง„ ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰, RR์€ ํ์— ์‚ฝ์ž…๋œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์‚ฝ์ž…๋œ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ์ด์šฉํ•˜๋˜, ์ •ํ•ด์ง„ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋งŒํผ๋งŒ CPU๋ฅผ ์ด์šฉํ•˜๋Š” ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์ด๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •ํ•ด์ง„ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ณ ๋„ ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ๋งฅ ๊ตํ™˜์ด ๋ฐœ์ƒํ•ด ๋‹ค์‹œ ํ์˜ ๋งจ ๋’ค์— ์‚ฝ์ž…๋œ๋‹ค.

์ตœ์†Œ ์ž”์—ฌ ์‹œ๊ฐ„ ์šฐ์„  ์Šค์ผ€์ค„๋ง(SRT, Shortest Remaining Time)

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

์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง(priority)

ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค.

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” (์ค€๋น„ ํ์— ๋จผ์ € ์‚ฝ์ž…๋˜์—ˆ๋”๋ผ๋„) ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ๊ณ„์†ํ•ด์„œ ์‹คํ–‰์ด ์—ฐ๊ธฐ๋˜๋Š” ๊ธฐ์•„(=์•„์‚ฌ, starvation) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์œผ๋กœ ์—์ด์ง•(aging)์ด ์žˆ๋‹ค. ์—์ด์ง•์€ ์˜ค๋žซ๋™์•ˆ ๋Œ€๊ธฐํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์ฐจ ๋†’์ด๋Š” ๋ฐฉ์‹์œผ๋กœ, ์—์ด์ง•์„ ์ ์šฉํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์„œ ๋งˆ๋ƒฅ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ๋งŒ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†์–ด์ง€๊ฒŒ ๋œ๋‹ค.

๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง(multilevel queue)

์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ๋ฐœ์ „๋œ ํ˜•ํƒœ๋กœ, ์šฐ์„ ์ˆœ์œ„๋ณ„๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ค€๋น„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ๊ฐ€ ๋น„์–ด ์žˆ๊ฒŒ ๋˜๋ฉด, ๊ทธ ๋‹ค์Œ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ ์‚ฌ์ด๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์ด ๊ณ„์†ํ•ด์„œ ์—ฐ๊ธฐ๋˜๋Š” ๊ธฐ์•„ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง(multilevel feedback queue)

๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ ์‚ฌ์ด๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง์— ์ƒˆ๋กญ๊ฒŒ ์ง„์ž…ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋จผ์ € ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ์— ์‚ฝ์ž…๋˜๊ณ , ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ๋™์•ˆ ์‹คํ–‰๋œ๋‹ค. ๋งŒ์•ฝ ํ•ด๋‹น ํ์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์ด ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ์šฐ์„ ์ˆœ์œ„ ํ์— ์‚ฝ์ž…๋˜์–ด ์‹คํ–‰๋œ๋‹ค.

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

๋ฆฌ๋ˆ…์Šค CPU ์Šค์ผ€์ค„๋ง

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

์Šค์ผ€์ค„๋ง ์ •์ฑ… ์ ์šฉ ์ƒํ™ฉ
SCHED_FIFO ์‹ค์‹œ๊ฐ„์„ฑ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋˜๋Š” ์ •์ฑ…(๋งค์šฐ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•จ)
SCHED_RR
SCHED_NORMAL ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋˜๋Š” ์ •์ฑ…
SCHED_BATCH ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค๋งŒํผ ์ž์ฃผ ์„ ์ ํ•˜์ง€ ์•Š๋Š” ๋ฐฐ์น˜ ์ž‘์—…์— ์ ์šฉ๋˜๋Š” ์ •์ฑ…
SCHED_IDLE ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋งค์šฐ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋˜๋Š” ์ •์ฑ…(๋งค์šฐ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•จ)

 

  • SCHED_FIFO, SCHED_RR์€ RT(Real-Time) ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ด๋ค„์ง€๋Š” ์Šค์ผ€์ค„๋ง์œผ๋กœ, ์‹ค์‹œ๊ฐ„์„ฑ์ด ๊ฐ•์กฐ๋œ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋˜๋Š” ์Šค์ผ€์ค„๋ง ์ •์ฑ…์ด๋‹ค.
  • SCHED_NORMAL์€ CFS๋ผ๋Š” CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์Šค์ผ€์ค„๋ง์ด ์ด๋ค„์ง„๋‹ค. CFS(Completely Fair Scheduler)๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๊ณตํ‰ํ•œ CPU ์‹œ๊ฐ„ ๋ฐฐ๋ถ„์„ ์ง€ํ–ฅํ•˜๋Š” CPU ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋งํ•œ๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๊ฐ€์ƒ ์‹คํ–‰ ์‹œ๊ฐ„(vruntime)์ด๋ผ๋Š” ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š”๋ฐ, CFS๋Š” ์ด vruntime์ด ๊ฐ€์žฅ ์ž‘์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์Šค์ผ€์ค„๋งํ•œ๋‹ค. vruntime์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ '์‹ค์ œ๋กœ ์‹คํ–‰๋œ ์‹œ๊ฐ„'์ด ์•„๋‹Œ, ํ”„๋กœ์„ธ์Šค์˜ '๊ฐ€์ค‘์น˜(weight)'๋ฅผ ๊ณ ๋ คํ•œ ๊ฐ€์ƒ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด๋‹ค.

์ฆ‰, ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๋†’์•„์งˆ์ˆ˜๋ก vruntime์ด ์ฒœ์ฒœํžˆ ์ฆ๊ฐ€ํ•˜๊ณ , ๋จผ์ € ์Šค์ผ€์ค„๋ง๋  ํ™•๋ฅ ์ด ๋†’๋‹ค.

vruntime = CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋œ ์‹œ๊ฐ„ * $\frac{ํ‰๊ท  ๊ฐ€์ค‘์น˜(์ƒ์ˆ˜)}{ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ค‘์น˜}$

 

CFS๋กœ ์Šค์ผ€์ค„๋ง๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ค‘์น˜์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์งˆ์ˆ˜๋ก ๊ฐ€์ค‘์น˜๊ฐ€ ๋†’์•„์ง€๊ณ  ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋„ ํฌ๊ฒŒ ํ• ๋‹น ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค = ($\frac{ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ค‘์น˜}{CFS ํ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ „์ฒด ๊ฐ€์ค‘์น˜}$) * CFS ํ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ์ „์ฒด ํ•ฉ


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™์ด๋‹ค

 

์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™์ด๋‹ค with CS ๊ธฐ์ˆ  ๋ฉด์ ‘ | ๊ฐ•๋ฏผ์ฒ  - ๊ต๋ณด๋ฌธ๊ณ 

์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™์ด๋‹ค with CS ๊ธฐ์ˆ  ๋ฉด์ ‘ | ๊ธฐ์ˆ  ๋ฉด์ ‘๊ณผ ์‹ค๋ฌด์— ํ•„์š”ํ•œ CS ์ง€์‹, ํ•œ ๊ถŒ์œผ๋กœ ๋๋‚ด์ž!ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ‘์ผ๋‹จ ์ž‘๋™๋งŒ ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ’๊ณผ ์ •

product.kyobobook.co.kr