5 min read

OSTEP 08 Multi-level Feedback Queue, MLFQ

Table of Contents

Introduction

MLFQ๊ฐ€ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋‘ ๊ฐ€์ง€์ด๋‹ค.

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

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ž‘์—…์˜ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์„ ํ–‰ ์ •๋ณด ์—†์ด ์‘๋‹ต ์‹œ๊ฐ„๊ณผ ๋ฐ˜ํ™˜ ์‹œ๊ฐ„์„ ๋™์‹œ์— ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

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

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

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

  • ๊ทœ์น™ 1: Priority(A) > Priority(B) ์ด๋ฉด, A๊ฐ€ ์‹คํ–‰๋œ๋‹ค (B๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค).
  • ๊ทœ์น™ 2: Priority(A) = Priority(B) ์ด๋ฉด, A์™€ B๋Š” RR ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

OSTEP 08 Multi-level Feedback Queue, MLFQ-1687808739461.jpeg

2. ์‹œ๋„ 1: ์šฐ์„ ์ˆœ์œ„์˜ ๋ณ€๊ฒฝ

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

์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • ๊ทœ์น™ 3: ์ž‘์—…์ด ์‹œ์Šคํ…œ์— ์ง„์ž…ํ•˜๋ฉด, ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„, ์ฆ‰ ๋งจ ์œ„์˜ ํ์— ๋†“์—ฌ์ง„๋‹ค.
  • ๊ทœ์น™ 4a: ์ฃผ์–ด์ง„ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„๋Š” ๋‚ฎ์•„์ง„๋‹ค. ์ฆ‰, ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜ ํ๋กœ ์ด๋™ํ•œ๋‹ค.
  • ๊ทœ์น™ 4b: ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋ฅผ ์†Œ์ง„ํ•˜๊ธฐ ์ „์— CPU๋ฅผ ์–‘๋„ํ•˜๋ฉด ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

์˜ˆ์‹œ 1: ํ•œ ๊ฐœ์˜ ๊ธด ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ์ž‘์—…

OSTEP 08 Multi-level Feedback Queue, MLFQ-1687808781509.jpeg

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

์˜ˆ์‹œ 2: ์งง์€ ์ž‘์—…๊ณผ ํ•จ๊ป˜

OSTEP 08 Multi-level Feedback Queue, MLFQ-1687808800094.jpeg

2๊ฐœ์˜ ์ž‘์—…์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•ด๋ณด์ž. A๋Š” ์˜ค๋ž˜ ์‹คํ–‰๋˜๋Š” CPU ์œ„์ฃผ ์ž‘์—…์ด๊ณ  B๋Š” ์งง์€ ๋Œ€ํ™”ํ˜• ์ž‘์—…์ด๋‹ค. A๋Š” ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ด๊ณ  B๋Š” ์ด์ œ ๋„์ฐฉํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, B๋Š” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌ๋ฐ›์•„ ๋นจ๋ฆฌ ์‹คํ–‰๋˜๊ณ  ๋ฐ”๋กœ ์ข…๋ฃŒ๋œ๋‹ค. ์ดํ›„์— A๋Š” ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์—์„œ ์‹คํ–‰์„ ์žฌ๊ฐœํ•œ๋‹ค.

์˜ˆ์‹œ 3: ์ž…์ถœ๋ ฅ ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ?

OSTEP 08 Multi-level Feedback Queue, MLFQ-1687808844209.jpeg

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

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

  1. ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ์Šคํ…œ์— ๋Œ€ํ™”ํ˜• ์ž‘์—…์ด ๋งŽ์ด ์กด์žฌํ•˜๋ฉด, ๊ทธ๋“ค์ด ๋ชจ๋“  CPU ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•˜๊ณ , ๊ธด ์‹คํ–‰ ์‹œ๊ฐ„ ์ž‘์—…์€ CPU ์‹œ๊ฐ„์„ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜์—ฌ ๊ตถ์–ด ์ฃฝ๋Š”๋‹ค.
  2. ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ž์‹ ์—๊ฒŒ ์œ ๋ฆฌํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ์•„๋ฌด ์ž…์ถœ๋ ฅ ์š”์ฒญ์„ ๋‚ด๋ ค CPU๋ฅผ ์–‘๋„ํ•˜๋„๋ก ์ง ๋‹ค๋ฉด?
  3. ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ๊ฐ„ ํ๋ฆ„์— ๋”ฐ๋ผ ํŠน์„ฑ์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค. (CPU ์œ„์ฃผ ์ž‘์—… -> ๋Œ€ํ™”ํ˜• ์ž‘์—…)

3. ์‹œ๋„ 2: ์šฐ์„ ์ˆœ์œ„ ์ƒํ–ฅ ์กฐ์ •

์ƒˆ๋กœ์šด ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

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

