1. ํ๋ก์ธ์ค ๊ด๋ฆฌ
- ํ๋ก์ธ์ค(process)๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ(program in execution)์ ๋งํ๋ค.
- ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ(context)์ด๋ ํ๋ก์ธ์ค๊ฐ ํ์ฌ ์ด๋ค ์ํ์์ ์ํ๋๊ณ ์๋์ง ์ ํํ ๊ท๋ช
ํ๊ธฐ ์ํด ํ์ํ ์ ๋ณด๋ฅผ ์๋ฏธํ๋ค.
- ํ๋์จ์ด ๋ฌธ๋งฅ : CPU์ ์ํ ์ํ๋ฅผ ๋ํ๋. ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ๊ณผ ๊ฐ์ข ๋ ์ง์คํฐ์ ์ ์ฅํ๊ณ ์๋ ๊ฐ์ ๋งํ๋ค.
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ(์ฝ๋, ๋ฐ์ดํฐ, ์คํ)
- ์ปค๋์์ ๋ฌธ๋งฅ : PCB์ ์ปค๋์คํ
2. ํ๋ก์ธ์ค์ ์ํ
ํ๋ก์ธ์ค์ ์ํ 3๊ฐ์ง
- ์คํ(running) : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๋ณด์ ํ๊ณ ๊ธฐ๊ณ์ด ๋ช ๋ น์ ์คํํ๊ณ ์๋ ์ํ
- ์ค๋น(ready) : ํ๋ก์ธ์ค๊ฐ CPU๋ง ๋ณด์ ํ๋ฉด ๋น์ฅ ๋ช ๋ น์ ์คํํ ์ ์์ง๋ง CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ ์ํ
- ๋ด์(blocked, wait, sleep) : CPU๋ฅผ ํ ๋น๋ฐ๋๋ผ๋ ๋น์ฅ ๋ช ๋ น์ ์คํํ ์ ์๋ ํ๋ก์ธ์ค์ ์ํ
๋ฌธ๋งฅ๊ตํ(context switch)
- ์คํ์ํฌ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์๋ ์ํ ์ค์ด๋ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ ์ ์ฅํ๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ ์ธํ ํ๋ ๊ณผ์
CPU ๋์คํจ์น(dispatch)
- ๋ฌธ๋งฅ๊ตํ์ด ์ผ์ด๋ ๋ ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค ์ค์์ CPU๋ฅผ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ ํํ ํ ์ค์ ๋ก CPU์ ์ ์ด๊ถ์ ๋๊ฒจ๋ฐ๋ ๊ณผ์
3. ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก
ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก(Process Control Block: PCB)
- ์ด์์ฒด์ ๊ฐ ์์คํ
๋ด์ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋ง๋ค ์ ์งํ๋ ์ ๋ณด๋ค์ ๋ด๋ ์ปค๋ ๋ด์ ์๋ฃ๊ตฌ์กฐ
- ํ๋ก์ธ์ค์ ์ํ : CPU๋ฅผ ํ ๋นํด๋ ๋๋์ง ๊ฒฐ์ ์ ํ์ํ๋ค
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ์ ๊ฐ : ๋ค์์ ์ํํ ๋ช ๋ น์ ์์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค
- CPU ๋ ์ง์คํฐ์ ๊ฐ : CPU ์ฐ์ฐ์ ์ํด ํ์์ ์ ๋ ์ง์คํฐ์ ์ด๋ค ๊ฐ์ ์ ์ฅํ๊ณ ์๋์ง๋ฅผ ๋ํ๋ธ๋ค
- CPU ์ค์ผ์ฅด๋ง ์ ๋ณด : ๊ฐ๊ฐ ๊ทธ ํ๋ก์ธ์ค์ CPU ์ค์ผ์ฅด๋ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ํด ํ์ํ ์ ๋ณด์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด : ๊ฐ๊ฐ ๊ทธ ํ๋ก์ธ์ค์ CPU ์ค์ผ์ฅด๋ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ํด ํ์ํ ์ ๋ณด์ด๋ค.
- ์์ ์ฌ์ฉ ์ ๋ณด : ์ฌ์ฉ์์๊ฒ ์์ ์ฌ์ฉ ์๊ธ์ ๊ณ์ฐํด ์ฒญ๊ตฌํ๋ ๋ฑ์ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
- ์ ์ถ๋ ฅ ์ํ ์ ๋ณด : ํ๋ก์ธ์ค๊ฐ ์คํํ ํ์ผ ์ ๋ณด ๋ฑ ํ๋ก์ธ์ค์ ์ ์ถ๋ ฅ ๊ด๋ จ ์ํ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
4. ๋ฌธ๋งฅ๊ตํ
- ํ๋์ ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ก๋ถํฐ ๋ค๋ฅธ ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ก CPU์ ์ ์ด๊ถ์ด ์ด์๋๋ ๊ณผ์ ์ ๋งํ๋ค.
- ๋ฌธ๋งฅ๊ตํ์ ์์๋๋ ์๊ฐ์ ์์คํ ์ ์ฅ์์ ๋ณผ ๋ ์ผ์ข ์ ์ค๋ฒํค๋๋ผ๊ณ ํ ์ ์๋๋ฐ, ๋ฌธ๋งฅ๊ตํ ์ค์ ์ผ์ด๋๋ ์์ ์ด ์ค์ ์์คํ ์๊ฒ ์ ์ฉํ ์์ ์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
5. ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํ ํ
- ์ค๋น ํ(ready queue) : ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค์ ์ค ์ธ์ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์ค๋น ํ์ ์ ์ผ ์์ ์๋ ํ๋ก์ธ์ค์ ์ ์ผ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ค.
- ์ฅ์น ํ(device queue) : ํน์ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค์ ์ค ์ธ์ฐ๊ธฐ ์ํด ์์๋ณ๋ก ์ฅ์น ํ๋ฅผ ๋๋ค.
- ์์ ํ(job queue) : ์์คํ ๋ด์ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ
- ํ๋ก์ธ์ค์ ์ํ ๊ด๋ฆฌ๋ ์ปค๋์ ์ฃผ์ ์์ญ ์ค ๋ฐ์ดํฐ ์์ญ์ ๋ค์ํ ํ๋ฅผ ๋์ด ์ํํ๋ค.
6. ์ค์ผ์ฅด๋ฌ
์ค์ผ์ฅด๋ฌ : ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ์์์ ํ ๋นํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ด์์ฒด์ ์ปค๋์ ์ฝ๋๋ฅผ ๋งํ๋ค.
- ์ฅ๊ธฐ ์ค์ผ์ฅด๋ฌ = ์์
์ค์ผ์ค๋ฌ
- ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ์ค๋น ํ์ ์ง์ ์ํฌ์ง ๊ฒฐ์
- ํ๋ก์ธ์ค์๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๋ฌธ์ ์ ๊ด์ฌํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๋์์ ์ฌ๋ผ๊ฐ ์๋ ํ๋ก์ธ์ค์ ์๋ฅผ ์กฐ์ ํ๋ค.
- ๋จ๊ธฐ ์ค์ผ์ค๋ฌ = CPU ์ค์ผ์ค๋ฌ
- ์ค๋น ์ํ์ ํ๋ก์ธ์ค ์ค์์ ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ค์๋ฒ์ ์คํ ์ํ(CPU ํ ๋น)๋ก ๋ง๋ค ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ค.
- ์ค๊ธฐ ์ค์ผ์ค๋ฌ
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ํ๋ก์ธ์ค์ ์๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๋ค.
- ๋๋ฌด ๋ง์ ํ๋ก์ธ์ค์๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด ์์คํ ์ ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒฝ์ฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ถ๊ฐ๋ ์ค์ผ์ค๋ฌ์ด๋ค.
7. ํ๋ก์ธ์ค์ ์์ฑ
์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค ์ ๋ถ๋ฅผ ์์ฑํ์ง ์๊ณ ์์คํ ์ด ๋ถํ ๋ ํ ์ต์ด์ ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๊ฐ ์ง์ ์์ฑํ์ง๋ง ๊ทธ๋ค์๋ถํฐ๋ ์ด๋ฏธ ์กด์ฌํ๋ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ์์ฑํ๋ค.
- ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฉด ์์ ๋ง์ ๋ ์์ ์ธ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ๋๋ค.
- ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ฉด ์์ ํ๋ก์ธ์ค๋ ๋ณ๋์ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
- ํ๋ก์ธ์ค์ ์์ฑ ์ ์ฐจ (์ ๋์ค)
- 1. fork() : ์์คํ ์ฝ์ ํตํด ์๋ก์ด ํ๋ก์ธ์ค ์์ฑ. ํ๋ก์ธ์ค ID๋ฅผ ์ ์ธํ ๋ชจ๋ ์ ๋ณด(์ด์์ฒด์ ์ปค๋ ๋ด์ ์ ๋ณด์ ์ฃผ์ ๊ณต๊ฐ์ ์ ๋ณด)๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํ๋ค.
- 2. exec() : ์์คํ ์ฝ์ ํตํด ์๋ก์ด ํ๋ก๊ทธ๋จ์ผ๋ก ์ฃผ์ ๊ณต๊ฐ์ ๋ฎ์ด ์์ด๋ค.
- ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ธฐ ์ ์ ๊ทธ ์๋์ ์กด์ฌํ๋ ๋ชจ๋ ์์ ํ๋ก์ธ์ค๋ค์ด ๋จผ์ ์ข ๋ฃ๋์ด์ผ ํ๋ค.
ํ๋ก์ธ์ค ์ข ๋ฃ
- 1. ํ๋ก์ธ์ค๊ฐ ๋ง์ง๋ง ๋ช
๋ น์ ์ํํ ํ ์ด์์ฒด์ ์๊ฒ ์ด๋ฅผ ์๋ ค ์ด๋ฃจ์ด์ง๋ ์๋ฐ์ ์ข
๋ฃ
- exit()
- 2. ๋น์๋ฐ์ ์ข
๋ฃ๋ก ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์์ ํ๋ก์ธ์ค์ ์ํ์ ๊ฐ์ ๋ก ์ข
๋ฃ์ํค๋ ๊ฒ
- abort()
8. ํ๋ก์ธ์ค ๊ฐ์ ํ๋ ฅ
ํ๋ก์ธ์ค๋ ๊ฐ์ ์์ ๋ง์ ๋ ๋ฆฝ์ ์ธ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์ํ๋๋ฉฐ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ์ฐธ์กฐํ๋ ๊ฒ์ ํ์ฉ๋์ง ์๋๋ค.
ํ๋ก์ธ์ค ๊ฐ์ ํ๋ ฅ ๋ฉ์ปค๋์ฆ
- IPC(inter-Process Communication) : ํ๋์ ์ปดํจํฐ ์์์ ์คํ ์ค์ธ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ํ๋ ํต์
- ์์ฌ์ํต ๊ธฐ๋ฅ๊ณผ ๋๊ธฐํ๋ฅผ ๋ณด์ฅํด์ฃผ์ด์ผ ํ๋ค.
- ๋ฉ์์ง ์ ๋ฌ(message passing) ๋ฐฉ์(๊ณต์ ๋ฐ์ดํฐ X)๊ณผ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ(shared memory) ๋ฐฉ์(๊ณต์ ๋ฐ์ดํฐ O)์ด ์๋ค.
๋๊ธ