Inter-Process Communication

๋ถ„๋ฅ˜:์ปดํ“จํ„ฐ
์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ์„ค๋ช…2. ์ข…๋ฅ˜
2.1. ๋ฉ”์ผ์Šฌ๋กฏ2.2. ํŒŒ์ดํ”„
2.2.1. ๋ช…๋ช…๋˜์ง€ ์•Š์€(์ต๋ช…) ํŒŒ์ดํ”„2.2.2. ๋ช…๋ช…๋œ ํŒŒ์ดํ”„
2.3. ์†Œ์ผ“2.4. ์‹œ๊ทธ๋„2.5. ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ

1. ์„ค๋ช…[ํŽธ์ง‘]

Inter-Process Communication
์ปดํ“จํ„ฐ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ .

์šด์˜์ฒด์ œ ์ƒ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ์„ 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 ์ด๋ฆ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

๊ฑฐ์˜ ๋ชจ๋“  ์ฃผ์š”ํ•œ OS๊ฐ€ ๋‹ค Pipe๋ผ๊ณ  ๋ถ€๋ฅด๋Š” IPC๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, OS๋ณ„๋กœ ๋‹ค๋ฅธ ์ž‘๋™ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

2.2.1. ๋ช…๋ช…๋˜์ง€ ์•Š์€(์ต๋ช…) ํŒŒ์ดํ”„[ํŽธ์ง‘]

Anonymous Pipe
OS์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋‹จ๋ฐฉํ–ฅ IPC์ด๋‹ค. ์“ฐ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ ์ปค๋„ฅ์…˜๊ณผ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ ์ปค๋„ฅ์…˜ 2๊ฐœ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ณดํ†ต ์ƒ์†์œผ๋กœ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜์„ ์ „๋‹ฌํ•˜์—ฌ ํ†ต์‹ ํ•œ๋‹ค. ์œ ๋‹‰์Šค๋Š” ์ปค๋„ฅ์…˜์œผ๋กœ ํŒŒ์ผ๋””์Šคํฌ๋ฆฝํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ด๋Ÿฐ ์ต๋ช… ํŒŒ์ดํ”„๋ฅผ 2๊ฐœ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

์œ ๋‹‰์Šค์˜ ๊ฒฝ์šฐ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„์™€์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์†Œ๋ฉธ ์‹œ์ ์ด๋‹ค. ์ต๋ช… ํŒŒ์ดํ”„์˜ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ ์ปค๋„ฅ์…˜(ํ•ธ๋“ค ํ˜น์€ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ)๋ฅผ OS๊ฐ€ ์ฐพ์•„์„œ ๋‹ค ์ฃฝ์—ฌ๋ฒ„๋ฆฐ๋‹ค.

์œˆ๋„์šฐ์˜ ์ต๋ช… ํŒŒ์ดํ”„๋Š” ์•„๋ฌด ์ด๋ฆ„์ด๋‚˜ ๊ฐ€์ง„ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์—†๋Š” ์ตœ์ƒ์œ„ ํด๋”์— ํŒŒ์ดํ”„ ์ „์šฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฐ€์ง„ ํŠน์ˆ˜ํ•œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ , ์ปค๋„ฅ์…˜์œผ๋กœ ๊ทธ ํŒŒ์ผ์˜ ํ•ธ๋“ค์˜ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค. OS/2๋Š”? ๋ชฐ๋ผ ๊ทธ๊ฑฐ ๋ˆ„๊ฐ€ ์“ด๋‹ค๊ณ 
์œˆ๋„์šฐ์˜ ์ต๋ช… ํŒŒ์ดํ”„ API ์ž‘๋™ ๋ฌธ์„œ

2.2.2. ๋ช…๋ช…๋œ ํŒŒ์ดํ”„[ํŽธ์ง‘]

Named pipe

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„๋Š” ์ต๋ช… ํŒŒ์ดํ”„์— ์ด๋ฆ„์„ ๋ถ™์—ฌ์„œ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ์ปจ์…‰์—์„œ ์‹œ์ž‘ํ•œ ๊ฒƒ์ด๋‹ค. ์ด๋ฆ„์„ ๋ถ™์—ฌ์„œ ํŠน์ •์„ ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ดํ”„์˜ ์ด๋ฆ„์œผ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ง‰์ƒ ํ•ด ๋ณด๋ฉด ๋ณ„ ์ฐจ์ด๋Š” ์—†๋‹ค...

์œ ๋‹‰์Šค์˜ ๊ฒฝ์šฐ, ์ต๋ช… ํŒŒ์ดํ”„์™€์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ์–ด๋„ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„๋Š” ํšŒ์ˆ˜ํ•˜์ง€ ์•Š๋Š” ํ•œ ๋‚จ์•„์žˆ๋‹ค. ๋งˆ์šดํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ํŒŒ์ผ ์ทจ๊ธ‰์„ ํ•ด์„œ ๊ทธ๋Ÿฐ ๋“ฏ?

์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ๋Š” ํŒŒ์ดํ”„์˜ ๊ธฐ๋ณธ์ด ๋ช…๋ช…๋œ ํŒŒ์ดํ”„์ด๊ณ , ์ต๋ช… ํŒŒ์ดํ”„๋Š” ์•„๋ฌด ์ด๋ฆ„์ด๋‚˜ ์„ค์ •ํ•œ ํŒŒ์ดํ”„๋ผ์„œ, ๋ชจ๋“  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] ํ•ด์„์— ์˜คํ•ด์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋Š” ๋ฌธ์žฅ์ด๋‹ค. ์œ ๋‹‰์Šค ๊ณ„์—ด์—์„œ ๋งŽ์ด ์“ด๋‹ค๋Š” ์ ์€ ๋…ผ๋ž€์˜ ์—ฌ์ง€๊ฐ€ ์—†์œผ๋‚˜, ๊ทธ๋ ‡๋‹ค๊ณ  ์œˆ๋„์šฐ๊ฐ€ ์•ˆ ์“ฐ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ์„œ. ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ๋‹ค ๋‘๋ฃจ๋‘๋ฃจ ์“ฐ์ธ๋‹ค.