โ๏ธ Process๋ ์์ ํ ๋ ๋ฆฝ๋ ์คํ๊ฐ์ฒด
→ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ ๋ฐ์ง์๋๋ค๋ ์ฅ์
→ but, ๋ ๋ฆฝ๋์ด์๋ ๋งํผ ๋ณ๋์ ์ค๋น๊ฐ ์์ด๋ ์๋ก๊ฐ์ ํต์ ์ด ์ด๋ ต๋ค๋ ๋ฌธ์
โ๏ธ ์ปค๋ ์์ญ์์ IPC๋ผ๋ ๋ด๋ถ ํ๋ก์ธ์ค๊ฐ ํต์ ์ ์ ๊ณตํจ์ผ๋ก์จ ํ๋ก์ธ์ค๊ฐ ํต์ ์ ํ ์ ์์
IPC์ ์ข ๋ฅ
โ๏ธ PIPE(ํ์ดํ)
- ๋ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ์ฌ ํ๋์ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ๋ง ํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ํจ
- ๋ถ๋ชจ ์์ ๊ฐ์ ๋จ๋ฐฉํฅ ํต์ ์ผ๋ก ์์ฃผ ์ฌ์ฉ
- ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ PIPE์ ํน์ง ๋๋ฌธ์ Half-Duplex(๋ฐ์ด์ค)ํต์ ์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ
- ํ๋์ ํต์ ์ ๋ก๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ค ํ๋๋ง ๊ฐ๋ฅํ๋ฏ๋ก ๋ง์ฝ ์ฝ๊ธฐ/์ฐ๊ธฐ(์ก/์์ )์ ๋ชจ๋ ํ๊ธฐ ์ํ๋ค๋ฉด ๋ ๊ฐ์ ํ์ดํ๋ฅผ ๋ง๋ค์ด์ผ ๊ฐ๋ฅ
- read()์ write()๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก block mode๋ก ์๋๋๊ธฐ์ ํ๋ก์ธ์ค๊ฐ read๋๊ธฐ ์ค์ด๋ผ๋ฉด ์ด ์์
์ด ๋๋๊ธฐ ์ ์๋ write๋ฅผ ํ ์ ์์
- โ
์ฅ์
- ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์
- ํ์ชฝ ํ๋ก์ธ์ค๋ ๋จ์ง ์ฝ๊ธฐ๋งํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ฐ๊ธฐ๋ง ํ๋ ๋จ์ํ ๋ฐ์ดํฐ ํ๋ฆ์ ์ ํฉ
- โ
๋จ์
- Full-Duplex(์ ์ด์ค) ํต์ ๋ฐฉ์์ผ๋ก ํ์ฉํ๋ ค๋ฉด ํ์ดํ๋ฅผ ๋ ๊ฐ ๋ง๋ค์ด์ผํ๋๋ฐ, ๊ตฌํ์ด ๊ฝค ๋ณต์กํด์ง ์ ์์ (๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๋๊ฒ ๋ ํจ์จ์ ์ผ ์ O)
- buffer๊ฐ ์๋์ ์ผ๋ก ์๊ธฐ๋๋ฌธ์ overflow๋ ํ๋ฅ ์ด ๋์ (read์ฒ๋ฆฌ๋ฅผ ๋นจ๋ฆฌ๋นจ๋ฆฌ ํด์ค์ผ ํจ)
- ๋ถ๋ชจ์์๊ด๊ณ์ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ ๊ฐ๋ฅ
- โ
์ฅ์
โ๏ธ Named PIPE
- ํต์ ์ ํ ํ๋ก์ธ์ค๊ฐ ๋ช ํํ ์ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ
- ์ ํ ๋ชจ๋ฅด๋ ์ํ์ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ ํต์ ํ ๊ฒฝ์ฐ ์ฌ์ฉ
- ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ์ํด ์ด๋ฆ์ด ์๋ ํ์ผ์ ๋งค๊ฐ์ฒด๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ ํ ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ ํต์ ์ด ๊ฐ๋ฅ
- mkfifo๋ฅผ ํตํด Named PIPE๋ฅผ ์์ฑํ๋๋ฐ, mkfifo๊ฐ ์ฑ๊ณตํ๋ฉด ์ด๋ฆ์ด ๋ช
๋ช
๋ ํ์ผ์ด ์์ฑ๋๊ณ ์ด๋ฅผ ํ์ฉํด์ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ด ์ด๋ฃจ์ด์ง
- โ
์ฅ์
- ๊ธฐ๋ณธPIPE์ ๋น์ท
- โ
๋จ์
- ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๋์์ ์ด๋ฃจ์ด์ง์ง ์์. (๋จ๋ฐฉํฅ ํต์ : read-only or write-only)
- ๊ทธ์ธ → ๊ธฐ๋ณธ PIPE์ ๋น์ท
- โ
์ฅ์
โ๏ธ Message Queue (๋ฉ์์ง ํ)
- FIFO(First-In First-Out, ์ ์ ์ ์ถ) ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ํต์ ์ค๋น๋ก ์ปค๋์์ ๊ด๋ฆฌ
- ์ ์ถ๋ ฅ ๋ฐฉ์์ผ๋ก ๋ณด๋ฉด Named PIPE์ ๋์ผํ์ง๋ง, Message Queue๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ํ๋
- Message Queue์ ์ธ ๋ฐ์ดํฐ์ ๋ฒํธ๋ฅผ ๋ถ์์ผ๋ก์จ ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์
- โ
์ฅ์
- ๋น๋๊ธฐ ๋ฐฉ์์ด๊ธฐ์ ๋ฐฉ๋ํ ์ฒ๋ฆฌ๋์ด ์๋ค๋ฉด ํ์ ๋ฃ์ ํ ๋์ค์ ์ฒ๋ฆฌํ ์ ์์
- ๋ค์์ ํ๋ก์ธ์ค๋ค์ด ํ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๊ณ , ๋ค์์ ํ๋ก์ธ์ค๋ค์ด ํ๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ๊บผ๋ผ ์ ์์
- ๋ถ์ฐ์ฒ๋ฆฌ ๋ฐ ๊ฒฝ์์ฒ๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์
- โ
๋จ์
- ๋ฉ์์ง๊ฐ ์ ๋ง ์ ์ ๋ฌ๋์๋์ง ์ ์ ์์
- ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋์ค๋ ๊ณผ์ ์์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์
- ๋ฐ์ดํฐ๊ฐ ๋ง์ด ์์ผ์๋ก ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์์ด ํ์ํจ
- โ
์ฅ์
โ๏ธ Shared Memory (๊ณต์ ๋ฉ๋ชจ๋ฆฌ)
- ๋ฐ์ดํฐ ๊ณต์ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ ๋๊ฐ์ง๊ฐ ์กด์ฌ
- ํต์ ์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ (Ex. PIPE, Named PIPE, Message Queue, …)
- ๋ฐ์ดํฐ๋ฅผ ๊ณต์ (์ฆ, ํจ๊ป ์ฌ์ฉ) (Ex. Shared Memory)
- ์ฆ, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ๊ณต์ ํ๋๋ก ์ง์ํ๋ ์ค๋น
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉ
- ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ปค๋์ ์์ฒญํ๋ฉด ์ปค๋์ ํด๋น ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด ์ฃผ๊ฒ๋๊ณ , ์ดํ ์ด๋ค ํ๋ก์ธ์ค๊ฑด ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ ์ ์์
- โ
์ฅ์
- ์ค๊ฐ์ ์์ด ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ IPC ์ค์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋
- == ์ปค๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์์ ๊ด๋ฆฌํ๊ธฐ์ ๋น ๋ฅด๊ฒ ์ ๊ทผ ๊ฐ๋ฅ
- โ
๋จ์
- ๋ฉ์์ง ์ ๋ฌ ๋ฐฉ์์ด ์๋๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผํ๋ ์์ ์ ์ ์ ์์
- ์ปค๋ ์ค์ ์ ์ข ์์ ์ด๊ธฐ์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปค๋์์ ํ์ฉํ๊ณ ์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ๋ฅผ ํ์ธํด์ผ ํจ
- โ
์ฅ์
โ๏ธ Memory Map (๋ฉ๋ชจ๋ฆฌ ๋งต)
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ค๋ ์ธก๋ฉด์์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋น์ทํจ
- ์ด๋ฆฐ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งตํ์์ผ์ ๊ณต์ ํจ
- ์ฃผ๋ก ํ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ผํ ๋ ์ฌ์ฉ
- โ
์ฅ์
- ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ฏธ ์ฌ๋ผ์์๋ ๊ฒ์ฒ๋ผ ๊ฐ๋จํ๊ฒ ์ ๊ทผํ ์ ์์
- ์ผ๋ฐ์ ์ธ ํ์ผ I/O์ ๋นํด ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค
- ๋น๋๊ธฐ I/O๋ฅผ ์ฌ์ฉํ์ง๋ง ์์คํ ์์ ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ๋ฌธ์ ๋ฅผ ๊ฑฑ์ ํ ํ์๊ฐ ์์
- โ
๋จ์
- ์ผ๋ฐ ํ์ผ I/O์ ๋นํด ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ
- ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ง๋ ์ค๋ซ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ ๊ฒ์ธ์ง ์ปจํธ๋กคํ ์ ์์
- โ
์ฅ์
โ๏ธ Socket (์์ผ)
- ๊ฐ์ ๋๋ฉ์ธ ๋ด์์ ์ฐ๊ฒฐ๋ ์ ์๊ณ , ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํจ
- ์๋ฒ๋จ์์๋ bind, listen, accept๋ฅผ ์งํํด ์์ผ ์ฐ๊ฒฐ์ ์ํ ์ค๋น๋ฅผ ํจ
- ํด๋ผ์ด์ธํธ ๋จ์์๋ connect์ ํตํด ์๋ฒ์ ์์ฒญํ๊ณ ์ฐ๊ฒฐ์ด ์๋ฆฝ๋ ํ์๋ socket์ sendํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์
- ์ฐ๊ฒฐ์ด ๋๋๋ฉด ๋ฐ๋์ close()๋ก clear ํจ
- ์ฆ, ๋คํธ์ํฌ๋ฅผ ํตํด ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ์งํํจ
- โ
์ฅ์
- ์๋ฒ/ํด๋ผ์ด์ธํธ ํ๊ฒฝ์ ๊ตฌ์ถํ๋๋ฐ ์ฉ์ด
- Internet Socket์ธ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ ์ ์ค์ด ๋ฐ์ํ ์ ์์ง๋ง, Unix Domain ์์ผ์ PIPE์ ๊ฐ์ ํํ๋ก ์ด๋ฃจ์ด์ง๊ณ ๊ฐ์ ์์คํ ์์ ๊ตํ์ด ์ผ์ด๋๋ฏ๋ก ํจํท์ด ์ ์ค๋๊ฑฐ๋, ์์๊ฐ ๋ฐ๋๋ ๋ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ผ ์ฅ๋ดํ ์ ์์
- ๋ฒ์ฉ์ ์ธ IPC๋ก์จ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํจ
- ํจํท ๋จ์๋ก ์ฃผ๊ณ ๋ฐ์์ผ๋ก ์ง๊ด์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์
- โ
๋จ์
- Internet UDP์๋ ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์์ (๋ค์ค์ ํด๋ฆฌ์ธํธ๋ฅผ ๋ฐ์๋ค์ด๋ ์๋ฒ์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์)
- โ
์ฅ์
'CS > OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] ๋ฐ๋๋ฝ (0) | 2024.02.06 |
---|---|
[CS] CPU ์ค์ผ์ค๋ง (0) | 2024.02.06 |
[CS] PCB & Context Switching (0) | 2024.02.01 |
[CS] ์์คํ ์ฝ(System Call) (0) | 2024.02.01 |
[CS] ์ธํฐ๋ฝํธ (Interrupt) (0) | 2023.11.29 |