์ฐ๋ ๋๋ ์ ์ฌ์ฉํ ๊น?
์ค๋ ๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๋ฐฐ๊ฒฝ๋ ์์ ๊ฒ์ด๋ค. ์ด์ ๋ ํ๋ก์ธ์ค์ ๋ฌธ์ ์  ๋๋ฌธ์ด๋ค.
- ํ๋ก์ธ์ค์์ ์ปจํ
์คํธ ์ค์์นญ์ด ๋ฐ์ํ  ๊ฒฝ์ฐ, ํ๋ก์ธ์ค ์์ฑ์ ๋๋ฌด ๋ง์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค
- ํ๋ก์ธ์ค ์์ฑ์ PCB ์์ฑ, ๋ฉ๋ชจ๋ฆฌ ํ ๋น, ๋ถ๋ชจ ํ๋ก์ธ์ค ๋ด์ฉ ๋ณต์ฌ ๋ฑ ๋ง์ ์์ ์ ํด์ผํ๋ค.
 - ๊ทธ ์ธ์๋ ๋ค์ ๋์ฌ ํ์ด์ง ํ ์ด๋ธ ์ฐธ์กฐ, ์บ์ ์ ๋ฐ์ดํธ ๋ฑ ๋ง์ ๋ถ๋ถ์์ ๋ฌธ์ ์ ์ด ๋ฐ์
 
 - ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ด ์ด๋ ต๋ค.
- ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ์ ๊ฐ๊ณ ์์ผ๋ฏ๋ก ์๋ก ์นจ๋ฒํ ์ ์์ด์ ํต์ ์ด ํ๋ค๋ค๋ ์ .
 - ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋งต, ํ์ดํ, ์์ผ ๋ฑ ๋ค์ํ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
 
 
ํ๋ก์ธ์ค๋ ์ ๋ ฅ์ ๋ ์ ํ๋ ForeGorund Process์ ๊ฐ์ข ์ฒ๋ฆฌ๋ฅผ ํ๋ BackGround Process๊ฐ ์กด์ฌํ๋ค.
๊ทธ ์ธ์๋ CPU ์ฒ๋ฆฌ๋ง ์ง์คํ๋ CPU ์ง์ค ํ๋ก์ธ์ค Interrupt๋ฅผ ๋ค๋ฃจ๋ I/O ์ง์ค ํ๋ก์ธ์ค๋ ์กด์ฌํ๋ค.
์์ ๊ฐ์ด ์ญํ ์ด ๋๋์ด์ ธ์๋ ํ๋ก์ธ์ค๊ฐ ์กด์ฌํ ๋, Foreground ์ ๋ํด Background๊ฐ ์ฒ๋ฆฌํ๊ณ ์ถ์ด๋ Foreground ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ ํ ์ ์๋ค. ๊ทธ๋์ ๋ค์ํ ํ๋ก์ธ์ค ํต์ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์ ์ด ์์๋ค.
์์๊ฐ์ ๋ฌธ์ ๋ก ์ค๋ ๋๋ผ๋ ๊ฐ๋ ์ ์๊ฐํ๊ฒ ๋์๋ค.
์ด์ฐจํผ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด fork() ์ ๊ฐ์ ํ๋ก์ธ์ค ์์ฑ System Call์ ํตํด ์์ ์ ์ฒ๋ฆฌํ๋๋ฐ, ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ํด์ Foreground์ Background์์ ์ ๊ทผํ๋ ค๊ณ ํ๋๋ฐ ๋์ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์ ์๋ค. ๋ง์ฝ ํ๋ก์ธ์ค๋ฅผ ํ๋์ ๊ณต์ ๊ณต๊ฐ์ผ๋ก ๋๊ณ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ๊ฐ๋ ์ด ์์ผ๋ฉด ์ด๋จ๊น? ๊ทธ๊ฒ ์ค๋ ๋๋ค.
์ฆ, ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๊ด๊ณ๋ฅผ ์๋์ ๊ฐ์ด ์ ์ํ๋ค.
1. ํ๋ก์ธ์ค๋ ์์ ์์ ์์ ๋จ์๊ฐ ๋๋ค (Container)
ํ๋ก์ธ์ค๋ PCB ์ ๋ณด์, ๋ฉ๋ชจ๋ฆฌ ์์ญ, I/O ๋ฑ ์ฅ์น์ ๋ํ ์ ์ด๊ถ์ด ํ์ํ๋ค.
2. ์ค๋ ๋๋ ์คํ ๋จ์๊ฐ ๋๋ค.
์ค๋ ๋๋ ํ๋ก์ธ์ค๋ณด๋ค ๋ ์์ ์คํ ๋จ์๊ฐ ๋์ด ์ค๋ฒํค๋๋ฅผ ๊ฐ์ ์์ผ ๋น ๋ฅธ ์ปจํ ์คํธ ์ค์์นญ์ ํ๋ค.
์ด ๋ฐฉ๋ฒ์ ํ๋ก์ธ์ค์ ๋ณต์กํ ํต์ , ์คํ ์๋๋ฅผ ๊ฐ์ ํ๋ค.
๋ค์ค ์ค๋ ๋ (Multi Threading)
์ค๋ ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด foreground thread๋ก ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ํ๋ก์ธ์ค ๋ด ๊ณต์ ๊ณต๊ฐ์ ํตํด background์์ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ ํ๋๋ก ํ๋ค. ์ฆ, Asynchronous๋ก ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ์ด๋ค. ์ด ๋, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ํ์๊ฐ ์์ผ๋ ์ํ์๊ฐ์ด๋ ๋ณต์ก๋๊ฐ ๋ง์ด ๋จ์ถ๋๋ค. ๊ทธ ์ธ์๋ ์คํ์๋ ์ธก๋ฉด์ด๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ์์ ๋ง์ด ์ฌ์ฉ๋๋๋ฐ ์ด๋ ๊ฒ ํ๋์ ํ๋ก์ธ์ค์ ์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์๋ ๊ฒ์ ๋ค์ค ์ค๋ ๋๋ผ๊ณ ํ๋ค.
๋ฉํฐ ์ค๋ ๋์์๋ Concurrency์ parallelism์ด ๋ฐ์ํ๋ค.
์ด ๊ฒ์ ์ด์ ์ผ ์๋ ์๊ณ ๋จ์ ์ผ ์๋ ์๋ค.
Concurrency(๋์์ฑ)์ 1๊ฐ์ CPU์์ 2๊ฐ์ ์ด์์ ์ค๋ ๋๊ฐ ๋์์ ์คํ์ค์ธ ์ํ์ด๋ค.
Time Slice์ ๋ฐ๋ผ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด์ ์์ ์ฒ๋ฆฌ์๋๊ฐ ๋งค์ฐ๋นจ๋ผ์ง๋ ์ฅ์ ์ด ์๊ณ Idle ํ์์ด ๊ฑฐ์ ์ค์ด๋๋ ์ฅ์ ์ด ์๋ค. ๋ฐ๋ฉด์ ์ค๋ ๋1์์ ์ฒ๋ฆฌ๊ฐ ๋ค ๋๋์ง ์๊ณ interrupt ๋๋ time slice ์ด๊ณผ๋ก ์ค๋ ๋2๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋๋ ์ํฉ์ด ๋ฐ์ํ๋ค๊ณ ์๊ฐํด๋ณด์. ์ค๋ ๋1๊ณผ ์ค๋ ๋2๊ฐ ๋ ๋ค A๋ผ๋ ์์์ ์ฌ์ฉํ๊ฒ ๋์์ ๋, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์์๋ก A์ 1000๋ง์์ด ์๊ณ ์ค๋ ๋ 1์์ 700๋ง์, ์ค๋ ๋ 2์์ 500๋ง์์ ๊ฐ์ ธ๊ฐ๋ค๊ณ ํด๋ณด์. A๋ ํ ๋ฒ์ 100๋ง์์ฉ๋ง ์ถ๊ธํ ์ ์๋๋ก ์ค๊ณ๋์๋ค.
์ ์์ ์ธ ์ํฉ์ด๋ผ๋ฉด ์ค๋ ๋1์์ 700๋ง์, ์ค๋ ๋2์์ 300๋ง์๋ง ๊ฐ์ ธ๊ฐ๊ฑฐ๋ ์์ก์ด ๋ถ์กฑํ๋ค๋ ์๋ด๋ฅผ ๋ฐ์์ผ ํ๋ค.
ํ์ง๋ง ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์๋ ์ค๋ ๋1์์ 100๋ง์, ์ค๋ ๋2์์ 100๋ง์์ฉ ๊ฐ์ ธ๊ฐ๋ฉด์ ๊ฐ ๊ฐ 500๋ง์์ฉ ๊ฐ์ ธ๊ฐ๊ฒ ๋๋ค. ์ด๋ฌ๋ฉด ์ค๋ ๋1์ ๋จผ์  ์คํ๋์์์๋ ๋ถ๊ตฌํ๊ณ 500๋ง์๋ฐ์ ์ฑ๊ธฐ์ง ๋ชปํ๋ค.
Parallelism(๋ณ๋ ฌ์ฑ)์ 2๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋ค๋ฅธ CPU์์ ๊ฐ์ ์๊ฐ์ ๋์์ ์คํ๋๋ ๊ฒ์ด๋ค.
์ด๊ฒ ๋ํ, ๋์์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง์ ์ฅ์ ๊ณผ ๋จ์ ์ด ๋ฐ์ํ๋ค.
์ด๋ฐ ๋ฌธ์ ์ ์ ๋๊ธฐํ ๋ฌธ์ ๋ผ๊ณ ํ๋๋ฐ ์ดํ์ ๋ค๋ฃฐ ๋ด์ฉ์ด๋ค.
์ ๋ฆฌ
- ์ค๋ ๋๋ ์คํ ๋ฐ ์ค์ผ์ค๋ง ๋จ์์ด๋ค.
- ๊ฐ๋ฐ์์๊ฒ๋ ์์ ๋จ์๊ฐ ๋๋ค.
 - OS์์๋ ์คํ๋จ์, CPU์์๋ ์ค์ผ์ค๋ง ๋จ์๊ฐ ๋๋ค.
 - Process์ ์ฝ๋, ๋ฐ์ดํฐ, ํ, ์คํ ์์ญ์ ๊ณต์ ๋ฐ์ ์ง์  ์ ์ฅํ๊ณ ์๋ ์ค์ฒด์ด๋ค.
 - Thread ๋ง๋ค TCB(Thread Control Block)์ด ์์ฑ๋๋ค.
 
 - ํ๋ก์ธ์ค๋ ์ปจํ
