๐ค ํ๋ก์ธ์ค Process ๋ ๋ฌด์์ธ๊ฐ?
- ํ๋ก์ธ์ค๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์ธ์คํด์ค์ด๋ค.
- ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค์ ๊ด๊ณ๋ ๋ง์น ์๋ฐ์ Class - Object ๊ฐ๋
๊ณผ ๋น์ทํ๋ค.
- Class๊ฐ ํ๋ก๊ทธ๋จ๊ณผ ๊ฐ์ด ์ง์ผ์ง ํ์ด๋ฉฐ, Object๋ ํ๋ก์ธ์ค์ ๊ฐ์ด ๊ทธ class๋ฅผ ์คํํ๊ณ ์๋ ์ํ์ ๊ฒ์ด๋ค.
- Protection์ ๊ธฐ๋ณธ๋จ์์ด๋ค. ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๊ทผ๊ถํ์ ๋๋๊ฒ ๋๋ค.
- ํ๋ก์ธ์ค๋ process ID, ๊ณ ์ ์ PID๋ฅผ ๊ฐ์ง๋ฉฐ ์ด ๊ฐ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ํน์ ํ ์ ์๋ค.ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค๋ฉด?
ํ๋๋์คํฌ ๋ฑ์ ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก์ธ์ค๊ฐ ๋ก๋ฉ๋๊ฒ ๋๋ค. ์ ๊ทธ๋ฆผ์ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋งต (์ํ)๋ฅผ ๊ฐ๋ตํ๊ฒ ๋ํ๋ด์๋ค. ํ๋ก์ธ์ค๋ ๊ณ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
๐ก ํ๋ก์ธ์ค์ ์์ฑ
ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ๋์ ์ปดํจํฐ์์๋ ์๋์ ๊ฐ์ ์ผ๋ จ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๊ฒ ๋๋ค.
1. ํ๋ก์ธ์ค์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ก๊ทธ๋จ์ด ๋ก๋ฉ๋๋ค
ํ๋ก๊ทธ๋จ์ ๋์คํฌ ๊ณต๊ฐ์ ์คํ๊ฐ๋ฅํ ํฌ๋งท์ผ๋ก ์กด์ฌํ๊ณ ์๋คOS๋ ํ๋ก์ธ์ค๋ฅผ ๊ฒ์ผ๋ฅด๊ฒ lazily ํ๊ฒ ๋ถ๋ฌ์จ๋ค (ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด์ ๋์ ์ผ๋ก ์ฝ๋๋ ๋ฐ์ดํฐ์ ์กฐ๊ฐ์ ๋ถ๋ฌ๋ค์ธ๋ค๋ ๋ป)
2. ํ๋ก๊ทธ๋จ์ ๋ฐํ์ ์คํ stack์ด ํ ๋น๋๋ค
ํ๋ก๊ทธ๋จ์ ์คํ์ ์ง์ญ ๋ณ์, ํจ์ ์ธ์๋ค ๊ทธ๋ฆฌ๊ณ ๋ฐํ ์ฃผ์ ๊ฐ๋ฑ์ ์ ์ฅํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๊ฒ ๋๋ค
main() ํจ์์ argc ์ argv ๋ฐฐ์ด๋ฑ์ด ์คํ์ ์ ์ฅ๋์ด ์ ๋ฌ๋๋ค
3. ํ๋ก๊ทธ๋จ์ ํ heap์ด ์์ฑ๋๋ค
ํ์ ๋์ ์ผ๋ก ํ ๋น๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ด์ฉ๋๋ค
malloc()๊ณผ ๊ฐ์ ํจ์๋ก ๋์ ํ ๋น์ ์์ฒญํ๊ณ , free()์ ๊ฐ์ ํจ์๋ก ํ ๋น ํด์ ํ ์ ์๋ค
4. OS๊ฐ ๋ค๋ฅธ ์ฌ๋ฌ๊ฐ์ง ์ผ๋ค์ ์ด๊ธฐํํ๋ค
์ ์ถ๋ ฅ IO ๋ฅผ ์ค์ ํ๋ค. ๊ฐ ํ๋ก์ธ์ค๋ 3๊ฐ์ง ํ์ผ ๋์คํฌ๋ฆฝํฐ file descriptor๋ค์ ์ค์ ํ๋ค. (stdinp, stdout, stderr) ๊ทธ๋ฆฌ๊ณ main() ์ด๋ผ๋ ์์์ ์์ ๋ถํฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค
๐ก ํ๋ก์ธ์ค์ ์ํ
ํ๋ก์ธ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ ๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง๋ค.
- Running
- ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์์ ์ํ์ฌ ์คํ ์ค์ธ ์ํ
- Ready
- ํ๋ก์ธ์ค๊ฐ ์คํํ ์ค๋น๊ฐ ๋์์ง๋ง ์ด๋ ํ ์ด์ ๋ก ์ธํด OS๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ง ์์ ์ํ
- Blocked
- ์ด๋ ํ ์์ฒญ์ ๋ณด๋ด๊ณ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํด ๋๊ธฐํ๋ ์ํ
- ํ๋ก์์ค๊ฐ I/O ์์ฒญ์ ๋์คํฌ๋ก ๋ณด๋์๋, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก blocked ์ํ๋ก ๋ง๋ ๋ค
๐ก ํ๋ก์ธ์ค์ ์ข ๋ฃ
ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋ค.
1. Normal exit
return ๋ฌธ์ ์ํ์ฌ ์์ฐ์ค๋ฝ๊ฒ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ. ์์์ ์ผ๋ก ์ข ๋ฃ๋๋ฏ๋ก voluntaryํ๋ค.
2. Error exit
๋ง์ฐฌ๊ฐ์ง๋ก return ๋ฌธ์ ์ํ์ฌ ์ข ๋ฃ๋์ง๋ง, ์๋ฌ์ฒ๋ฆฌ๋ฅผ ์ํด -1 ๊ณผ ๊ฐ์ ๊ฐ์ ๋ฐํํ์ฌ ์๋ฌ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์ด๋ค.
3. Fatal error
Segmentation fault, protection fault ๋๋ ํ ๋น ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ๋ฑ์ ์ด์ ๋ก ๊ฐ์ ์ข ๋ฃ ๋นํ๋ ๊ฒฝ์ฐ์ด๋ค. ๋น์ฐํ involuntaryํ๋ค.
4. Killed by another process
์ธ๋ถ ํ๋ก์ธ์ค(์ ํธ)๋ก ์ธํด ์ข ๋ฃ๋นํ ์ ์๋ค.์๋ก ํฐ๋ฏธ๋์์ Ctrl + C ์ ๊ฐ์ด ์ข ๋ฃ ์๊ทธ๋์ ๋ณด๋ด๋ ๊ฒฝ์ฐ์ด๋ค.
ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์์ง๋ง, ์ ์ ํ๊ณ ์๋ ์์๋ฑ์ด ๊ทธ๋๋ก ๋จ์ Zombie ํ๋ก์ธ์ค๋ก ๋จ์์๋ ๊ฒฝ์ฐ ๋ํ ์กด์ฌํ๋ค.
๐ก ํ๋ก์ธ์ค์ ๊ตฌํ
์ค์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ด์์ฒด์ ์์ ๊ตฌํํ๊ธฐ ์ํด์๋ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ํ๋ค.ํ๋ก์ธ์ค์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์งํฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ Process Control Block (PCB) ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
CPU ๋ ์ง์คํฐ, PID, PPID, ํ๋ก์ธ์ค ๊ทธ๋ฃน, ์ฐ์ ์์, CPU ์ค์ผ์ค๋ง์ ๋ณด, IO ์ํ๋ฑ๋ฑ ์ด ๋ค์ด๊ฐ๋ค.
๋ฆฌ๋ ์ค์์๋ task_struct ์ ๊ตฌ์กฐ์ฒด์ ์ด๋ฌํ ์ ๋ณด๋ค์ด ์ ์ฅ๋๋ค.
'Computer Science > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] ์ปจํ ์คํธ ์ค์์น(Context Switch)๋? (0) | 2022.04.10 |
---|---|
์ด์์ฒด์ (Operating System) - ์ด์์ฒด์ ๋ ๋ฌด์์ธ๊ฐ? (0) | 2022.03.03 |