ํจ์คํธ์บ ํผ์ค ์ด์์ฒด์ ๊ฐ์์ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ ๊ต์ฌ์ ๋ํ TIL์ ๋๋ค.
ํ๋ก์ธ์ค๋?
ํ๋ก๊ทธ๋จ์ ํ๋๋์คํฌ ๊ฐ์ ์ ์ฅ์ฅ์น์ ๋ณด๊ด๋์ด ์๋ค๊ฐ ๋ง์ฐ์ค๋ก ํด๋ฆญํ๋ฉด ์คํ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ค๋ ๊ฒ์ ํฐ๋ ธ์ด๋ง ๊ตฌ์กฐ์ ๋ฐ๋ฅด๋ฉด ํด๋น ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ ์์ ์ด ์งํ๋๋ค๋ ์๋ฏธ์ด๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๊ฒ์ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค.
ํ๋ก๊ทธ๋จ์์ ํ๋ก์ธ์ค๋ก์ ์ ํ
์ด๋ค ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค๊ฐ ๋์๋ค๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์๋ค๊ณ ํ ์๋ ์์ง๋ง ๋์์ ์ด์์ฒด์ ๋ก๋ถํฐ ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB)์ ๋ฐ์๋ค๊ณ ๋ ํ ์ ์๋ค. ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํ์ํ ๋ค์ํ ์ ๋ณด๋ค์ด ์์ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ ๋ณด๋ค์ ๋ณด๊ดํ๋ ์๋ฃ ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก์ด๋ค.
์ด์ ํฌ์คํ ์์ ๋ฉ๋ชจ๋ฆฌ ๋งต ์ ์ถ๋ ฅ์ ์ค๋ช ํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ ์ง ๊ณต๊ฐ์ ๋ํ ๊ทธ๋ฆผ์ ๋ดค์ ๊ฒ์ด๋ค. ์ด์ ํฌ์คํ ์์ ์ฃผ๋ชฉํด์ผ ํ์๋ ๊ฒ์ ์ ์ถ๋ ฅ ๊ด๋ฆฌ์๋ฅผ ์ํ ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด์๋ค๋ฉด ์ด๋ฒ ํฌ์คํ ์์ ์ฃผ๋ชฉํด์ผ ํ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ด์์ฒด์ ์์ญ์ด๋ค. ์ด์์ฒด์ ๋ํ ํ๋ก์ธ์ค์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์, ์ด์์ฒด์ ์์ญ์ ๋ง๋ค์ด ์ด์์ฒด์ ๊ฐ ํด์ผ ํ ์์ ์ ๋ํ ๋ฐ์ดํฐ๋ค์ ๋ณด๊ดํ๋ค. ์ด๋ฌํ ์ด์์ฒด์ ์์ญ์ PCB๊ฐ ๋ง๋ค์ด์ ธ ์ ์ฅ๋๋ค.
์์ ๋ด์ฉ๋ค์ ์ข ํฉํด ๋ณด์๋ฉด ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค๊ฐ ๋๋ค๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ด์์ฒด์ ์์ญ์ ํด๋น ํ๋ก๊ทธ๋จ์ ๋ํ PCB๊ฐ ๋ง๋ค์ด์ง๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ์ ์์ญ์ ํ๋ก์ธ์ค๋ก์จ ์ฌ๋ผ์๋ค๋ ๋ป์ด๋ค. ๋ํ, ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ค๋ ๊ฒ์ ํด๋น PCB๊ฐ ํ๊ธฐ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ด์์ฒด์ ์์ญ์์ ์ฌ๋ผ์ง๋ค๋ ๋ป์ด๋ค.
ํ๋ก์ธ์ค์ ์ํ
๋ง์ฝ, ์ผ๊ด ์ฒ๋ฆฌ ์์คํ ์ ์ฌ์ฉํ๋ ์ปดํจํฐ๋ผ๋ฉด ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ํ CPU๋ฅผ ์ป์ด ์์ ์ ๋ง์น ๋๊น์ง ์ ์ ํ๊ณ ์์ ์ด ๋๋๋ฉด ์ข ๋ฃ๋๋ค. ๋ฐ๋ผ์ ์ผ๊ด ์ฒ๋ฆฌ ์์คํ ์ ํ๋ก์ธ์ค ์ํ๋ ๊ฐ๋จํ๊ฒ ์์ฑ, ์คํ, ์๋ฃ ์ค ํ๋๊ฐ ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ํ๋ ์ด์์ฒด์ ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์๋ถํ ์์คํ ์ ํ๋ก์ธ์ค ์ํ๋ ์ด๋ณด๋ค ํจ์ฌ ๋ณต์กํ๋ค. CPU๋ฅผ ์ป์ด ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์ค๊ฐ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ CPU๋ฅผ ๋๊ฒจ์ฃผ๋ ์ผ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ ๊ทธ๋ฆผ์ ์ค๋๋ ์ ์ด์์ฒด์ ์ ํ๋ก์ธ์ค ์ํ๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค. ํ๋ก์ธ์ค ์ํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์์ฑ ์ํ
ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ณ ์ด์์ฒด์ ๋ก๋ถํฐ PCB๋ฅผ ํ ๋น๋ฐ์ ์ํ๋ค.
์ค๋น ์ํ
์คํ ๋๊ธฐ ์ค์ธ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์๊ธฐ ์์๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ค. PCB๋ ์ค๋น ํ(Ready Queue)์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ CPU ์ค์ผ์ค๋ฌ์ ์ํด ๊ด๋ฆฌ๋๋ค. CPU ์ค์ผ์ค๋ฌ๋ ์ค๋น ์ํ์์ ์ค๋น ํ๋ฅผ ๋ช ๊ฐ ์ด์ํ ์ง, ์ด๋ค PCB๋ฅผ ์คํ ์ํ๋ก ๋ณด๋ผ์ง ๊ฒฐ์ ํ๋ค.
์ด๋ ์คํ ์ํ๋ก ๋ฐ๊พธ๋ ์์ ์ ๋์คํจ์น(Dispatch)๋ผ๊ณ ํ๋ค.
์คํ ์ํ
ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ๋๋ ์ํ๋ค. ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค ์ค ์คํ ์ํ์ ๋ค์ด๊ฐ๋ ํ๋ก์ธ์ค์ ์๋ CPU์ ๊ฐ์๋งํผ์ด๋ค. ํ๋ก์ธ์ค๋ ์์ ์๊ฒ ์ฃผ์ด์ง ํ์ ์ฌ๋ผ์ด์ค ๋์๋ง ์์ ํ ์ ์๋ค.
- ์ฃผ์ด์ง ํ์ ์ฌ๋ผ์ด์ค๋ฅผ ๋ค ์ฌ์ฉํ๋ฉด PCB๋ฅผ ์ค๋น ์ํ๋ก ์ฎ๊ธฐ๋๋ฐ ์ด๋ฅผ ํ์์์์ด๋ผ๊ณ ํ๋ค.
- ์คํ ์ํ ๋์ ์์ ์ด ์๋ฃ๋๋ฉด ์๋ฃ ์ํ๋ก ์ฎ๊ธด๋ค.
- ์คํ ์ํ์ ์๋ ํ๋ก์ธ์ค๊ฐ ์ ์ถ๋ ฅ์ ์์ฒญํ๋ฉด CPU๋ ์ ์ถ๋ ฅ ๊ด๋ฆฌ์์๊ฒ ์ ์ถ๋ ฅ์ ์์ฒญํ๊ณ ํด๋น PCB๋ฅผ ๋๊ธฐ ์ํ๋ก ์ฎ๊ธด๋ค.
๋๊ธฐ ์ํ(Blocking Status / Wait Status)
์ ์ถ๋ ฅ ์์ฒญ ๊ฐ์ ์ปดํจํฐ ์์คํ ์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ์ด๋ค. ๊ฐ ์ฅ์น๋ณ๋ก ๋ง๋ จ๋์ด ์๋ ๋๊ธฐ ํ์ PCB๋ค์ด ๋ค์ด๊ฐ ๊ธฐ๋ค๋ฆฐ๋ค.
์ ์ถ๋ ฅ ๋ฑ์ ์ด๋ฒคํธ๊ฐ ์๋ฃ๋๋ฉด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์๋๊ณ ํด๋น ์ด๋ฒคํธ๋ฅผ ์์ฒญํ PCB๋ฅผ ์ฐพ์ ์ค๋น ์ํ๋ก ์ด๋์ํจ๋ค.
์๋ฃ ์ํ
ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ ์ํ์ด๋ค. ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํ๊ณ PCB๋ฅผ ํ๊ธฐํ๋ค. ๋ง์ฝ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฐ์ ์ข ๋ฃ๋ฅผ ๋ง๋๋ฉด ๋๋ฒ๊น ํ๊ธฐ ์ํด ๊ฐ์ ์ข ๋ฃ ์ง์ ์ ๋ฉ๋ชจ๋ฆฌ ์ํ๋ฅผ ์ ์ฅ์ฅ์น๋ก ์ฎ๊ธฐ๋ ์ฝ์ด ๋คํ๋ฅผ ํ๋ค. ์ข ๋ฃ ์ง์ ์ ๋ฉ๋ชจ๋ฆฌ ์ํ๋ฅผ ํ์ธํจ์ผ๋ก์จ ์ค๋ฅ๋ฅผ ์์ ํ ์ ์๊ฒ ๋๋ค.
ํ์ฑ ์ํ์ ๋ณด๋ฅ ์ํ
์์ ๋ค์ฏ ๊ฐ์ง ์ํ๋ ํ์ฑ ์ํ(Active Status)๋ผ๊ณ ํ๋ค. ํ๋ก์ธ์ค์ ์ํ์๋ ํ์ฑ ์ํ ์ธ์ ํด์ ์ํ(Pause Status)์ ๋ณด๋ฅ ์ํ(Suspend Status)๋ผ๋ ํน์ํ ์ํ๊ฐ ์๋ค.
ํด์ ์ํ
ํ๋ก์ธ์ค๊ฐ ์์ ์ ์ผ์์ ์ผ๋ก ์ฌ๊ณ ์๋ ์ํ๋ค. ํด์ ์ํ์ธ ํ๋ก์ธ์ค๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ทธ๋๋ก ์๊ณ PCB๋ ์ ์ง๋๋ฏ๋ก ํ๋ก์ธ์ค๋ ๋ฉ์ถ ์ง์ ์์๋ถํฐ ์ฌ์์ํ ์ ์๋ค.
๋ณด๋ฅ ์ํ
ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ ์ ์ซ๊ฒจ๋ ์ํ์ด๋ค. ๋ณด๋ฅ ์ํ์ ๋ค์ด๊ฐ ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ผ๋ก ์ซ๊ฒจ๋ ์ค์ ์์ญ์ ๋ณด๊ด๋๋ค. ์ค์ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ ๋ฐ์ดํฐ๊ฐ ์์๋ก ๋ณด๊ด๋๋ ๊ณณ์ด๋ค. ํด์ ์ํ์ ๊ตฌ๋ถํ์๋ฉด ํด์ ์ํ๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ ๋ฉ์ถ ์ํ์ด๊ณ , ๋ณด๋ฅ ์ํ๋ ์ค์ ์์ญ์ ์๋ ์ํ์ด๋ค.
๋๊ธฐ ์ํ์ ์๋ค๊ฐ ๋ณด๋ฅ ์ํ๋ก ์ฎ๊ฒจ์ง ๋ณด๋ฅ ๋๊ธฐ ์ํ์ ์ค๋น ์ํ์ ์๋ค๊ฐ ๋ณด๋ฅ ์ํ๋ก ์ฎ๊ฒจ์ง ๋ณด๋ฅ ์ค๋น ์ํ๋ก ๊ตฌ๋ถ๋๊ณ ๊ฐ ์ํ์์ ์ฌ์์ํ๋ฉด ์๋์ ํ์ฑ ์ํ๋ก ๋ค์ด๊ฐ๋ค. ๋ณดํต ์ ์ถ๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์ ์ถ๋ ฅ์ด ๊ณ์ ์ง์ฐ๋๋ฉด ๋ณด๋ฅ ๋๊ธฐ ์ํ๋ก ๋ค์ด๊ฐ๋๋ฐ, ์ด๋ ๋ณด๋ฅ ๋๊ธฐ ์ํ์์ ์ ์ถ๋ ฅ์ด ์๋ฃ๋๋ฉด ํ์ฑ ์ํ๊ฐ ์๋ ๋ณด๋ฅ ์ค๋น ์ํ๋ก ์ฎ๊ฒจ๊ฐ๋ค.
ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก๊ณผ ๋ฌธ๋งฅ ๊ตํ
ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก
ํฌ์ธํฐ
ํ๋ก์ธ์ค๊ฐ ์ค๋น์ํ๋ ๋๊ธฐ ์ํ์ผ ๊ฒฝ์ฐ์ ํ๋ก ์ด์์ด ๋๋๋ฐ, ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก์ ์ฐ๊ฒฐ ์ ํ๋ก ๊ตฌํํ๊ธฐ ์ํด ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ค.
ํ๋ก์ธ์ค ์ํ
์์ฑ, ์ค๋น, ์คํ, ๋๊ธฐ, ์๋ฃ, ๋ณด๋ฅ ๋ฑ ํ๋ก์ธ์ค๊ฐ ํ์ฌ ์ด๋ ํ ์ํ์ ์๋์ง๋ฅผ ๋ํ๋ธ๋ค.
ํ๋ก์ธ์ค ๊ตฌ๋ถ์(PID)
์ด์์ฒด์ ๋ด์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ตฌ๋ถ์๊ฐ ํ์ํ๋ค.
ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC)
ํ๋ก์ธ์ค๊ฐ ์ค๋น์ํ์์ ์คํ์ํ ๊ฐ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ฅผ ํตํด ๋ค์ ์คํ๋ ๋ช ๋ น์ด์ ์์น๋ฅผ ์ ์ ์๋ค. ๋๋ ์คํ์ํ์์ ์ค๋น์ํ๋ก ๊ฐ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ ์นด์ดํฐ์ ์ ์ฅํ์ฌ ๋ค์ ์คํ๋ ๋ช ๋ น์ด ์์น๋ฅผ ์ ์ฅํ๋ค.
ํ๋ก์ธ์ค ์ฐ์ ์์
CPU ์ค์ผ์ค๋ฌ๊ฐ ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค ์ค ์คํ ์ํ๋ก ์ฎ๊ฒจ์ผ ํ ํ๋ก์ธ์ค๋ฅผ ์ ํํ ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ๊ธฐ ๋๋ฌธ์ ์ ์ฅํ๋ค.
๊ฐ์ข ๋ ์ง์คํฐ ์ ๋ณด
ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ ์ฌ์ฉํ๋ ๋ ์ง์คํฐ ์ ๋ณด(๋์ฐ๊ธฐ(Accumulator), ์์ธ ๋ ์ง์คํฐ, ์คํ ํฌ์ธํฐ ๋ฑ)๋ค์ด ์ ์ฅ๋๋ค. ์ด์ ์คํํ ๋ ์ฌ์ฉํ๋ ๋ ์ง์คํฐ ๊ฐ๋ค์ ์ ์ฅํด์ผ ๋ค์์ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด๊ดํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด
ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋์ ์๋์ง ์์์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์์น ์ ๋ณด๊ฐ ํ์ํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๊ฒฝ๊ณ ๋ ์ง์คํฐ, ํ๊ณ ๋ ์ง์คํฐ ๊ฐ ๋ฑ์ด ์ ์ฅ๋๋ค. ์ด์ธ ์ธ๊ทธ๋จผํ ์ด์ ํ ์ด๋ธ, ํ์ด์ง ํ ์ด๋ธ ๋ฑ์ ์ ๋ณด๋ ํฌํจ๋๋ค.
ํ ๋น๋ ์์ ์ ๋ณด
ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ ์ถ๋ ฅ ์์, ์คํ ํ์ผ ๋ฑ์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋ค. ์ด๋ค ํ๋ก์ธ์ค๊ฐ ํ์ผ์ ์คํํ์ฌ ์์ ํ๋ค๊ณ ํ์ ๊ฒฝ์ฐ ํ์ผ์ ๋ํ ์ ๋ณด๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ ์ฅํด์ผ ํ๋ค.
๊ณ์ ์ ๋ณด
๊ณ์ ๋ฒํธ, CPU ํ ๋น ์๊ฐ, CPU ์ฌ์ฉ ์๊ฐ ๋ฑ์ด ์ ์ฅ๋๋ค.
PPID์ CPID
๋ถ๋ชจ ํ๋ก์ธ์ค ๊ตฌ๋ถ์(Parent PID)์ ์์ ํ๋ก์ธ์ค ๊ตฌ๋ถ์(Child PID) ์ ๋ณด๊ฐ ์ ์ฅ๋๋ค.
๋ฌธ๋งฅ ๊ตํ
๋ฌธ๋งฅ ๊ตํ(Context Switching)์ CPU๋ฅผ ์ฐจ์งํ๋ ํ๋ก์ธ์ค๊ฐ ๋๊ฐ๊ณ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ฐ์๋ค์ด๋ ์์ ์ ๋งํ๋ค. CPU์์ ๋๊ฐ๋ ํ๋ก์ธ์ค๋ ์ง๊ธ๊น์ง์ ์์ ๋ด์ฉ์ PCB์ ์ ์ฅํ๊ณ ์๋ก ๋ค์ด์ค๋ ํ๋ก์ธ์ค๋ PCB์ ๋ด์ฉ์ผ๋ก CPU๊ฐ ๋ค์ ์ธํ ๋๋ค. ์ด์ ๊ฐ์ด ๋ ํ๋ก์ธ์ค์ PCB๋ฅผ ๊ตํํ๋ ์์ ์ด ๋ฌธ๋งฅ ๊ตํ์ด๋ค.
๋ฌธ๋งฅ ๊ตํ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ ๋ค์ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ ํ๋ก์ธ์ค์ ํ์ ํํ ์ด ์ง๋๋ฉด ๋ฐ์ํ๊ณ , ์ธํฐ๋ฝํธ๊ฐ ๊ฑธ๋ ธ์ ๋๋ ๋ฐ์ํ๋ค. ์ด๋, ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์์ ๋ด์ฉ์ PCB์ ์ ์ฅ ํ ์ธํฐ๋ฝํธ ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ์คํ ์ํ๋ก ๋ง๋ ๋ค. ์ธํฐ๋ฝํธ ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ํ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฅผ ํ๋๋ฐ, ์ด์ ๊ฐ์ด ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ์์๋ ๋ฌธ๋งฅ ๊ตํ์ด ๋ฐ์ํ๋ค.
ํ๋ก์ธ์ค์ ์ฐ์ฐ
ํ๋ก์ธ์ค์ ๊ตฌ์กฐ
ํ๋ก์ธ์ค๋ ์ฝ๋ ์์ญ, ๋ฐ์ดํฐ ์์ญ, ํ ์์ญ, ์คํ ์์ญ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ฝ๋ ์์ญ
์ฌ์ฉ์๊ฐ ์์ฑํ ํ๋ก๊ทธ๋จ ํจ์๋ค์ ์ฝ๋๊ฐ CPU์์ ์ํํ ์ ์๋ ๊ธฐ๊ณ์ด ๋ช ๋ น ํํ๋ก ๋ณํ๋์ด ์ ์ฅ๋๋ ๊ณต๊ฐ์ด๋ค. ์ปดํ์ผ ํ์์ ๊ฒฐ์ ๋๊ณ ์ค๊ฐ์ ์ฝ๋๋ฅผ ๋ฐ๊ฟ ์ ์๊ฒ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋์ด์๋ค.
๋ฐ์ดํฐ ์์ญ
์ ์ญ ๋ณ์ ๋๋ static ๋ณ์ ๋ฑ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ค. ์ ์ญ ๋ณ์ ๋๋ static ๊ฐ์ ์ฐธ์กฐํ ์ฝ๋๋ ์ปดํ์ผ์ด ์๋ฃ๋๋ฉด ๋ฐ์ดํฐ ์์ญ์ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๋๋ก ๋ฐ๋๋ค. ์ ์ญ ๋ณ์๋ static ๋ณ์๊ฐ ๋ณ๊ฒฝ๋ ์๋ ์์ด ์ฝ๊ธฐ์ ์ฐ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ ๋ก ๋์ด ์๋ค.
ํ ์์ญ
ํ๋ก๊ทธ๋๋จธ๊ฐ ํ์ํ ๋๋ง๋ค ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ํ ์์ญ์ ์ปดํ์ผ ํ์์ด ์๋ ๋ฐํ์(ํ๋ก๊ทธ๋จ ์คํ ์ค)์ ๊ฒฐ์ ๋๋ค.
์คํ ์์ญ
ํธ์ถ๋ ํจ์์ ์ํ์ ๋ง์น๊ณ ๋ณต๊ทํ ์ฃผ์ ๋ฐ ๋ฐ์ดํฐ(์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, ๋ฆฌํด๊ฐ ๋ฑ)๋ฅผ ์์๋ก ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ค. ์ด ์์ญ์ ํจ์ํธ์ถ ์ ๊ธฐ๋กํ๊ณ ํจ์์ ์ํ์ด ์๋ฃ๋๋ฉด ์ฌ๋ผ์ง๋ค. ์ปดํ์ผ ์ ์คํ ์์ญ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋ฌดํ์ ํ ๋นํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฌ๊ทํจ์๊ฐ ๋ฐ๋ณตํด์ ํธ์ถ๋๊ฑฐ๋ ํจ์๊ฐ ์ง์ญ๋ณ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ ์ ๋๋ก ๋๋ฌด ๋ง์ด ๊ฐ์ง๊ณ ์๋ค๋ฉด stack overflow๊ฐ ๋ฐ์ํ๋ค.
ํ๋ก์ธ์ค์ ์์ฑ๊ณผ ๋ณต์ฌ
์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ ์ฝ๋ ์์ญ์ ๋ฃ๊ณ PCB๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ ์์ญ๊ณผ ์คํ ์์ญ์ ํ๋ณดํ ํ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค.
fork() ์์คํ ํธ์ถ์ ๊ฐ๋
ํ๋ก์ธ์ค๋ฅผ ์๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ๋ฟ๋ง ์๋๋ผ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ก๋ถํฐ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ๋ ์๋ค. fork( ) ์์คํ ํธ์ถ์ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ก๋ถํฐ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ณต์ฌํ๋ ํจ์์ด๋ค. ์ปค๋์์ ์ ๊ณตํ๋ ์ด ํจ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ฌํ๋ ์ผ์ข ์ ์์คํ ํธ์ถ์ด๋ค. ์ด๋ ์คํํ๋ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค, ์๋ก ์๊ธด ํ๋ก์ธ์ค๋ ์์ ํ๋ก์ธ์ค๋ก์ ๋ถ๋ชจ - ์์ ๊ด๊ณ๊ฐ ๋๋ค.
fork() ์์คํ ํธ์ถ์ ๋์ ๊ณผ์
fork() ์์คํ ํธ์ถ์ ํ๋ฉด PCB๋ฅผ ํฌํจํ ๋ถ๋ชจ ํ๋ก์ธ์ค ์์ญ์ ๋๋ถ๋ถ์ด ์์ ํ๋ก์ธ์ค์ ๋ณต์ฌ๋์ด ๋๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๋ค. ๋จ, PCB์ ๋ด์ฉ ์ค ์ผ๋ถ๊ฐ ๋ณ๊ฒฝ๋๋๋ฐ ๋ณ๊ฒฝ๋๋ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
- PID๊ฐ ๋ฐ๋๋ค. ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ถ๋ชจ ํ๋ก์ธ์ค๋ 326, ์์ ํ๋ก์ธ์ค๋ 368์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์น๊ฐ ๋ค๋ฅด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ ๋ณด๊ฐ ๋ฐ๋๋ค.
- PPID์ CPID๊ฐ ๋ฐ๋๋ค. ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์์ ํ๋ก์ธ์ค์ PPID๋ 326์ด๊ณ CPID๋ ์์ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฏ๋ก -1๋ก ๋ผ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๋ถ๋ชจ ํ๋ก์ธ์ค๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ธฐ ์ ์๋ -1์ด์๋ CPID๊ฐ 368๋ก ๋ฐ๋๊ฒ ๋๋ค.
fork() ์์คํ ํธ์ถ ์ฅ์
- ํ๋ก์ธ์ค์ ์์ฑ ์๋๊ฐ ๋น ๋ฅด๋ค : ์ ์ฅ์ฅ์น๋ก๋ถํฐ ํ๋ก๊ทธ๋จ์ ์๋ก ๊ฐ์ ธ์ค์ง ์๊ณ ๊ธฐ์กด ๋ฉ๋ชจ๋ฆฌ์์ ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ์์ฑ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ์ถ๊ฐ ์์ ์์ด ์์์ ์์ํ ์ ์๋ค : ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ชจ๋ ์์์ ์ถ๊ฐ ์์ ์์ด ์์ ๊ฐ๋ฅํ๋ค.
- ์์คํ ๊ด๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค: ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ, ํ์ผ, ํ๋์จ์ด๋ฅผ ์ ์ ๋ฆฌํด์ผ ํ๋๋ฐ, ์ด๋ฌํ ์ ๋ฆฌ๋ฅผ ๋ถ๋ชจ ํ๋ก์ธ์ค์๊ฒ ๋งก๊น์ผ๋ก์จ ํจ์จ์ ์ธ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
ํ๋ก์ธ์ค์ ์ ํ
exec() ์์คํ ํธ์ถ์ ๊ฐ๋
- exec( ) ์์คํ ํธ์ถ์ ๊ธฐ์กด์ ํ๋ก์ธ์ค๋ฅผ ์๋ก์ด ํ๋ก์ธ์ค๋ก ์ ํํ๋ ํจ์์ด๋ค.
- exec( ) ์์คํ ํธ์ถ์ ์ฌ์ฉํ๋ ๋ชฉ์ ์ ํ๋ก์ธ์ค์ ๊ตฌ์กฐ๋ฅผ ์ฌํ์ฉํ๊ธฐ ์ํจ์ด๋ค.
- ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ PCB๋ฅผ ๋ง๋ค๊ณ ๋ฉ๋ชจ๋ฆฌ ์๋ฆฌ๋ฅผ ํ๋ณดํ๋ ๊ณผ์ ์ด ํ์ํ์ง๋ง exec( ) ์์คํ ํธ์ถ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ๋ง๋ค์ด์ง PCB, ๋ฉ๋ชจ๋ฆฌ ์์ญ, ๋ถ๋ชจ - ์์ ๊ด๊ณ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
- ์๋ก์ด ์ฝ๋ ์์ญ๋ง ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ์์ ์ด ์์ํ๋ค.
exec() ์์คํ ํธ์ถ์ ๋์ ๊ณผ์
- ์ฝ๋ ์์ญ์ ์๋ ๊ธฐ์กด์ ๋ด์ฉ์ ์ง์ฐ๊ณ ์๋ก์ด ์ฝ๋๋ก ๋ฐ๊พผ๋ค.
- ๋ฐ์ดํฐ ์์ญ์ด ์๋ก์ด ๋ฐ์ดํฐ๋ก ์ฑ์์ง๊ณ ์คํ ์์ญ์ ๋ฆฌ์ ๋๋ค.
- PCB์ PID, PPID, CCID, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ ๋ณด ๋ฑ์ ๋ฐ๋์ง ์์ง๋ง ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ๊ฐ์ข ๋ ์ง์คํฐ ์ ๋ณด์ ์ฌ์ฉํ ํ์ผ ์ ๋ณด๋ ๋ชจ๋ ๋ฆฌ์ ๋๋ค.
ํ๋ก์ธ์ค ๊ณ์ธต ๊ตฌ์กฐ
์ ๋์ค์ ํ๋ก์ธ์ค ๊ณ์ธต ๊ตฌ์กฐ
์ ๋์ค์์ ์ปค๋์ด ์ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ๋ถํ ๋๋ฉด ์ปค๋ ๊ด๋ จ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋๋๋ฐ, ๊ทธ์ค init ํ๋ก์ธ์ค๋ ์ ์ฒด ํ๋ก์ธ์ค์ ์ถ๋ฐ์ ์ด ๋๋ค. ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด init ํ๋ก์ธ์ค๋ฅผ ๋ง๋ ๋ค์ ๋๋จธ์ง ํ๋ก์ธ์ค๋ฅผ init ํ๋ก์ธ์ค์ ์์์ผ๋ก ๋ง๋ ๋ค. ์ด์์ฒด์ ์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ init ํ๋ก์ธ์ค์ ์์์ด ๋์ด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃฌ๋ค.
์ด๋ฌํ ํ๋ก์ธ์ค ๊ณ์ธต ๊ตฌ์กฐ๋ ์ฌ๋ฌ ์์ ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํ์ฌ ๋ค์ค ์ฌ์ฉ์ ์์คํ ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ข ๋ฃ๋ ํ๋ก์ธ์ค์ ์์์ ํ์ํ๋๋ฐ ์ ์ฉํ๋ค.
๊ณ ์ ํ๋ก์ธ์ค์ ์ข๋น ํ๋ก์ธ์ค
๊ณ ์ ํ๋ก์ธ์ค
์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ธฐ ์ ์ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ข ๋ฃ๋๋ฉด ์์ ํ๋ก์ธ์ค๋ ๊ณ ์ ํ๋ก์ธ์ค๊ฐ ๋๋ค.
์ข๋น ํ๋ก์ธ์ค
์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์๋๋ฐ๋ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ๋ค์ฒ๋ฆฌ๋ฅผ ํ์ง ์์ ๋ ๋ฐ์ํ๋ค. ๋ง์ฝ ๊ณ ์ ํ๋ก์ธ์ค์ ๋ํ ์ฒ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉด ๊ณ ์ ํ๋ก์ธ์ค๋ ์ข๋น ํ๋ก์ธ์ค๊ฐ ๋๋ค.
๐ก ๋ ๋์๊ฐ๊ธฐ
๋๋ค์์ ์ด์์ฒด์ ์์ PID 1 ์ init ํ๋ก์ธ์ค(UNIX ๊ณ์ด OS) ํน์ init ํ๋ก์ธ์ค ์ญํ ์ ํ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ธ๊ฐ๋ค. init ํ๋ก์ธ์ค๋ ๊ณ ์ ํ๋ก์ธ์ค๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ๋ก์ธ์ค์ ์ง/๊ฐ์ ์ ์ธ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ๋๋ค. ๋ฐ๋ผ์, ๋ชจ๋ ํ๋ก์ธ์ค๋ ๊ณ ์ ํ๋ก์ธ์ค๊ฐ ๋๋ฉด init ํ๋ก์ธ์ค๊ฐ ์ ์ํ์ฌ ํด๋น ๊ณ ์ ํ๋ก์ธ์ค๊ฐ ์ข๋น ํ๋ก์ธ์ค๊ฐ ๋์ง ์๊ฒ ์ฒ๋ฆฌํ๋ค.
์ ํํ๊ฒ ๋งํ์๋ฉด ๊ณ ์ ํ๋ก์ธ์ค๋ ์์ ์ ์ข ๋ฃ๋ฅผ ์๋ฆฌ๋ SIGCHLD ์๊ทธ๋์ ๋ฐ์์ ์ฒ๋ฆฌํด ์ค ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ข ๋ฃ๋ ๋ ๋ฐ์ํ๋๋ฐ init ํ๋ก์ธ์ค๊ฐ ๋์ ๊ทธ ์ญํ ์ ํด์ค๋ค. ๋ ์ ํํ๊ฒ ๋งํ์๋ฉด ๋ถ๋ชจ ํ๋ก์ธ์ค๋ wait() ํน์ waitpid() ์์คํ ์ฝ์ ์ฌ์ฉํด์ ์์ ํ๋ก์ธ์ค์ ์ข ๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์ข ๋ฃ๋๋ฉด ๋ฆฌ์์ค๋ฅผ ํด์ ํ๋๋ฐ, ๋ง์ฝ ์ด๋ฐ ์ฒ๋ฆฌ๋ฅผ ํด์ค ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ข ๋ฃ๋๋ค๋ฉด init ํ๋ก์ธ์ค๊ฐ ์ ์ํ์ฌ init ํ๋ก์ธ์ค์ ๋ฑ๋ก๋์ด ์๋ SIGCHLD์ ๋ํ ์๊ทธ๋ ํธ๋ค๋ฌ์ ๋์์ผ๋ก ๊ณ ์ ํ๋ก์ธ์ค์ ๋ฆฌ์์ค๋ฅผ ํด์ ํจ์ผ๋ก์จ ์ข๋น ํ๋ก์ธ์ค๊ฐ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
์ฐธ๊ณ ๋ก init ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ก์ธ์ค์ด๋ฏ๋ก ์ด์ ๊ด๋ จ๋ ์ฌ๋ฌ ์๊ทธ๋์ ๋ํ ์๊ทธ๋ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋์ด์๋ค.
'CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] CPU ์ค์ผ์ค๋ง (0) | 2023.04.23 |
---|---|
[์ด์์ฒด์ ] ์ค๋ ๋ (0) | 2023.04.14 |
[์ด์์ฒด์ ] ์ปดํจํฐ์ ๊ตฌ์กฐ์ ์ฑ๋ฅ ํฅ์ (0) | 2023.04.12 |
[์ด์์ฒด์ ] ์ปค๋๊ณผ ์ธํฐํ์ด์ค (0) | 2023.04.10 |
[์ด์์ฒด์ ] ์ด์์ฒด์ ์ ์ญ์ฌ (0) | 2023.04.09 |
๋๊ธ