티스토리 뷰

반응형

 


🧠 IPC(Inter-Process Communication): 왜 서로 통신해야 할까?


💬 먼저 질문 하나:

컴퓨터에서 돌아가는 여러 프로그램(=프로세스)들은
왜 굳이 서로 정보를 주고받아야 할까요?

“각자 자기 할 일만 하면 되지, 왜 소통이 필요한데?”

정말 좋은 질문입니다.
많은 분들이 “프로세스는 독립적으로 돌아가는 거 아닌가요?”라고 생각하곤 합니다.

그런데 현실에서는…
거의 모든 복잡한 프로그램들이 여러 개의 프로세스로 나뉘어 있고,
이 프로세스들이 서로 정보를 주고받으며 협업합니다.


📦 프로세스 협력이 필요한 이유: 실생활 비유부터

🏫 학교 시험지 제작 비유

학교에서 시험지를 만든다고 해볼게요.
작업은 다음과 같이 나뉩니다:

  1. 출제 담당자: 문제를 만듭니다. (예: 수학 선생님)
  2. 편집 담당자: 문제를 보기 좋게 편집합니다. (문서화 작업)
  3. 인쇄 담당자: 최종 문서를 프린터로 출력합니다.

이 세 사람은 각각 자기 역할만 해요.
하지만 시험지 한 부를 완성하려면 각 단계의 정보가 전달되어야 합니다.

“문제를 만들었으면 편집 담당자에게 넘겨줘야 하고,
편집이 끝났으면 인쇄 담당자에게 넘겨야 하죠.”

컴퓨터 프로그램도 똑같습니다.


💻 컴퓨터 프로그램 속에서의 “협업”

복잡한 프로그램은 내부적으로 여러 프로세스로 나뉘어 실행됩니다.

📱 예: 스마트폰의 영상 통화 앱

  • 📹 카메라 프로세스: 영상을 캡처해서 메모리에 저장
  • 🎤 마이크 프로세스: 음성을 녹음
  • 🌐 네트워크 프로세스: 인터넷으로 영상과 음성 데이터를 전송
  • 🖥️ 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
링크
«   2025/04   »
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
글 보관함
반응형