728x90
๋ฐ์ํ
ํ๋ก์ธ์ค๋?
ํ๋ก๊ทธ๋จ = ์ ์ ์ธ ์ํ, ์ ์ฅ์ฅ์น์ ์์น
ํ๋ก์ธ์ค = ์ปดํจํฐ ์์คํ ์ ์์ ๋จ์(Task) = ๋์ ์ธ ์ํ, ์คํ์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์์น
์์ฑํ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด, ํ๋ก์ธ์ค๊ฐ ๋๋ค.
<ํ๋ก์ธ์ค ์์ฑ ๊ณผ์ >
- ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋๋๋ค.
- ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB)์ ์์ฑํ๋ค.
: PCB๊ฐ ์์ด์ผ ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๋ก ์ ํํ ์ ์์ผ๋ฉฐ, ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํ์ํ ์ ๋ณด๋ค์ ๊ฐ์ง๊ณ ์๋ค.
์ด์์ฒด์ ๋ํ ํ๋ก๊ทธ๋จ์ด๊ธฐ์ ๋ถํ ๊ณผ์ ์ ํตํด ํ๋ก์ธ์ค ํํ๋ก ์คํ๋๋ค. ๋๋ฌธ์ ์ปดํจํฐ์์ ์ด์์ฒด์ ์ ์ปค๋ ํ๋ก์ธ์ค(kerner process), ์ผ๋ฐ ์ฌ์ฉ์์ ์ฌ์ฉ์ ํ๋ก์ธ์ค(user process)๊ฐ ์๋ค.
ํ๋ก์ธ์ค์ ์ํ
์ผ๊ด ์์ ์์คํ ์ ์ํ ๋ณํ: ์์ฑ(create) >> ์คํ(run) >> ์๋ฃ(terminate)
์ค๋ ๋ ์ฌ์ฉ๋๋ ์๋ถํ ์์คํ ์ ํ๋ก์ธ์ค ์ํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
ํ์ฑ ์ํ
- ์์ฑ(create): ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์คํ ์ค๋น๋ฅผ ์๋ฃํ ์ํ๋ก, ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก์ด ์์ฑ๋๋ค.
- ์ค๋น(ready): ์์ฑ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ป์ ๋(๋ณธ์ธ์ ์์ ์ฐจ๋ก)๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. CPU ์ค์ผ์ค๋ฌ๊ฐ ๋ค์์ ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ์ฌ ์คํ์ํ๋ก ๋ฐ๊พธ๋๋ฐ, ์ด ์์ ์ ๋์คํจ์น(dispatch)๋ผ๊ณ ํ๋ค.
- ์คํ(running, execute): CPU๋ฅผ ์ป์ด ์์ ์ ์ํํ๋ค. ํ๋ก์ธ์ค์ ๋ฐฐ๋น๋ ์์ ์๊ฐ์ ํ์ ์ฌ๋ผ์ด์ค ๋๋ ํ์ ํธํ ์ด๋ผ๊ณ ํ๋ค. ์ด ์๊ฐ ์์ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ ํ์์์(time out, ์ธํฐ๋ฝํธ) ๋ช ๋ น์ผ๋ก ์ค๋น์ํ๋ก ๋์๊ฐ ๋ค์ ๋์์ฌ ์์๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค. ์ด๋ ํ์์์ ์ธํฐ๋ฝํธ๋ ํด๋ก์ด CPU์๊ฒ ์ ๋ฌํ๋ค.
- ๋๊ธฐ(blocking, wait): ์คํ ์ํ์ ํ๋ก์ธ์ค๊ฐ ์ ์ถ๋ ฅ์ ์์ฒญํ๋ฉด ์ ์ถ๋ ฅ์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐ ์ํ์ ์ง์ ํด ๊ธฐ๋ค๋ฆฐ๋ค. ์ด๋ ํ๋ก์ธ์ค๋ ์ ์ถ๋ ฅ์ฅ์น๋ณ๋ก ๋ง๋ จ๋ ํ์์ ๊ธฐ๋ค๋ฆฐ๋ค. ์ ์ถ๋ ฅ ์๋ฃ ํ์ wakeup ๋ช ๋ น์ ํตํด ํ๋ก์ธ์ค๊ฐ ์ค๋น ์ํ๋ก ์ด๋ํ๋ค.
- ์๋ฃ(terminate): ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์์ ์ ๋ง์น ์ํ์ด๋ค. ํ๋ก์ธ์ค ์ ์ ์ข ๋ฃ์ด๋ฏ๋ก ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก์ด ํ๊ธฐ๋๋ค. exit() ๋ช ๋ น์ ์ฌ์ฉํ๋ค.
์ฝ์ด ๋คํ(core dump): ์ค๋ฅ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํ ๊ฐ์ ์ข ๋ฃ(abort)๋ฅผ ๋ง๋ฌ์ ๋, ๋๋ฒ๊น ์ ์ํด ๊ฐ์ ์ข ๋ฃ ์ง์ ์ ๋ฉ๋ชจ๋ฆฌ ์ํ๋ฅผ ์ ์ฅ์ฅ์น๋ก ์ฎ๊ธฐ๋ ๊ฒ.
์ถ์ฒ: <์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ >, ํ๋น ์์นด๋ฐ๋ฏธ
728x90
๋ฐ์ํ