0. ํ๋ก์ธ์ค
ํ๋ก์ธ์ค๋ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ปดํจํฐ๋ก ์นดํก์ด๋ ํฌ๋กฌ์ ์คํํ๋ฉด ๊ทธ ํ๋ก๊ทธ๋จ์ ๊ฐ์ง๊ณ ์์ ์ ์ํํ ์ ์๋ค. ์ฆ ์ด๋ฐ ์นดํก์ด๋ ํฌ๋กฌ ๋ชจ๋ ํ๋ก์ธ์ค์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ด์ ์ฐ๋ฆฌ๋ ์ปดํจํฐ๋ก ์น์ํ์ ํ๊ฒ ๋ค๊ณ ์๋์ ์ผ๋ก ํฌ๋กฌ ํ๋๋ง ๋์๋๊ณ ํ์ง ์๋๋ค. ๋ ธ๋๋ฅผ ๋ค์ผ๋ฉด์ ์น์ํ์ ํ๊ฒ ๋ค๋ฉด ์์ ํ๋ก๊ทธ๋จ๋ ์คํ์์ผ๋๊ณ ์ฌ์ฉํ๋ค. ์ฆ, ๋ณดํต ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋๋ ๊ตฌ์กฐ์ด๋ค.
๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ ์์๋ณด๋ ค๊ณ ํ๋ค.
- ๊ทธ๋์ ํ๋ก์ธ์ค๊ฐ ๋ญ๋ฐ..?
- ํ๋ก์ธ์ค ๋์์ ์คํ๋๊ธฐ ์ํด์๋ ๋ญ๊ฐ ํ์ํ ๊น?
1. ํ๋ก์ธ์ค ๋ ๋ญ๋ฐ ...
๋ณดํต ํ๋ก๊ทธ๋จ์ ๋์คํฌ์ ๊ณ ์ด ์ ๋ค์ด ์๋ ์ฝ๋+๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์ด๋ค. ์ด ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์๋ ์ผ๋จ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ผ ๋๊ณ , CPU๊ฐ ์ผํ๊ธฐ ์ํ ์ค๋น๋ค์ ๋ชจ๋ ๋ง์ณ์ผ ํ๋ค. ์ด ์์ ๋ค์ด ๋๋ฌ์ ๋ ์ฐ๋ฆฌ๋ ํ๋ก์ธ์ค๋ผ๊ณ ๋ช ์นญํ๋ค. ์ฆ, ํ๋ก๊ทธ๋จ์ ์๋์ ์กด์ฌ(passive entity) ์ด์ง๋ง ํ๋ก์ธ์ค๋ ์คํ์ค์ด๊ฑฐ๋ ์คํ ๊ฐ๋ฅํ ํ์ฑ ์กด์ฌ(active entity) ์ด๋ค.
์ด๋ฅผ ๋น์ ์ ์ผ๋ก ์ค๋ช ํ๋ฉด, ํ๋ก๊ทธ๋จ์ ๋๋ ๋ง๋์ ์ ์ฌํ๋ค. ๋๋ ๋ง๋๋ ๋๋๊ณ (๋์คํฌ)์ ๋ค์ด์๋ ์ฌ๋ฃ(์ฝ๋ + ๋ฐ์ดํฐ)๊ฐ ๋ญ์ณ์ง ์ํ์ด๋ค. ํ์ง๋ง ์ด ๋๋ ๋ง๋๋ฅผ
- ๋๋๊ณ (๋์คํฌ)์์ ๊บผ๋ด์
- ์ฐ๊ธฐ(๋ฉ๋ชจ๋ฆฌ)์ ์ฌ๋ฆฌ๊ณ
- ๋ถ์ ์ฌ๋ ค ์กฐ๋ฆฌ๋ฅผ ์์ํ๊ฑฐ๋ ์กฐ๋ฆฌํ ์ค๋น๋ฅผ ๋ง์น๋ฉด(CPU ํ ๋น)
ํ์ฑํ๋ ์ํ์ ๋ง๋, ์ฆ ํ๋ก์ธ์ค๊ฐ ๋๋ ๊ฒ์ด๋ค.
1 - a. ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ = ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ์น
ํ๋ก์ธ์ค๊ฐ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํ๋ค. ์ฐ๋ฆฌ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋๋ ํญ์ ํน์ ํ ๊ธฐ๋๊ฐ์ด ์๋ค. ์๋ฅผ ๋ค์ด ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค๋ฉด '์์ ์ ๋ค์ ์ ์์ด์ผ ํ๋ค'๋ ๊ธฐ๋๊ฐ์ด ์๋ค. ์ด์์ฒด์ ๋ ์ด๋ฌํ ๊ธฐ๋๊ฐ์ ๋ง์กฑ์ํค๊ธฐ ์ํด ํ๋ก์ธ์ค๊ฐ ํ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ค๋นํด์ฃผ๋๋ฐ, ์ด๊ฒ์ด ๋ฐ๋ก ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ์ด๋ค.
ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค๊ฐ ๋๋ฉด, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ๋๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ก์ธ์ค๋ ํฌ๊ฒ 4 ์น์ ์ ๊ตฌ์ฑ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ๋ค.
Text Segment
- ํ๋ก๊ทธ๋จ ์คํ์ ํ์ํ ์ฝ๋๋ค์ด ๊ธฐ๊ณ์ด ํํ๋ก ์ ์ฅ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ํ ๋ฒ ์ฌ๋ผ๊ฐ๋ฉด ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ฆ, read only์ด๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ๋์ค์ ๊ทธ ํฌ๊ธฐ๊ฐ ๋ณํํ์ง ์๋๋ค.
Data Segment
- ์ ์ญ ๋ณ์ & Static ๋ณ์๋ค์ด ํฌํจ๋๋ค. ๋ฐ๋ผ์, ์ฝ๋์์ ์ ์ญ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด Data Segment๋ฅผ ์ฐธ์กฐํ์ฌ ๊ฐ์ ํ์ฉํ๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ๋์ค์ ๊ทธ ํฌ๊ธฐ๊ฐ ๋ณํํ์ง ์๋๋ค.
Heap Segment
- ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋์ ์ผ๋ก ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด ์์ญ์ ์ฐจ์งํ๊ฒ ๋๋ค.
- ๋์ ์ผ๋ก ํ ๋น๋ ๊ฒ๋ค์ ์ ๋ฆฌํ๋ ์น๊ตฌ๊ฐ ๋ฐ๋ก Garbage Collector์ด๊ณ , ์ฑ ์คํ ๋์ค์ ์ ํด์ง heap size๋ฅผ ์ด๊ณผํ๋ฉด OOM์ด ๋ฐ์ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฎ์ ์ฃผ์๋ถํฐ ~ ๋์ ์ฃผ์๋ก ์ฑ์์ง๋ค.
- runtime์ ๊ทธ ํฌ๊ธฐ๊ฐ ๋ณํํ๋ค.
Stack Segment
- ํจ์ ํธ์ถ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ด ๋ด๊ธฐ๊ฒ ๋๋ค.
- ๊ทธ ์๋ก activation record๊ฐ ์๋ค. ํจ์๊ฐ ํธ์ถ๋๋ฉด ์ด activation record๊ฐ ์คํ์ push ๋๊ณ , ์ข ๋ฃ๋๋ฉด pop ๋๋ค. activation record์๋ ํจ์ ํธ์ถ & ๋ณต๊ท๊ฐ ์ํํ ์ด๋ค์ง๋๋ก ํ์ํ ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด๋ค. ํจ์ ๋งค๊ฐ๋ณ์, ์ง์ญ ๋ณ์, ์ด๋๋ก ๋ณต๊ทํด์ผ ํ ์ง์ ๋ํ ์ฃผ์๊ฐ ๋ฑ์ด ๋ด๊ธด๋ค.
- ์ฌ๊ท ํจ์๋ฅผ ๋ฌดํํ ์์ฑํ๊ฒ ๋๋ฉด, ๋๋ฌด ๋ง์ activation record๊ฐ stack์ ์ถ๊ฐ๋์ด, stack overflow๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ ์ฃผ์๋ถํฐ ~ ๋ฎ์ ์ฃผ์๋ก ์ฑ์์ง๋ค.
- Compile Time์ Stack max size๋ ์ ํด์ง์ง๋ง, ๊ทธ ์์์ ์ผ๋งํผ ์ฌ์ฉํ๊ณ ์๋์ง๋ runtime์ ๋์ ์ผ๋ก ๋ณํํ๋ค.
1 - b. Heap & Stack Segment
Heap์ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ์ด ๋ฎ์ ๊ณณ๋ถํฐ ๋์ ๊ณณ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ฑ์์ง๋ค. ๋ฐ๋ฉด Stack์ ๋์ ๊ณณ๋ถํฐ ๋ฎ์ ๊ณณ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ฑ์์ง๋ค. ์ ์ด๋ ๊ฒ ๋์ํ ๊น?
ํ๋ก์ธ์ค๋ง๋ค ์ด์์ฒด์ ๊ฐ ์ ํด์ฃผ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์๋ค. ์ฌ๊ธฐ์ ํ
์คํธ, ๋ฐ์ดํฐ Segment๋ ๊ทธ ํฌ๊ธฐ๊ฐ ๋ถ๋ณํ๋ค. ๊ทธ๋ผ ๋ ๊ฐ๋ ์ ์ธํ๊ณ ์คํ & ํ์ ์ต๋ํ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค. ์ด๋ Stack & Heap ์์ญ์ด ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก growing ๋๋ฉด ์ด๋ค ์ฅ์ ์ด ์์๊น?
- ๋ฏธ๋ฆฌ ์์ญ์ ๋๋์ง ์์, ๊ฐ์ ํ์ํ ๋งํผ๋ง ์์ ๋กญ๊ฒ ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
- ๊ฝ ์ฑ์ด๋ค๊ณ ๊ฐ์ ํ๋ฉด, ๋จ๋ ๊ณต๊ฐ ์์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ fully ํ์ฉํ ์ ์๋ค.
1 - c. ํ๋ก์ธ์ค ์ํ
๊ทธ ์ ๋ช ํ ํ๋ก์ธ์ค ์ํ ๋ค์ด์ด๊ทธ๋จ์ด๋ค. ํ๋ก์ธ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ 5๊ฐ์ง์ ์ํ๋ฅผ ๊ฐ์ง๋ค. ๊ทธ๋ฌ๋ ์ด์์ฒด์ ์ ์ข ๋ฅ์ ๋ฐ๋ผ์ ์ข ๋ ์ธ๋ถํ๋ ์ถ๊ฐ ์ํ๋ฅผ ๊ฐ์ง๊ธฐ๋ ํ๋ค. ์ด์จ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ ํ๋ก์ธ์ค๋ ์์ฑ๋ถํฐ ์ข ๋ฃ๊น์ง new, ready, running, waiting, terminated ์ค ํ๋์ ์ํ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. ๊ทธ state flow๋ฅผ ์ฒ์ฒํ ๋ฐ๋ผ๊ฐ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ํ๋ก์ธ์ค๊ฐ ์์ฑ ์ค์ด๋ฉด new ์ํ๊ฐ ๋๋ค.
- ํ๋ก์ธ์ค๊ฐ ์์ฑ๋์๊ณ , cpu์ ํ ๋น๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค๋ฉด ready ์ํ์ด๋ค.
- ready ์ํ์ ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์ค ์ค์ผ์ค๋ฌ์ ์ํด ์ ํ๋์ด cpu์์ ์คํ๋๋ค๋ฉด running ์ํ์ด๋ค.
- running ์ํ์ ํ๋ก์ธ์ค
- running ์ํ์ ํ๋ก์ธ์ค๊ฐ io event๊ฐ ๋ฐ์ํ๋ค๋ฉด waiting ์ํ๊ฐ ๋๋ค. io event๊ฐ ์ข ๋ฃ๋๋ฉด, ready ์ํ๋ก ๋์๊ฐ์ cpu ํ ๋น์ ๊ธฐ๋ค๋ฆฐ๋ค.
- running ์ํ์ ํ๋ก์ธ์ค๊ฐ ์ฃผ์ด์ง CPU ์๊ฐ์ ๋ชจ๋ ์๋ชจํ๊ฑฐ๋, interrupt๊ฐ ๋ฐ์ํ๋ค๋ฉด ready ์ํ๋ก ๋์๊ฐ๋ค. (์๋ฐํ ๋งํ๋ฉด interrupt service routine์ ์ข ๋ฃํ ํ ready๊ฐ ๋๋ ๊ฒ์ด๋ค.)
- running ์ํ์ ํ๋ก์ธ์ค๊ฐ ํด์ผ ๋ ์ผ์ ๋ชจ๋ ์ข ๋ฃํ๋ค๋ฉด terminated ์ํ๊ฐ ๋๋ค.
2. ๋ฉํฐ ํ๋ก์ธ์ค
์ง๊ธ๊น์ง๋, ํ๋ก์ธ์ค ์์ฒด์ ๋ํด์๋ง ์์๋ดค๋ค. ํ์ง๋ง ๋ฉํฐ ํ๋ก์ธ์ค ํ๊ฒฝ์์์ ํ๋ก์ธ์ค ์คํ์ ์ดํดํ๊ธฐ ์ํด์๋ ์ถ๊ฐ์ ์ธ ๊ฐ๋ ์ด ํ์ํ๋ค. CPU๋ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํํ ์ ์๋ค. ๋ฐ๋ผ์, ๋์์ ์ฌ๋ฌ๊ฐ๊ฐ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์ง๋ ค๋ฉด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์์ฃผ ๋น ๋ฅด๊ฒ ์คํํด์ผ ํ๋ค. ์ด๋ ๊ฒ ์ด์ ์ ์คํํ๋ ํ๋ก์ธ์ค๋ฅผ ์ ๋ณด๊ดํ๊ณ , ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๊ฒ์ Context Switching, ๋ฌธ๋งฅ ๊ตํ์ด๋ผ๊ณ ํ๋ค. ์ด๋ ์์ ์ธ๊ธํ activation record์ฒ๋ผ ํ๋ก์ธ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ ๋ค์ ์คํ ์ํ๊ฐ ๋์์ ๋, ์ด๋์๋ถํฐ ์ฌ๊ฐํ ์ง์ ๋ํ ์ ๋ณด๊ฐ ํ์ํ๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์ ์์๋ณผ ๊ฐ๋ ์ Context Switching & PCB์ด๋ค.
2 - a. Context Switching
๋จผ์ Context Switching์ CPU ์ฝ์ด๊ฐ ์๋ก์ด ํ๋ก์ธ์ค์๊ฒ ๋ถ์ด ์ผํ๊ฒ๋ ํ๋ ๊ฒ์ ๋งํ๋ค. ์ฆ, CPU๊ฐ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์์ ์๋ก์ด ํ๋ก์ธ์ค๋ก ํ ๋น๋๋ ๋ฐ ํ์ํ ๋ชจ๋ ์์ ์ ์๋ฏธํ๋ค. ์ฌ๊ธฐ์ ํ์ํ ์์ ์ ํฌ๊ฒ ๋ ๊ฐ์ง์ด๋ค.
- ์คํ์ค์ด๋ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ PCB ํํ๋ก backup. (state save)
- ์คํํ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ PCB๋ก๋ถํฐ load. (state restore)
PCB๋ ๋ค์์ ์ค๋ช ํ ๊ฒ์ด์ง๋ง, ํ๋ก์ธ์ค์ ์ ๋ณด๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค. ์ด ๋ ๊ฐ์ง ์์ ์ ๋ฐ๋์ ์ํ๋์ด์ผ ํ๋ค. ์ด ์์ ๋ค์ด ์คํ๋๋ ๋์์๋ ์์คํ ์ ์ ์ฉํ ์์ ์ ์ํํ์ง ๋ชปํ๋ฏ๋ก, ์ด ์๊ฐ์ ์์ํ ์ค๋ฒํค๋(overhead) ์๊ฐ์ด๋ค.
2 - b. Process Control Block
Process Control Block, ์ดํ PCB๋ ์ด์์ฒด์ ์์ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉํ๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. ์ด์์ฒด์ ์์ค์์ ํน์ ํ๋ก์ธ์ค๋ฅผ ์ดํดํ ๋ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ๋ด๊ธฐ๊ฒ ๋๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค. ๋ฉํฐ ํ๋ก์ธ์ค ํ๊ฒฝ์์๋ PCB๊ฐ ๋ฐ๋์ ํ์ํ๋ค. ์๋ํ๋ฉด Context Switching์ด ์ผ์ด๋๋ฉด, ๋๊ธฐ์ค์ด๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ๊ฐํ๊ฒ ๋๋ค. ์ด๋ ์ด ์ ๋ณด๋ค์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋น์ ํ์๋ฉด, PCB๋ Context Switching์ด ์ผ์ด๋ ๋๋ฅผ ์ํ ์ธ์ด๋ธ ํฌ์ธํธ์ด๋ค. ๋์ค์ ์ ์ ๊ฐ resumeํ ๋๋ฅผ ์ํด ์ด๋๊น์ง ์คํํ๋์ง๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
PCB์๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ค์ด ๋ด๊ธฐ๊ฒ ๋๋ค.
- ํ๋ก์ธ์ค ์ํ: ์์์ ์ธ๊ธํ, ํ๋ก์ธ์ค์ ํ์ฌ ์ํ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
- ํ๋ก์ธ์ค ID: ํ๋ก์ธ์ค unique ID. (PID๋ผ๊ณ ๋ถ๋ฆผ.)
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ: ํ๋ก์ธ์ค๋ active entity์ด๋ฏ๋ก, ๋ค์์ผ๋ก ์คํํ ๋ช ๋ น์ด๊ฐ ์๋ค. ํ๋ก๊ทธ๋จ ์นด์ดํฐ์๋ ๋ค์์ผ๋ก ์คํํ ๋ช ๋ น์ด์ ์ฃผ์๊ฐ์ด ๋ค์ด๊ฐ ์๋ค.
- CPU registers: ํ๋ก์ธ์ค๋ ๋ช ๋ น์ด๋ค์ ์คํํ๋ฉด์ ์๋ง์ ์ฐ์ฐ์ ์งํํ๋ค. ์ด ์ฐ์ฐ๊ฐ๋ค ์ค ์ผ๋ถ๋ ์๋๋ฅผ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ง ์๊ณ , CPU registers์ ์ ์ฅํ๋ค. ์ด ์ ์ฅ๊ฐ๋ค์ process๊ฐ ๋๊ธฐ -> ์ฌ๊ฐ๋ ๋ ๋ค์ cpu registers์ ๋ณต๊ตฌํ ์ ์๋๋ก PCB์ ์ ์ฅํ๋ค.
์ด์ธ์๋ ๋ ๋ง์ ์ ๋ณด๋ค์ด ๋ด๊ธฐ์ง๋ง, ์ค์ํ ๊ฒ ์์ฃผ๋ก ์ถ๋ ธ๋ค.
2 - c. ๋ฉํฐ ํ๋ก์ธ์ค ํ๊ฒฝ์์์ PCB
์๋ฅผ ๋ค์ด, ๋ฉํฐ ํ๋ก์ธ์ค & ๋จ์ผ CPU core๊ฐ ์๋ ํ๊ฒฝ์ ๊ฐ์ ํด๋ณด์. ์ด ํ๊ฒฝ์์๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋์ง๋ง, ์ค์ ๋ก๋ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํ๋ ์ ์๋ค. ์ด๋ฐ ํ๊ฒฝ์์ ์ด์์ฒด์ ๋ ๊ฐ ํ๋ก์ธ์ค์ ์ํ(ready, waiting ๋ฑ)๋ฅผ ์ ํํ๊ฒ ๊ด๋ฆฌํด์ผ ํ๋ค. ์ด์์ฒด์ ๋ ์ด๋ฅผ ์ํด PCB์ ํ ๊ฐ๋ ์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๋ค.
์ด์์ฒด์ ๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์ข ๋ฅ์ ํ๋ฅผ ์ฌ์ฉํ๋ค. Ready Queue, Wait Queue์ธ๋ฐ, ๊ฐ๊ฐ์ Linked List๋ก ๊ตฌํ๋์ด ์๋ค.
1๏ธโฃ Ready Queue
- Ready Queue๋ ready ์ํ์ ํ๋ก์ธ์ค๋ค์ PCB๊ฐ ๋ด๊ธด๋ค.
- e.g. ํ๋ก์ธ์ค๊ฐ ready ์ํ๊ฐ ๋๋ฉด, ๊ทธ ํ๋ก์ธ์ค์ PCB๊ฐ Ready Queue์ ๋ค์ด๊ฐ CPU ํ ๋น ๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
2๏ธโฃ Wait Queue
- Wait Queue์๋ wait ์ํ์ ํ๋ก์ธ์ค๋ค์ PCB๊ฐ ์ฐจ๋ก๋ก ๋ด๊ธด๋ค.
- e.g. ํ๋ก์ธ์ค๊ฐ running ํ๋ค๊ฐ I/O event ๋ฑ์ด ๋ฐ์ํ์ฌ waiting ์ํ๋ก ๋ฐ๋ ์ ์๋ค. ์ด๋๋ Waiting Queue์ PCB๊ฐ ๋ค์ด๊ฐ ํด๋น ์์ ์ด ๋ง๋ฌด๋ฆฌ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
- Wait Queue๋ I/O ์ฅ์น๋ณ๋ก ๋ณ๋๋ก ์กด์ฌํ ์ ์๋ค. (e.g. network i/o queue, disk i/o queue)
3. ์ ๋ฆฌํ์๋ฉด . . .
์ฒ์ ํฌ์คํ ์ ์์ํ ๋ ๋ค์ ๋ ๊ฐ์ง ์ง๋ฌธ์ ๋ํด ๋ตํ๊ณ ์ ํ๋ค
- ๊ทธ๋์ ํ๋ก์ธ์ค๊ฐ ๋ญ๋ฐ..?
- ํ๋ก์ธ์ค ๋์์ ์คํ๋๊ธฐ ์ํด์๋ ๋ญ๊ฐ ํ์ํ ๊น?
์ด ๋ชฉํ์ ๋ฐ๋ผ ์ ๋ฆฌํด๋ณด๋ฉด, ํฌ์คํ ์ ํต์ฌ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค
- ๊ทธ๋์ ํ๋ก์ธ์ค๊ฐ ๋ญ๋ฐ..?
- ํ๋ก์ธ์ค๋ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค.
- ํ๋ก์ธ์ค๋ ์์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ์ด์์ฒด์ ์์ ์ ์ํ ํ๋ก์ธ์ค ์ํ ์ค ํ๋๋ฅผ ๊ฐ์ง๋ค.
- ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋๊ธฐ ์ํด์๋ ๋ญ๊ฐ ํ์ํ ๊น?
- ๋จ์ผ CPU ํ๊ฒฝ์์๋ ์ค์ ๋ก ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํ๋ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋น ๋ฅด๊ฒ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํํ์ฌ ๋์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ค.
- ์ด๋ cpu๊ฐ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํ ์ผ๋ จ์ ๊ณผ์ ์ context switching์ด๋ผ๊ณ ํ๋ค.
- context switching์ PCB๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ณต๊ตฌํ๋ค.
# ์ด ๊ธ์ ์ฝ๊ฒ ๋ JH๋๊ป ๋๋ฆฌ๋ ๋ฉ์ธ์ง . . ใ
์ธ๋ ๋ฆ๊ฒ ์์ฑํด์ ์ ๋ง์ ๋ง ๋ฏธ์ํฉ๋๋ค์ . . . ใ
์ด๋ ๊ฒ๊น์ง ์ค๋ ๊ฑธ๋ฆด ์ผ์ด์๋ ์ถ๊ธด ํ๋ฐ ์ฉ . . . ์ ๋ง ๋ฏธ์ํ๊ตฌ, ์ด๋ฒ ๊ธ ํผ๋๋ฐฑ ์ ๋ถํํ๊ฒ ์ต๋๋ค์ ใ
์ธ๋ ๊ทธ๋ฆฌ๊ณ ํผ๋๋ฐฑ์ ์ ๋ง ์ ๋ง ์ฒ์ฒํ ์ค๋ ๋ผ ! ๋ด๊ฐ ์๋์ ๋ฆ๊ฒ ์ฌ๋ ค๊ฐ์ง๊ณ ... ใ
..
์ธ๋์ ํ ์ฃผ๋ฅผ ์์ํ๋ฉฐ ! ์๋ ์ฌ์ง์ ๊ท์ฌ์์ ๋ฃ์์ด ใ ใ ใ ๋ด๊ฐ ์ฐ์ ๋ฆฌ๋ฒ์ค ๋์ฌ๋์ด์ผ..
