Process - Abstraction for
* Execution Unit : Scheduling ๋จ์
* Protection Domain : ์์ ํ๊ณ ์๋ ์์์ ๋ํ ๋ณดํธ
⇒ ์ง๊ธ๊น์ง์ Process ๊ฐ๋ = ํ๋์ ์คํ ํ๋ฆ์ ๊ฐ๊ณ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
| Process | Thread |
| ํ๋์ Thread์ ๊ฐ์ ์คํ ํ๋ฆ. Process๊ฐ์ Memory๋ ๋ ๋ฆฝ์ , ์๋ก์ ์์ญ์ ์ ๊ทผํ๊ธฐ ์ด๋ ค์. (IPC์์ผ๋ฉด ์ ๊ทผ ๋ถ๊ฐ) Process๊ฐ์ Switch๋น์ฉ์ด ํผ. |
ํ๋์ Process์์ ์ฌ๋ฌ๊ฐ์ Thread Process์ Code ์์ญ๊ณผ Data ์์ญ์ Thread๊ฐ์ ๊ณต์ . Thread๋ค์ ๊ฐ์ Memory ์์ญ์ ์ฌ์ฉํ๋ฏ๋ก, Thread๊ฐ Switch๋น์ฉ์ด ์ ์. |
- Execution Unit
- Process ๋ด์ ์คํ ํ๋ฆ
- Process๋ณด๋ค ์์ ๋จ์
(Process์์ ํ ์์ ์ ์ฌ๋ฌ ๊ฐ๋ก ๋๋ ํ์ ๊ฐ๊ฐ์ Threadํ ํด์ ๋ณ๋ ฌ์ ์ผ๋ก ์์ ์ ์์ํ๋ค.)
- Cooperative Process๋ IPC๊ฐ ํ์ํ๋ค.
- Context Switching ๋น์ฉ์ด ๋ ๋ค.
- Thread๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ, Process๋ณด๋ค ์ ์ ๋น์ฉ์ผ๋ก Cooperative Process๊ฐ ํ๋ ์ผ์ ๋์ผํ๊ฒ ์ํํ ์ ์๋ค.
Thread ์๊ฐ ๋ง์ ์๋ก CPU Utilization์ด ์ฆ๊ฐํ๋ค๊ฐ ์๊ณ๊ฐ์ ๋์ด๊ฐ๋ฉด ๋ค์ ๊ฐ์ํ๋ค.์ด์ , Thread Switching ๋น์ฉ์ด ์ฆ๊ฐํ๊ธฐ์.CPU์ ์๊ฐ ๋ง์ System์ผ ์๋ก Thread๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค.Multi-processor : CPU์ ์๊ฐ ๋ง์ ์๋ก ํ Process์์ ์ฌ๋ฌ Thread๋ฅผ Parallelํ๊ฒ ์คํํ๋ ๊ฒ์ด ์ ๋ฆฌ.
Code, Data, File์ ๊ฐ์ Process ๋ด์ ๋ค๋ฅธ Thread์ ๊ณต์ ํ๋ค.
Thread ID, PC, Register Set, Stack
1. Responsiveness
: ์ค๋ ๊ฑธ๋ฆฌ๋ Thread๊ฐ ์๋๋ผ๋ ๋ค๋ฅธ Thread๋ค์ ์คํ๋๊ณ ์๊ธฐ์ User ์ ์ฅ์์๋ ๊ทธ Program์ด Interactiveํ๋ค
2. Resource Sharing
: Process๋ด Thread๋ผ๋ฆฌ๋ Code,Data,File ์์ญ์ ๊ณต์ ํจ.
3. Economy
4. Scalability
: ์ฌ๋ฌ ๊ฐ์ Thread๊ฐ ๊ฐ๊ฐ ๋ค๋ฅธ Processor์์ ๋์์ ์คํ๊ฐ๋ฅ.
Multicore Programming
์ฌ๋ฌ๊ฐ์ Core. ๊ฐ๊ฐ์ Core๋ฅผ ํ๋์ Processor๋ก ์ธ์ํ๊ณ Schedulingํ์ฌ ๊ฐ๊ฐ์ Core์ ์ฌ๋ฌ Thread๊ฐ ํ ๋น๋์ด ์ํ ๊ฐ๋ฅ.
Multiple Processor๊ฐ ๋ฌ๋ฆฐ Multicore๋ Cache๋ฅผ ๊ณต์ ํจ.
Kernel ์์ญ ์์์ ์ง์๋๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก User level์ library๋ฅผ ํตํด ๊ตฌํ๋๋ค. library์์ thread๋ฅผ ์์ฑ, scheduling๊ณผ ๊ด๋ จ๋ ๊ด๋ฆฌ๋ฅผ ํด์ค๋ค. ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์์ thread๊ฐ ์์ฑ, ๊ด๋ฆฌ๋๊ธฐ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด์ง๋ง, ์ฌ๋ฌ ๊ฐ์ User Thread ์ค ํ๋์ Thread๊ฐ System Call ์์ฒญ์ผ๋ก Block์ด ๋๋ค๋ฉด, ๋๋จธ์ง ๋ชจ๋ Thread ์ญ์ Block ๋๋ค. Kernel์ ์ฌ๋ฌ User Thread๋ค์ ํ๋์ Process๋ก ๊ฐ์ฃผํ๊ธฐ ๋๋ฌธ.
์ด์์ฒด์ ์์ thread๋ฅผ ์ง์.
thread๊ฐ system call์ ํธ์ถํ์ฌ block์ด ๋๋ฉด, kernel์ ๋ค๋ฅธ thread๋ฅผ ์คํํจ์ผ๋ก์จ ์ ์ฒด์ ์ธ Thread Blocking์ด ์์.
Multiprocessor ํ๊ฒฝ์์ kernel์ด ์ฌ๋ฌ ๊ฐ์ Thread๋ฅผ ๋ค๋ฅธ Processor์ ํ ๋นํ ์ ์์.
User Thread๋ณด๋ค ์์ฑ ๋ฐ ๊ด๋ฆฌ๊ฐ ๋๋ฆผ
Many-to-One
์ฌ๋ฌ๊ฐ์ user level thread ๋ค์ด ํ๋์ kernel thread๋ก mapping๋จ.
ํ๋ฒ์ ํ๋์ Thread ๋ง kernel์ ์ ๊ทผ ๊ฐ๋ฅ
kernel ์
์ฅ์์ ์ฌ๋ฌ ๊ฐ์ thread๋ ํ๋์ process ์ด๊ธฐ ๋๋ฌธ์ Multiporcessor๋๋ผ๋ ์ฌ๋ฌ ๊ฐ์ Processor์์ ๋์์ ์ํ ๋ถ๊ฐ๋ฅ.
One-to-One
๋ฌดํ์ ์ผ๋ก kernel thread๋ฅผ ์์ฑํ ์ ์์.
Many-to-Many
kernel์ ์ ์ ํ user thread์ kernel thread ์ฌ์ด์ mapping์ ์กฐ์ ํ์ฌ, ์์ ๊ฐ์ ์ฅ์ ์ ๋ณด์ฅํ ์ ์์
Process ๊ธฐ๋ฐ์ ์ด์์ฒด์ system call
⇒ thread์ ๊ฐ๋ ์ ๋ํ ๊ณ ๋ ค ํ์
- fork(), exec() : thread ์ง์์ ์ํด์๋ ๋ณํ๊ฐ ํ์
ex)
๋ชจ๋ Thread๋ฅผ ๊ฐ์ง๊ณ ์๋ Process๋ฅผ ๋ง๋ค ๊ฒ์ธ์ง
fork๋ฅผ ์์ฒญํ thread๋ง์ ๋ณต์ฌํ Process๋ฅผ ๋ง๋ค ๊ฒ์ธ์ง
fork๋ฅผ ํ๊ณ exec๋ฅผ ์ํํ ๊ฒฝ์ฐ fork๋ฅผ ์์ฒญํ thread๋ง์ด ๋ณต์ฌ๋๋ ๊ฒ์ด ๋ ๋ฐ๋์งํจ.
์๋ ๊ฒฝ์ฐ, ๋ชจ๋ thread์ ๋ณต์ฌ๊ฐ ํ์
fork
ํ๋์ Program ๋ด์ Thread๊ฐ fork๋ฅผ ํธ์ถํ๋ฉด,
exec
thread ์์
์ด ๋๋๊ธฐ ์ ์ ์ธ๋ถ์์ ์์
์ ์ค์ง์ํค๋ ๊ฒ
ํ๋์ thread์์ ์ค์ง ๋ช
๋ น์ด ๊ฒฐ๊ตญ์ ๋ค๋ฅธ thread์ ๋ชจ๋ ์์
์ ์ค์ง์์ผ์ผ ํ๋ ๊ฒฝ์ฐ
์์์ด thread์๊ฒ ํ ๋น๋ ๊ฒฝ์ฐ Cancellation์ ๋ฌธ์
์๋ก์ด Thread๋ฅผ ๋ง๋๋ ์๊ฐ์ด ์ค์ Thread๊ฐ ๋์ํ๋ ์๊ฐ๋ณด๋ค ๊ธด ๊ฒฝ์ฐ๊ฐ ์์
Thread Pool์ ๋ง๋ค์ด Process๊ฐ ์๋ก์ด ์คํํ ๋, ์ ํด์ง ์ ๋งํผ์ Thread๋ฅผ ๋ง๋ ํ, Pool์ ํ ๋น
์๋ก์ด thread๊ฐ ํ์ํ๋ฉด pool์์ ๊ฐ์ ธ์ค๊ณ , ์์
์ด ๋๋๋ฉด ๊ทธ thread๋ฅผ pool์ ๋ฃ์
Multithreaded Programming์์๋ Thread๊ฐ ํต์ ์ด ํ์ํ๋ฐ
Thread๊ฐ IPC ๊ตฌํ์ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ?
=> ๊ณต์ Memory๊ฐ ํจ์จ์ ์ด๋ค.
(์ด๋ฏธ ๊ฐ์ Process์ Data ์์ญ์ ๊ณต์ ํ๋ฏ๋ก ์์ฐ์ค๋ฝ๊ฒ ๊ณต์ Memory๊ฐ๋ฅ)
๊ฒฐ๊ตญ IPC๊ฐ ์ต์ํ ๋จ. (Thread๋ค ๊ฐ์ ์์ ๊ณต์ ๋ก ์ธํ์ฌ ๊ฐ๋ฅํด์ง)
๋ค๋ฅธ Process์ ์กด์ฌํ๋ ๋ค๋ฅธ Thread์์ ํต์ ์?
- Process์ ๊ฒฝ์ฐ์ ๋น์ทํ ์ฑ๋ฅ์ ๋ณด์.
- ์ด๋ฐ ํต์ ์ด ๋น๋ฒํ๋ค๋ฉด, Program ์ค๊ณ์ ์๋ชป.
| ๋ฉํฐ์ค๋ ๋ฉ vs ๋น๋๊ธฐ (0) | 2024.12.26 |
|---|---|
| [์ด์์ฒด์ ] ํ๋ก์ธ์ค ์์ฑ (0) | 2024.11.05 |
| [์ด์์ฒด์ ] Lock์ ์ด์ฉํ ๋์์ฑ ์ ์ด (0) | 2024.10.15 |
| [์ด์์ฒด์ ] 2. Process (0) | 2021.03.17 |