8.0 ์Šค์ผ€์ค„๋ง : ๋ฉ€ํ‹ฐ ๋ ˆ๋ฒจ ํ”ผ๋“œ๋ฐฑ ํ

  • MLFQ๊ฐ€ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ œ๋Š” ๋‘ ๊ฐ€์ง€ ์ด๋‹ค.
  1. ์งง์€ ์ž‘์—…์„ ๋จผ์ € ์‹คํ–‰์‹œ์ผœ ๋ฐ˜ํ™˜ ์‹œ๊ฐ„์„ ์ตœ์ ํ™” ํ•˜๋Š” ๊ฒƒ.
  2. ๋Œ€ํ™”ํ˜• ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅธ ์‹œ์Šคํ…œ์ด๋ผ๋Š” ๋Š๋‚Œ์„ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‘๋‹ต ์‹œ๊ฐ„์„ ์ตœ์ ํ™” ํ•˜๋Š” ๊ฒƒ.
  • ์ด ๊ณผ์ •์—์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. “์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?”

  • ์œ„์˜ ๋ฌธ์ œ๋Š” ์ด ์žฅ์˜ ํ•ต์‹ฌ ์งˆ๋ฌธ์œผ๋กœ ์ด์–ด์ง„๋‹ค.

8.1 MLFQ: ๊ธฐ๋ณธ ๊ทœ์น™

  • MLFQ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ฐ๊ฐ ๋‹ค๋ฅธ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ์‹คํ–‰ ์ค€๋น„๊ฐ€ ๋œ ํ”„๋กœ์„ธ์Šค๋Š” ์ด ์ค‘ ํ•˜๋‚˜์˜ ํ์— ์กด์žฌํ•œ๋‹ค.

  • MLFQ๋Š” ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์„ ๊ฒฐ์ •ํ•  ๋•Œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋ฌผ๋ก  ํ•˜๋‚˜์˜ ํ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—…์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด ๊ฒฝ์šฐ RR์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ์‰ฌ์šด๋ฐ ์–ด๋ ค์šด๊ฑด ์šฐ์„ ์ˆœ์œ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ •ํ•  ๊ฒƒ์ธ๊ฐ€์ด๋‹ค.

  • MLFQ๋Š” ๊ฐ ์ž‘์—…์— ๊ณ ์ •๋œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ž‘์—…์˜ ํ–‰๋™์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•œ๋‹ค.

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

  • MLFQ์˜ ๋‘ ๊ฐ€์ง€ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    1. ๊ทœ์น™ 1 : Priority A > Priority B ์ด๋ฉด, A์˜ ํ”„๋กœ์„ธ์Šค๋Š” B์˜ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋œ๋‹ค.
    2. ๊ทœ์น™ 2 : Priority A = Priority B ์ด๋ฉด, A์™€ B๋Š” RR์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋œ๋‹ค.

mlfq

  • ๋‹น์žฅ์€ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ž‘์—…์ด ๊ตฌ์„ฑ๋œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, A B๊ฐ€ RR์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉด CD๋Š” ์‹คํ–‰๋˜์ง€๋„ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์•„๋ž˜์˜ ๋ชฉ์ฐจ์—์„œ ์ž‘์—… ์ˆ˜์„ ์ˆœ์œ„์ž์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

