1) ๋ฉํฐ์ค๋ ๋ ๋ชจ๋ธ
- ์์์ ์ด์ผ๊ธฐํ๋ฏ์ด ํ๋ก์ธ์ค๋ ์ปค๋ ํ๋ก์ธ์ค์ ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ก ๋๋๋ฉฐ ์ค๋ ๋์๋ ์ปค๋ ์ค๋ ๋์ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ์๋ค.
· ์ปค๋ ์ค๋ ๋ : ์ปค๋์ด ์ง์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ค๋ ๋์ด๋ค.
· ์ฌ์ฉ์ ์ค๋ ๋ : ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ๊ตฌํ๋ ์ผ๋ฐ์ ์ธ ์ค๋ ๋์ด๋ค.
- ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ์ปค๋ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์์คํ ํธ์ถ๋ก ์ปค๋ ๊ธฐ๋ฅ์ ์ด์ฉํด์ผ ํ๋๋ฐ ์ด ๋, ์ปค๋ ์ค๋ ๋์ ์ฌ์ฉ์ ์ค๋ ๋์ ๋์ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฅํ ์ ์๋ค.
(1) ์ฌ์ฉ์ ์์ค ์ค๋ ๋ (User-Level Thread)
(1-1) ์ด๋ก
- ์ด์์ฒด์ ๊ฐ ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ง์ํ์ง ์์ ๋, ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ธฐ์ ์์คํ ์์ ์ด์ฉ๋์๋ค.
- ์ด ์ค๋ ๋๋ ์ ์ ๋ ๋ฒจ์์ ์ค๋ ๋๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ๋ฉฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปค๋์ด ์ง์ํ๋ ์ค์ผ์ค๋ง์ด๋ ๋๊ธฐํ ๊ฐ์ ๊ธฐ๋ฅ์ ๋์ ๊ตฌํํด์ค๋ค.
- ๊ทธ๋ฌ๋ฏ๋ก ์ปค๋ ์ ์ฅ์์ ์ด ์ค๋ ๋๋ ํ๋์ ํ๋ก์ธ์ค์ฒ๋ผ ๋ณด์ด๋ฉฐ, ์ฌ์ฉ์ ์ค๋ ๋๋ ์ปค๋ ์ ์ฅ์์๋ ์ผ๋ฐ ํ๋ก์ธ์ค์ด์ง๋ง ์ปค๋์ด ํ๋ ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ ์ฒ๋ฆฌํ์ฌ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ฅผ ์๋ํ๋ค.
- ๋ฐ๋ผ์, ์ฌ์ฉ์ ํ๋ก์ธ์ค ๋ด์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์กด์ฌํ์ง๋ง ์ปค๋์ ์ค๋ ๋ ํ๋์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ “1 to N” ๋ชจ๋ธ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ฌ์ฉ์ ์ค๋ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ง์ ์ค์ผ์ค๋ง์ ํ๊ณ ์์ ์ ํ์ํ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ฌธ๋งฅ ๊ตํ์ด ํ์ ์๋ค!
→ ํ๋ก์ธ์ค A์๊ฒ ํ ๋น๋ ํ์ ์ฌ๋ผ์ด์ค๊ฐ ๋จ์ํ๊ฒ “5ns”๋ผ ๊ฐ์ ํ๋ค๋ฉด ํ๋ก์ธ์ค A์ ์ฌ์ฉ์ ์ค๋ ๋ ์ค์ผ์ค๋ฌ์ ์ ์ฑ ์ ์ํด ์ฌ๋ฌ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ์ด ์๊ฐ์ ๋๋ ์ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
(1-2) ์ฅ์
- ์ด์์ฒด์ ์์ ๋ฉํฐ์ค๋ ๋๋ฅผ ์ง์ํ ํ์๊ฐ ์๋ค.
- ์ค์ผ์ค๋ง ๊ฒฐ์ ์ด๋ ๋๊ธฐํ๋ฅผ ์ํด ์ปค๋์ ํธ์ถํ์ง ์๊ธฐ ๋๋ฌธ์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ๋ ์ปค๋ ๋ ๋ฒจ ์ค๋ ๋๋ณด๋ค ์ค๋ฒ ํค๋๊ฐ ์ ๋ค.
→ ์ฌ์ฉ์ ์์ญ ์ค๋ ๋์์ ์์ ์ ํ๊ธฐ ๋๋ฌธ์ OS ์ค์ผ์ค๋ฌ์ ๋ฌธ๋งฅ ๊ตํ์ด ๋ฐ์ํ์ง ์๋๋ค. (์ ์ ๋ ๋ฒจ ์ค๋ ๋ ์ค์ผ์ค๋ฌ๋ฅผ ์ด์ฉํจ)
→ ์ฆ, ์ปค๋์ ๊ด๋ฆฌ๋ฅผ ๋ฐ์ง ์๊ณ ์ปค๋ ๋ํ ์ฌ์ฉ์ ์ค๋ ๋์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฐ์ ์ ํ์ด ์๊ณ ์ฑ๋ฅ ์ด๋์ด ๋ฐ์ํ๋ค.
(1-3) ๋จ์
- ์์คํ ์ ๋ฐ์ ๊ฑธ์น ์ค์ผ์ค๋ง ์ฐ์ ์์๋ฅผ ์ง์ํ์ง ์๋๋ค.
→ ์ด๋ค ์ค๋ ๋๊ฐ ๋จผ์ ๋์ํ ์ง ์ ์ ์๋ค.
- ํ๋ก์ธ์ค์ ์ํ ์ฌ์ฉ์ ์ค๋ ๋ ์ค I/O ์์ ๋ฑ์ ์ํด ํ๋๋ผ๋ Block์ด ๊ฑธ๋ฆฐ๋ค๋ฉด ์ ์ฒด ์ฌ์ฉ์ ์ค๋ ๋๊ฐ Block ๋๋ค.
→ ์ฌ๋ฌ ๊ฐ์ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ํ๋์ ์ปค๋ ์ค๋ ๋์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ์ปค๋ ์ค๋ ๋๊ฐ ์ ์ถ๋ ฅ ์์ ์ ์ํด ๋๊ธฐ ์ํ์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ๋ชจ๋ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ๊ฐ์ด ๋๊ธฐํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
→ ์ปค๋ ์ ์ฅ์์๋ ํ๋์ ๋จ์ผ ์ค๋ ๋ ํ๋ก์ธ์ค์ด๋ฏ๋ก ์ผ๋ถ ์ค๋ ๋๋ง ๋๊ธฐ ์ํ๋ก ๋ณด๋ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- CPU ์ฝ์ด ์ฌ์ฉ์จ์ด ๋งค์ฐ ๋จ์ด์ง๋ค.
→ ํ ํ๋ก์ธ์ค์ ํ์ ์ฌ๋ผ์ด์ค๋ฅผ ์ฌ๋ฌ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ CPU๋ฅผ ๋์์ ์ฌ์ฉํ ์ ์๋ค.
→ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปค๋ ์ ์ฅ์์ ์ฌ์ฉ์ ์ค๋ ๋๋ ํ๋์ ๋จ์ผ ์ค๋ ๋ ํ๋ก์ธ์ค๋ก ์ธ์๋๋ฏ๋ก ์์ ์ ์ฌ๋ฌ ์ฝ์ด์ ๋๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
→ ํ๋์ CPU๋ ๊ณผ๊ฑฐ์ ๋ค๋ฅด๊ฒ ์ฑ๊ธ ์ฝ์ด๊ฐ ์๋ ๋ฉํฐ ์ฝ์ด์ด๋ฏ๋ก ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ง์ํ๋ ์ปค๋์์๋ ์ค๋ ๋๋ฅผ ์ฌ๋ฌ CPU ์ฝ์ด์ ๋๋์ด ์์ ํ์ฌ CPU๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ํ๋์ ์ด์์ฒด์ ์์๋ User-level Thread ๋ฐฉ์์ ์ฌ์ฉํ์ง ์๋๋ค.
- ๋ณด์์ ์ทจ์ฝํ๋ค.
→ ์ปค๋ ๋ ๋ฒจ์์๋ ๊ณต์ ๋ณ์๋ฅผ ๋ณดํธํ๋ ์ฅ์น๊ฐ ์์ผ๋ ์ด๋ฌํ ์๋น์ค๋ฅผ ์ปค๋์ด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ตฌํํด์ผ ํ๋ค.
(2) ์ปค๋ ์์ค ์ค๋ ๋ (Kernel-level thread)
(2-1) ์ด๋ก
- ์ปค๋์ด ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ง์ํ๋ ๋ฐฉ์์ผ๋ก ํ๋์ ์ฌ์ฉ์ ์ค๋ ๋๊ฐ ํ๋์ ์ปค๋ ์ค๋ ๋์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ “1 to 1” ๋ชจ๋ธ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
→ ํ๋ก์ธ์ค๊ฐ ์์ฑ์ด ๋๋ฉด ์ปค๋์ ์ ์ดํ๊ธฐ ์ํ ์ปค๋ ์์ค์ ์ค๋ ๋๋ฅผ 1๊ฐ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ ์ ์ด๋ ํ๋ ์ด์์ ์ปค๋ ์ค๋ ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์ปค๋ ์ค๋ ๋๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ค์ผ์ค๋ง์ด ๋๋ฏ๋ก ํน์ ์ค๋ ๋๊ฐ ๋๊ธฐ ์ํ์ ๋ค์ด๊ฐ๋ ๋ค๋ฅธ ์ค๋ ๋๋ ์์ ์ ๊ณ์ํ ์ ์๊ณ , ๋ํ ์ปค๋์ด ์ ๊ณตํ๋ ๋ณดํธ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์๋ ์๋ค.
(2-2) ์ฅ์
- ์ปค๋์ด ๊ฐ ์ค๋ ๋๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
- ์ปค๋์ด ์ง์ ์ค๋ ๋๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์์ ์ฑ๊ณผ ๋ค์ํ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๋ค.
- ํ๋์ ์ค๋ ๋๊ฐ ๋๊ธฐ ์ํ์ ์์ด๋ ๋ค๋ฅธ ์ค๋ ๋๋ ์์ ์ ๊ณ์ํ ์ ์๋ค.
- ์ปค๋ ์ค๋ ๋์ 1:1๋ก ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ CPU ์ฝ์ด์ ํ๊บผ๋ฒ์ Dispatch ํ ์ ์์ด ๋ฉํฐํ๋ก์ธ์ ํ๊ฒฝ์์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋์ํ๋ค.
(2-3) ๋จ์
- ์ค์ผ์ค๋ง๊ณผ ๋๊ธฐํ๋ฅผ ์ํด ๋งค๋ฒ ์ปค๋์ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ๋ฌด๊ฒ๊ณ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
→ ์ฆ, ์ฌ์ฉ์ ๋ชจ๋์์ ์ปค๋ ๋ชจ๋๋ก์ ์ ํ์ด ๋น๋ฒํ๊ฒ ์ด๋ฃจ์ด์ ธ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ค. (๋ฌธ๋งฅ ๊ตํ์ผ๋ก ์ธํ ์ค๋ฒํค๋ ๋ถํ ๅค)
(3) ๋ฉํฐ๋ ๋ฒจ ์ค๋ ๋ (Multi-level thread) or ํ์ด๋ธ๋ฆฌ๋ ์ค๋ ๋ (Hybrid thread)
(3-1) ์ด๋ก
- ์ฌ์ฉ์ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋๋ฅผ ํผํฉํ ๋ฐฉ์์ผ๋ก “M to N” ๋ชจ๋ธ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
→ ๋ฉํฐ๋ ๋ฒจ ์ค๋ ๋์์๋ ์ปค๋ ์ค๋ ๋์ ๊ฐ์๊ฐ ์ฌ์ฉ์ ์ค๋ ๋ ๊ฐ์๋ณด๋ค ๊ฐ๊ฑฐ๋ ์ ์ด์ผ ํ๋ค.
- ๋ฉํฐ๋ ๋ฒจ ์ค๋ ๋๋ ์ฌ์ฉ์ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋์ ๋ฐฉ์์ ํผ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋์ ์ฅ๋จ์ ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋๋ฐ ํ๋์ ์ปค๋ ์ค๋ ๋๊ฐ ๋๊ธฐ ์ํ์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ๋ค๋ฅธ ์ปค๋ ์ค๋ ๋๊ฐ ๋์ ์์ ์ ํ์ฌ ์ฌ์ฉ์ ์ค๋ ๋๋ณด๋ค ์ ์ฐํ๊ฒ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋ค๋ง, ์ปค๋ ์ค๋ ๋๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ๋ฌธ๋งฅ ๊ตํ ์ ์ค๋ฒํค๋๊ฐ ์์ด ์ฌ์ฉ์ ์ค๋ ๋๋งํผ ๋น ๋ฅด์ง ์๋ค.
- ๋ฐ๋ผ์, ๋น ๋ฅด๊ฒ ์์ง์ฌ์ผ ํ๋ ์ค๋ ๋๋ ์ฌ์ฉ์ ์ค๋ ๋๋ก ์๋ํ๊ณ ์์ ์ ์ผ๋ก ์์ง์ฌ์ผ ํ๋ ์ค๋ ๋๋ ์ปค๋ ์ค๋ ๋๋ก ์๋ํ๋ค.
[Note] TCB (Thread Control Block)
- ๊ธฐ์กด์ ์ด์์ฒด์ ์์ ์ปจํ ์คํธ ์ค์์นญ์ ์ค๋ช ํ ๋, PCB๋ฅผ ์์๋ก ๋ค์ด ์ค๋ช ํ๋ ์ด๊ฒ์ ์ฑ๊ธ ์ค๋ ๋, ๋ฉํฐ ํ๋ก์ธ์ค ํ๊ฒฝ์ผ๋ก ์ ์ ํ๊ณ ์ค๋ช ํ๋ ๊ฒ์ด๋ค.
- ๋ฉํฐ ์ค๋ ๋ ๋ชจ๋ธ์์๋ CPU์ ์ธํ ํด์ผ ํ๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ฅผ ๋น๋กฏํ ๊ฐ์ข ๋ ์ง์คํฐ๋ค์ ์ค๋ ๋๋ณ๋ก ์ ์ฅํด์ผ ํ๋๋ฐ ์ด ๋, ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก TCB ์ด๋ค.
- Multi thread, Multi Process ํ๊ฒฝ์์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ฅผ ๋น๋กฏํ ๊ฐ์ข ๋ ์ง์คํฐ๋ค์ TCB (Thread Control Block)์ ์ ์ฅ์ ํ๋ฉฐ ์ด๋ฌํ TCB๋ PCB์ ์ ์ฅ๋์ด ์ง๋ค.
'๐ป Computer Science > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์์ฒด์ ์ด๋ก - ํ๋ก์ธ์ค vs ์ค๋ ๋ (0) | 2023.07.26 |
---|---|
์ด์์ฒด์ ์ด๋ก - ์ปค๋๊ณผ ์ธํฐํ์ด์ค (0) | 2023.07.26 |