IPC가, 단일 프로세스 내 communication 보다 느린 이유?

About_work·2024년 2월 14일
0

process, thread

목록 보기
13/23

1. 하나의 프로세스 내 데이터 교환

  • 메모리 공유: 하나의 프로세스 내의 스레드들은 같은 메모리 공간을 공유합니다. 따라서 스레드 간의 데이터 교환은 메모리를 직접 읽고 쓰는 것으로 간단
  • 오버헤드 최소화: 메모리 접근 및 데이터 교환 과정에서 발생하는 오버헤드가 매우 적습니다. 별도의 컨텍스트 스위칭이나 데이터 복사 과정이 필요하지 않거나, 매우 제한적

2. 여러 프로세스 간 IPC를 통한 데이터 교환

  • 메모리 격리: 각 프로세스는 독립된 메모리 공간을 가집니다. 따라서 한 프로세스의 데이터를 다른 프로세스와 공유하려면, IPC 메커니즘(예: 소켓, 공유 메모리, 파이프, 메시지 큐 등)을 사용해야 합니다.
  • 오버헤드 증가:
    • 데이터를 전송하려면, 운영 체제의 커널(https://velog.io/@jk01019/운영체제OS)을 통해 데이터를 복사하고 전송하는 과정이 필요
    • 이 과정에서 데이터의 직렬화 및 역직렬화, 컨텍스트 스위칭, 데이터 복사 등 추가적인 오버헤드가 발생
  • 복잡성:
    • 프로세스 간 통신은 설정과 관리가 복잡하며, 데이터 동기화와 일관성을 유지하기 위한 추가적인 메커니즘이 필요
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글