์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ์ค๋ช [ํธ์ง]
Inter-Process Communication
์ปดํจํฐ ํ๋ก์ธ์ค๊ฐ ํต์ .
์ด์์ฒด์ ์์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ Inter Process Communication(IPC)๋ผ๊ณ ํ๋ค. ํ๋ก์ธ์ค๋ ์์ ์๊ฒ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ ๋ณด๋ง ์ ๊ทผํ ์ ์๊ณ , ์ด๋ฅผ ๋ฒ์ด๋์ ์ ๊ทผํ ๊ฒฝ์ฐ, C์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ ์ฌ๋์ด๋ผ๋ฉด ๋๊ตฌ๋ ํ ๋ฒ์ฏค์ ๋ดค์ Segmentation Fault ๋ฑ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ์ด๋ ์์ ์ฑ์ ์ํด ์ด์์ฒด์ ์์ ์๊ธฐ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ ๊ทผํ๋๋ก ๊ฐ์ ํ๊ณ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ํ ํ๋ก๊ทธ๋จ์์ ๋ณ๋ ฌ์ฑ์ ํค์ฐ๋ฉด์ ๊ณต์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์ ํ๋ ์ค๋ ๋๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค (๋ฌผ๋ก ์ค๋ ๋๋ฅผ ์ฐ๋ ์ด์ ๋ ์ด๊ฒ ๋ง๊ณ ๋ ๋งค์ฐ ๋ค์ํ๋ค). ํ์ง๋ง ์ด๊ฒ์ ํ๋์ ํ๋ก๊ทธ๋จ์์๋ง ์๋ฏธ๊ฐ ์๋ ๊ฒ์ด๊ณ , ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ(์ฆ, ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค)์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ค๋ฉด ๊ฒฐ๊ตญ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ทผํ ํ์๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ด ๋๋ IPC๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๊ฒ ๋๋ค.
๋ค๋ฅธ ๊ฒ๋ ์๋ค. ๋ฐ๋ก LPC(Local Inter-Process Communication, ๋ก์ปฌ ์ปดํจํฐ ํ๋ก์ธ์ค๊ฐ ํต์ )๋ผ๋ ๊ฒ ์๋๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ๋ค๋ง ์ด๊ฑด ์ปค๋์์๋ง ์ธ ์ ์์ผ๋ฉฐ ์ผ๋ฐ ํ๋ก๊ทธ๋จ์ LPC๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ปดํจํฐ ํ๋ก์ธ์ค๊ฐ ํต์ .
์ด์์ฒด์ ์์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ Inter Process Communication(IPC)๋ผ๊ณ ํ๋ค. ํ๋ก์ธ์ค๋ ์์ ์๊ฒ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ ๋ณด๋ง ์ ๊ทผํ ์ ์๊ณ , ์ด๋ฅผ ๋ฒ์ด๋์ ์ ๊ทผํ ๊ฒฝ์ฐ, C์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ ์ฌ๋์ด๋ผ๋ฉด ๋๊ตฌ๋ ํ ๋ฒ์ฏค์ ๋ดค์ Segmentation Fault ๋ฑ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ์ด๋ ์์ ์ฑ์ ์ํด ์ด์์ฒด์ ์์ ์๊ธฐ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ ๊ทผํ๋๋ก ๊ฐ์ ํ๊ณ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ํ ํ๋ก๊ทธ๋จ์์ ๋ณ๋ ฌ์ฑ์ ํค์ฐ๋ฉด์ ๊ณต์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์ ํ๋ ์ค๋ ๋๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค (๋ฌผ๋ก ์ค๋ ๋๋ฅผ ์ฐ๋ ์ด์ ๋ ์ด๊ฒ ๋ง๊ณ ๋ ๋งค์ฐ ๋ค์ํ๋ค). ํ์ง๋ง ์ด๊ฒ์ ํ๋์ ํ๋ก๊ทธ๋จ์์๋ง ์๋ฏธ๊ฐ ์๋ ๊ฒ์ด๊ณ , ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ(์ฆ, ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค)์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ค๋ฉด ๊ฒฐ๊ตญ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ทผํ ํ์๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ด ๋๋ IPC๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๊ฒ ๋๋ค.
๋ค๋ฅธ ๊ฒ๋ ์๋ค. ๋ฐ๋ก LPC(Local Inter-Process Communication, ๋ก์ปฌ ์ปดํจํฐ ํ๋ก์ธ์ค๊ฐ ํต์ )๋ผ๋ ๊ฒ ์๋๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ๋ค๋ง ์ด๊ฑด ์ปค๋์์๋ง ์ธ ์ ์์ผ๋ฉฐ ์ผ๋ฐ ํ๋ก๊ทธ๋จ์ LPC๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
2. ์ข ๋ฅ[ํธ์ง]
2.1. ๋ฉ์ผ์ฌ๋กฏ[ํธ์ง]
๋ฉ์ผ์ฌ๋กฏ์ ๋จ๋ฐฉํฅ ๋ฉ์์ง ์ ์ก์ด ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์์ ๊ฐ์ํ์ผ์ด๋ค. ํฌ๊ธฐ ์ ํ์ด 424๋ฐ์ดํธ๋ก ๊ฝค ์์ง๋ง, ์ฝ๊ฒ ๋ง๋ค ์ ์๊ณ , ๋์คํฌ ํ์ผ๊ณผ๋ ๋ค๋ฅด๊ฒ ํ๋ฐ์ฑ์ด๋ผ๋ ์ , ๊ทธ๋ฆฌ๊ณ ๋ธ๋ก๋์บ์คํ
์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ์ฅ์ ์ด๋ค.
2.2. ํ์ดํ[ํธ์ง]
ํ์ดํ(Pipe)๋ ์ฃผ๋ก ์ ๋์ค ์์คํ
์์[1] ๋ง์ด ์ฐ์ด๋ IPC ๊ตฌํ ์ค ํ๋์ด๋ค. ์ ๋์ค ํธํ ์ปค๋์ pipe(2)๋ผ๋ ์์คํ
์ฝ๋ก ํ์ดํ๋ฅผ ์์ฑํ ์ ์๋ค. ๋ณดํต ๋ง์ด ์ฐ์ด๋ ๋ฐฉ์์ ์
ธ ๋ด์์ ํ ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ๋ฌํด์ ๋ฐ์ดํฐ๋ฅผ ์๋กญ๊ฒ ๊ฐ๊ณต์ํค๋ ๊ฒ์ด๋ค. ์
ธ์์ " | " ์๋ค๋ก ํ๋ก๊ทธ๋จ๋ช
์ด ๋์จ๋ค๋ฉด ์์ ํ๋ก๊ทธ๋จ๊ณผ ๋ค์ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ํ์ดํ๊ฐ ์์ฑ๋๊ณ , ์์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ ์
๋ ฅ์ผ๋ก ๋ค์ด๊ฐ๋ค. ์ด ๊ธฐ๋ฅ์ ์๋์ฐ์์๋ PowerShell์์ ์ง์ํ๋ฉฐ, ์ ํต์ ์ธ ๋ช
๋ น ํ๋กฌํํธ์์๋ ์ง์ํ์ง ์๋๋ค. ๋จ๋ฐฉํฅ ๋ช
๋ช
๋์ง ์์ ํ์ดํ๋ฅผ ์์ฑํ์ฌ ์์ ํ๋ก์ธ์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํ๋ก์ธ์ค๋ก ์ ๋ฌํ๋ ๊ณผ์ ์ด๋ค.
์ฌ์ฉ ์์
์ฌ์ฉ ์์
$ ip addr show | grep enp3s0 - ํ์ฌ ์ปดํจํฐ์ ์ค์น๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ ip addr show ๋ช ๋ น์ ๊ฒฐ๊ณผ๊ฐ "grep enp3s0"์ผ๋ก ์ ๋ฌ๋์ด ๋ชฉ๋ก ์ค์ enp3s0 ์ด๋ฆ์ ์ธํฐํ์ด์ค๋ฅผ ๋ณด์ฌ์ค๋ค. |
2.2.1. ๋ช ๋ช ๋์ง ์์(์ต๋ช ) ํ์ดํ[ํธ์ง]
Anonymous Pipe
OS์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ์ ์ธ ํ์ผ ๊ธฐ๋ฐ ๋จ๋ฐฉํฅ IPC์ด๋ค. ์ฐ๊ธฐ๋ง ๊ฐ๋ฅํ ์ปค๋ฅ์ ๊ณผ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ ์ปค๋ฅ์ 2๊ฐ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ณดํต ์์์ผ๋ก ๋ ์ค ํ๋์ ์ปค๋ฅ์ ์ ์ ๋ฌํ์ฌ ํต์ ํ๋ค. ์ ๋์ค๋ ์ปค๋ฅ์ ์ผ๋ก ํ์ผ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํํ๋ค. ์๋ฐฉํฅ ํต์ ์ ํ๊ณ ์ถ์ผ๋ฉด ์ด๋ฐ ์ต๋ช ํ์ดํ๋ฅผ 2๊ฐ ๋ง๋ค๋ฉด ๋๋ค.
์ ๋์ค์ ๊ฒฝ์ฐ ๋ช ๋ช ๋ ํ์ดํ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์๋ฉธ ์์ ์ด๋ค. ์ต๋ช ํ์ดํ์ ๊ฒฝ์ฐ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ๊ทธ ํ๋ก์ธ์ค์ ์ปค๋ฅ์ (ํธ๋ค ํน์ ํ์ผ ๋์คํฌ๋ฆฝํฐ)๋ฅผ OS๊ฐ ์ฐพ์์ ๋ค ์ฃฝ์ฌ๋ฒ๋ฆฐ๋ค.
์๋์ฐ์ ์ต๋ช ํ์ดํ๋ ์๋ฌด ์ด๋ฆ์ด๋ ๊ฐ์ง ๋ช ๋ช ๋ ํ์ดํ์ด๋ค. ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ์ต์์ ํด๋์ ํ์ดํ ์ ์ฉ ํ์ผ ์์คํ ์ ๊ฐ์ง ํน์ํ ํ์ผ์ ์์ฑํ๊ณ , ์ปค๋ฅ์ ์ผ๋ก ๊ทธ ํ์ผ์ ํธ๋ค์ API๋ฅผ ์ ๊ณตํ๋ค.OS/2๋? ๋ชฐ๋ผ ๊ทธ๊ฑฐ ๋๊ฐ ์ด๋ค๊ณ
์๋์ฐ์ ์ต๋ช ํ์ดํ API ์๋ ๋ฌธ์
OS์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ์ ์ธ ํ์ผ ๊ธฐ๋ฐ ๋จ๋ฐฉํฅ IPC์ด๋ค. ์ฐ๊ธฐ๋ง ๊ฐ๋ฅํ ์ปค๋ฅ์ ๊ณผ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ ์ปค๋ฅ์ 2๊ฐ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ณดํต ์์์ผ๋ก ๋ ์ค ํ๋์ ์ปค๋ฅ์ ์ ์ ๋ฌํ์ฌ ํต์ ํ๋ค. ์ ๋์ค๋ ์ปค๋ฅ์ ์ผ๋ก ํ์ผ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํํ๋ค. ์๋ฐฉํฅ ํต์ ์ ํ๊ณ ์ถ์ผ๋ฉด ์ด๋ฐ ์ต๋ช ํ์ดํ๋ฅผ 2๊ฐ ๋ง๋ค๋ฉด ๋๋ค.
์ ๋์ค์ ๊ฒฝ์ฐ ๋ช ๋ช ๋ ํ์ดํ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์๋ฉธ ์์ ์ด๋ค. ์ต๋ช ํ์ดํ์ ๊ฒฝ์ฐ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ๊ทธ ํ๋ก์ธ์ค์ ์ปค๋ฅ์ (ํธ๋ค ํน์ ํ์ผ ๋์คํฌ๋ฆฝํฐ)๋ฅผ OS๊ฐ ์ฐพ์์ ๋ค ์ฃฝ์ฌ๋ฒ๋ฆฐ๋ค.
์๋์ฐ์ ์ต๋ช ํ์ดํ๋ ์๋ฌด ์ด๋ฆ์ด๋ ๊ฐ์ง ๋ช ๋ช ๋ ํ์ดํ์ด๋ค. ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ์ต์์ ํด๋์ ํ์ดํ ์ ์ฉ ํ์ผ ์์คํ ์ ๊ฐ์ง ํน์ํ ํ์ผ์ ์์ฑํ๊ณ , ์ปค๋ฅ์ ์ผ๋ก ๊ทธ ํ์ผ์ ํธ๋ค์ API๋ฅผ ์ ๊ณตํ๋ค.
์๋์ฐ์ ์ต๋ช ํ์ดํ API ์๋ ๋ฌธ์
2.2.2. ๋ช ๋ช ๋ ํ์ดํ[ํธ์ง]
Named pipe
๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ช ๋ ํ์ดํ๋ ์ต๋ช ํ์ดํ์ ์ด๋ฆ์ ๋ถ์ฌ์ ํน์ ํ ์ ์๊ฒ ๋ง๋ ๋ค๋ ์ปจ์ ์์ ์์ํ ๊ฒ์ด๋ค. ์ด๋ฆ์ ๋ถ์ฌ์ ํน์ ์ ํ์๊ธฐ ๋๋ฌธ์ ํ์ดํ์ ์ด๋ฆ์ผ๋ก ๊ณต์ ํ ์ ์๋๋ฐ, ๋ง์ ํด ๋ณด๋ฉด ๋ณ ์ฐจ์ด๋ ์๋ค...
์ ๋์ค์ ๊ฒฝ์ฐ, ์ต๋ช ํ์ดํ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์, ํ๋ก์ธ์ค๊ฐ ์ฃฝ์ด๋ ๋ช ๋ช ๋ ํ์ดํ๋ ํ์ํ์ง ์๋ ํ ๋จ์์๋ค. ๋ง์ดํธ ํ ์ ์๋ ์ผ๋ฐ์ ์ธ ํ์ผ ์ทจ๊ธ์ ํด์ ๊ทธ๋ฐ ๋ฏ?
์๋์ฐ์ ๊ฒฝ์ฐ๋ ํ์ดํ์ ๊ธฐ๋ณธ์ด ๋ช ๋ช ๋ ํ์ดํ์ด๊ณ , ์ต๋ช ํ์ดํ๋ ์๋ฌด ์ด๋ฆ์ด๋ ์ค์ ํ ํ์ดํ๋ผ์, ๋ชจ๋ API๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ช ๋ ํ์ดํ์ฉ API์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ช ๋ ํ์ดํ๋ ์ต๋ช ํ์ดํ์ ์ด๋ฆ์ ๋ถ์ฌ์ ํน์ ํ ์ ์๊ฒ ๋ง๋ ๋ค๋ ์ปจ์ ์์ ์์ํ ๊ฒ์ด๋ค. ์ด๋ฆ์ ๋ถ์ฌ์ ํน์ ์ ํ์๊ธฐ ๋๋ฌธ์ ํ์ดํ์ ์ด๋ฆ์ผ๋ก ๊ณต์ ํ ์ ์๋๋ฐ, ๋ง์ ํด ๋ณด๋ฉด ๋ณ ์ฐจ์ด๋ ์๋ค...
์ ๋์ค์ ๊ฒฝ์ฐ, ์ต๋ช ํ์ดํ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์, ํ๋ก์ธ์ค๊ฐ ์ฃฝ์ด๋ ๋ช ๋ช ๋ ํ์ดํ๋ ํ์ํ์ง ์๋ ํ ๋จ์์๋ค. ๋ง์ดํธ ํ ์ ์๋ ์ผ๋ฐ์ ์ธ ํ์ผ ์ทจ๊ธ์ ํด์ ๊ทธ๋ฐ ๋ฏ?
์๋์ฐ์ ๊ฒฝ์ฐ๋ ํ์ดํ์ ๊ธฐ๋ณธ์ด ๋ช ๋ช ๋ ํ์ดํ์ด๊ณ , ์ต๋ช ํ์ดํ๋ ์๋ฌด ์ด๋ฆ์ด๋ ์ค์ ํ ํ์ดํ๋ผ์, ๋ชจ๋ API๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ช ๋ ํ์ดํ์ฉ API์ด๋ค.
2.3. ์์ผ[ํธ์ง]
์์ผ(Socket)์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋คํธ์ํฌ ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ๋ฐ์ดํฐ์ ์
์ถ๋ ฅ์ ๊ด๋ฌธ, ๋๋ ๊ทธ๋ฅผ ์ํ ์ด์์ฒด์ ์ API์ ์ด๋ฆ์ผ๋ก์จ ๋ง์ด ์ฐ์ธ๋ค. ์ด ์์ผ์ ํตํด TCP ์ฐ๊ฒฐ์ด ์๋ฆฝ๋๋ฉด ์คํธ๋ฆผ ์์ผ(Stream socket), UDP๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ(Datagram socket)์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ํ์ง๋ง ๊ผญ ๋ค๋ฅธ ๋คํธ์ํฌ๋ก ๊ฐ์ง ์๊ณ ์์ผ์ ์์ฑํ ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ์ปดํจํฐ ๋ด์ ๊ฐ์ ์ด์์ฒด์ ์์์ ์คํ๋๊ณ ์๋ค๋ฉด ํ๋ก์ธ์ค ๊ฐ ํต์ ์ด ๊ฐ๋ฅํ๊ฒ ๋๋ค. ์ด์ ๋ํด, ์์ ํ๋์ ์ปดํจํฐ ์์์ IPC๋ฅผ ์ํด ์ ๋์ค ๋๋ฉ์ธ ์์ผ(Unix Domain Socket)์ด๋ ๊ฒ๋ ์กด์ฌํ๋ค. ์ด๊ฒ๋ ์์ ๋คํธ์ํฌ ์์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ ์์ผ API๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
2.4. ์๊ทธ๋[ํธ์ง]
์๊ทธ๋(Signal)์ ์ ๋์ค ์์คํ
์์ ์ฐ์ด๋ IPC ๊ตฌํ ์ค ํ๋์ด๋ค. ์์ผ์ ์์ผ์ ์์ฑํด์ ๊ทธ๊ฒ์ ์ ๊ทผํ๊ธฐ ์ํด ๋ณ๋์ ์๋ณ์(ํ์ผ ๋์คํฌ๋ฆฝํฐ, file descriptor๋ผ๊ณ ํ๋ค)๊ฐ ํ์ํ์ง๋ง, ์๊ทธ๋์ ๊ทธ๋ฌํ ๊ฒ๋ค์ด ํ์ํ์ง ์๊ณ , ๋ฐ๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ๋ณด๋ฅผ ๋ณด๋ผ ์ ์๋ค (๊ด๋ฆฌ์, ํน์ root ๊ถํ์ด ํ์ํ ์๋ ์๋ค). ํ์ง๋ง ์์ผ์ฒ๋ผ ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์๋ ์๊ณ , ์ด๋ฆ ๊ทธ๋๋ก ์ผ์ข
์ ์ ํธ๋ง์ ๋ณด๋ผ ์ ์๋ค. ์์ ๊ฐ์์์ ๋งํ Segmentation Fault์ ์๊ฐ ๋ฐ๋ก ์๊ทธ๋๊ณผ ๊ด๋ จ์ด ์๋ค. ์ด๋ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ง ์์ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ทผํ ๋ ๋ฐ์ํ๋ค๊ณ ํ๋๋ฐ, ๊ตฌ์ฒด์ ์ผ๋ก ๊ทธ๋ฌํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ๋ฉด ์ด์์ฒด์ ์ปค๋์ด ๊ทธ๊ฒ์ ๊ฐ์งํ๊ณ ํ๋ก์ธ์ค์๊ฒ ์ด๋ฅผ ์๋ฆฌ๋ ์๊ทธ๋์ ๋ณด๋ธ๋ค (SIGSEGV๋ผ๋ ๊ฒ์ ๋ณด๋ธ๋ค). ๊ทธ๋ฌ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ด๋ฅผ ๋ฐ๊ณ ๊ฐ์ ๋ก ์์ ์ ์ข
๋ฃ์์ผ ๋ฒ๋ฆฐ๋ค. ๋ฐ๋ผ์ Segmentation Fault ์์๋ ํ๋ก์ธ์ค๊ฐ ์ฃฝ์ด๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ์๊ทธ๋์ ๊ธฐ๋ณธ ๋์์ ๋ฐ๊ฟ ์๋ ์๋๋ฐ, ์ด๊ฒ์ "์๊ทธ๋์ ์ก๋๋ค(catch)"๋ผ๊ณ ํ๋ค.
2.5. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ[ํธ์ง]
๋ง ๊ทธ๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ผ์ ์์ญ์ ๊ณต์ ํ๋ ๊ฒ์ด๋ค. ์ผ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ๊ฐ๋ฅํ๊ฒ ๋ฐ๊ฟ ์ฃผ๋ ๋ฐฉ์์ด๋, ํ๋์ ํ์ผ์ ์ด๊ณ ์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํํ์ฌ(memory-mapped file), ์ด ์์ญ์ ๊ณต์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐฉ์์ด ์๋ค.
[1] ํด์์ ์คํด์ ์ฌ์ง๊ฐ ์๋ ๋ฌธ์ฅ์ด๋ค. ์ ๋์ค ๊ณ์ด์์ ๋ง์ด ์ด๋ค๋ ์ ์ ๋
ผ๋์ ์ฌ์ง๊ฐ ์์ผ๋, ๊ทธ๋ ๋ค๊ณ ์๋์ฐ๊ฐ ์ ์ฐ๋ ๊ฒ์ ์๋๋ผ์. ๋ชจ๋ ์์คํ
์์ ๋ค ๋๋ฃจ๋๋ฃจ ์ฐ์ธ๋ค.