๐Ÿ“— 11์ฃผ์ฐจ | ํ€ด์ฆˆ ๋Œ€๋น„

์ด์ˆœ๊ฐ„ยท2025๋…„ 5์›” 26์ผ

Preparing for the quiz

๋ชฉ๋ก ๋ณด๊ธฐ
10/12

์ฃผ์ œ: MLFQS (Multi-Level Feedback Queue Scheduler)
์‹œํ—˜์‹œ๊ฐ„: 14:00 ~ 15:00


โœ๏ธ ๋ฌธ์ œ 1

MLFQS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ณ€์ˆ˜(nice, recent_cpu, load_avg)์˜ ์—ญํ• ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค. (1์ )

โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:

  • nice: ์Šค๋ ˆ๋“œ๊ฐ€ CPU๋ฅผ ์–‘๋ณดํ•˜๋ ค๋Š” ์„ฑํ–ฅ
  • recent_cpu: ์ตœ๊ทผ ์–ผ๋งˆ๋‚˜ CPU๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ถ”์ 
  • load_avg: ์ „์ฒด ์‹œ์Šคํ…œ์˜ CPU ๋ถ€ํ•˜ (์ค€๋น„ ์ค‘์ธ ์Šค๋ ˆ๋“œ ์ˆ˜ ๊ธฐ๋ฐ˜)

โœ๏ธ ๋ฌธ์ œ 2

๋‹ค์Œ ์‹์—์„œ ๋นˆ์นธ์„ ์ฑ„์šฐ์‹œ์˜ค. (load_avg ๊ฐฑ์‹  ์‹)

load_avg = ____ * load_avg + ____ * ready_threads;

โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:

load_avg = (59/60) * load_avg + (1/60) * ready_threads;

โœ๏ธ ๋ฌธ์ œ 3

recent_cpu ๊ณ„์‚ฐ ์‹์„ ์™„์„ฑํ•˜์‹œ์˜ค.

recent_cpu = ((__) * load_avg) / ((__) * load_avg + 1) * recent_cpu + nice;

โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:

recent_cpu = ((2) * load_avg) / ((2) * load_avg + 1) * recent_cpu + nice;

โœ๏ธ ๋ฌธ์ œ 4

์Šค๋ ˆ๋“œ์˜ priority๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์‹์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:

priority = PRI_MAX - (recent_cpu / 4) - (nice * 2)

โœ๏ธ ๋ฌธ์ œ 5

MLFQS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ thread_set_priority() ํ˜ธ์ถœ์ด ๋ฌด์‹œ๋˜๋Š” ์ด์œ ๋Š”?
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:
์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ž๋™ ๊ณ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž ์ˆ˜๋™ ์„ค์ •์€ ๋ฌด์‹œ๋œ๋‹ค.


โœ๏ธ ๋ฌธ์ œ 6

MLFQS์—์„œ priority donation์ด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:
priority donation์€ ์ˆ˜๋™ priority๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜์ง€๋งŒ, MLFQS์—์„œ๋Š” ์ž๋™ ๊ณ„์‚ฐ๋˜๋ฏ€๋กœ donation์ด ์˜๋ฏธ ์—†์–ด์ง


โœ๏ธ ๋ฌธ์ œ 7

๋‹ค์Œ ์ƒํ™ฉ์—์„œ load_avg๋Š” ์–ผ๋งˆ๊ฐ€ ๋˜๋Š”๊ฐ€?
์ดˆ๊ธฐ๊ฐ’ = 0, ready_threads = 3
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:

load_avg = (59/60)*0 + (1/60)*3 = 0.05

โœ๏ธ ๋ฌธ์ œ 8

recent_cpu๋Š” ์–ธ์ œ, ๋ˆ„๊ตฌ์—๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š”๊ฐ€?
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:
๋งค tick๋งˆ๋‹ค running ์ƒํƒœ์˜ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด recent_cpu++ ๋œ๋‹ค. idle ์ œ์™ธ


โœ๏ธ ๋ฌธ์ œ 9

priority๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์— ์žฌ๊ณ„์‚ฐ๋˜๋Š”๊ฐ€? (๋ชจ๋‘ ๊ณ ๋ฅด์‹œ์˜ค)

  1. ๋งค tick
  2. ๋งค 4tick
  3. ๋งค 1์ดˆ
  4. ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ์‹œ
  5. nice ๋ณ€๊ฒฝ ์‹œ
    โœ… ์ •๋‹ต: 2, 3, 4, 5

โœ๏ธ ๋ฌธ์ œ 10