8.2 MLFQ: ์šฐ์„ ์ˆœ์œ„์˜ ๋ณ€๊ฒฝ

  • ์ฒซ๋ฒˆ์งธ ๋ณ€๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€๋ฐ ์ฃผ๋กœ ๋Œ€ํ™”ํ˜• ํ”„๋กœ์„ธ์Šค์™€ cpu bound ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

    1. ๋Œ€ํ™”ํ˜• ํ”„๋กœ์„ธ์Šค๋Š” ์งง์€ ์‹œ๊ฐ„๋™์•ˆ CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธธ๋‹ค.
    2. CPU bound ํ”„๋กœ์„ธ์Šค๋Š” ๊ธด ์‹œ๊ฐ„๋™์•ˆ CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ์งง๋‹ค.
  • MLFQ์— ์ถ”๊ฐ€๋œ ๊ทœ์น™

  • ๊ทœ์น™ 3 : ์ž‘์—…์ด ์‹œ์Šคํ…œ์— ๋“ค์–ด์˜ค๋ฉด, ์šฐ์„ ์ˆœ์œ„๋Š” ๊ฐ€์žฅ ๋†’์€ ํ์— ํ• ๋‹น๋œ๋‹ค.

  • ๊ทœ์น™ 4-a : ์ž‘์—…์ด ํƒ€์ž„์Šฌ๋ผ์ด์Šค๋ฅผ ์ „๋ถ€ ์‚ฌ์šฉํ•˜๋ฉด, ์šฐ์„ ์ˆœ์œ„๋Š” ๋‚ฎ์€ ํ๋กœ ์ด๋™๋œ๋‹ค.

  • ๊ทœ์น™ 4-b : ํƒ€์Œ ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  CPU๋ฅผ ์–‘๋„ํ•˜๋ฉด, ์šฐ์„ ์ˆœ์œ„๋Š” ์œ ์ง€๋œ๋‹ค.

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

  • ์‹คํ–‰์‹œ๊ฐ„์ด ๊ธธ๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ํ•˜๋ฝํ•˜๋ฉด์„œ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๊ฒŒ ๋œ๋‹ค.

  • ๋Œ€ํ™”ํ˜• ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๊ตณ์ด ์‚ดํ”ผ์ง€ ์•Š์•„๋„ ์ž˜ ๋™์ž‘ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

ํ˜„์žฌ MLFQ์˜ ๋ฌธ์ œ์ 

  • ์ผ๊ฒฌ ์™„๋ฒฝํ•ด ๋ณด์ด์ง€๋งŒ, MLFQ์—๋„ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค.
  1. ๊ธฐ์•„ ์ƒํƒœ(starvation)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€ํ™”ํ˜• ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ)
  2. ์ง€๊ธˆ ์ƒํƒœ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋ฉด, CPU๋ฅผ ๋…์  ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  3. ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ๋ถ„์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

8.3 ์šฐ์„ ์ˆœ์œ„์˜ ์ƒํ–ฅ ์กฐ์ •

  • ๋‹น์—ฐํžˆ ๊ธฐ๋ณธ์ ์ธ ์•„์ด๋””์–ด๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ƒํ–ฅ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • ๊ทœ์น™ 5 : ์ผ์ • ๊ธฐ๊ฐ„ S๊ฐ€ ์ง€๋‚˜๋ฉด, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ตœ์ƒ์œ„ ํ๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

  • ์ด ๊ทœ์น™์„ ํ†ตํ•ด ๊ธฐ์•„ ์ƒํƒœ์™€ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ๋ถ„์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฌผ๋ก  ์—ฌ๊ธฐ์—๋„ ๋งŽ์€ ๊ณ ๋ฏผ์ด ๋‚จ์•„์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ S์˜ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•  ๊ฒƒ์ธ๊ฐ€์ด๋‹ค.

  • S์˜ ๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด, ๋Œ€ํ™”ํ˜• ์ž‘์—…์ด ์ ์ ˆํ•œ ์‹œ๊ฐ„๋™์•ˆ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ณ , ๋„ˆ๋ฌด ํฌ๋ฉด ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

8.4 ์šฐ์„ ์ˆœ์œ„์˜ ํ•˜ํ–ฅ ์กฐ์ •

  • ๋‚˜๋จธ์ง€ ๋ฌธ์ œ(์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋…์ ํ•˜๋Š” ์ด์Šˆ)๋„ ํ•˜๋‚˜์˜ ๊ทœ์น™์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ทœ์น™ 6 : ์šฐ์„  ์ˆœ์œ„ ๋‹จ๊ณ„์—์„œ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ์‚ฌ์šฉํ•˜๋ฉด, ์šฐ์„  ์ˆœ์œ„๋ฅผ ํ•˜ํ–ฅ ์กฐ์ •ํ•œ๋‹ค.