์ด๋ ๋จ์๊ฐ ๋์๋ค.
- ์คํ์ด ๋๋ ค๋ฉด ๋ฐ๋์ 1๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ์กด์ฌํด์ผํ๋ค.
 - ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ๋, ์๋์ผ๋ก 1๊ฐ์ main ์ค๋ ๋๋ ์์ฑ๋๋ค.
 - ๋ชจ๋ ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ๊ณต๊ฐ์ ๋๋์ด์ ์ฌ์ฉํ๋ค.
 - ์ค๋ ๋ ๊ฐ ํ๋ก์ธ์ค์ ๊ณต์ ๊ณต๊ฐ์ผ๋ก ํต์ ํ๋ค.
 
 - ์ค๋ ๋๋ ํจ์๋ก ์์ฑํ๋ค.
- Process๋ ๋ชฉ์  ํ๋ก๊ทธ๋จ์ด์์ง๋ง ์ค๋ ๋๋ ์ฝ๋์ด๋ค.
 - ์ด์์ฒด์ ์ ์ค๋ ๋ ์์ฑ์ด ์์ฒญ๋๋ฉด ํจ์ ์ฃผ์๋ฅผ ์ค๋ ๋ ์์์ฃผ์๋ก TCB์ ๋ฑ๋กํ๋ค.
 - TCB List๊ฐ ์์ฑ๋์ด ์ค๋ ๋ ๋จ์๋ก ์ค์ผ์คํ๋ฉฐ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌํ๋ค.
 
 - ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์๋ช
์ ๊ณต์ ํ๋ค.
- ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ์ค๋ ๋๊ฐ ์ข ๋ฃ๋๋ค.
 - ์ค๋ ๋๊ฐ ์ข ๋ฃ๋๋ฉด TCB ๋ฑ ๊ด๋ จ ์ ๋ณด๊ฐ ๋ชจ๋ ์ ๊ฑฐ ๋๋ค.
 - ์ค๋ ๋ ํจ์๊ฐ ์ข ๋ฃ๋์ด๋ ์ค๋ ๋๋ ์ข ๋ฃ๋๋ค.
 
 
'CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 12. ์ปค๋ ๋ ๋ฒจ ์ค๋ ๋์ ์ฌ์ฉ์ ๋ ๋ฒจ ์ค๋ ๋ (1) | 2024.04.22 | 
|---|---|
| 11. ์ค๋ ๋ ์ฃผ์ ๊ณต๊ฐ๊ณผ ์ปจํ ์คํธ (0) | 2024.04.22 | 
| 9. ํ๋ก์ธ์ค ๊ณ์ธต ๊ตฌ์กฐ (1) | 2024.04.21 | 
| 8. ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก (PCB, Process Control Block) (0) | 2024.04.21 | 
| 7. ํ๋ก์ธ์ค (Process) (0) | 2024.04.21 |