프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다.
IPC 종류
1. 파이프(Pipe)
파이프는 단방향 통신을 지원하는 IPC 방법으로, 한 프로세스에서 생성한 데이터를 다른 프로세스로 전송하는 데 사용됩니다. 파이프는 읽기와 쓰기로 구성되며, 프로세스는 파일 디스크립터를 사용하여 파이프와 상호 작용합니다.
2. 메시지 큐(Message Queue)
메시지 큐는 비동기식 IPC 방법으로, 큐를 통해 메시지를 전송하는 방식입니다. 메시지 큐는 이름을 가진 큐에 메시지를 추가하거나 제거할 수 있으며, 메시지를 읽는 동안 큐의 메시지는 계속 존재합니다.
3. 공유 메모리(Shared Memory)
공유 메모리는 두 개 이상의 프로세스가 메모리 공간을 공유하여 데이터를 교환하는 방법입니다. 이 방법은 다른 IPC 방법보다 빠르고 효율적입니다. 그러나 공유 메모리를 사용할 때 동기화 문제가 발생할 수 있으므로 이를 고려해야 합니다.
4. 소켓(Socket)
소켓은 TCP/IP 네트워크를 통해 프로세스 간 통신을 제공하는 IPC 방법입니다. 소켓은 네트워크를 통해 프로세스 간 통신이 가능하도록 하는데, 서버/클라이언트 모델을 사용합니다.
5. RPC(Remote Procedure Call)
RPC는 프로그램이 다른 컴퓨터에서 실행되고 있는 서버 프로그램의 프로시저를 로컬 프로시저처럼 호출할 수 있는 방법입니다. RPC를 사용하면 네트워크를 통해 다른 컴퓨터에 있는 프로그램의 함수를 호출할 수 있습니다.
6. 파일 매핑(File Mapping)
파일 매핑은 파일을 메모리에 매핑하여 두 개 이상의 프로세스가 동시에 파일에 액세스할 수 있도록 하는 방법입니다. 파일 매핑은 공유 메모리와 유사하지만, 파일에서 데이터를 읽고 쓸 수 있습니다.
이러한 IPC 통신에서 프로세스 간 데이터를 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용한다. (공유된 자원에 한번에 하나의 프로세스만 접근시킬 때)
References
'CS' 카테고리의 다른 글
데드락(Deadlock, 교착상태) (0) | 2023.04.08 |
---|---|
CPU 스케줄링 (0) | 2023.04.08 |
애자일(Agile) (1) | 2023.04.07 |
TDD(Test Driven Development) (0) | 2023.04.07 |
함수형 프로그래밍(Functional Programming) (0) | 2023.04.07 |