8.5 MLFQ์กฐ์ •๊ณผ ๋‹ค๋ฅธ ์ด์Šˆ๋“ค

  • MLFQ์˜ ์•„์ด๋””์–ด๋Š” ์œ„์™€ ๊ฐ™์ง€๋งŒ, ์•„์ง ์‹ค์ œ ๊ตฌํ˜„์—๋Š” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค.

  • ํƒ€์ž„์Šฌ๋ผ์ด์Šค์˜ ๊ธธ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•  ๊ฒƒ์ธ๊ฐ€?

  • S์˜ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•  ๊ฒƒ์ธ๊ฐ€?

9.0 ์Šค์ผ€์ค„๋ง : ๋น„๋ก€ ๋ฐฐ๋ถ„

  • ์ด๋ฒˆ ์žฅ์—์„œ๋Š” ์Šค์ผ€์ค„๋Ÿฌ์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ธ ๋น„๋ก€ ๋ฐฐ๋ถ„์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

  • ๋น„๋ก€ ๋ฐฐ๋ถ„์˜ ๋ชฉํ‘œ๋Š” ๊ฐ„๋‹จํ•œ๋ฐ, ๋ฐ˜ํ™˜์‹œ๊ฐ„์ด๋‚˜ ์‘๋‹ต์‹œ๊ฐ„์„ ์ตœ์ ํ™” ํ•˜๋Š” ๋Œ€์‹  ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค์— CPU ์‹œ๊ฐ„์„ ๊ณตํ‰ํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ๊ฐ€์žฅ ์ข‹์€ ์˜ˆ์‹œ๋Š” Waldspurger์™€ Weihl์˜ ์—ฐ๊ตฌ์ธ lottery scheduling์ด๋‹ค. (๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด, ๊ฐ ํ”„๋กœ์„ธ์Šค์— ํ‹ฐ์ผ“์„ ๋ถ€์—ฌํ•˜๊ณ , ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋žœ๋คํ•˜๊ฒŒ ํ‹ฐ์ผ“์„ ๋ฝ‘์•„์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹ ๋” ์ค‘์š”ํ•œ ํ”„๋กœ์„ธ์Šค์— ๋” ๋งŽ์€ ํ‹ฐ์ผ“์„ ์ค€๋‹ค)

9.1 ๊ธฐ๋ณธ ๊ฐœ๋… : ์ถ”์ฒจ๊ถŒ์ด ๋‹น์‹ ์˜ ์ง€๋ถ„์ด๋‹ค

  • ์ถ”์ฒจ๊ถŒ์ด๋ผ๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์ด ์ถ”์ฒœ ์Šค์ผ€์ค„๋ง์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃฌ๋‹ค.

  • ๊ธฐ๋ณธ์ ์ธ ์•„์ด๋””์–ด๋Š” ์œ„์™€ ๊ฐ™๊ณ , ์žฅ์ ์€ ๋ฌด์ž‘์œ„์„ฑ์ด๋‹ค.

๋ฌด์ž‘์œ„์„ฑ์ด ์žฅ์ ์ธ ์ด์œ 

  1. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ์กด์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค (LRU์˜ ์˜ˆ์‹œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž)
  2. ๊ฐ€๋ณ๋‹ค (๊ด€๋ฆฌํ•ด์•ผ ํ•  ์ •๋ณด๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค)
  3. ๋น ๋ฅด๋‹ค (๋กœ์ง์ด ๋œ ๋ถ™์–ด ๋‚œ์ˆ˜์ƒ์„ฑ ์‹œ๊ฐ„์ •๋„์— ๋ถˆ๊ณผํ•˜๋‹ค)

