티스토리 뷰
🧠 IPC(Inter-Process Communication): 왜 서로 통신해야 할까?
💬 먼저 질문 하나:
컴퓨터에서 돌아가는 여러 프로그램(=프로세스)들은
왜 굳이 서로 정보를 주고받아야 할까요?
“각자 자기 할 일만 하면 되지, 왜 소통이 필요한데?”
정말 좋은 질문입니다.
많은 분들이 “프로세스는 독립적으로 돌아가는 거 아닌가요?”라고 생각하곤 합니다.
그런데 현실에서는…
거의 모든 복잡한 프로그램들이 여러 개의 프로세스로 나뉘어 있고,
이 프로세스들이 서로 정보를 주고받으며 협업합니다.
📦 프로세스 협력이 필요한 이유: 실생활 비유부터
🏫 학교 시험지 제작 비유
학교에서 시험지를 만든다고 해볼게요.
작업은 다음과 같이 나뉩니다:
- 출제 담당자: 문제를 만듭니다. (예: 수학 선생님)
- 편집 담당자: 문제를 보기 좋게 편집합니다. (문서화 작업)
- 인쇄 담당자: 최종 문서를 프린터로 출력합니다.
이 세 사람은 각각 자기 역할만 해요.
하지만 시험지 한 부를 완성하려면 각 단계의 정보가 전달되어야 합니다.
“문제를 만들었으면 편집 담당자에게 넘겨줘야 하고,
편집이 끝났으면 인쇄 담당자에게 넘겨야 하죠.”
컴퓨터 프로그램도 똑같습니다.
💻 컴퓨터 프로그램 속에서의 “협업”
복잡한 프로그램은 내부적으로 여러 프로세스로 나뉘어 실행됩니다.
📱 예: 스마트폰의 영상 통화 앱
- 📹 카메라 프로세스: 영상을 캡처해서 메모리에 저장
- 🎤 마이크 프로세스: 음성을 녹음
- 🌐 네트워크 프로세스: 인터넷으로 영상과 음성 데이터를 전송
- 🖥️ UI 프로세스: 화면에 얼굴을 보여주고, 버튼을 표시
이들은 모두 독립된 프로세스로 실행됩니다.
하지만 영상 통화 한 번을 하려면…
- 📹 캡처된 화면이 🌐 네트워크로 전달돼야 하고,
- 🎤 녹음된 소리도 🌐 통신 프로세스로 보내야 하며,
- 🖥️ UI 프로세스는 이 모든 상태를 보여줘야 합니다.
결국, 각자 따로 노는 게 아니라, 정보가 계속 왔다 갔다 해야 하죠.
이때 필요한 것이 바로 IPC: 프로세스 간 통신입니다.
🧠 IPC란?
IPC는 Inter-Process Communication의 줄임말로,
서로 다른 프로세스들이 데이터를 주고받고, 명령을 전달할 수 있도록 하는 시스템입니다.
운영체제는 보안을 위해
프로세스끼리는 서로의 메모리를 건드릴 수 없게 막아놓았기 때문에,
직접 접근은 안 되고, 운영체제가 마련해 준 통신 수단을 통해서만 정보 주고받기가 가능합니다.
📚 일상적 프로그램 예시들
① 워드 프로세서 + 인쇄 기능
- 📝 워드 프로그램(프로세스 A): 문서 작성 중
- 🖨️ 프린터 드라이버(프로세스 B): 인쇄 요청을 받아 실제로 프린터 작동
이 둘은 독립된 프로세스입니다.
하지만 사용자가 "인쇄" 버튼을 누르면:
- 프로세스 A는 “인쇄하라”는 명령과 함께 문서 데이터를 B에게 전달해야 하죠.
- IPC 없이는 이런 명령 전달이 불가능합니다.
② 브라우저 탭과 UI
- 💻 웹 브라우저 UI(프로세스 A): 탭을 띄우고 주소창 보여줌
- 🌐 렌더러(프로세스 B): 웹페이지를 실제로 다운로드하고 그려주는 작업
크롬, 엣지, 사파리 등의 브라우저는
보안과 안정성 때문에 탭마다 별도 프로세스를 사용합니다.
- 사용자가 URL 입력 → 프로세스 A가 "이 주소 보여줘"라고 명령
- 프로세스 B는 그 요청을 받고 실행
- 결과를 다시 프로세스 A에게 전달
이 흐름은 전부 IPC로 이루어져 있습니다.
③ 음성 녹음 프로그램
- 🎙️ 마이크 장치 제어 프로세스
- 💾 데이터 저장 프로세스
- 📊 UI 프로세스
셋이 동시에 작동하면서 정보를 주고받습니다:
- 녹음된 데이터를 전달
- 현재 녹음 시간 표시
- 중지/시작 버튼 처리
이 협업도 모두 IPC입니다.
🧭 IPC 없으면 생기는 문제
- 프로세스가 자기가 해야 할 일을 하더라도
상대방에게 전달할 방법이 없다면 아무 소용 없음 - 예를 들어, 녹음 데이터가 저장 프로세스로 전달되지 않으면?
→ “소리는 잘 들리지만 저장이 안 되는” 쓸모없는 녹음기 - 또는 UI 프로세스가 마이크 프로세스의 상태를 못 알면?
→ “녹음 중인지 아닌지”도 모르는 인터페이스
즉, IPC 없이는 “프로그램이 부품처럼 나눠져만 있고, 완성된 기능이 되지 않는” 상태가 됩니다.
✅ 마무리 요약
질문 답
IPC란? | 프로세스끼리 정보를 주고받기 위한 통신 수단 |
왜 필요한가? | 프로그램이 여러 프로세스로 나뉘어 돌아갈 때 협업 필요 |
어떤 예시가 있나? | 웹 브라우저, 워드 인쇄, 영상통화, 녹음기 등 |
실생활 비유는? | 출제-편집-인쇄처럼 각 단계가 협력해야 시험지 완성됨 |
'프로그래밍 > 시스템 프로그래밍' 카테고리의 다른 글
부모 프로세스 vs 자식 프로세스 (0) | 2025.03.24 |
---|---|
IPC 방법 - 메일슬롯 (0) | 2025.03.24 |
🧠 UC Count란 무엇인가? (0) | 2025.03.24 |
커널 오브젝트와 핸들 (0) | 2025.03.24 |
프로세스(Process)란? (0) | 2025.03.21 |
- Total
- Today
- Yesterday
- 인지부조화
- 오블완
- jlpt
- 백준
- 데이터분석
- EBS
- stl
- 보세사
- 여인권
- 회계
- 열혈프로그래밍
- C
- 통계학
- 일본어문법무작정따라하기
- 윤성우
- Python
- 뇌와행동의기초
- 류근관
- 일문따
- 파이썬
- 티스토리챌린지
- 코딩테스트
- 인프런
- 통계
- 일본어
- 사회심리학
- K-MOOC
- 심리학
- c++
- C/C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |