IPC๋?
ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค.
์ด์ฒ๋ผ ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ์ ๊ฐ์ง ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ์ด IPC ํต์ ์ด๋ค.
ํ๋ก์ธ์ค๋ ์ปค๋์ด ์ ๊ณตํ๋ IPC ์ค๋น๋ฅผ ์ด์ฉํด ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ํ ์ ์๊ฒ ๋๋ค.
- IPC = Inter-Process Communication
- ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ์
- ์ ๊ทธ๋ฆผ์ฒ๋ผ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๋ค์ ๋ชจ๋ ์ ์ ๊ณต๊ฐ(user-space, user-mode)์์ ๊ฐ๋ณ๋ก OS๋ก๋ถํฐ ํ ๋น๋ฐ์ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์์ ์ดํ์ค์ ์๋ค
- ๋งํ๊ฒ ์ฒ๋ผ ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์์ ์ดํํ๋ค๋ณด๋ ์๋ก๊ฐ์ ํต์ ์ด ์ด๋ ต๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค
- ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ ์ปค๋ ์์ญ(kernel-space, kernel-mode)์์ IPC(Inter-Process Communication)๋ผ๋ ํ๋ก์ธ์ค๋ค ๊ฐ์ ํต์ ์ ์ ๊ณตํ๊ณ ์๋ค
- ์ด์ฒ๋ผ ํ๋ก์ธ์ค๋ค์ ์ปค๋์ด ์ ๊ณตํ๋ IPC ๊ธฐ์ ์ ํตํด ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ํ ์ ์๋ค
IPC์ ์ข ๋ฅ
PIPE (ํ์ดํ)
- ํ์ดํ๋ ๋ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ ํ๋์ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ๋ง ํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ํ๋ค
- ๋ถ๋ชจ ์์ ๊ฐ์ ๋จ๋ฐฉํฅ ํต์ ์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ค
- ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ PIPE์ ํน์ง ๋๋ฌธ์ Half-Duplex(๋ฐ์ด์ค) ํต์ ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค
- PIPE๋ ๋ฐ์ด์ค ํต์ ์ด๊ธฐ์ ํ๋์ ํต์ ์ ๋ก๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ค ํ๋๋ง ๊ฐ๋ฅํ๋ฏ๋ก ๋ง์ฝ ์ฝ๊ธฐ/์ฐ๊ธฐ, ์ฆ ์ก/์์ ์ ๋ชจ๋ ํ๊ธฐ ์ํ๋ค๋ฉด ๋ ๊ฐ์ ํ์ดํ๋ฅผ ๋ง๋ค์ด์ผ ๊ฐ๋ฅํ๋ค
- read()์ write()๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก block mode๋ก ์๋๋๊ธฐ์ ํ๋ก์ธ์ค๊ฐ read ๋๊ธฐ์ค์ด๋ผ๋ฉด read๊ฐ ๋๋๊ธฐ์ ์๋ write๋ฅผ ํ ์ ์๋ค
์ฅ์
- PIPE๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ํ์ชฝ ํ๋ก์ธ์ค๋ ๋จ์ง ์ฝ๊ธฐ๋งํ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋จ์ง ์ฐ๊ธฐ๋ง ํ๋ ๋จ์ํ ๋ฐ์ดํฐ ํ๋ฆ์ ์ ํฉ
๋จ์
- Full-Duplex(์ ์ด์ค) ํต์ ๋ฐฉ์์ผ๋ก ํ์ฉํ๋ ค๋ฉด PIPE๋ฅผ ๋๊ฐ ๋ง๋ค์ด์ผ ํ๋๋ฐ, ๊ตฌํ์ด ๊ฝค๋ ๋ณต์กํด ์ง ์ ์๋ค (๊ตณ์ด ์ ์ด์ค์ ํ์ฉํด์ผํ๋ค๋ฉด PIPE๋ง๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๋๊ฒ ํจ์จ์ ์ผ ์ ์๋ค)
- buffer๊ฐ ์๋์ ์ผ๋ก ์๊ธฐ๋๋ฌธ์ overflow ๋ ํ๋ฅ ์ด ๋๋ค (read์ฒ๋ฆฌ๋ฅผ ๋นจ๋ฆฌ๋นจ๋ฆฌ ํด์ค์ผํ๋ค)
- ๋ถ๋ชจ ์์ ๊ด๊ณ์ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ ๊ฐ๋ฅ
Named PIPE (์ต๋ช ํ์ดํ)
- Linux๋ ๋ชจ๋ ๊ฒ์ ํ์ผ(fd)๋ก ํตํ๊ณ ์๋ค๋ ๊ฐ๋ ์ ๊ธฐ์ตํ๊ณ ๋ณด์
- Named PIPE๋ ํต์ ์ ํ ํ๋ก์ธ์ค๊ฐ ๋ช ํํ ์ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ
- ๋ณดํต PIPE๋ ๋ถ๋ชจ์์๊ฐ์ ์ฌ์ฉํ๊ณ Named PIPE๋ ์ ํ ๋ชจ๋ฅด๋ ์ํ์ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ ํต์ ํ ๊ฒฝ์ฐ ์ฌ์ฉ
- Named PIPE๋ ๋ถ๋ชจํ๋ก์ธ์ค์ ๋ฌด๊ดํ๊ฒ ์ ํ ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ ํต์ ์ด ๊ฐ๋ฅํ๋ฐ, ์ด์ ๋ ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ์ํด ์ด๋ฆ์ด ์๋ ํ์ผ์ ๋งค๊ฐ์ฒด๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ
- mkfifo๋ฅผ ํตํด Named PIPE๋ฅผ ์์ฑํ๋๋ฐ, mkfifo๊ฐ ์ฑ๊ณตํ๋ฉด ์ด๋ฆ์ด ๋ช ๋ช ๋ ํ์ผ์ด ์์ฑ๋๊ณ ์ด๋ฅผ ํ์ฉํด์ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ด ์ด๋ฃจ์ด์ง
์ฅ์
- ๊ธฐ๋ณธ PIPE์ ๋น์ท
๋จ์
- ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๋์์ ์ด๋ฃจ์ด์ง์ง ์์, ๋จ๋ฐฉํฅ ํต์ , read-only or write-only
- ๊ธฐ๋ณธ PIPE์ ๋น์ท
PIPE ์ Named PIPE
๊ณตํต์
๋จผ์ ์ ๋ ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ ๋ฌ๋๋ ํ๋ฆ์ ๊ฐ์ง๋ค๋ ์ธก๋ฉด์์ ๋์ผํ ๋ฐ์ดํฐ ํ๋ฆ ๋ฉ์ปค๋์ฆ์ ๊ฐ์ง๋ค
์ฐจ์ด์
Named PIPE๋ ์ฌ์ฉํ PIPE๋ฅผ ๋ช ๋ช ํ ์ ์๋ค๋ ์
PIPE๋ ์ฌ์ฉํ PIPE๋ฅผ ๋ช ๋ช ํ ์ ์๋ค
(๊ทธ๋ ๊ธฐ ๋๋ฌธ์ PIPE๋ ์ต๋ช PIPE๋ผ ๋ถ๋ฅธ๋ค)
์ถ๊ฐ ์ค๋ช
์ต๋ช ํ์ดํ(PIPE)๋ ๋ฐ์ดํฐ ํต์ ์ ํ ํ๋ก์ธ์ค๊ฐ ๋ช ํํ๊ฒ ์ ์ ์์ ๋ ์ฌ์ฉ
์ก์ ํ ํ๋ก์ธ์ค๋ ์์ ํ ํ๋ก์ธ์ค๋ฅผ ์๊ณ , ์์ ํ ํ๋ก์ธ์ค๋ ์ก์ ํ ํ๋ก์ธ์ค๋ฅผ ์๋ ๊ฒฝ์ฐ
๊ฐ์ฅ ๋ํ์ ์ธ ์๊ฐ ๋ถ๋ชจํ๋ก์ธ์ค์ ์์ํ๋ก์ธ์ค๊ฐ์ ๋ฐ์ดํฐ ํต์ ์ ํ๊ณ ์ ํ ๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค๋ ์๋ก๋ฅผ ๋ช ํํ ์๊ณ ์์ผ๋ฏ๋ก ๊ตณ์ด ํ์ดํ์ ์ด๋ฆ์ ์ค ํ์๊ฐ ์์ ๊ฒ์ด๋ค
๋ฐ๋ฉด, ์์๊ณผ ๋ถ๋ชจ ๊ด๊ณ๊ฐ ์๋ ์ ํ ๋ชจ๋ฅด๋ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ pipe๋ฅผ ์ด์ฉํด์ ํต์ ์ ํด์ผํ๋ ๊ฒฝ์ฐ๋ ์ฐ๋ฆฌ๊ฐ ์ํ ๋ชจ๋ฅด๋ ์ฌ๋๊ณผ ๋ํ๋ฅผ ํ๋ ค๋ฉด ์ด๋ฆ์ ์์์ผ ํ๋ฏ pipe์ ์ด๋ฆ์ ์ฃผ์ด์ ธ์ผ ํ๋ค, ๊ทธ๊ฒ์ด Named PIPE๋ฅผ ๋ง๋ ์ด์ ์ด๋ค
Message Queue (๋ฉ์์ง ํ)
- FIFO(First-In First-Out, ์ ์ ์ ์ถ) ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ํต์ ์ค๋น๋ก ์ปค๋์์ ๊ด๋ฆฌ
- ์ ์ถ๋ ฅ ๋ฐฉ์์ผ๋ก๋ณด๋ฉด ์์ Named PIPE์ ๋์ผํ๋ค ํ ์ ์๋ค
- ์ฐจ์ด์ ์ด๋ผ๋ฉด, Named PIPE๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ด๋ผ๋ฉด Message Queue๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ผ๋ ์
- ์ด๋์๋ ๋ฌผ๊ฑด์ ๊บผ๋ผ ์ ์๋ ์ปจํ ์ด๋ ๋ฒจํธ์ ๊ฐ๋ค ๋ณด๋ฉด ๋๋ค
- Message Queue์ ์ธ ๋ฐ์ดํฐ์ ๋ฒํธ๋ฅผ ๋ถํ์ผ๋ก์จ ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๋ใ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ค
์ฅ์
- ๋น๋๊ธฐ ๋ฐฉ์์ด๊ธฐ์ ๋ฐฉ๋ํ ์ฒ๋ฆฌ๋์ด ์๋ค๋ฉด ํ์ ๋ฃ์ ํ ๋์ค์ ์ฒ๋ฆฌ ํ ์ ์๋ค
- ๋ค์์ ํ๋ก์ธ์ค๋ค์ด ํ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๊ณ ๋ค์์ ํ๋ก์ธ์ค๋ค์ด ํ๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ๊บผ๋ผ ์ ์๋ค
- ๋ถ์ฐ์ฒ๋ฆฌ ๋ฐ ๊ฒฝ์์ฒ๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๋ค
- (๋น๋๊ธฐ, ๋น๋์กฐ, ํ๋ ฅ์ฑ, ๊ณผ์, ํ์ฅ์ฑ์ด ์๋๋ฐ ์ด๊ฑด ๋ค๋ฅธ ํฌ์คํธ ์ฐธ์กฐํด๋ ์ถฉ๋ถํ ๊ฑฐ ๊ฐ๋ค)
๋จ์
- ๋ฉ์์ง๊ฐ ์ ๋ง ์ ์ ๋ฌ๋์๋์ง ์ ์ ์๋ค
- ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋์ค๋ ๊ณผ์ ์์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ ํ ์ ์๋ค
- ๋ฐ์ดํฐ๊ฐ ๋ง์ด ์์ผ์๋ก ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์์ด ํ์ํ๋ค
Shared Memory (๊ณต์ ๋ฉ๋ชจ๋ฆฌ)
- ๋ฐ์ดํฐ ๊ณต์ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋๋ฐ,
- ํต์ ์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ (ex. PIPE, Named PIPE, Message Queue, ...)
- ๋ฐ์ดํฐ๋ฅผ ๊ณต์ , ์ฆ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ (ex. Shared Memory, ...)
-
- ์ฆ, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ๊ณต์ ํ๋๋ก ์ง์ํ๋ ์ค๋น์ด๋ค
- Shared Memory(๊ณต์ ๋ฉ๋ชจ๋ฆฌ)๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉ
- ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ปค๋์ ์์ฒญํ๋ฉด ์ปค๋์ ํด๋น ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด ์ฃผ๊ฒ๋๊ณ , ์ดํ ์ด๋ค ํ๋ก์ธ์ค๊ฑด ํด๋น ๋ฉ๋ชจ๋ฆฌ์์ญ์ ์ ๊ทผ ํ ์ ์๋ค
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ์ค๊ฐ์ ์์ด ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ IPC์ค์์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋ํ๋ค
- (๋ค์๋งํด, ์ปค๋๋ฉ๋ชจ๋ฆฌ์์ญ์์ ๊ด๋ฆฌํ๊ธฐ์ ๋น ๋ฅด๊ฒ ์ ๊ทผ ๊ฐ๋ฅ)
- ๋ฉ์์ง ์ ๋ฌ ๋ฐฉ์์ด ์๋๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผํ๋ ์์ ์ ์ ์ ์๋ค
- ์ปค๋ ์ค์ ์ ์ข ์์ ์ด๊ธฐ์ ์ฌ์ฉํ๊ธฐ์ ์ ์ปค๋์์ ํ์ฉํ๊ณ ์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ๋ฅผ ํ์ธํด์ผ ํ๋ค
Semaphore (์ธ๋งํฌ์ด)
- PIPE, Named PIPE, Message Queue์ ๊ฐ์ ๋ค๋ฅธ IPC ์ค๋น๋ค์ด ๋๋ถ๋ถ ํ๋ก์ธ์ค๊ฐ ๋ฉ์์ง ์ ์ก์ ๋ชฉ์ ์ผ๋ก ํ๋๋ฐ ๋ฐํด,
- Semaphore๋ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๊ณ ๋ณดํธํ๋๋ฐ ๊ทธ ๋ชฉ์ ์ด ์๋ค
- ํ๋ก์ธ์ค๊ฐ ๋ฉ์์ง ์ ์ก์ ํ๊ฑฐ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ฒ ๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๊ณต์ ๋ ์์์ ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ๋ฉด ์๋๋ฉฐ ๋จ์ง ํ๋์ ํ๋ก์ธ์ค๋ง ์ ๊ทผ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋๊ฒ์ด ์ธ๋งํฌ์ด(Semaphore) ์ด๋ค
- ์ฆ, ์ด์ ์ฒด๊ณ ๋๋ ํ๋ก๊ทธ๋จ ์์ฑ ๋ด์์ ๊ณต์ ์์์ ๋ํ ์ ์์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ ํธ
- ํ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๊ณ ์๋ ๋์์ ์ธ๋งํฌ์ด๋ฅผ ์ธ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ์ํค๊ณ ์ฌ์ฉ์ด ๋๋๋ฉด ํด์ ์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ
๋ฎคํ ์ค Mutex | ์ธ๋งํฌ์ด Semaphore |
๊ณต์ ๋ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ๋ง๋ ๊ฒ | ๊ณต์ ๋ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ๋ง๋ ๊ฒ |
์ํ๊ฐ 0, 1 ๋๊ฐ (์ด์ง ์ธ๋งํฌ์ด) | ์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค๊ฐ ๋ ์ ์๋ค |
๋ฎคํ ์ค ์์ ์ค์ธ ์ค๋ ๋๊ฐ ๋ฎคํ ์ค๋ฅผ ํด์ | ์ธ๋งํฌ์ด๋ฅผ ์์ ํ์ง ์๋ ์ค๋ ๋๊ฐ ์ธ๋งํฌ์ด ํด์ |
ํ๋ก์ธ์ค ๋ฒ์๋ฅผ ๊ฐ์ง๊ณ ์ข ๋ฃ ๋ ๋, ์๋ Clean | ํ์ผ ์์คํ ์์ ํ์ผ ํํ๋ก ์กด์ฌ |
๋๊ธฐํ ๋์์ด ์ค์ง ํ๋์ผ ๋ | ๋๊ธฐํ ๋์์ด ํ๋ ์ด์์ผ ๋ |
(ํ๊ฐ์ง ์๋ฅผ ๋ค์๋ฉด, ํ์ฅ์ค์ ๊ฐ์๋ ํ์ฅ์ค ์นธ์ ์๊ฐํ๋ฉด ๋๋ค. ํ์ฅ์ค ํ ์นธ์ ๋ํด ๊ด๋ฆฌ๋ฅผ ํ๋๊ฒ์ด ๋ฎคํ ์ค์ด๊ณ ํ์ฅ์ค ์์ฒด๋ฅผ ๊ด๋ฆฌํ๋๊ฒ ์ธ๋งํฌ์ด๊ฐ ๋๋ค)
์ฅ์
- ๋ง์ Thread๋ค์ ํฌ๋ฆฌํฐ์ปฌ ์น์ ์ ํ๋ฝ๋ฐ์์ผ ํ๋ค. ์ฆ, ํฌ๋ฆฌํฐ์ปฌ ์น์ ์์ ์ถฉ๋์ด ๋์ง ์๋๋ค
๋จ์
- ๋ง์ Thread๋ค์ block์ ๋นํ๋ค. ์ฆ, CPU๊ฐ ๊ฐ๋งํ waitingํ๋ ์๊ฐ ๋ญ๋น๊ฐ ๋ฐ์ํ ์ ์๋ค
Memory Map (๋ฉ๋ชจ๋ฆฌ ๋งต)
๋ฉ๋ชจ๋ฆฌ ๋งต๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ค๋ ์ธก๋ฉด์์๋ ๋น์ทํ๋ค
-
- ์ฐจ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ๋งต์ ์ด๋ฆฐ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งตํ์์ผ์ ๊ณต์ ํ๋ค๋ ์
- ํ์ผ(fd)๋ ๋ฆฌ๋ ์ค์ ์์คํ ์ ์ ์ญ์ ์ธ ์์์ด๋ฏ๋ก ์ฆ, ๋ชจ๋ ๊ณต์ ํ ์ ์๋ ์์์ด๋ฏ๋ก ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋๋ฐ ๋ฌธ์ ๊ฐ ์์์ ์์ํ ์ ์๋ค
- ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ฏธ ์ฌ๋ผ์์๋ ๊ฒ์ฒ๋ผ ๊ฐ๋จํ๊ฒ ์ ๊ทผ ํ ์ ์๋ค
- ์ผ๋ฐ์ ์ธ ํ์ผ IO์ ๋นํด ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋ค
- ๋น๋๊ธฐ IO๋ฅผ ์ฌ์ฉํ์ง๋ง ์์คํ ์์ ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ๋ฌธ์ ๋ฅผ ๊ฑฑ์ ํ ํ์ ์๋ค
- ์ผ๋ฐ ํ์ผ IO์ ๋นํด ์๋นํ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌ
- ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ง๋ ์ค๋ซ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ ๊ฒ์ธ์ง ์ปจํธ๋กคํ ์ ์๋ค
Socket (์์ผ, UDS = Unix Domain Socket)
- ๊ฐ์ ๋๋ฉ์ธ ๋ด์์ ์ฐ๊ฒฐ ๋ ์ ์๊ณ ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค
- ์๋ฒ๋จ์์๋ bind, listen, accept ์งํํด ์์ผ ์ฐ๊ฒฐ์ ์ํ ์ค๋น๋ฅผ ํ๋ค
- ํด๋ผ์ด์ธํธ ๋จ์์๋ connect์ ํตํด ์๋ฒ์ ์์ฒญํ๊ณ ์ฐ๊ฒฐ์ด ์๋ฆฝ ๋ ํ์์๋ socket์ send ํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ์ฐ๊ฒฐ์ด ๋๋๋ฉด ๋ฐ๋์ close()๋ก clear ํ๋ค
- ์ฆ, ๋คํธ์ํฌ๋ฅผ ํตํด ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ์งํํ๋ค
์ฅ์
- ์๋ฒ/ํด๋ผ์ด์ธํธ ํ๊ฒฝ์ ๊ตฌ์ถํ๋๋ฐ ์ฉ์ดํ๋ค
- Internet Socket์ธ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ์ค์ด ๋ฐ์ํ ์ ์์ง๋ง, Unix Domain์์ผ์ PIPE์ ๊ฐ์ ํํ๋ก ์ด๋ฃจ์ด์ง๊ณ ๊ฐ์ ์์คํ ์์ ๊ตํ์ด ์ผ์ด๋๋ฏ๋ก ํจํท์ด ์ ์ค๋๊ฑฐ๋, ์์๊ฐ ๋ฐ๋๋ ๋ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์๊ฑฐ๋ผ ์ฅ๋ด ํ ์ ์๋ค
- ๋ฒ์ฉ์ ์ธ IPC๋ก์จ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ๋ค
- ํจํท ๋จ์๋ก ์ฃผ๊ณ ๋ฐ์์ผ๋ก ์ง๊ด์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ค
๋จ์
- Internet UDP์๋ ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์๋ค (๋ค์ค์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐ์๋ค์ด๋ ์๋ฒ์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค)
References.
'๐ฅ > OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Linux] open files์ max user processes ํํค์น๊ธฐ (0) | 2022.12.07 |
---|---|
[์ด์์ฒด์ ] ์์คํ ์ฝ System Call (0) | 2021.08.31 |
[์ด์์ฒด์ ] ์ธํฐ๋ฝํธ Interrupt (0) | 2021.08.25 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ (0) | 2021.08.25 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด (0) | 2021.08.18 |