9.2 ์ถ”์ฒจ ๊ธฐ๋ฒ•

  • ์ถ”์ฒจ๊ถŒ์„ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋จผ์ € ๊ณ ๋ คํ•  ๊ฒƒ ์€ ์ถ”์ฒจ๊ถŒ ํ™”ํ์ด๋‹ค.

  • ์ด ๊ฐœ๋…์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ถ”์ฒจ๊ถŒ์„ ์ž์‹ ์˜ ํ™”ํ ๊ฐ€์น˜๋กœ ์ถ”์ฒจ๊ถŒ์„ ์ž์œ ๋กญ๊ฒŒ ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. (์‹œ์Šคํ…œ์€ ์ž๋™์ ์œผ๋กœ ํ™”ํ ๊ฐ€์น˜๋ฅผ ๋ณ€ํ™˜ํ•œ๋‹ค)

  • ์ด๊ฑด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹นํ•œ ์ถ”์ฒจ๊ถŒ์˜ ๊ฐ€์น˜๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ  ์ถ”์ฒจ๊ถŒ ์–‘๋„๋ผ๋Š” ๊ฐœ๋…๋„ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ถ”์ฒจ๊ถŒ์„ ์–‘๋„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

  • ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ์ถ”์ฒจ๊ถŒ์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์–‘๋„ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ๋งŽ์€ ์ถ”์ฒจ๊ถŒ์„ ๊ฐ€์ง€๊ฒŒ ํ•ด์ค€๋‹ค.

  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์ถ”์ฒจ๊ถŒ ํŒฝ์ฐฝ๋ผ๋Š” ๊ฐœ๋…๋„ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์‹œ์Šคํ…œ์ด ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ถ”์ฒจ๊ถŒ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

9.3 ๊ตฌํ˜„

// counter : ๋‹น์ฒจ์ž๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ณ€์ˆ˜
int counter = 0;

// winner : 0๋ถ€ํ„ฐ ์ด ์ถ”์ฒจ๊ถŒ์˜ ์ˆ˜๊นŒ์ง€ ๋žœ๋คํ•˜๊ฒŒ ์ถ”์ฒจ๋œ ๋‹น์ฒจ์ž
int winner = getRandom(0, total_tickets);

// ์ถ”์ฒจ๊ถŒ์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๋Š”๋‹ค.
node_t *current = head;

while (current) {
  counter += current->tickets;
  if (counter > winner) {
    // ๋‹น์ฒจ์ž๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์œผ๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
    run(current->process);
    break;
  }
  current = current->next;
}

as

  • ์œ„์˜ ์ฝ”๋“œ๋Š” ์ถ”์ฒจ๊ถŒ์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์•„ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

9.4 ์ถ”์ฒจ๊ถŒ ์‹œ์Šคํ…œ ์˜ˆ์ œ

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถˆ๊ณต์ • ์ง€ํ‘œ U๋ฅผ ์ •์˜ํ•œ๋‹ค.(U = 1 - (์ฒซ ์ž‘์—… ์ข…๋ฃŒ ์‹œ๊ฐ„ / ๋‘ ๋ฒˆ์งธ ์ž‘์—… ์ข…๋ฃŒ ์‹œ๊ฐ„))

  • ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” 1(๊ฐ€์žฅ ๊ณต์ •ํ•จ)์œผ๋กœ ์ˆ˜๋ ดํ•˜๊ธด ํ•˜์ง€๋งŒ ๋žœ๋ค์˜ ํŠน์„ฑ์ƒ ์ดˆ๋ฐ˜์—๋Š” ๋ถˆ๊ณต์ •ํ•จ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹ค๋งŒ ์ถ”์ฒจ๊ถŒ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์ถ”์ฒจ๊ถŒ์„ ์–ด๋–ป๊ฒŒ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€์ด๋‹ค.

  • ์ด๋Š” ์ถ”์ฒจ๊ถŒ์„ ์–ด๋–ป๊ฒŒ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ณ  ์•„์ง ๋ฏธํ•ด๊ฒฐ ์ƒํƒœ์ด๋‹ค.

