์ด์ ํฌ์คํ ๊ณผ ์ฐ๊ฒฐ๋๋ ๋ถ๋ถ์ด ๋ง์์ ์ด์ ํฌ์คํ ์ ์ฝ๊ณ ์ค๋ฉด ์ดํดํ๊ธฐ ์ข์ต๋๋ค.
์ด์ ํฌ์คํ ์์ ์ด์์ฒด์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์๊ณผ Context Switching์ ๋ํ ๊ธ์ ์ฐ๊ฒ ๋ค๊ณ ํ๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ํฌ์คํ ์ ์ฃผ์ ๋ก๋ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ ํ๋ค.
๋จผ์ ์ค์ผ์ค๋ง์ด ๋ฌด์์ด๊ณ , ์ ์ด๋ฐ ๊ฒ ํ์ํ์ง ์์๋ณด๋๋ก ํ์. ์ฌ์ค ์ด๋ฒ ๊ธ ๋ท๋ถ๋ถ์์ ์ธ๊ธํ ์ฌ๋ฌ ๊ฐ์ง ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ฌ๋ฌ๋ฌ ์ธ์ฐ๋ ๊ฒ๋ณด๋ค ์ด์ฉ๋ฉด ์ค์ผ์ค๋ง์ด ์ ํ์ํ์ง ๊ทธ ์ด์ ๋ฅผ ์๋ ๊ฒ์ด ๋ ์ค์ํ ์๋ ์๋ค.
์ค์ผ์ค(Schedule)์ด๋ผ๋ ๋จ์ด์์ ์ ์ ์๋ฏ, ์ด์์ฒด์ ์์ ๋งํ๋ ์ค์ผ์ค๋ง์ ์ด์์ฒด์ ๊ฐ CPU์ ์์์ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ํ ๋นํด ์ค ์ง ๊ทธ ์ผ์ ์ ์ง๋ ๊ฒ์ด๋ผ๊ณ ์ดํดํ๋ฉด ์ฝ๋ค. ์ด์ ํฌ์คํ ์์ ์ธ๊ธํ๋ ๋๋ก ํ๋ก์ธ์ค ๊ฐ์ Context Switching ๊ณผ์ ์ ๋ง์ ์์ ์์ค์ ๋ฐ์์ํจ๋ค. ๋ฐ๋ผ์ ์ด ์ผ์ ์ ์ด๋ป๊ฒ ์งฐ๋์ง์ ๋ฐ๋ผ CPU์ ์์์ ์ผ๋ง๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋์ง๊ฐ ๊ฒฐ์ ๋๋ค. ํ ๋ง๋๋ก ์ค์ผ์ค๋ง์ ์ด์์ฒด์ ์ ์ฅ์์ ๋งค์ฐ ์ค์ํ ๊ณผ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ์ค์ผ์ค๋ง์ ๋ํด ์ค๋ช ํ๊ธฐ ์ ์ Context Switching์ ๋ํด ์๊ณ ๊ฐ์ผ ํ ํ์๊ฐ ์๋ค. ๋ฐฉ๊ธ์ฒ๋ผ ๋จ์ด ํ๋ํ๋ ์๊ฐํด๋ณด์. Switch๋ผ๋ ๋จ์ด์ ๋ป์ ์๋ค๋ฉด Context๋ผ๋ ๋จ์ด๋ฅผ ๋ชจ๋ฅธ๋ค๊ณ ํ๋๋ผ๋ "์ผ๋จ ๊ทธ Context๋ผ๋ ๊ฒ์ Switching(๊ต์ฒด, ์ ํ)ํ๋ ๊ฒ์ด๊ฒ ๊ตฌ๋" ํ๊ณ ์๊ฐํ ์ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ผ Context๋ ๋ญ๊น? ํํ๋ค '๋ฌธ๋งฅ'์ด๋ผ๋ ๋จ์ด๋ก ๋ฒ์ญํ๋๋ฐ ์ฌ๊ธฐ์๋ ์ด๋ ๊ฒ ๋ฒ์ญํ๋ ๊ฒ์ด ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ค. ์ด์์ฒด์ ์์ ๋งํ๋ Context๋ผ๋ ๊ฑด ๋ฌธ๋งฅ ๊ฐ์ ๊ฒ ์๋๊ณ CPU๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํ (ํ๋ก์ธ์ค์ ๋ํ) ์ ๋ณด๋ฅผ ๋งํ๋ค. ๋ ์์ธํ ๋งํ๋ฉด Context๋ ํ์ฌ ํ๋ก์ธ์ค์ ์ํ, ํ๋ก์ธ์ค๊ฐ ๋ค์์ ์คํํ ๋ช ๋ น์ด, ๋ ์ง์คํฐ ๊ฐ, ํ๋ก์ธ์ค ๋ฒํธ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ ์ด๋ ์ด์์ฒด์ ์ PCB(Process Control Block)์ ์ ์ฅ๋๋ค. ์ ์ด ๊ธ ์ด ๋ ์์ด ๋ฌธ๋งฅ์ด๋ผ๊ณ ์ ์ฐ๊ณ ๊ณ์ Context๋ผ๊ณ ๊ท์ฐฎ๊ฒ ์์ด๋ก ์ผ๋์ง ์ด์ ๋ ์ดํด๊ฐ ๊ฐ ๊ฒ์ด๋ค.
์ด์ ํฌ์คํ ์์๋ ์ธ๊ธํ๋ฏ์ด ๋ฉํฐํ๋ก์ธ์ค ํ๊ฒฝ์์๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์(?) ์คํ๋๋ค. ์ด ํ๊ฒฝ์์๋ ํ์ฐ์ ์ผ๋ก ํ๋ก์ธ์ค ๊ฐ CPU ์์ ํ ๋น ์ด๋์ด ์ผ์ด๋ ์ ๋ฐ์ ์๋ค. ์ด ์ด๋ ๊ณผ์ ์ Context Switching์ด๋ผ๊ณ ํ๋ฉฐ, CPU๋ ๊ธฐ์กด ํ ๋น๋ ํ๋ก์ธ์ค์ Context๋ฅผ ์ ์ฅํ๊ณ , ์๋ก ์์์ ํ ๋นํ ํ๋ก์ธ์ค์ Context๋ก ๊ต์ฒดํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด์ ์์์ ์๋ก์ด ํ๋ก์ธ์ค์๊ฒ ํ ๋นํ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์ด ์๋ค. Context Switching ์ค์๋ CPU์ ์์์ด ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋ ์ํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ CPU๊ฐ ์๋ฌด ์ผ๋ ํ์ง ๋ชป ํ๋ค*****. ๋ฐ๋ผ์ Context Switching ๊ณผ์ ์ด ๋๋ฌด ์์ฃผ ๋ฐ์ํ๋ฉด ์คํ๋ ค CPU ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค.
์ค์ผ์ค๋ง ๊ถ๊ธํด์ ๋ค์ด์๋๋ ์ง๊ธ๊น์ง ์ค์ผ์ค๋ง์ ๋ํ ์ค๋ช ์ ํ๋๋ ์ ๋์ค๊ณ Context Switching ์๊ธฐ๋ง ์ค์ค์ด ๋์์ ๋ต๋ตํ์ ์๋ ์๋ค. ๊ทธ๋ฌ๋ ์์ ๋งํ๋ฏ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ ๋ฌ๋ฌ๋ฌ ์ธ์ฐ๋ ๊ฒ๋ณด๋ค ์ ์ค์ผ์ค๋ง์ด ํ์ํ์ง ์๋ ๊ฒ์ด ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ํด ์ค๋ช ํ๊ธฐ ์ํด์ ์ด์ฉ ์ ์์๋ค.
์ด์์ฒด์ ๊ฐ ์ ์๋๊ฑธ๊น? ๊ฐ์๊ธฐ ์ ๋ ์ด๊ฑธ ๋ฌผ์ด๋ณด๋ ๊ฑด์ง ์์ํ ์๋ ์๊ฒ ์ง๋ง ๊ฒฐ๊ตญ ์ด์์ฒด์ ๋ผ๋ ๊ฑด ์ปดํจํฐ๊ฐ ํจ์จ์ ์ผ๋ก ์ผ์ ํ๊ฒ ๋ง๋ค๊ธฐ ์ํ ์์คํ ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐฉ๊ธ ์์์ Context Switching ๊ณผ์ ์ด ๋๋ฌด ์์ฃผ ๋ฐ์ํ๋ฉด ์คํ๋ ค CPU ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค๊ณ ์ธ๊ธํ์๋ค. ์ด ๋ง์ ๋ฐ๋ก Context Switching ๊ณผ์ ์ ์ธ๋ฐ์์ด ์์ฃผ ๋ฐ๋ณตํ์ง ์๋๋ก ํ๊ณ , ํ์ํ ์๊ฐ์ ์ ์ ํ๊ฒ ํ๋๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ๋ค๋ ๋ป์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ์ฃผ์ฒด๊ฐ ๋ฐ๋ก ์ด์์ฒด์ ์ค์ผ์ค๋ฌ๋ค. ๋๋์ด Context Switching๊ณผ ์ค์ผ์ค๋ง์ด ์ฐ๊ฒฐ๋๋ ์๊ฐ์ด๋ค. ์ผํธ!
์ดํดํ๊ธฐ ์ฝ๋๋ก ์ค๋ช ํ๊ธฐ ์ํด ์ด์ฉ๋ฉด ์๋ชป ์ค๋ช ํ์ ์๋ ์๋ ๋ถ๋ถ์ ๋ํด ๋ณด๊ฐํ๋๋ก ํ๊ฒ ๋ค. Context Switching ์ค์๋ CPU์ ์์์ด ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋ ์ํ๊ฐ ์๋๋ผ๊ณ ํ๋๋ฐ, ์ฌ์ค ํ ๋น์ด๋ผ๋ ๋จ์ด๋ฅผ ์ผ์ง๋ง ์ ํํ๋ ํ๋ก์ธ์ค๊ฐ ์ ์ ์ค์ด์ง๋ง ์ฌ์ฉ ์ค์ ์๋ ์ํ๋ค. ํน์ ํ๋ก์ธ์ค์ ์ํด CPU ์์์ด ์ ์ ๋๊ณ ๋ ์๋๋ฐ, Context Switching ์ค์ด๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ฌ์ฉ๋๋ ํ๋ก์ธ์ค๊ฐ ์๋ ์ํ์ธ ๊ฒ์ด๋ค. CPU๊ฐ ์๋ฌด ์ผ๋ ํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ๊ฒฐ๊ตญ CPU ์์์ ์๋ฌด ํ๋ก์ธ์ค๋ ์ฌ์ฉํ์ง ๋ชปํ๋ค๋ ๋ง์ด๊ณ ์ด๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์๋์๋ค๋ ๋ป์ด๋ค.
Context Switching์ ํ ๋ ์๋ก ์์์ ํ ๋นํ ํ๋ก์ธ์ค๋ ๋๊ฐ ๊ฒฐ์ ํ ๊น? ์์์ ๋ฌ๋ผ๋ ํ๋ก์ธ์ค๋ ์์ฒญ ๋ง์ ํ ๋ฐ, ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ์์์ ์ผ๋งํผ ์ฃผ์ด์ผ ํจ์จ์ ์ผ๋ก ์ผํ ์ ์์๊น? ์์ ๋งํ๋ฏ ์ด๋ฅผ ๊ฒฐ์ ํ๋ ์ ์ฑ ์ ๋ง๋๋ ๊ฒ์ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ๋ค. ํ๋ก์ธ์ค ๊ฐ ์ฐ์ ์์๋ฅผ ๋๊ณ , Context Switching์ ํ ๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ๋ก์ธ์ค์๊ฒ CPU ์์์ ํ ๋นํด ์ฃผ๋ ๊ฒ์ด๋ค. ์ด ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋๋ฐ, ์ง๊ธ๋ถํฐ ๊ทธ๊ฒ๋ค์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
๋น์ ์ ์ค์ผ์ค๋ง์ ํน์ง์ ์๋์ ๊ฐ๋ค.
์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์๋ค๋ฉด ํด๋น ํ๋ก์ธ์ค์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ CPU๋ฅผ ์ฌ์ฉํ ์ ์์.
ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๋์์ฃผ๋ ์์ ๊น์ง ์ค์ผ์ค๋ง์ด ์ผ์ด๋์ง ์๋๋ค. ํ๋ก์ธ์ค ์ผ๊ด ์ฒ๋ฆฌ์ ์ ํฉํ๊ณ Context Switching์ ์ต์ํํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ๋ค๋ง ๊ธด๊ธํ ์ฒ๋ฆฌ๋์ด์ผ ํ ํ๋ก์ธ์ค๊ฐ ์ฒ๋ฆฌ๋์ง ๋ชปํ ์ ์๋ค๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์๋ค.
ํ๋ก์ธ์ค๊ฐ Ready Queue์ ๋์ฐฉํ ์์๋๋ก CPU์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค. ์์ ์๋ฃ ์๊ฐ์ ์์ธกํ๊ธฐ ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์๋ค. ๊ทธ๋ฌ๋ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ์ง๋ง ๋ ์ค์ํ ์์ ์ด, CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์งง๊ณ ๋ ์ค์ํ ์์ ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ ์๋ ์๋ค. ์ด ์ํ๋ฅผ ํธ์ ์ํ(์ฝ๋ณด์ด ์ดํํธ; Convoy Effect)๋ผ๊ณ ํ๋ค.
ํ๋ก์ธ์ค๋ฅผ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ์์๋๋ก CPU์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค. ๋ชจ๋ ๋ฐฉ์์ ํตํ์ด ํ๊ท ๋๊ธฐ ์๊ฐ์ ๊ฐ์ฅ ์งง๊ฒ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ์๋ ค์ ธ ์๋ค. ๊ทธ๋ฌ๋ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ์ ์ฒด ์์คํ ์ฑ๋ฅ ํฅ์์ ์ํด ํฌ์ํ๋ฉฐ ๊ณ์ Ready Queue์ ๋ค๋ก ๋ฐ๋ ค๋๊ธฐ ๋๋ฌธ์ ๋ฌดํ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค. ์ด ์ํ๋ฅผ ๊ธฐ์ ์ํ(์คํ๋ฒ ์ด์ ; Starvation)๋ผ๊ณ ํ๋ค.
SJF ์ค์ผ์ค๋ง ๋ฐฉ์์์ ๋ฐ์ํ ์ ์๋ ๊ธฐ์ ์ํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋ ๋ฐฉ์์ด๋ค. ์ฐ์ ์์๋ฅผ ๋จ์ํ CPU ์ฒ๋ฆฌ ์๊ฐ์ผ๋ก ๊ฒฐ์ ํ์ง ์๊ณ , Ready Queue์์ ๋๊ธฐํ ์๊ฐ๊น์ง ๊ณ ๋ คํ์ฌ ๊ฒฐ์ ํ๋ค. ๋๋ถ๋ถ ์ฐ์ ์์๋ฅผ ((๋๊ธฐ ์๊ฐ + CPU ์ฒ๋ฆฌ ์๊ฐ) / CPU ์ฒ๋ฆฌ ์๊ฐ)์ผ๋ก ๊ฒฐ์ ํ๋ค. ์ด์ฒ๋ผ ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ๋น๋กํ์ฌ ์ฐ์ ์์๋ฅผ ๋์ด๋ ๊ธฐ๋ฒ์ ์์ด์ง(Aging) ๊ธฐ๋ฒ์ด๋ผ๊ณ ํ๋ค.
HRN ์ค์ผ์ค๋ง ๋ฐฉ์์ด ์ ์ ์ผ ๊ฒฝ์ฐ์ ์ฐ์ ์์๊ฐ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด ๋๋ฌด ์์ฃผ ์๊ธฐ๊ธฐ ๋๋ฌธ์ Context Switching์ด ๋๋ฌด ์์ฃผ ๋ฐ์ํ๋ค. ์ด์ ๋ฐ๋ผ ์ค์ผ์ค๋ฌ์ ์ผ์ด ๋๋ฌด ๋์ด๋๊ธฐ ๋๋ฌธ์ HRN ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋น์ ์ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
์ง๊ธ๊น์ง์ ์ค๋ช ๋ง ์ฝ์ด๋ดค๋ค๋ฉด FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ์ฉํ ํ๋ฑ์ ์ด์ ๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค. HRN ์ค์ผ์ค๋ง ๋ฐฉ์์ด ๋ค๋ฅธ ๋น์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋นํด ์ด์์ ์ผ๋ก๋ ํจ์ฌ ์ฐ์ํด ๋ณด์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก SJF, HRN ๋ฑ์ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ด ์ด์ ๊ฐ ์๋๋ฐ, ํ์ค์ ์ธ ์ํฉ์์๋ ํ๋ก์ธ์ค๋ง๋ค CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์ผ๋ง๋ ๊ฑธ๋ฆด์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ์๋์์ ์ค๋ช ํ SRT ์ค์ผ์ค๋ง ๋ฐฉ์์์๋ ๋์ผํ๊ฒ ์ ์ฉ๋๋ ๋ถ๋ถ์ด๋ค.
๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๋ค์๊ฒ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ์ฌ ์ฐ์ ์์๊ฐ ๋์ ์์๋๋ก ์ฒ๋ฆฌํ๋ค. ์ ์ ํ์ผ๋ก๋ ๊ตฌํํ ์ ์์ผ๋ฉฐ ์ฌ๊ธฐ์๋ ์์ด์ง ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋๋ค. ์๋ํ๋ฉด ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค์๊ฒ ๊ธฐ์ ์ํ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ์ ์์๋ ์ ์ ํน์ ๋์ ์ผ๋ก ๋ถ์ฌ๋ ์ ์๋ค. ๋์ ์ผ๋ก ๋ถ์ฌํ ๊ฒฝ์ฐ ๊ตฌํ์ด ๋ณต์กํ๊ณ ์ค๋ฒํค๋๊ฐ ๋ง๋ค๋ ๋จ์ ์ด ์์ผ๋, ์์คํ ์ ์๋ต์๋๋ฅผ ์ฆ๊ฐ์ํจ๋ค. ์ ์ ์ ๊ฒฝ์ฐ๋ ์ด ๋ฐ๋๋ค.
์ ์ ์ค์ผ์ค๋ง์ ํน์ง์ ์๋์ ๊ฐ๋ค.
์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์์ ๋ ์ฐ์ ์์๊ฐ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ์ ๋ฅผ ๋นผ์์ CPU๋ฅผ ์ ์ ํ ์ ์์.
ํ๋ก์ธ์ค์ I/O ์์ฒญ, I/O ์๋ต, Interrupt ๋ฐ์, ์์ ์๋ฃ ๋ฑ์ ํน๋ณํ ์ํฉ์์ ์ค์ผ์ค๋ง์ด ๋ฐ์ํ๋ค. ๊ธด๊ธํ ์ฒ๋ฆฌ๋์ด์ผ ํ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง ๋น์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋นํด Context Switching์ด ์์ฃผ ์ผ์ด๋ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
SJF ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ ๊ธฐ๋ฒ. SJF ์ค์ผ์ค๋ง ๋ฐฉ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ก์ธ์ค๋ฅผ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ์์๋๋ก CPU์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค. ์์์ ์ค๋ช ํ๋ SJF ๋ฐฉ์๊ณผ ๋์ผํด ๋ณด์ด์ง๋ง, ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ CPU๋ฅผ ์ ์ ์ค์ธ ํ๋ก์ธ์ค๋ณด๋ค ๋จ์ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๊ฐ Ready Queue์ ๋ค์ด์ฌ ๊ฒฝ์ฐ ์๋ก ๋ค์ด์จ ํ๋ก์ธ์ค๊ฐ ๊ธฐ์กด ํ๋ก์ธ์ค์ CPU ์ ์ ๋ฅผ ๋นผ์์ ์ ์ ํ ์ ์๋ค.
SJF์ SRT์ ๊ด๊ณ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น์ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ ๋ฐฉ์์ธ ์ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง ๋ฐฉ์์ด ์๋ค.
FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์๊ณผ Time Quantum ๊ฐ๋ ์ ์ถ๊ฐํ ๋ฐฉ์์ด๋ค. ๊ฐ ํ๋ก์ธ์ค๋ง๋ค CPU๋ฅผ ์ฐ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์๊ฐ์ ์ ํ์ ๋๊ณ , ์ด ์๊ฐ์ Time Quantum์ด๋ผ๊ณ ํ๋ค. ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ ์๊ฐ์ด Time Quantum๋งํผ ์ง๋๋ฉด ์ด ํ๋ก์ธ์ค๋ก๋ถํฐ CPU ์์์ ํ์ํ๊ณ , ์ด ํ๋ก์ธ์ค๋ฅผ Ready Queue์ ๊ฐ์ฅ ๋ค๋ก ๋ณด๋ด๋ ๊ฒ์ด๋ค.
๋ผ์ด๋๋ก๋น ์ค์ผ์ค๋ง ๋ฐฉ์์์ Time Quantum์ ์ผ๋ง๋ก ๋ ์ง ์ ๊ฒฐ์ ํด์ผ ํ๋ค. ๋ง์ฝ Time Quantum์ด ๋๋ฌด ํฌ๋ค๋ฉด, CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ค๋ ์ ์ ํ๋ฉฐ ์ ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ์ด ํ๋ก์ธ์ค์ ์์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์์ ๋ฐ์ํ๋ ํธ์ ์ํ๊ฐ ๋ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๋ค๊ณ Time Quantum์ ๋๋ฌด ์๊ฒ ๋๋ฉด, Context Switching์ด ๋๋ฌด ์์ฃผ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ์ปค์ง๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ด๋ค ํ๋ก์ธ์ค๋์ ๋ฐ๋ผ์ ์ฌ๋ฌ ์ข ๋ฅ์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ณ , ๊ทธ๋ฃน๋ง๋ค Queue๋ฅผ ๋๋ ๋ฐฉ์์ด๋ค. ํ ๋ง๋๋ก Ready Queue๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋๋์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ๊ฐ์ Queue๋ง๋ค ์๋ก ๋ค๋ฅธ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ ์๋ ์๋ค. ์ด ๋ฐฉ์์ ๋ํด์ ์ดํดํ๋ ค๋ฉด ๋จผ์ Foreground Queue์ Background Queue์ ๋ํด์ ์๊ณ ๊ฐ์ผ ํ๋ค.
์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฅํ ๋ ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉํ๋ ํ๋ก์ธ์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋ ํ๋ก์ธ์ค์ ์ค์๋๋ฅผ ๋ค๋ฅด๊ฒ ๋ถ๋ฅํ๋ค. ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉํ๋ ํ๋ก์ธ์ค๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ด์ผ ํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ผ๊ด ์ฒ๋ฆฌ๋๋ ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ด๋ ๊ด์ฐฎ๋ค๊ณ ๋ถ๋ฅํ๋ ๊ฒ์ด๋ค. ์ฌ๋๋ค์ ๋๋ถ๋ถ ์ง๊ธ ๋ด๊ฐ ๋ณด๊ณ ์๋ ํ๋ก์ธ์ค์์ ์ํธ์์ฉ์ด ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๊ธฐ๋ฅผ ๋ฐ๋ผ์ง ์ผ๋จ ์ผ๋๊ณ ์ค๋ ๋ฐฉ์นํ ํ๋ก์ธ์ค์ ์ํธ์์ฉํ๋๋ผ๊ณ ๋ด๊ฐ ๋ณด๊ณ ์๋ ํ๋ก์ธ์ค์ ๋ ์ด ๊ฑธ๋ฆฌ๋ ์ํฉ์ ๋ฐ๋ผ์ง๋ ์๋๋ค.
๋ฐ๋ผ์ ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉํ๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ์ธ Foreground Queue์๋ ์๋ต ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋ผ์ด๋๋ก๋น ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ์ธ Background Queue์๋ ์๋ต ์๊ฐ์ด ํฐ ์๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์ FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ๋ ๋ฑ ๊ฐ Queue๋ง๋ค ์ด์์ฒด์ ๊ฐ ๊ฐ์ฅ ์ ์ ํ๋ค๊ณ ํ๋จํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ฒ ๋๋ค.
์ ์ฌ์ง์ ์๋ก ๋ค์ด ์ดํดํด๋ณด์. ์ ์ฌ์ง์์ ๋ํํ ํ๋ก์ธ์ค๋ฅผ ๋ด๊ธฐ ์ํ Foreground Queue์๋ ๋ผ์ด๋๋ก๋น ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ๊ณ , ํ๋ก์ธ์ค ์ผ๊ด ์ฒ๋ฆฌ๊ฐ ํ์ํ Background Queue์๋ ์ผ๊ด ์ฒ๋ฆฌ์ ์ ํฉํ๋ค๊ณ ํ๋ ๋น์ ์ ๋ฐฉ์ ์ค ํ๋๋ฅผ ์ ์ฉํ๋ฉด ๋ ๊ฒ์ด๋ค.
๋ค๋ง ๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ๋ฌ ๊ฐ์ Queue๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ณ ๋ คํด์ผ ํ ์ ์ด ํ๋ ๋ ์๊ธด๋ค. ๋ฐ๋ก ์ด๋ค Queue์ ์ผ๋ง๋ CPU๋ฅผ ์ค๋ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ค์ผ์ค๋ง์ด ํ์ํ๊ฒ ๋๋ค. ์ด ์ค์ผ์ค๋ง์ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ๋๋ฅผ ๋ ์ฌ๋ฆด ์ ์๋ค.
Queue๋ง๋ค ์ฐ์ ์์๋ฅผ ๋๋ ๋ฐฉ์์ด๋ค. ์ฐ์ ์์๊ฐ ๋์ Queue์ ์ฒ๋ฆฌํด์ผ ํ ํ๋ก์ธ์ค๊ฐ ๋จ์ ์๋ค๋ฉด, ๋ฌด์กฐ๊ฑด ๊ทธ Queue์ ๋จ์ ์๋ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ ๋ค์ ๋ค์ ์ฐ์ ์์์ Queue๋ฅผ ์๋น์คํ๋ค. ์ด ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์ง์ ์ํ๋ ํ๋ก์ธ์ค์ CPU ์์์ ์ฐ์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ์ข์ ๋ณด์ด์ง๋ง SJF ์ค์ผ์ค๋ง ๋ฐฉ์์ฒ๋ผ ๊ฒฐ๊ตญ ์ฐ์ ์์๊ฐ ๋ฎ์ Queue์ ์๋ ํ๋ก์ธ์ค๋ ๋ฌดํ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค. ๋ชจ๋๋ค ๊ธฐ์ตํ๊ฒ ์ง๋ง ์ด๋ฐ ์ํ๋ฅผ ๊ธฐ์ ์ํ๋ผ๊ณ ํ๋ค.
๊ณ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง ๋ฐฉ์์์ ๊ธฐ์ ์ํ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ ์๊ธด ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค. ์ด์์ฒด์ ๊ฐ Time Slice๋ฅผ ๋๊ณ , ์ด ์๊ฐ ๋น์จ์ ๋ฐ๋ผ์ ๊ฐ๊ฐ์ Queue๋ฅผ ์๋น์คํ๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด CPU ์์์ 75%๋ Foreground Queue, 25%๋ Background Queue๋ฅผ ์๋น์คํ๋ ๋ฐ ํ ๋นํ ์ ์๋ค.
๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์์ด์ง ๊ธฐ๋ฒ์ ์ ์ฉํ ๋ฐฉ์์ด๋ค. ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์์๋ ๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง ๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก ์ด๋ํ ์ ์๋ค. ์ฐ์ ์์๊ฐ ๋ฎ์ ํ์์ ๋๋ฌด ์ค๋ ๊ธฐ๋ค๋ฆฐ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์ ์ ์ฌ๋ ค์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก ์ฎ๊ฒจ์ฃผ๋ ๋ฐฉ์์ด๋ค. ์ด๋ฅผ ํตํด ๋ค๋จ๊ณ ํ ๊ณ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง ๋ฐฉ์์์ ๋ฐ์ํ ์ ์์๋ ๊ธฐ์ ์ํ๋ฅผ ์ด๋ ์ ๋ ํด๊ฒฐํ ์ ์๊ฒ ๋๋ค.
์ด๋ ๊ฒ ์ค์ผ์ค๋ง์ด ์ ํ์ํ์ง๋ถํฐ, ์ค์ ๋ก ์ค์ผ์ค๋ง์ด ์ด๋ค ๋ฐฉ์์ผ๋ก ์งํ๋๋์ง๊น์ง ์์๋ณด์๋ค. ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ ์์ฝํด๋ณด์.
์ฐ๋ฆฌ๋ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ ๋ ์๋ง์ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์คํํ๊ฒ ๋๋ค. CPU๋ ํ ๋ฒ์ ํ ๊ฐ์ง ์์ ๋ง ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์, ์ด ํ๋ก์ธ์ค๋ค์ ๋์์ ์ฒ๋ฆฌํ(๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ)๊ธฐ ์ํด CPU๋ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ์ผ๋ง๋ ๋ง์ ์์์, ์ผ๋ง๋ ๊ธด ์๊ฐ ๋์ ํ ๋นํด์ผ ํ ์ง ๊ฒฐ์ ํด์ผ ํ๋ค. ํ๋ก์ธ์ค๋ฅผ ๋น ๋ฅด๊ฒ ๋ฒ๊ฐ์ ์ฒ๋ฆฌํด์ ๋ง์น ๋์์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํด์๋ค. ์ด๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํ ๋ฐฉ์, ์ฆ CPU ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋น์ ์ , ์ ์ ๋ฐฉ์์ผ๋ก ๋ถ๋ฅํ ์ ์๋ ์๋ง์ ๋ฐฉ์์ด ์กด์ฌํ๋ค.
์ด์ ํฌ์คํ
์์ ๋ฉํฐ์ค๋ ๋์ ์ค์ผ์ค๋ง์ ์ด์์ฒด์ ๊ฐ ์ฒ๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ๋๊ธฐํ ๋ฌธ์ ์ ๋์ํ ์ ์์ด์ผ ํ๋ค๊ณ ์ธ๊ธํ์๋ค. ๊ทธ๋ฌ๋ CPU ์ค์ผ์ค๋ง์ ๋ฉํฐ์ค๋ ๋์ ๋ค๋ฅด๊ฒ ์ด์์ฒด์ ๊ฐ ์ฌ์ฉ์๋ ๋ชจ๋ฅด๋ ์ฌ์ด ์๋์ผ๋ก ์งํํ๋ ์์
์ด๋ค. ์ด์ ํฌ์คํ
๊ณผ ์ด๋ฒ ํฌ์คํ
๋ชจ๋๋ฅผ ์ ์ดํดํ๋ค๋ฉด, ๋ฉํฐํ๋ก์ธ์ค์ ๋ฉํฐ์ค๋ ๋์ ์๋ฆฌ์ ์ฐจ์ด๋ถํฐ ์ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ผ๋ ๋ฐฉ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋์ง๊น์ง ์ด๋ ์ ๋ ์๊ฒ ๋์์ผ๋ฆฌ๋ผ ์๊ฐํ๋ค.
ํ๋ฒํ๊ฐ๋ฐ์๋ ธํธ
Preamtree์ ํ๋ณต๋ก๊ทธ
์ํ์ฐ๊ฐ ๋ง๋๋ ์ธ์
๊ธฐ๋ณธ๊ธฐ๋ฅผ ์๋ ์ ์๋ง์ถ์ด ์ฝ๋ฉ๋ธ๋ก๊ทธ