다양한 기록

IPC 본문

네트워크

IPC

라구넹 2024. 3. 16. 16:14
  Inter-Process Communication의 줄임말로, 말 그대로 프로세스 간 통신에 대한 이야기입니다. 더 자세히는 프로세스 끼리 데이터를 전송하고 동기화, 상호작용하는 방법을 의미합니다.

  가장 대표적인 것이 파이프일 것입니다. 리눅스 시스템에서 단방향으로 데이터를 전송할 때 사용합니다. 양방향을 원하면 2개 만들면 됩니다.

  

  위 이미지에서 | 가 파이프입니다. 이렇게 하는 것 말고도 시스템 콜 pipe()가 있습니다. 파일 디스크립터를 사용해서 부모 프로세스와 자식 프로세스 간 입력과 출력의 방향을 만들어서 연결시키는 방식입니다.

  네임드 파이프는 그냥 파이프가 전혀 모르는 프로세스에는 접근을 할 수가 없다는 단점이 있어 해결하기 위해 사용되는 방식입니다. 이름을 안다면 부모를 공유하지 않아도 통신할 수 있습니다.

  메지시 큐 방식은 큐를 이용해서 일단 메시지를 보내 놓고 시간이 날 때 큐에서 꺼내 데이터를 처리하는 할 수 있도록 한, 비동기적 프로세스간 데이터 통신 방식입니다. 상대방이 데이터를 받았는지 기다리지 않고 일단 보내고 다른 작업을 하러 갈 수 있다는 장점이 있습니다.

  IPC 소켓은, 소켓 기반의 매커니즘으로 일반적으로 소켓이 네트워크 통신에서 사용되는 걸 프로세스 간 통신에 적용한 것입니다. 한 프로세스가 서버로 동작하여 연결을 받고, 다른 프로세스가 클라이언트로 동작하여 서버에 연결합니다.

  공유 메모리는 그냥 데이터를 공유해서 쓰도록 커널에 요청하는 것입니다. 중간에 다른 과정 없이 그냥 메모리를 공유하는 방식의 특징 상 가장 빠릅니다. 

  RPC는 원격 함수 호출의 줄임말로, 자기 주소 공간에 없는 함수를 부르면 원격으로 프로세스에 접근하여 프로시저, 함수를 호출합니다. 분산 네트워크 상에서 많이 사용하며 함수가 로컬이든 원격이든 같은 코드를 실행하는 결과를 얻을 수 있습니다.

  메모리 맵 파일의 경우 파일 내용을 메모리에 매핑해서 디스크 I/O를 줄여 효율적으로 파일 내용을 읽듯이 데이터에 접근하는 방법입니다. 대용량 데이터를 처리해야 할 때 적절합니다.

'네트워크' 카테고리의 다른 글

네트워크 코어  (0) 2024.03.24
네트워크 가장자리  (0) 2024.03.24
C/S 아키텍처, P2P 아키텍처  (0) 2024.03.16
클라우드 컴퓨팅  (0) 2024.03.16
웹 애플리케이션 언어  (0) 2024.03.16