9.6 ๊ฒฐ์ •๋ก ์  ์Šค์ผ€์ค„๋ง

  • ๊ฒฐ์ •๋ก ์  ์Šค์ผ€์ค„๋ง์€ ๋žœ๋ค์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ , ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ณดํญ ์Šค์ผ€์ค„๋ง(stride scheduling)์ด ์žˆ๋‹ค.

  • ๋ณดํญ ์Šค์ผ€์ค„๋ง์€ ๊ฐ ํ”„๋กœ์„ธ์Šค์— ๋ณดํญ์„ ํ• ๋‹นํ•˜๊ณ , ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ณดํญ์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

  • ์ด๋ฅผ ํ†ตํ•ด ๋žœ๋ค์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ , ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

curr = remove_min(queue);
schedule(curr);
curr->pass += curr->stride;
insert(queue, curr);

stride

  • ์ฒ˜์Œ๋ถ€ํ„ฐ U๊ฐ€ 1์— ์ˆ˜๋ ดํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๊ฒฐ์ •๋ก ์  ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„๊นŒ?

  • ์ด์œ ๋Š” ๋‹จ์ˆœํ•œ๋ฐ, ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด, ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ƒˆ๋กœ์šด ๋ณดํญ์„ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๊ฒฐ์ •๋ก ์  ์Šค์ผ€์ค„๋ง์˜ ๋‹จ์ ์ด๋‹ค.(๋žœ๋ค ์ถ”์ฒจ๊ถŒ ๋ฐฉ์‹์—์„œ ํ›จ์”ฌ ์‰ฝ๋‹ค)

