Previous chapter
Main Question : Scheduling without Information
MLFQ๊ฐ ํด๊ฒฐํ๋ ค๋ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ ๋ ๋๊ฐ์ง์ด๋ค.
1.
์งง์ ์์
์ ๋จผ์ ์คํ์์ผ ๋ฐํ์๊ฐ์ ์ต์ ํํ๋ค.
a.
SJF๋ STCF๋ ์์
์คํ์๊ฐ ์ ๋ณด๋ฅผ ํ์๋ก ํ์ง๋ง, ์ด์์ฒด์ ๋ ์ด ์คํ์๊ฐ์ ์ ์ ์๋ค.
2.
๋ํํ ์ฌ์ฉ์์๊ฒ ๋์ ๊ฒฝํ์ ์ํด ์๋ต์๊ฐ์ ์ต์ ํํ๋ค.
a.
RR์ ์๋ต์๊ฐ์ ๋จ์ถ์ํค์ง๋ง ๋ฐํ์๊ฐ์ ์ต์
์ด๋ค.
์ฆ, ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด ์์ด ์ด๋ฐ ๋๊ฐ์ง ๋ฌธ์ ๋ฅผ ๋ชจ๋ ๋ง์กฑํ ์ ์๋ ์ค์ผ์ค๋ฌ๋ ์ด๋ค ๊ฒ์ด ์๋๊ฐ?
์์
์ ์คํ์๊ฐ์ ๋ํ ์ ํ ์ ๋ณด ์์ด ๋ํํ ์์
์ ์๋ต ์๊ฐ์ ์ต์ํํ๊ณ ๋์์ ๋ฐํ์๊ฐ์ ์ต์ํํ๋ ์ค์ผ์ค๋ฌ๋ฅผ ์ด๋ป๊ฒ ์ค๊ณํ ์ ์๋๊ฐ?
Basic Rules
MLFQ๋ ์ฌ๋ฌ๊ฐ์ ํ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ๊ฐ ๋ค๋ฅธ ์ฐ์ ์์(priority level)๊ฐ ๋ฐฐ์ ๋๋ค.
์คํ ์ค๋น๊ฐ ๋ ํ๋ก์ธ์ค๋ ์ด ์ค ํ๋์ ํ์ ์กด์ฌํ๋ค.
์ฆ, ๋์ ์ฐ์ ์์ ํ์ ์กด์ฌํ๋ ์์
์ด ์ ํ๋๋ ๋ฐฉ์์ด๋ค.
โข
ํ์๋ ๋ ์ด์์ ์์
์ด ์กด์ฌํ ์ ์๋ค. ์ด๋ ๋ ์์
์ฌ์ด์๋ RR๋ฐฉ์์ด ์ ์ฉ๋๋ค.
MLFQ์ ํต์ฌ์ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ์์ด๋ค.
โข
ํค๋ณด๋ ์
๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฐ๋ณต์ ์ผ๋ก CPU๋ฅผ ์๋ณดํ๋ค๋ฉด ํด๋น ์์
์ ์ฐ์ ์์๋ฅผ ๋๊ฒ ์ ์งํ๋ค.
โข
๊ธด ์๊ฐ๋์ CPU๋ฅผ ์ง์ค์ ์ผ๋ก ๊ฐ๊ตฌ๋ฉด MLFQ๋ ์ฐ์ ์์๋ฅผ ๋ฎ์ถ๋ค.
์ฐ๋ฆฌ๋ ์ ์์
์ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ํด์ํ ์ ์๋ค.
โข
I/O-bound jobs
โฆ
Interactive and short-running
โข
CPU-bound jobs
โฆ
compute intensive and longer-running
์์
์ด ์งํ๋๋ ๋์ ํด๋น ์์
์ ๊ณผ๊ฑฐ์ ์ ๋ณด๋ฅผ ์ป๊ณ , ์ด ์ ๋ณด๋ฅผ ์ด์ฉํด ๋ฏธ๋ ํ๋์ ์์ธกํ๋ ๋ฐฉ์์ด MLFQ์ด๋ค.
MLFQ์ ๊ธฐ๋ณธ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
Priority(A) > Priority(B) ์ด๋ฉด, A๊ฐ ์ฐ์ ์ ์ผ๋ก ์คํ๋๋ค. (B๋ ์คํ๋์ง ์๋๋ค.)
Priority(A) = Priority(B) ์ด๋ฉด, A์ B๋ RR๋ฐฉ์์ผ๋ก ์คํ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ์ํ(?) ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
๋ค์๊ณผ ๊ฐ์ด ํ๊ฐ ๋ฐฐ์น๋์์ ๊ฒฝ์ฐ, A์ B๊ฐ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ผ๋ฏ๋ก A์ B๊ฐ RR๋ก ๋์๊ฐ ๊ฒ์ด๋ฉฐ, C์ D๋ ์์ ์คํ๋์ง ์๋๋ค. ์ด๋ป๊ฒ ์ด๋ฐ ์ผ์ด!!!
๋คํํ๋ ์์์ ๋งํ๋ ๊ฒ ์ฒ๋ผ ์์
์ ์ฐ์ ์์๋ ๊ณ ์ ๋์ง ์๋๋ค. ์์
์ ์ฐ์ ์์๊ฐ ์ด๋ป๊ฒ ๋ฐ๋๋์ง ์ด์ ๋ถํฐ ์์๋ณด๋๋ก ํ์.
Attempt 1 : Change Priority
MLFQ์ ํต์ฌ์ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ์์ด๋ค.
โข
ํค๋ณด๋ ์
๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฐ๋ณต์ ์ผ๋ก CPU๋ฅผ ์๋ณดํ๋ค๋ฉด ํด๋น ์์
์ ์ฐ์ ์์๋ฅผ ๋๊ฒ ์ ์งํ๋ค.
โข
๊ธด ์๊ฐ๋์ CPU๋ฅผ ์ง์ค์ ์ผ๋ก ๊ฐ๊ตฌ๋ฉด MLFQ๋ ์ฐ์ ์์๋ฅผ ๋ฎ์ถ๋ค.
์ฐ๋ฆฌ๋ ์ ์์
์ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ํด์ํ ์ ์๋ค.
โข
I/O-bound jobs
โฆ
Interactive and short-running
โข
CPU-bound jobs
โฆ
compute intensive and longer-running
์ ํน์ฑ์ ์ด์ฉํด์ ์ฐ์ธ์์ ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ ์ง๋ณด๋๋ก ํ์.
์์
์ด ์์คํ
์ ์ง์
ํ๋ฉด, ๊ฐ์ฅ ๋์ ์ฐ์ ์์, ์ฆ ๋งจ ์ ํ์ ๋์ฌ์ง๋ค.
a. ์ฃผ์ด์ง ํ์์ฌ๋ผ์ด์ค๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ฉด ์ฐ์ ์์๋ ๋ฎ์์ง๋ค. ์ฆ, ํ๋จ๊ณ ์๋ ํ๋ก ์ด๋ํ๋ค.
b. ํ์ ์ฌ๋ผ์ด์ค๋ฅผ ์์งํ๊ธฐ ์ ์ CPU๋ฅผ ์๋ํ๋ฉด ๊ฐ์ ์ฐ์ ์์๋ฅผ ์ ์งํ๋ค.
example1 : One long workload
๊ธธ ์คํ์๊ฐ์ ๊ฐ์ง ์์
์ด ๋์ฐฉํ์ ๋ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ์์๋ณด์.
ํ๋ก์ธ์ค๋ ์ฐ์ ์์ Q2๋ก ์ง์
ํ๋ค. 10msec ํ์์ฌ๋ผ์ด์ค๋ฅผ ๋ชจ๋ ์์งํ์ผ๋ฏ๋ก, Q1์ผ๋ก ๊ฐ๋ฑ๋นํ๋ค. ๋ค์ ํ๋์ ํ์์ฌ๋ผ์ด์ค๋ฅผ ๋ชจ๋ ์์งํ ํ, Q0๋ก ์ตํ์ ํ๊น์ง ๊ฐ๋ฑ๋นํ ๋ค, ์ดํ์๋ ๊ณ์ Q0์ ๋จธ๋ฌด๋ฅด๊ฒ ๋๋ค.
example2 : with short jobs
A๋ ์ค๋ ์คํ๋๋ CPU-bound job์ด๊ณ , B๋ ์งง์ I/O-bound job์ด๋ค. A๋ ์ผ๋ง๋์ ์ด๋ฏธ ์คํํ ์ํ์ด๋ฉฐ, B๋ ์ด์ ๋ง ๋์ฐฉํ ์ํ์ด๋ค.
T=200์ผ ๋, A๋ ์ตํ์ ํฐ์ด์ ํ์์ ์คํ๋๊ณ , B๋ ๋ฐฉ๊ธ ๋์ฐฉํ๊ธฐ ๋๋ฌธ์ ์ต์์ ํฐ์ด์ ํ๋ก ๋ฐฐ์น๋๋ค. ์คํ์๊ฐ์ด ์งง๊ธฐ ๋๋ฌธ์ B๋ ๋๋ฒ์ ํ์์ฌ๋ผ์ด์ค ์ฌ๋กฏ์ ๋ชจ๋ ์๋ชจํ๊ณ ํ์ํฐ์ด๋ก ๊ฐ๋ฑ๋๊ธฐ ์ ์ ์ข
๋ฃ๋๋ค. ์ดํ A๋ ๊ณ์ ์คํ๋๋ค.
โ MLFQ๋ ์์
์ด ์งง์ ์์
์ธ์ง ๊ธด ์์
์ธ์ง ์ ์ ์์ผ๋ฏ๋ก, ์ผ๋จ ๋ค์ด์ค๋ ๋ชจ๋ ์์
์ ์ฐ์ ์์๋ฅผ ๋์ธ๋ค.
โข
๋ง์ฝ ์ง์ง ์งง์ ์์
์ด๋ผ๋ฉด, ๋นจ๋ฆฌ ์คํ๋๊ณ ๋ฐ๋ก ์ข
๋ฃ๋๋ค.
โข
๊ธด ์์
์ด๋ผ๋ฉด ์ฒ์ฒํ ์๋ ํ๋ก ์ด๋ํ๊ฒ ๋๊ณ ์ค์ค๋ก ๊ธด ๋ฐฐ์นํ ์์
์ด๋ผ๋ ๊ฑธ ์ฆ๋ช
ํ๋ ๊ผด์ด๋ค.
์ด๋ฐ ์์ผ๋ก MLFQ๋ SJF๋ฅผ ํ๋ด๋ผ ์ ์๋ค.
How about I/O?
B๋ I/O-bound job์ผ๋ก ์
์ถ๋ ฅ์ ์ํํ๊ธฐ ์ ์ 1msec๋ง ์คํ๋๋ค. A๋ CPU-bound job์ผ๋ก B์ ๊ฒฝ์ํ๋ ์ํ์ด๋ค.
Problems with current MLFQ
1.
๊ธฐ์ ์ํ์ ๋ฐ์
a.
์์คํ
์ ํ ๊ตฌ๊ฐ์ ๋๋ฌด ๋ง์ I/O-bound job์ด ์กด์ฌํ๋ฉด ๊ทธ๋ค์ด ๋ชจ๋ CPU์๊ฐ์ ์๋ชจํ๊ฒ ๋๋ฉฐ, ์ ํฐ์ด ํ์ ์๋ ์์
์ ์ฌ์ ํ ์๊ฐ์ ๋ฐฐ์ ๋ฐ์ง ๋ชปํ ๊ฒ์ด๋ค.
2.
์
์ฉ๊ฐ๋ฅ์ฑ
a.
ํ๋ก๊ทธ๋๋จธ๊ฐ ํ์์ฌ๋ผ์ด์ค์ 99%๊น์ง๋ง ์คํํ๊ณ CPU๋ฅผ ์๋ํ๋ค๋ฉด CPU๋ฅผ ๋
์ ํ ์ ์๊ฒ ๋๋ค.
3.
ํฐ์ด ์น๊ธ์ ๋ถ์ฌ
a.
CPU-bound job์ด I/O-bound job์ผ๋ก ๋ฐ๋ ์ ์๋ค. ์ง๊ธ ์ํ์ MLFQ๋ ์ด๋ ํฐ์ด๋ฅผ ๋ค์ ์ฌ๋ฆฌ๋ ๊ธฐ๋ฅ์ด ์๋ค.
Attempt 2 : Priority Boost
CPU ์์ฃผ ์์
์ด ์กฐ๊ธ์ด๋ผ๋ ์งํํ๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ์๋ก ๋ง๋ค ์ ์๋ค.
๋ค์์ ๊ท์น 5์ ๋ํ ์ค๋ช
์ด๋ค.
์ผ์ ๊ธฐ๊ฐ S๊ฐ ์ง๋๋ฉด, ์์คํ
์ ๋ชจ๋ ์์
์ ์ต์์ ํ๋ก ์ด๋์ํจ๋ค.
๊ท์น 5๋ ๋๋๊ฒ๋! ๋ฌธ์ 1๊ณผ ๋ฌธ์ 3์ ๋์์ ํด๊ฒฐํ๋ค.
1.
ํ๋ก์ธ์ค์ ๊ธฐ์ ํ์์ ๋ฐฉ์งํ๋ค.
a.
์ต์์ ํ์ ์กด์ฌํ๋ ๋์์๋ ๋ค๋ฅธ ์์
๋ค๊ณผ RR๋ฐฉ์์ผ๋ก CPU๋ฅผ ๊ณต์ ํ๋ค.
2.
CPU๋ฐ์ด๋ ์์
์ด IO๋ฐ์ด๋ ์์
์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ ์ฐ์ ์์ ์ํฅ์ ํตํด ๋ณ๊ฒฝ๋ ํน์ฑ์ ๋ง์ถ ์ ์๋ค.
์ผ์ชฝ์ ์ฐ์ ์์ ๋ถ์คํ
์ด ์ ์ฉ๋์ง ์์ ๊ฒฝ์ฐ, ์ค๋ฅธ์ชฝ์ ์ ์ฉ๋ ๊ฒฝ์ฐ์ ๊ทธ๋ฆผ์ด๋ค.
๋ค๋ง S์ ๊ฐ์ ์ ์ ํ ๊ฒฐ์ ํด์ผํ๋ฉฐ, S๊ฐ์ ์ ํํ ๊ณต์์ด ์๋ค. ์ด๋ฌํ ์ข
๋ฅ์ ๊ฐ์ ๋ถ๋์์(voo-doo constants) ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋๋ฌด ํฌ๋ฉด ๊ธด ์คํ์๊ฐ์ ๊ฐ์ง ์์
์ด ์ฌ์ ํ ๊ตถ์ ์ ์์ผ๋ฉฐ, ๋๋ฌด ์์ผ๋ฉด ๋ํํ ์์
์ด ์ ์ ํ ์์ CPU ์๊ฐ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
Attempt 3 : Better Accounting
๋ฌธ์ 2๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
๊ท์น4๋ ์ค์ผ์ฅด๋ฌ์์ ์์
์ด ์คํ๋ ๋์๋ง ํด๋น ์๊ฐ์ด ํ์์ฌ๋ผ์ด์ค์ threshold๋ฅผ ๋๋์ง ํ์ธํด์๋ค. ์ด ๊ณผ์ ์ ๋ ํ์ฅํด์ CPU ์ด ์ฌ์ฉ์๊ฐ์ ์ธก์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟ๋ณด์.
๊ท์น4-a,b๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํตํฉํ๋ค.
์ฃผ์ด์ง ๋จ๊ณ์์ ์๊ฐ ํ ๋น๋์ ๋ชจ๋ ์์งํ๋ฉด ์ฐ์ ์์๋ ๋ฎ์์ง๋ค. CPU์ ์๋ ์ฌ๋ถ๋ ๋ฐ์ง์ง ์๋๋ค.
Another
Next chapter