728x90
IPC(Inter Process Communication)
프로세스들 간의 의사소통하는 것을 IPC라고 한다. 프로세스가 통신 가능하다는 것은 서로 다른 프로세스가 데이터를 주고 받을 수 있다는 것이다. 동시에 접근 가능한 메모리 즉, 프로세스들이 공유하는 메모리가 필요하다는 뜻이다. 프로세스간 통신이 서버-클라이언트 간 통신과 유사하기 때문에 인터넷 통신을 IPC의 확장으로 이해할 수 있다. 따라서 컴퓨터 내부에서 보다 효율적으로 정보를 주고 받기 위한 통신의 일종이라 생각하면 된다.
IPC의 종류 별 사용 시기 및 특징
IPC 종류 | PIPE | Named PIPE | Message Queue | Shared Memory | Memory Map | Socket |
사용 시기 | 부모 자식 간 단방향 통신 시 | 다른 프로세스와 단방향 통신 시 | 다른 프로세스와 단방향 통신 시 | 다른 프로세스와 양방향 통신 시 | 다른 프로세스와 양방향 통신 시 | 다른 시스템간 양방향 통신 시 |
공유 매개체 | 파일 | 파일 | 메모리 | 메모리 | 파일+메모리 | 소켓 |
구조 | FIFO 구조 생성된 PIPE에 대하여 Write 또는 Read만 가능 |
FIFO 구조 생성된 PIPE에 대하여 Write 또는 Read만 가능 |
FIFO 구조 msgtype에 따라 다른 구조체를 가져옴 |
일정한 크기의 메모리를 프로세스간 공유하며 공유 메모리는 커널에서 관리 | 열린 파일을 메모리에 맵핑시켜 공유하는 방식 | 네트워크 소켓을 이용하여 Client-Server 구조로 데이터 통신 |
통신 단위 | Stream | Stream | 구조체 | 구조체 | 페이지 | Stream |
통신 방향 | 단방향 | 양방향 | 단방향 | 양방향 | 양방향 | 양방향 |
통신 가능 범위 | 동일 시스템 | 동일 시스템 | 동일 시스템 | 동일 시스템 | 동일 시스템 | 동일 + 외부 시스템 |
유의 사항 | 쌍방 통신을 위해 Write, Read용 PIPE를 각 하나씩 만들어야함 | 쌍방 통신을 위해 Write, Read용 PIPE를 각 하나씩 만들어야함 | 커널에 제공하는 Message Queue이기 때문에 EnQueue하는데 제한이 존재함 | 프로세스간의 상요하려면 메모리 크기가 동일 해야함 | Write 시기는 프로세스의 페이지가 메로리에서만 내려갈 때 Write된다. | 네트워크 프로그래밍이 가능해야 하며, 데이터 세그먼트 처리를 잘 해야함 |
참고링크
728x90
'IT > etc.' 카테고리의 다른 글
[intelliJ] 매개변수로 프로그램 실행 (0) | 2024.02.27 |
---|---|
[GitHub] Repository Naming Convention (0) | 2024.02.06 |
메모리 관리(Memory Management) (0) | 2023.02.10 |
기본적인 터미널 명령어 (0) | 2023.02.09 |
스레드(Thread)? (0) | 2023.02.08 |