9.7 ๋ฆฌ๋ˆ…์Šค CFS(Completely Fair Scheduler)

  • ๋ฆฌ๋ˆ…์Šค๋Š” ๊ธฐ์กด๊ณผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ณต์ • ๋ฐฐ๋ถ„ ์Šค์ผ€์ค„๋ง์„ ๊ตฌํ˜„ํ•œ๋‹ค.

  • ์ด ์Šค์ผ€์ค„๋Ÿฌ์˜ ์žฅ์ ์€ ํšจ์œจ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด๋‹ค.

  • ํšจ์œจ์„ฑ์„ ์œ„ํ•ด CFS๋Š” ์ตœ์ ์˜ ๋‚ด๋ถ€ ์„ค๊ณ„์™€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ผ๋‹จ ๊ธฐ๋ณธ์ ์œผ๋กœ virtual runtime์ด๋ผ๋Š” counting ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์‹œ virtual runtime์ด ์ฆ๊ฐ€ํ•˜๊ณ , ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐ€์žฅ ์ž‘์€ virtual runtime์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

  • ์ด ์—ญ์‹œ ์•„์ด๋””์–ด๋Š” ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋Š ์‹œ์ ์— ๋ฉˆ์ถœ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

  • ๋„ˆ๋ฌด ์ž์ฃผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ํ˜ธ์ถœํ•˜๋ฉด ๊ณต์ •์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

  • ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํ†ต์ œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ๋ณ€์ˆ˜๋กœ sced_latency๊ฐ€ ์žˆ๋‹ค. ์ด ๋ณ€์ˆ˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค(๋ณดํ†ต 48ms).

  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋„ค๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด, CFS๋Š” sced_latency๋ฅผ 1/4๋กœ ๋‚˜๋ˆ„๊ณ  ํ”„๋กœ์„ธ์Šค๋‹น ํƒ€์ž„์Šฌ๋ผ์ด์Šค๋ฅผ ํ•ด๋‹น ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

  • ๋ฌธ์ œ๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ context switching์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด min_granularity๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๋ณดํ†ต ์ตœ์†Ÿ๊ฐ’์€ 6ms)

  • ์˜ˆ๋ฅผ๋“ค์–ด 10๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด, ์›๋ž˜๋Š” sced_latency์— ๋”ฐ๋ผ 4.8ms๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

  • ํ•˜์ง€๋งŒ min_granularity๊ฐ€ 6ms์ด๋ฏ€๋กœ, 6ms๋กœ ์„ค์ •๋œ๋‹ค. ์Šค์ผ€์ค„๋ง์˜ ํšจ์šธ์„ฑ์€ ์ด๋ ‡๊ฒŒ ๋ณดํ˜ธ๋œ๋‹ค.

  • ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ CFS๋Š” ๊ณต์ •์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋ชจ๋‘ ํ™•๋ณดํ•œ๋‹ค.

  • ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ€์ค‘์น˜(Niceness)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณด์ •ํ•œ๋‹ค.

  • ์ˆ˜์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. time_slice = (weight_of_task / weight_of_all_tasks) * sced_latency (๊ฐ€์ค‘์น˜ ํ‘œ๋Š” -20 ~ 19๊นŒ์ง€์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋Œ€์‘ ์‹œํ‚จ๋‹ค)

  • ์ด๋Ÿฐ ์ˆ˜์‹์„ ๋„์ž…ํ•˜๋ฉด ๊ฐ€์ค‘์น˜์— ๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค์˜ ํƒ€์ž„์Šฌ๋ผ์ด์Šค(์žฌ์กฐ์ • ์‹œ๊ฐ„)์ด ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

  • vruntime๋„ ๊ฐ€์ค‘์น˜์— ๋”ฐ๋ผ์„œ ๊ณ ๋„ํ™” ๋˜์–ด์žˆ๋‹ค.

  • ๊ณ ๋„ํ™” ์ˆ˜์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. vruntime = vruntime + (weight_of_all_tasks / weight_of_task) * time_slice (๊ฐ€์ค‘์น˜๊ฐ€ ๋†’์„์ˆ˜๋ก vruntime์ด ๋Š๋ฆฌ๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค)

RedBlack Tree์˜ ํ™œ์šฉ

  • CFS๋Š” ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ผญ ํ•„์š”ํ•˜๋‹ค. (๋‹ค์Œ ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

  • ์˜ˆ๋ฅผ๋“ค์–ด ๋Œ€๊ธฐ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ LinkedList๋กœ ๊ด€๋ คํ•˜๋ฉด, ๊ฒ€์ƒ‰์— ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

  • ์ปค์งˆ์ˆ˜๋ก O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ์•„์ฃผ ์ž‘์€ ํƒ€์ž„์Šฌ๋ผ์ด์Šค ์‹œ๊ฐ„ ์•ˆ์— ์ˆ˜์ฒœ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋งค์šฐ ํฐ ๋ฌธ์ œ์ด๋‹ค.

I/O์™€ ์ž ์ž๋Š” ํ”„๋กœ์„ธ์Šค ๋‹ค๋ฃจ๊ธฐ

  • CFS๋Š” I/O์™€ ์ž ์ž๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ๋Š”์ง€์— ๋Œ€ํ•œ ๋ฌธ์ œ๋„ ์žˆ๋‹ค.

  • ์ด๋ฅผ ์œ„ํ•ด CFS๋Š” vruntime์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ •ํ™•ํžˆ๋Š” ์ž ์ž๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊นจ์–ด๋‚ฌ์„ ๋•Œ vruntime์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค(ํŠธ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ vruntime์„ ์ฐพ์•„์„œ ์—…๋ฐ์ดํŠธํ•œ๋‹ค)

10.0 ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์Šค์ผ€์ค„๋ง

  • ์ด๋ฒˆ ์žฅ์—์„œ๋Š” ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

  • ์›๋ž˜๋Š” ๋ณ‘ํ–‰์„ฑ์„ ๋‹ค๋ฃจ๊ณ  ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜์ง€๋งŒ, ์ด๋ฒˆ ์žฅ์—์„œ๋Š” ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

  • ๋‹ค๋งŒ ๊ธฐ์กด์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค(ํ•˜๋‚˜์˜ ์ฝ”์–ด๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋œ)์„ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ์—์„œ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค.

10.1 ๋ฐฐ๊ฒฝ: ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ๊ตฌ์กฐ

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ํ•˜๋“œ์›จ์–ด๋Š” ๋‘๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค.

    1. ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์„œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฌธ์ œ
    2. ํ•˜๋“œ์›จ์–ด ์บ์‹œ์˜ ์‚ฌ์šฉ๋ฐฉ์‹ ๋ฌธ์ œ
  • ์บ์‹œ๋Š” ์ง€์˜์„ฑ์— ๊ธฐ๋ฐ˜ํ•œ๋‹ค. ์ง€์—ญ์„ฑ์—๋Š” ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ๊ณผ ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ์ด ์žˆ๋‹ค.

    • ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ : ์ตœ๊ทผ์— ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์‹œ ์ ‘๊ทผํ•  ํ™•๋ฅ ์ด ๋†’๋‹ค.
    • ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ : ์ตœ๊ทผ์— ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ์™€ ์ธ์ ‘ํ•œ ๋ฐ์ดํ„ฐ์— ๋‹ค์‹œ ์ ‘๊ทผํ•  ํ™•๋ฅ ์ด ๋†’๋‹ค.
  • ์ด๋Ÿฌํ•œ ํŠน์ง•์—์„œ, ์บ์‹œ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์บ์‹œ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๋ฅผ ์š”์•ฝํ•˜๋ฉด, ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ, ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€์ด๋‹ค.

  • ๊ธฐ๋ณธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์€ ํ•˜๋“œ์›จ์–ด์—์„œ ์ œ๊ณต๋œ๋‹ค, ํ•˜๋“œ์›จ์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ณ„์† ๊ฐ์‹œํ•˜๊ณ , ํ•ญ์ƒ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌ๋˜๋„๋ก ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐฑ์‹คํ• ๋•Œ๋Š” ํ•ญ์ƒ ๊ณต์œ ๋„๋˜๋กํ•œ๋‹ค.

  • ๋ฒ„์Šค ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฒ„์Šค ์Šค๋ˆ„ํ•‘์ด๋ผ๋Š” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•œ๋‹ค. (์บ์‹œ๊ฐ€ ์ž์‹ ๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์—ฐ๊ฒฝํ•˜๋Š” ๋ฒ„์Šค์˜ ํ†ต์‹  ๋‚ด์šฉ์„ ๊ฐ์‹œํ•˜๋Š” ๊ฒƒ)

10.2 ๋™๊ธฐํ™”๋ฅผ ์žŠ์ง€ ๋งˆ์‹œ์˜ค

  • ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ์—์„œ๋Š” ๋™๊ธฐํ™”๊ฐ€ ๋”์šฑ ์ค‘์š”ํ•˜๋‹ค.

  • ์ด๊ฑด ๋ณ‘ํ–‰์„ฑ์—์„œ ๋‹ค๋ฃฐ ๊ฒƒ ๊ฐ™๊ณ , ๊ฐ„๋‹จํžˆ ์š”์•ฝํ•˜๋ฉด, ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋Š” ์žฅ์ด๋‹ค.

  • lock์ด ๋Œ€์•ˆ์ด์ง€๋งŒ, lock์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” trade-off๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

10.3 ์บ์‹œ ์นœํ™”์„ฑ

  • ์บ์‹œ ์นœํ™”์„ฑ๋„ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค (CPU๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฆฌ๋ฉด์„œ ์˜ค๋Š” ์ง€์—ฐ๊ณผ ๋‚ญ๋น„)

  • ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ๋Š” ์ด๋Ÿฐ์ ์„ ๊ณ ๋ คํ•ด์„œ ํ”„๋กœ์„ธ์„œ๋ฅผ ์Šค์ผ€์ค„๋ง ํ•ด์•ผ ํ•œ๋‹ค.

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

10.4 ๋‹จ์ผ ํ ์Šค์ผ€์ค„๋ง

  • ๊ฒฐ๊ตญ ๋‹ค์‹œ ์Šค์ผ€์ค„๋ง์œผ๋กœ ๋Œ์•„์™€์„œ ์ด์•ผ๊ธฐํ•ด๋ณด๋ฉด, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์Šค์ผ€์ค„๋ง์—์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋‹จ์ผ ํ ์Šค์ผ€์ค„๋ง์ด๋‹ค.

  • ๋‹จ์ผ ํ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์Šค์ผ€์ค„๋ง(Single Queue Multiprocessor Scheduling)์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ•˜๋‚˜์˜ ํ๋ฅผ ๊ณต์œ ํ•˜๊ณ , ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

  • ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด, ํ์— ๋„ฃ๊ณ  ๋น„์–ด์žˆ๋Š” ํ”„๋กœ์„ธ์„œ์—๊ฒŒ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. (์ž‘์—…์ด ๋‘๊ฐœ๊ณ  ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋‘๊ฐœ๋ฉด, ๋‘๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ์—๊ฒŒ ๊ฐ๊ฐ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹)

  • ์ด ๋ฐฉ์‹์€ ๋Œ€๋ถ€๋ถ„์˜ ๋‹จ์ ์„ ๋ฌด์‹œํ•˜๊ธฐ๋„ ํ•˜๊ณ , ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ํ™•์žฅ์„ฑ์ด ๊ฒฐ์—ฌ๋˜์–ด์žˆ๋‹ค.

  • ์ด ๋ฐฉ์‹์€ ๋ฝ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ(์‹คํ–‰์‹œํ‚ฌ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ฐพ์„ ๋•Œ) ์ด๋Š” ์„ฑ๋Šฅ์„ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

  • ๋˜ํ•œ ์•„๋ฌด๋Ÿฐ ๋ณด์ •์ด ์—†๋‹ค๋ฉด, ์บ์‹œ ์นœํ™”์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ™์€ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์œ ๋„ํ•ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

  • ์ด๊ฐ™์€ ๋ฐฉ์‹์€ ์ข‹์ง€๋งŒ, ๊ตฌํ˜„์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

10.5 ๋ฉ€ํ‹ฐ ํ ์Šค์ผ€์ค„๋ง

  • ๋ฉ€ํ‹ฐ ํ ์Šค์ผ€์ค„๋ง(Multi Queue Scheduling)์€ ๋‹จ์ผ ํ ์Šค์ผ€์ค„๋ง์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ๋ฐฉ์‹์ด๋‹ค.

  • ์ด๊ฒƒ๋„ ๊ฐœ๋…์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์•„์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์•ฝํ•˜๋ฉด, ๊ฐ ํ”„๋กœ์„ธ์„œ์— ํ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ๊ฐ ํ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • A,B,C,D ๋„ค๊ฐ€์ง€ ์ž‘์—…์ด ์žˆ๋‹ค๋ฉด, A,B๋Š” ํ1์—, C,D๋Š” ํ2์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์บ์‹œ์นœํ™”์ ์ด๊ณ , ํ๋กœ ์ธํ•œ ๋ฝ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹จ ์ด ๋ฐฉ์‹๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์›Œํฌ๋กœ๋“œ๊ฐ€ ๋ถˆ๊ท ํ˜•ํ•˜๋‹ค๋ฉด, ํ•œ์ชฝ ํ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

  • ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ์ด์ฃผ (migration)์ด๋‹ค.

  • ์ด์ฃผ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์ด๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๋ถˆ๊ท ํ˜•์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

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