์ƒˆ ๊ทœ์น™์€ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•œ๋‹ค.

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

4. ์‹œ๋„ 3: ๋” ๋‚˜์€ ์‹œ๊ฐ„ ์ธก์ •

์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์ž์‹ ์—๊ฒŒ ์œ ๋ฆฌํ•˜๊ฒŒ ๋™์ž‘์‹œํ‚ค๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š”๊ฐ€? ๊ทœ์น™ 4๋ฅผ ์žฌ์ •์˜ํ•˜์ž.

๊ทœ์น™ 4: ์ฃผ์–ด์ง„ ๋‹จ๊ณ„์—์„œ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ์†Œ์ง„ํ•˜๋ฉด (CPU๋ฅผ ๋ช‡ ๋ฒˆ ์–‘๋„ํ•˜์˜€๋Š”์ง€ ์ƒ๊ด€์—†์ด), ์šฐ์„ ์ˆœ์œ„๋Š” ๋‚ฎ์•„์ง„๋‹ค (์ฆ‰, ์•„๋ž˜ ๋‹จ๊ณ„์˜ ํ๋กœ ์ด๋™ํ•œ๋‹ค).

OSTEP 08 Multi-level Feedback Queue, MLFQ-1687809290188.jpeg

๋ฐฉ์ง€์ฑ…์ด ๋งˆ๋ จ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ์ž…์ถœ๋ ฅ ํ–‰๋™๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์•„๋ž˜ ๋‹จ๊ณ„ ํ๋กœ ์ฒœ์ฒœํžˆ ์ด๋™ํ•˜๊ฒŒ ๋˜์–ด CPU๋ฅผ ์ž๊ธฐ ๋ชซ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

5. MLFQ ์กฐ์ •๊ณผ ๋‹ค๋ฅธ ์Ÿ์ ๋“ค

๋ช‡ ๊ฐœ์˜ ํ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ํ๋‹น ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค์˜ ํฌ๊ธฐ๋Š” ์–ผ๋งˆ๋กœ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ๊ธฐ์•„๋ฅผ ํ”ผํ•˜๊ณ  ๋ณ€ํ™”๋œ ํ–‰๋™์„ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ƒํ–ฅ ์กฐ์ •๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€?

ํ์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•œ๋‹ค.

OSTEP 08 Multi-level Feedback Queue, MLFQ-1687809532148.jpeg

Solaris์˜ MLFQ ๊ตฌํ˜„ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ๊ฐ’

  • ํ์˜ ๊ฐœ์ˆ˜๋Š” 60
  • ๊ฐ ํ์˜ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ํฌ๊ธฐ๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ 20ms ์—์„œ ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ์ˆ˜๋ฐฑms ๊นŒ์ง€ ์ฒœ์ฒœํžˆ ์ฆ๊ฐ€
  • ์šฐ์„ ์ˆœ์œ„ ์ƒํ–ฅ ์กฐ์ •์€ ์•ฝ 1์ดˆ ๋งˆ๋‹ค ์ผ์–ด๋‚œ๋‹ค.

6. ์š”์•ฝ

  • ๊ทœ์น™ 1 : ์šฐ์„ ์ˆœ์œ„ (A)> ์šฐ์„ ์ˆœ์œ„ (B) ์ผ ๊ฒฝ์šฐ, A๊ฐ€ ์‹คํ–‰, B๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ทœ์น™ 2 : ์šฐ์„ ์ˆœ์œ„ (A) = ์šฐ์„ ์ˆœ์œ„ (B), A์™€ B๋Š” RR ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.
  • ๊ทœ์น™ 3 : ์ž‘์—…์ด ์‹œ์Šคํ…œ์— ๋“ค์–ด๊ฐ€๋ฉด ์ตœ์ƒ์œ„ ํ์— ๋ฐฐ์น˜๋œ๋‹ค.
  • ๊ทœ์น™ 4 : ์ž‘์—…์ด ์ง€์ •๋œ ๋‹จ๊ณ„์—์„œ ๋ฐฐ์ •๋ฐ›์€ ์‹œ๊ฐ„์„ ์†Œ์ง„ํ•˜๋ฉด (CPU๋ฅผ ํฌ๊ธฐํ•œ ํšŸ์ˆ˜์™€ ์ƒ๊ด€์—†์ด), ์ž‘์—…์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ๊ฐ์†Œํ•œ๋‹ค (์ฆ‰, ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜ ํ๋กœ ์ด๋™ํ•œ๋‹ค).
  • ๊ทœ์น™ 5 : ์ผ์ • ์ฃผ๊ธฐ S๊ฐ€ ์ง€๋‚œ ํ›„, ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ์ž‘์—†์„ ์ตœ์ƒ์œ„ ํ๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

OSTEP ๊ต์žฌ ์ฐธ๊ณ