ํ๋ก๊ทธ๋จ์ ๋ช
๋ น์ด์ ์ ์ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๋ฉด ์๋ช
์ด ์๋ ํ๋ก์ธ์ค์ด๋ค.
=> ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
-
ํ๋ก๊ทธ๋จ
๋ณด์กฐ ๊ธฐ์ต์ฅ์น(ํ๋๋์คํฌ, SSD)์ ์กด์ฌํ๋ฉฐ, ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ช ๋ น์ด(์ฝ๋)์ ์ ์ ์ธ ๋ฐ์ดํฐ์ ๋ฌถ์
ํ๋์ CPU(ํ๋ก์ธ์)๋ ํ ์๊ฐ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํํ ์ ์๋ค.
์ด์์ฒด์ ๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ฒ CPU๊ฐ ์คํํ ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก(PCB, Process Control Block) ๋๋ **ํ๋ก์ธ์ค ๊ธฐ์ ์(process descriptor)**๋ผ๊ณ ๋ถ๋ฅด๋ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅ๋จ. PID, ํ๋ก๊ทธ๋จ ์ ๋ณด, ์ํ, ์์ ๋ฑ์ ์ ์ฅํ๊ณ ์์.
-
PID(Process IDentification)
์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ณํ๊ธฐ ์ํด ๋ถ์ฌ๋ ํ๋ก์ธ์ค ์๋ณ๋ฒํธ
-
ํ๋ก์ธ์ค ์ํ
์คํ ์ค์ด๊ฑฐ๋ ๋๊ธฐ ์ค์ธ์ง
-
ํ๋ก๊ทธ๋จ ์นด์ดํฐ
CPU๊ฐ ๋ค์์ผ๋ก ์คํํ ๊ธฐ๊ณ์ด๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ
-
์ค์ผ์ค๋ง ์ฐ์ ์์
์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ CPU์์ ์คํ๋๋ ์์
-
๊ถํ
ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ ์ ์๋ ์์์ ๊ฒฐ์ ํ๋ ์ ๋ณด
-
ํ๋ก์ธ์ค์ ๋ถ๋ชจ์ ์์ ํ๋ก์ธ์ค
๋ชจ๋ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ํด์ ์์ฑ๋จ. ์ด ๊ณ์ธต๊ด๊ณ๋ ํธ๋ฆฌ๋ฅผ ํ์ฑํจ. (์ต์ด๋ก ์์ฑ๋๋ init ํ๋ก์ธ์ค ์ ์ธ)
-
ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ์ ๋ช ๋ น์ด๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
-
ํ๋ก์ธ์ค์ ํ ๋น๋ ์์๋ค์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
-
์คํ ๋ฌธ๋งฅ
ํ๋ก์ธ์ค๊ฐ ์คํ ์ํ์์ ๋ง์ง๋ง์ผ๋ก ์คํํ ํ๋ก์ธ์์ ๋ ์ง์คํฐ ๋ด์ฉ. ํ๋ก์ธ์ค๊ฐ ๊ต์ฒด๋ ๋ ์ฐ์์ ์ผ๋ก ์คํ๋ ๊ฒ์ฒ๋ผ ํ๊ธฐ ์ํด ๊ฐ๊ณ ์์.
์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํ๊ณ ์ฌ์์ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์คํ(running), ์ค๋น(ready), ๋ธ๋ก(block) ์ํ๋ก ๋ถ๋ฅํ๊ณ ํ๋ก์ธ์ค๋ค์ ์ํ์ ์ด(state trasition) ๋ฅผ ํตํด ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํจ.
-
์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๊ณ ์ค๋น๋ฆฌ์คํธ์ ์ถ๊ฐ๋จ.
-
ํ๋ก์ธ์ค๋ ํ๋ก์ธ์(CPU)๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๊ฐ ๋๋ฉด ํ ๋น ๋ฐ์.
-
์ค๋น ์ํ์์ ์คํ ์ํ๋ก ์ํ์ ์ด๋จ(
๋์คํจ์นญ(dispatching)) -
ํ๋ก์ธ์ค๋ ์คํ ์ํ์์ CPU๋ฅผ ์ด์ฉํด ์ฐ์ฐ ํ ์๋ฐ์ ์ผ๋ก ๋ฐ๋ฉํ๊ณ ์์ ์ด ๋๋์ง ์์์ผ๋ฉด
๋ค์ ์ค๋น์ํ์ ๋ค์ด๊ฐ. -
ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ ์ถ๋ ฅ์ด ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ์ด๋ฉด ์๋ฃ๋ ๋๊น์ง ์์ ์
๋ธ๋กํจ.
์ด์์ฒด์ ๋ ํ๋์จ์ด์ ์ผ๋ก ์ธํฐ๋ฝํ
ํด๋ก ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์์์ผ ํ๋ก์ธ์ค๊ฐ ํน์ ์๊ฐ ๊ฐ๊ฒฉ๋์ ๋ง ์คํํ ์ ์๋๋ก ํจ. ์ด์์ฒด์ ๋ ๊ฐ์ ๋ก ์คํ์ค์ธ ํ๋ก์ธ์ค์ CPU ์ ์ด๊ถ์ ๋บ๊ณ ํ๋ก์ธ์ค๋ ์ค๋น ์ํ๋ก ์ํ์ ์ด๋จ.
=> CPU๊ฐ ์ธํฐ๋ฝํธ ์์ฒญ์ ์ํด ํ์ฌ ์ฒ๋ฆฌ์ค์ธ ํ๋ก์ธ์ค์ PCB(๋ฌธ๋งฅ)์ ๋ฐ๋ก ์ ์ฅํ๊ณ ๋ค์ ์ฐ์ ์์์ PCB๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ
CPU๋ ๋์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ IO์ธํฐ๋ฝํธ๋ ์์คํ ์ฝ์ ์ํด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํ๋ฉฐ ์ฒ๋ฆฌํจ.
- ์ธํฐ๋ฝํธ/์์คํ ํธ์ถ : ์ด์์ฒด์ ์์ ํ๋ก์ธ์ค ์ค์ผ์ค๋ฌ์ ์ํด ์ธํฐ๋ฝํธ ๋ฐ์
- ์ปค๋ ๋ชจ๋ ์ ํ : ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ์ฌ์ฉ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก ์ ํ
- ํ์ฌ ํ๋ก์ธ์ค ์ํ PCB ์ ์ฅ : ๊ธฐ์กด ์คํ๋๋ ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ PCB์ ์ ์ฅ
- ๋ค์ ์คํ ํ๋ก์ธ์ค ๋ก๋ : PCB์ ์๋ ๋ค์ ์คํ ํ๋ก์ธ์ค ์ํ ์ ๋ณด ๋ณต๊ตฌ
- ์ฌ์ฉ์ ๋ชจ๋ ์ ํ : ์ปค๋ ๋ชจ๋์์ ์ฌ์ฉ์ ๋ชจ๋๋ก ์ ํํ์ฌ ํ๋ก์ธ์ค ์คํ
- dispatch, timeout ๋ฑ ์คํ ์ํ๊ฐ ์ ์ด๋๋ ๊ณผ์ ์์ ๋ฐ์ํจ
์๊ฐ์ ์ชผ๊ฐ์ด ํ๋์ ์ฒ๋ฆฌ ์ฅ์น์์ ๋ ๊ฐ ์ด์์ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