[운영체제] IPC

2025. 4. 29. 17:45·⚙️ CS/운영체제
반응형

✅  IPC(Inter-Process Communication)

: 서로 다른 프로세스 간에 데이터를 주고받기 위한 메커니즘

 

IPC에는 크게 공유 메모리(Shared Memory) 방식과 메시지 전달(Message Passing) 방식이 있다.

 

공유 메모리는 말 그대로 같은 메모리를 읽고 써서 협력하는 것이고, 

메시지 전달은 프로세스들 사이에 메시지를 교환해서 협력한다.

IPC
출처: "Operating System Concepts", Abraham Silberschatz

 

그리고 메시지 전달 방식에는 구체적으로 파이프, 메시지 큐, 소켓 방식이 있다.

 

파이프 (Pipe) 단방향 통신, 부모-자식 간 주로 사용 
메시지 큐 (Message Queue) 메시지를 큐 형태로 전달, 비동기식 통신, 단방향
소켓 (Socket) 네트워크 기반 IPC, 서로 다른 시스템 간 통신도 가능
공유 메모리 (Shared Memory) 메모리를 공유하여 빠르고 효율적인 통신이 가능 (속도 빠름, 동기화 필요)

 


 

📍파이프 (Pipe)

: 파일 I/O를 통해 프로세스 간 데이터를 주고받는 방식

 

  • 단방향 통신이다.
  • FIFO 구조를 가진다.
  • 양방향 통신을 하려면 두 개의 파이프가 필요하다.
  • 간단하고 빠르게 설정 가능하다.

 

💡 언제 사용?

  • 주로 부모-자식 프로세스 간 단순한 데이터 전달을 할 때

 


 

📍메시지 큐 (Message Queue)

: 커널이 관리하는 큐를 통해 프로세스 간 구조화된 메시지를 주고받는 방식

 

  • 메시지 큐는 기본적으로 단방향 통신 구조이다.
  • 다음과 같이 역할이 나뉜다.
    • Producer(생산자): 메시지를 생성하여 보냄
    • Consumer(소비자): 생산자가 보낸 메시지를 받음
  • 만약 양방향 통신을 하고 싶다면, 두 개의 메시지큐를 사용하여 할 수 있다.
    • A -> B 메시지 큐, B -> A 메시지 큐

 

💡 언제 사용?

  • 비동기 통신이 필요할 때
  • 구조화된 데이터를 교환할 때

 


 

📍소켓

: 네트워크 통신 모델을 기반으로 한 양방향 통신 방식

 

  • 두 프로세스가 통신하려면 각 프로세스마다 하나씩 소켓이 필요하여, 총 2개의 소켓이 필요하다.
  • 같은 컴퓨터 내 통신뿐 아니라, 다른 컴퓨터 간 통신(네트워크 통신)에도 사용된다.
  • TCP, UDP 같은 다양한 통신 프로토콜을 사용할 수 있다.

 

💡 언제 사용?

  • 다른 컴퓨터 간 통신이 필요할 때
  • 양방향 통신이 필요할 때
  • 다수의 클라이언트와 서버 통신이 필요할 때

 


📍공유 메모리

: 두 개 이상의 프로세스가 같은 물리적 메모리 영역을 동시에 접근할 수 있도록 함

 

  • 중개자 없이 곧바로 메모리에 접근할 수 있기 때문에 모든 IPC 중 가장 빠르다.
  • 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 공유 메모리 공간을 할당한다.

 

💡 언제 사용?

  • 프로세스 간 읽기/쓰기를 모두 필요로 할 때
  • 대용량 데이터를 교환할 때
  • 빠른 속도가 필요할 때

 

🚨 주의할 점

  • 여러 프로세스가 동시에 접근하면 데이터 충돌이 일어날 수 있으므로 동기화 기법을 사용해야 한다.
  • 공유 메모리의 크기는 서로 사용하는 프로세스 간 일치해야 한다.
반응형

'⚙️ CS > 운영체제' 카테고리의 다른 글

[운영체제] Thread Pool & Fork-Join  (0) 2025.04.29
[운영체제] 데드락 (Deadlock)  (0) 2025.04.29
[운영체제] 프로그램 실행 과정  (0) 2025.04.29
[운영체제] 동기화  (0) 2025.04.29
'⚙️ CS/운영체제' 카테고리의 다른 글
  • [운영체제] Thread Pool & Fork-Join
  • [운영체제] 데드락 (Deadlock)
  • [운영체제] 프로그램 실행 과정
  • [운영체제] 동기화
dev-heyjin
dev-heyjin
  • dev-heyjin
    개발 기록
    dev-heyjin
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 🎯 Programming (8)
      • 💪 Algorithm (16)
      • ⚙️ CS (31)
        • 네트워크 (15)
        • 운영체제 (15)
        • 데이터베이스 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DB
    RDS
    해킹
    데이터베이스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-heyjin
[운영체제] IPC
상단으로

티스토리툴바