MLFQS ์‚ฌ์šฉ ์—ฌ๋ถ€์— ๋”ฐ๋ผ thread_set_priority() ํ•จ์ˆ˜์˜ ๋™์ž‘ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:

  • ๊ธฐ๋ณธ ์Šค์ผ€์ค„๋Ÿฌ: ์šฐ์„ ์ˆœ์œ„ ์ˆ˜๋™ ์„ค์ •
  • MLFQS: ๋ฌด์‹œ๋จ

โœ๏ธ ๋ฌธ์ œ 11

load_avg์™€ recent_cpu๋Š” ์–ด๋–ค ์ฃผ๊ธฐ๋กœ ๊ณ„์‚ฐ๋˜๋Š”๊ฐ€? ๊ฐ๊ฐ ์„ค๋ช…ํ•˜์‹œ์˜ค.
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:

  • load_avg: ๋งค 1์ดˆ๋งˆ๋‹ค ๊ฐฑ์‹ 
  • recent_cpu: ๋งค 1์ดˆ๋งˆ๋‹ค ๋ชจ๋“  ์Šค๋ ˆ๋“œ ๊ฐฑ์‹ , ๋งค tick๋งˆ๋‹ค running ์Šค๋ ˆ๋“œ๋งŒ ์ฆ๊ฐ€

โœ๏ธ ๋ฌธ์ œ 12

nice ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋ฉด priority๋Š” ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”๊ฐ€? ๊ทธ ์ด์œ ๋Š”?
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:
nice ๊ฐ’์ด ์ปค์ง€๋ฉด priority๋Š” ๋‚ฎ์•„์ง„๋‹ค. โ†’ CPU ์–‘๋ณด ์„ฑํ–ฅ์„ ๋ฐ˜์˜ํ•œ ๊ฐ’์ด๋ฏ€๋กœ


โœ๏ธ ๋ฌธ์ œ 13

MLFQS์—์„œ recent_cpu, priority๊ฐ€ ์˜ค๋ฒ„ํ”Œ๋กœ ์—†์ด ๊ณ„์‚ฐ๋˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:
๊ณ ์ •์†Œ์ˆ˜์ (Fixed-point) ์—ฐ์‚ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด ์ •๋ฐ€๋„ ํ™•๋ณด


โœ๏ธ ๋ฌธ์ œ 14

recent_cpu๊ฐ€ ๋†’์€ ์Šค๋ ˆ๋“œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€? ์ด์œ ๋Š”?
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:
๋‚ฎ์•„์ง„๋‹ค. recent_cpu๋Š” CPU๋ฅผ ๋งŽ์ด ์“ด ์ •๋„์ด๋ฏ€๋กœ, fairํ•œ ๋ถ„๋ฐฐ๋ฅผ ์œ„ํ•ด priority๋ฅผ ๋‚ฎ์ถ˜๋‹ค.


โœ๏ธ ๋ฌธ์ œ 15

MLFQS์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋™์ผํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ, ์–ด๋–ค ์Šค๋ ˆ๋“œ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๋Š”๊ฐ€?
โœ… ๋ชจ๋ฒ”๋‹ต์•ˆ:
FIFO ๋ฐฉ์‹์œผ๋กœ, ๋จผ์ € ready ์ƒํƒœ๊ฐ€ ๋œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค.


๐Ÿง  ์ •๋ฆฌํ‘œ

ํ•ญ๋ชฉ์„ค๋ช…
niceCPU ์–‘๋ณด ์„ฑํ–ฅ, ํด์ˆ˜๋ก priority ๋‚ฎ์Œ
recent_cpu์ตœ๊ทผ CPU ์‚ฌ์šฉ๋Ÿ‰, ๋งŽ์„์ˆ˜๋ก priority ๋‚ฎ์Œ
load_avg์ „์ฒด ์‹œ์Šคํ…œ ๋ถ€ํ•˜ ์ง€ํ‘œ
priority์ž๋™ ๊ณ„์‚ฐ: PRI_MAX - (recent_cpu / 4) - (nice * 2)
์žฌ๊ณ„์‚ฐ ์‹œ์ 1์ดˆ๋งˆ๋‹ค, 4ํ‹ฑ๋งˆ๋‹ค, ์ƒ์„ฑ ์‹œ, nice ๋ณ€๊ฒฝ ์‹œ
donationโŒ ๋น„ํ™œ์„ฑํ™”๋จ
set_priorityโŒ ๋ฌด์‹œ๋จ (MLFQS ์ผœ์ ธ ์žˆ์„ ๊ฒฝ์šฐ)
profile
์„œํˆด์ง€์–ธ์ • ๋Š˜ ํ–‰๋™์ด ๋จผ์ €์ด๊ธฐ๋ฅผ

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