2023. 3. 19. 12:31ใCS/CS ์คํฐ๋
ํ๋ก์ธ์ค๋ค์ด ์๋ก์ ๋ํด ์์ ํ ๋ ๋ฆฝ๋ ํ๊ฒฝ์ ๊ฐ๋๋ค๋ ๊ฒ์ ์ด์์ฒด์ ๋ฅผ ๊ณต๋ถํด ๋ณด์๋ค๋ฉด ์๋ช ํ๋ค.
ํ์ง๋ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ํ์ฉํ๊ณ ์ถ์ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ก์ปฌ์์ ๊ตฌ๋ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ MySql DB์ ์ ๊ทผํ๋ ์ํฉ์ ๊ฐ์ ํด ๋ณด์.
ํ๋ก์ธ์ค๊ฐ ์์ ํ ๋ ๋ฆฝํ๋ค๋ ๊ฐ์ ํ์๋, ์๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ์ค์ ๋ก๋ ์๋ฒ์์ DB๋ก ์ ๊ทผ์ด ์ ์ด๋ฃจ์ด์ง๋ค.
์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก IPC์ด๋ค.
IPC์ ์ข ๋ฅ
IPC์ ์ข ๋ฅ๋ ์๋์ ๊ฐ๋ค.
- Pipe
- Named Pipe
- Message Queue
- Shared Memory
- Socket Communication
Pipe
ํ์ดํ๋ ๋ ํ๋ก์ธ์ค ๊ฐ ๋จ๋ฐฉํฅ ํต์ ์ ์ํํ ๋ ์ด์ฉ๋๋ค.
ํ์ดํ๋ ์ผ์ข ์ ํ์ผ๋ก ๊ด๋ฆฌ๋๋๋ฐ, ์ด๋ ์ต๋ช ์ผ๋ก ์์ฑ๋์ด ์๋ก ๊ด๋ จ์ด ์๋ ํ๋ก์ธ์ค(ex. ๋ถ๋ชจ - ์์)๊ฐ ์๋๋ผ๋ฉด ์ด์ ์ ๊ทผํ ์ ์๋ค.
ํ์ดํ๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ก์ ์ธก์์, ํ์ดํ์ ๋ํด ํ ๋น๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ(์ฐ๊ธฐ ์ ์ฉ)์ ์ฐ๊ธฐ ์์ (write)์ ์ํ
- ๋ฐ์ดํฐ์ ์์๋ฅผ ์ ์งํ ์ฑ ๋ฐ์ดํฐ ์ ์ก(ํ์ดํ๋ ์ ๋ฌ ๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅ)
- ์์ ์ธก์์, ํ์ดํ์ ๋ํด ํ ๋น๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ(์ฝ๊ธฐ ์ ์ฉ)์ ์ฝ๊ธฐ ์์ (read)์ ์ํํ์ฌ ๋ฐ์ดํฐ ์์
ํ์ดํ๋ ์ ์ก ๋ฐ์ดํฐ ๊ฐ ์์๋ฅผ ๋ณด์ฅํ๊ณ ์ฌ์ฉ์ด ์ด๋ ต์ง ์๋ค๋ ์ ๊ณผ,
์์ฑํ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋ ํจ๊ป ์ข ๋ฃ๋๊ณ ๋จ๋ฐฉํฅ ํต์ ๋ง์ ์ง์ํ๋ค๋ ํน์ง์ด ์๋ค.
ํ์ดํ๋ pipe() ์์คํ ์ฝ์ ํตํด ์์ฑํ ์ ์๋ค.
Named Pipe
์์์ ์ธ๊ธํ ํ์ดํ๋ฅผ ์ต๋ช ํ์ดํ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋๋ฐ, ๊ทธ์๋ ๋ฌ๋ฆฌ ์ด๋ฆ์ด ๋ฐ๋ก ์๋ ํ์ดํ๋ ์กด์ฌํ๋ค.
ํด๋น ํ์ดํ๋ ํ์ผ ์์คํ ์์์ ํน์ ์ด๋ฆ์ด ๋ถ์ฌ๋๊ธฐ ๋๋ฌธ์,
์ต๋ช ํ์ดํ์ ๋ฌ๋ฆฌ ์๋ก ๊ด๋ จ์ด ์๋ ํ๋ก์ธ์ค์ผ์ง๋ผ๋ ํ์ดํ์ ์ ๊ทผํ๊ณ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ
ํ์ดํ์ ์๋ช ์ฃผ๊ธฐ๊ฐ ํน์ ํ๋ก์ธ์ค์ ์ข ์๋์ง๋ ์๋๋ค.
๋ฐ๋ผ์ ํ๋ก์ธ์ค์ ๊ด๋ จ ์์ด ํ์ดํ๊ฐ ์ง์์ ์ผ๋ก ์กด์ฌํด์ผ ๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
Named ํ์ดํ๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ mkfifo() ์์คํ ์ฝ์ ์ฌ์ฉํ๋ฉด ๋๊ณ ,
์์คํ ์ฝ ์ด๋ฆ์์๋ ๋ํ๋๋ฏ Named ํ์ดํ๋ฅผ FIFO๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
Message Queue
๋ฉ์์ง ํ๋ ์์ ์ธ๊ธํ ํ์ดํ์๋ ๋ฌ๋ฆฌ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
์ก์ ํ๋ก์ธ์ค๋ ์์คํ ์ฝ์ ํตํด ์ปค๋์ ์กด์ฌํ๋ ํ(Queue)์๋ค๊ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด,
์์ ์ธก์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์์คํ ์ฝ์ ํตํด ํ์ ์กด์ฌํ๋ ๋ฉ์์ง๋ฅผ ๊บผ๋ด์ฌ ์ ์๋ค.
์ด ๋ ํ์ ์ถ๊ฐ๋ ๋ฉ์์ง๋ค์ ๋จผ์ ๋ค์ด์จ ์์๋๋ก ๋น ์ ธ๋๊ฐ๊ฒ ๋๋ฉฐ(FIFO)
๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ํ์ดํ์ ๋ฌ๋ฆฌ
ํ๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ์์ ํ ๊ตฌ์กฐ์ฒด ๋จ์๋ก(๋ฉ์์ง ๋จ์) ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๋ค๋ ํน์ง์ด ์๋ค.
๋ฉ์์ง ํ๋ ํน์ ํ๋ก์ธ์ค์ ์ข ์์ ์ผ๋ก ์กด์ฌํ์ง ์๊ณ , ์ญ์ ๋ฅผ ์ํด์๋ ํน์ ๋ช ๋ น์ด๋ฅผ ๋ฐ๋ก ์ํํด์ผ ํ๋ค.
Shared Memory
๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์์ ๋ง ๊ทธ๋๋ก ํ๋ก์ธ์ค ๊ฐ์ ์๋ก ๊ณต์ ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ํ ๋นํ๊ณ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ด๋ค.
์ด๋ ๋ง์น ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์ค๋ ๋ ๊ฐ ๊ณต์ ๋๋ ์์๋ค๊ณผ ๋น์ทํ๋ค.
๋จ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ IPC ๋ฐฉ์๋ค์ ๋นํด ์๋๊ฐ ๋น ๋ฅด์ง๋ง,
๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ๊ณผ ์ ์ฌํ๊ฒ ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ์กฐ์น(์ธ๋งํฌ์ด, ๋ฎคํ ์ค ๋ฑ์ ๋์์ฑ ์ด์ ๊ด๋ฆฌ)๊ฐ ํ์ํ๋ค.
Socket Communication
์์ผ ํต์ ๋ฐฉ์์ ์๋ฒ ๊ฐ๋ฐ์๋ผ๋ฉด ์ต์ํ ๋ฐฉ์์ธ๋ฐ,
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํด๋ผ์ด์ธํธ-์๋ฒ ๋ชจ๋ธ๋ก ๊ตฌ์ฑ๋๋ค.
TCP/IP ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๊ฐ๊ฐ ์์ผ์ ์์ฑํ๊ณ ์ด๋ฅผ ํตํด ํต์ ํ๊ฒ ๋๋ค.
ํด๋น ๋ฐฉ์์ ๋ค๋ฅธ IPC ๋ฐฉ์๋ณด๋ค ์กฐ๊ธ ๋๋ฆด ์ ์์ง๋ง,
ํน์ ํธ์คํธ ๋ด์ ํ๋ก์ธ์ค ๊ฐ ํต์ ๋ฟ ์๋๋ผ ์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ๋ด ํธ์คํธ ๊ฐ ํต์ ์๋ ์ด์ฉ๋๋ ๋งํผ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
'CS > CS ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Mutex & Semaphore (0) | 2023.03.26 |
---|---|
CPU ์ค์ผ์ค๋ง (0) | 2023.03.25 |
ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB) (1) | 2023.03.18 |
System Call(์์คํ ์ฝ) (0) | 2023.03.11 |
์ธํฐ๋ฝํธ(Interrupt) (1) | 2023.03.11 |