๐ OS - CPU Scheduling 1์์ ์ด์ด์ง๋ ๋ด์ฉ์ ๋๋ค.
์ง๊ธ๊น์ง ๋ฐฐ์ด ๊ฐ๋
์์๋ ready queue
์ ํ์ค๋ก ์ค์ ์ฐ๋ค. ํ์ง๋ง ์ด๋ฌํ ์ค์ ์ฌ๋ฌ์ค ์๋ ๊ฐ๋
์ด ๋ค์ ๋์ค๋ ๊ฐ๋
์ด๋ค.
๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋งจ ์๊ฐ ์ฐ์ ์์๊ฐ ๋์ ์ค์ด๊ณ , ๋งจ ์๋๊ฐ ์ฐ์ ์์๊ฐ ๋ฎ์ ์ค์ด๋ค. CPU๋ ์ฐ์ ์์๊ฐ ๋์ ๊ณณ๋ถํฐ ๋ฌด์กฐ๊ฑด ํ ๋นํ๋ค. ์ฐ์ ์์๊ฐ ๋์ ๊ณณ์ ๋๊ธฐ๊ฐ ์์ ๋๋ถํฐ ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด์ CPU๋ฅผ ํ ๋นํ๋ค. ๋๊ธฐ ์ค์ ์ฌ๋ฌ๊ฐ์ธ๋ฐ CPU๋ ํ๋์ด๋ ๊ณ ๋ คํ ์ฌํญ๋ค์ด ์๋ค.
Ready queue๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋ถํ
foreground(interactive)
background(batch - no human interaction)
Starvation
๊ฐ๋ฅ์ฑ์ด ์์CPU time์ ์ ์ ํ ๋น์จ๋ก ํ ๋น
์์ ๋ฐฉ์์ ์ฐ์ ์์๊ฐ ๋ฎ์ ๊ฒ์ ๊ณ์ ์ฐ์ ์์๊ฐ ๋ฎ์์ฑ๋ก ์์ด์ผํ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค. ์ด์ ์๋์ Multilevel Feedback Queue๋ ์ด๋ฌํ ๋ถ๋ถ์ด ๊ฐ์ ๋๋ค.
๊ฐ ํ ๊ฐ์ ํ๋ก์ธ์ค๋ค์ด ์ด๋
ํ ์ ์๋ค. Aging
์ผ๋ก ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค. ๋ณดํต Multilevel Feedback Queue๋ฅผ ์ด๋ค์์ผ๋ก ์ด์ํ๋๊ณ ํ๋ฉด ์ฒ์ ๋ค์ด์ค๋ ํ๋ก์ธ์ค๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ์ ์ง์ด๋ฃ๊ณ ์ฐ์ ์์๊ฐ ๋์ ๊ณณ์ RR์์ ํ ๋น์๊ฐ์ ๊ต์ฅํ ์งง๊ฒ ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ ํ๋ก ๊ฐ์๋ก ํ ๋น์๊ฐ์ ์กฐ๊ธ ๋ ๊ธธ๊ฒ ์ฃผ๊ณ , ์ ์ผ ์๋ ํ๋ FCFS๋ฐฉ์์ ์ด๋ค.
์ด ์ํ์์ ์์ํ์์ ํ ๋น์๊ฐ์ ๋ค ์ฌ์ฉํ๋ฉด ์๋ํ๋ก ๊ฐ๋ฑ์ด๋๋ค. CPU์ฌ์ฉ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๋ ์์ํ์์ ๋ฐ๋ก ์ฒ๋ฆฌ๊ฐ ๋๊ณ , CPU์ฌ์ฉ์๊ฐ์ด ๊ธธ๋ฉด ๊ธธ์๋ก ์๋ํ๋ก ๊ฐ๋ฑ๋นํ๋ค.
์ด ๋ฐฉ์์ CPU์ฌ์ฉ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ์์๋ฅผ ์ฃผ๋ ๋ฐฉํฅ์ด๋ค.
์ด์ ์ง๊ธ๊น์ง ๋งํ ๊ฒ๋ค์ ๋ค ๋ชจ๋ CPU๊ฐ ํ๋์ผ๋์ ์ผ๋ฐ ์ํฉ์ ๊ฐ์ ํ๋ค. ์ด์ ๋ถํฐ ๋งํ ๊ฒ๋ค์ ํน์ดํ ์ผ์ด์ค๋ค์์์ CPU Scheduling์ ์์๋ณผ ๊ฒ์ด๋ค.
CPU๊ฐ ์ฌ๋ฌ ๊ฐ
์๋ ๊ฒฝ์ฐDeadline
์ด ์๋ ์ค์ผ์ค๋ง
User level thread
์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์์ค์ thread library์ ์ํด ์ด๋ค thread๋ฅผ ์ค์ผ์คํ ์ง ๊ฒฐ์ Kernel level thread
์ ๊ฒฝ์ฐ ์ผ๋ฐ ํ๋ก์ธ์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปค๋์ ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค thread๋ฅผ ์ค์ผ์คํ ์ง ๊ฒฐ์ ์์์ ๋งํ๋ Thread๋ ํ๋ก์ธ์ค ํ๋์ CPU์ํ๋จ์๊ฐ ์ฌ๋ฌ๊ฐ ์๋ ๊ฒ์ ๋งํ๋ค. ๋ํ ์์์ ๋งํ๋ User level thread
๋ ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ ์ง์ thread๋ฅผ ๊ด๋ฆฌํ๊ณ ์ด์์ฒด์ ๋ thread์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ์ด๊ณ , Kernel level thread
๋ ์ด์์ฒด์ ๊ฐ thread์ ์กด์ฌ๋ฅผ ์๋ ๊ฒฝ์ฐ์ด๋ค.
์ง๊ธ๊น์ง ์๊ณ ๋ฆฌ์ฆ๋ค์ ์์๋ดค์ผ๋ ์ด๊ฒ๋ค์ ๋ํ ํ๊ฐ๋ฅผ ์์๋ณด๊ฒ ๋ค.