[ CS > ์ด์์ฒด์ ]
[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋
ํ๋ก์ธ์ค์ ์ค๋ ๋
ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ์ค๋ช ํ๊ธฐ ์ ์ ํ๋ก๊ทธ๋จ(Program)์ ๋ํด์ ์์์ผ ํ๋ค. ํ๋ก๊ทธ๋จ์ "์ด๋ค ์์ ์ ์ํด ์คํ๋ ์ ์๋ ํ์ผ"๋ก์จ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์กด์ฌํ์ฌ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ช ๋ น์ด์ ์ ์ ๋ฐ์ดํฐ ๋ฌถ์์ด๋ค.
1. ํ๋ก์ธ์ค(Process)
ํ๋ก์ธ์ค๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ณ ์์ด ๋ฉ๋ชจ๋ฆฌ(์ฃผ๊ธฐ์ต ์ฅ์น, ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ, RAM)์ ์ฌ๋ผ์จ ์ธ์คํด์ค์ด๋ค. ๋ณด์กฐ ๊ธฐ์ต์ฅ์น(ํ๋๋์คํฌ, ROM)์ ์ ์ฅ๋ ์ฝ๋๋ญ์น์ ์ ์ ๋ฐ์ดํฐ๊ฐ ์คํ์ ์ํด ๋ฉ๋ชจ๋ฆฌ(RAM)์ ํ ๋น๋ ๊ฒ์ ํ๋ก์ธ์ค๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ๋๋ ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๋ก๋ถํฐ ์์คํ ์์์ ํ ๋น๋ฐ๋ ์์ ์ ๋จ์์ด๋ฉฐ ์คํ๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํ๋ค.

ํ๋ก์ธ์ค๋ Code, Data, Stack, Heap ์์ญ 4๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๋ค.
์ฝ๋(Code): ํจ์ ์ฝ๋๋ค์ด ์กด์ฌ
๋ฐ์ดํฐ(Data): ์ ์ญ ๋ณ์์ Static ๋ณ์ ์ ์ฅ ๊ณต๊ฐ
์คํ(Stack): ์ฝ๋ ์คํ์ ์์ฑ๋๋ ์ง์ญ ๋ณ์, ๋งค๊ฐ ๋ณ์, ๋ฆฌํด ์ฃผ์๋ฑ์ด ์กด์ฌํ๋ ์์ญ(์ฝ๋ ์คํ์ ์ํ ์์ญ)
ํ(Heap): ๋ฐํ์ ์ค์ ๋์ ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
2. ์ค๋ ๋(Thread)
"ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์"๋ก์จ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ ๋จ์์ด๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ์ต์ 1๊ฐ ์ด์์ ์ค๋ ๋๋ฅผ ํ ๋น๋ฐ๊ณ , ์ฝ๋, ๋ฐ์ดํฐ, ํ ์์ญ์ ํ๋ก์ธ์ค ๋ด์์ ๊ณต์ ํ๊ณ , ์คํ์ ์ค๋ ๋๋ณ๋ก ๊ฐ์ง๊ฒ ๋๋ค.

3. PCB์ TCB
ํ๋ก์ธ์ค์ ์ค๋ ๋๋ PCB(Process Control Block)์ TCB(Thread control Block)์ ์ ๋ณด๋ฅผ ํตํด ์ ์ด ๋๋ค. PCB๋ ๋ฉ๋ชจ๋ฆฌ์ ์ปค๋ ์์ญ์ ์๊ณ , TCB๋ PCB์ ํฌํจ๋์ด ์๋ค. ๋ฉ๋ชจ๋ฆฌ๋ ์ปค๋ ์์ญ์ PCB๋ฅผ ํ ์ด๋ธ ํํ๋ก ๊ด๋ฆฌ๋ฅผ ํ๋ฉฐ, ์ด PCB์๋ ๋ค์ ์คํํ ์ฝ๋๋ฅผ ๋ํ๋ด๋ PC(Program Counter), Process State(ํ๋ก์ธ์ค ์ํ), Pointer ์ ๋ณด ๋ฑ์ด ๋ด๊ฒจ ์๊ณ , TCB๋ ๋ถ๋ชจ PCB ํฌ์ธํฐ, Stack ํฌ์ธํฐ, ์ค๋ ๋ ์ํ, PC ๋ฑ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
ํ๋ก์ธ์ค PCB |
์ฐ๋ ๋ TCB | ||||||||||||||||||||||||||||||
์ ํ์์ CPU๊ฐ ๋ง์ง๋ง ๊น์ง ์คํ ์ํ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ ์ค์ํ ๋ถ๋ถ์ Status(์ํ), PC, SP(ํฌ์ธํฐ)์ด๋ค. SP๋ ๊ฐ์ฅ ์ต๊ทผ๊น์ง ์คํํ ์ฝ๋ ๋ถ๋ถ์ ๋ง์ง๋ง ์ฃผ์ ๋ถ๋ถ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๊ณ , PC๋ ๋ค์์ ์คํํ ์ฝ๋๊ฐ ๋ฌด์์ธ์ง๋ฅผ ๋ํ๋ด๊ณ , Status๋ Blocked๋ ์ํ์ธ์ง, ์คํ ์ค์ธ ์ํ์ธ์ง ๋ฑ์ ํ์ ํ ์ ์๋ ๊ฐ์ด๋ค. ๊ทธ๋์ CPU๋ ์คํ๋์ค ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ฌ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํด์ผํ ๊ฒฝ์ฐ ์ต๊ทผ๊น์ง ์คํํ ์ ๋ณด๋ฅผ PCB์ TCB์ ๋ด์๋๊ณ ๋ค์ ํด๋น ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ ์ฌ์ฉํ๊ฒ ๋๋ค.
3.1 PCB, TCB ๊ทธ๋ฆฌ๊ณ ์ปจํ ์คํธ ์ค์์นญ
PCB์ TCB๋ ์ด์์ฒด์ ์์ CPU์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋๋ฐ ์ฌ์ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ CPU์์๋ CPU์ PCB์ ์ ๋ณด๋ฅผ ํตํด ๊ธฐ์กด ์ฒ๋ฆฌ ์ค์ด๋ ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ์์ ์ ์ด์ด ๋๊ฐ๊ณ ์ธํฐ๋ฝํธ๊ฐ ์๊ธฐ๋ฉด ๋ค์ PCB๋ TCB์ ์ ์ฅ์ ํ๋ค.

์ปจํ ์คํธ ์ค์์นญ์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ ์ธํฐ๋ฝํธ๋ก ์ผ์ด๋๋ค.
์์ | ์ค๋ช | |
|---|---|---|
์๋ฐ์ ์ธํฐ๋ฝํธ | ์์คํ ์ฝ (System Call) | ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ OS์ ๊ธฐ๋ฅ์ ์์ฒญํ ๋, ์: read(), write() |
์ ์ถ๋ ฅ ์์ฒญ | CPU๊ฐ ์๋๋ผ ๋์คํฌ๋ ๋คํธ์ํฌ I/O๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ CPU๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์๋ณด | |
sleep(), wait() ๋ฑ ๋๊ธฐ ํธ์ถ | ๋ช ์์ ์ผ๋ก ๋ธ๋กํน ํธ์ถ์ ํ๋ ๊ฒฝ์ฐ | |
yield() ํธ์ถ | ๋ช ์์ ์ผ๋ก CPU๋ฅผ ๋ค๋ฅธ ์ค๋ ๋์๊ฒ ์๋ณดํจ (์ ์ ์) | |
๋น์๋ฐ์ ์ธํฐ๋ฝํธ | ํ์ด๋จธ ์ธํฐ๋ฝํธ (Time Slice Expiry) | ํ์ ์ฌ๋ผ์ด์ฑ ์๊ฐ ๋๋์ ๊ฐ์ ๋ก ๋ฌธ๋งฅ ์ ํ |
ํ์ด์ง ํดํธ (Page Fault) | ์ ๊ทผํ๋ ค๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ฌ RAM์ ์์ด์ OS๊ฐ ๊ฐ์ | |
์์ธ (์: 0์ผ๋ก ๋๋๊ธฐ, ๋ถ๋ฒ ๋ช ๋ น์ด) | CPU ์คํ ์ค ์ค๋ฅ ๋ฐ์, OS๊ฐ ๊ฐ์ | |
์ธ๋ถ ์ธํฐ๋ฝํธ (ํ๋์จ์ด ์ธํฐ๋ฝํธ) | ๋์คํฌ, ๋คํธ์ํฌ, ํค๋ณด๋ ๋ฑ์ ์ฅ์น๊ฐ CPU์ ์๋ฆผ | |
๊ณ ์ฐ์ ์์ ํ๋ก์ธ์ค ๋ฑ์ฅ (Preemption) | ๋ ์ค์ํ ํ๋ก์ธ์ค๊ฐ ์๊ฒจ์ ํ์ฌ ํ๋ก์ธ์ค ์ค๋จ |
๊ทธ๋ฆฌ๊ณ PCB์ TCB๋ ํ์ ๋ด๊ฒจ์ ธ์ OS๊ฐ ํ์์ PCB์ ์ ๋ณด๋ฅผ ๊บผ๋ด๊ณ CPU์์๋ ๊ทธ PCB์ ์ ๋ณด๋ฅผ ํ ๋๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋๋ฐ, ์ด ํ๊ฐ 2๊ฐ์ง๊ฐ ์๋ค. ๋ฐ๋ก Ready Queue์ Blocked Queue๋ค. ์ฌ๊ธฐ์ Blocked Queue๋ ์คํ ๋์ค์ ์๋ฐ์ ๋ฌธ๋งฅ ๊ตํ์ผ ๊ฒฝ์ฐ์๋ง ๋ด๊ฒจ์ง๊ฒ ๋๊ณ , ๋๋จธ์ง์ ๊ฒฝ์ฐ์๋ Ready Queue์ ๋ด๊ฒจ์ง๊ฑฐ๋ ์ข ๋ฃ์ํ๊ฐ ๋ ์ ์๋ค.
ํญ๋ชฉ | Ready Queue (์ค๋น ๋ฆฌ์คํธ) | Blocked Queue (๋๊ธฐ ๋ฆฌ์คํธ) |
|---|---|---|
์ํ | ์คํ ์ค๋น ์๋ฃ | ์ด๋ฒคํธ(I/O ๋ฑ) ๋๊ธฐ ์ค |
CPU ํ ๋น ๊ฐ๋ฅ์ฑ | ๊ณง ํ ๋น ๊ฐ๋ฅ | CPU ๋ชป ์ |
ํธ๋ฆฌ๊ฑฐ | CPU ์๊ฐ ํ ๋น ์ ์คํ | I/O ์์ฒญ ๋ฑ์ผ๋ก ๋๊ธฐ |
ํ์ฌ ์ํ | Ready | Blocked |
๋ค์ ์ํ | Running | Ready (์ด๋ฒคํธ ์๋ฃ ์) |
4. ๋ฉํฐ ํ์คํน, ๋ฉํฐ ํ๋ก์ธ์ค, ๋ฉํฐ ์ค๋ ๋ฉ
์ฐ๋ฆฌ๋ ๋ฉํฐ ํ๋ก์ธ์ค, ๋ฉํฐ ์ค๋ ํ , ๋ฉํฐ ํ์คํน๊ฐ์ ๋จ์ด๋ฅผ ๋ง์ด ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ ๋ฌด์จ ์๋ฏธ์ธ์ง ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
์ค๋ช | ํน์ง | |
|---|---|---|
๋ฉํฐ ํ์คํน | ํ๋์ CPU ์ฝ์ด์์ ์ฌ๋ฌ ์์ ์ ๋น ๋ฅด๊ฒ ๋ฒ๊ฐ์ ์คํํ์ฌ ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ธฐ๋ฒ |
|
๋ฉํฐ ํ๋ก์ธ์ค | ์ฌ๋ฌ ๋ ๋ฆฝ๋ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋๋ ๊ฒ |
|
๋ฉํฐ ์ค๋ ๋ฉ | ํ๋์ ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ์์ ํ๋ ๊ฒ์ผ๋ก ์ค๋ ๋๋ค์ ๋ ๋ฆฝ๋ ์คํ์ ๊ฐ์ง๋ฉฐ ๋ค๋ฅธ ์์์ ๊ณต์ ํจ |
|
๋ง๋ฌด๋ฆฌ
ํ๋ฒ์ ๋๋ฌด ๋ง์ ๊ฐ๋ ์ ๊ฐ์ ธ์จ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ค...
CPU์ ์์ ์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ํ๋ก์ธ์ค์ PCB, ์ค๋ ๋์ TCB์ ์ ๋ณด๋ฅผ ํ์ฉํ๊ณ ๋ค์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด PCB์ TCB๊ฐ ์์ ์ ์ค๋จ ํ๋ค๊ฐ ๋ค์ ์ด์ด์ ํ ์ ์๋๋ก ๋ง๋ค์ด ์ฃผ๋ ์ ๋ณด์ด๊ณ , ์ด๋ฌํ ๋งค์ปค๋์ฆ์ผ๋ก OS๋ ์๋ถํ ๋ฐฉ์์ผ๋ก CPU์ ํ๋ก์ธ์ค๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ํ ๋นํด์ค๋ค. ๊ทธ๋ ๊ธฐ์ ๋ฉํฐ ํ์คํน, ๋ฉํฐ ํ๋ก์ธ์ค, ๋ฉํฐ ์ค๋ ๋ฉ์ด ๊ฐ๋ฅํ๊ฒ๋ ๊ฒ์ด๋ค.

