IPC는 서로 다른 프로세스들이 데이터를 주고 받으며 상호작용할 수 있게 하는 메커니즘을 의미한다. 운영 체제에서 각 프로세스는 독립적인 메모리 공간을 가지므로, 프로세스 간 데이터를 직접 공유할 수 없기 때문에 IPC를 사용해 데이터를 교환하고 협력 작업을 수행한다.
메세지 전달 방식
공유메모리 방식
ㅇ 필요성
- 프로세스 간 데이터 교환
여러 프로세스가 같은 데이터를 공유하고, 이를 통해 작업을 수행해야 할 때 필요하다. - 동기화
프로세스 간의 작업 순서를 조정하고 자원 접근을 제어하기 위해 IPC가 사용된다. - 자원 공유
파일, 메모리, 장치 같은 시스템 자원을 여러 프로세스가 효율적으로 사용할 수 있도록 한다.
ㅇ IPC 기법
- 익명 PIPE
파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 할 수 있다. 한쪽 방향으로만 통신이 가능한 반 이중 통신(혹은 단방향 통신)이라고 부른다.
양쪽 송/수신이 하고 싶다면 파이프를 2개 만들어야 한다.
매우 간단하게 사용할 수 있는 장점이 있고, 단순한 데이터 흐름을 가질 땐 파이프를 사용하는 것이 효율적이다.
전이중 통신을 위해 2개의 파이프를 생성할 때는 구현이 복잡해진다. - Named PIPE(FIFO)
익명 파이프는 통신할 프로세스를 명확히 알 수 있는 경우에 사용한다.(부모 - 자식 프로세스)
Named PIPE는 전혀 모르는 상태의 프로세스들 사이 통신에 사용한다.
익명 파이프의 확장된 상태 서로 관련없는 무관한 프로세스도 통신이 가능 - Message Queue(FIFO)
다른점은 메세지 큐는 파이프처럼 데이터의 흐름이 아니라 메모리 공간이다.(운영체제에서 메세지를 저장하고 관리)
사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.
비동기 통신이 가능하여 프로세스가 서로 독립적으로 실행될 수 있으며 메세지가 도착할 때까지 기다릴 필요가 없다. - 공유 메모리
프로세스의 메모리 영역은 독립적이지만 다른 프로세스가 데이터를 사용하도록 해야하는 상황도 필요하다. 통신을 통한 데이터 전달도 가능하지만 공유 메모리는 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 허용해준다.
프로세스가 공유 메모리 할당을 커널에 요청하면, 커널이 해당 프로세스에 메모리 공간을 할당해주고 이후 모든 프로세스가 해당 메모리 영역에 접근할 수 있게 된다.
** 중개자가 없이 곧바로 메모리에 접근할 수 있어서 IPC중에서 가장 빠르게 작동한다.
여러 프로세스가 동시에 접근할 수 있기 때문에 동기화 메커니즘을 사용해 데이터 무결성을 유지해야 한다. - 메모리 맵 파일
파일의 내용을 메모리에 매핑하여 파일을 읽고 쓰는 것처럼 메모리에 접근하는 방식이다. - 소켓
네트워크를 통해 데이터를 주고받을 수 있게 해주는 IPC 방식으로 프로세스가 동일한 시스템에 있지 않아도 통신할 수 있다. 주로 클라이언트 - 서버 모델에 사용되며, 인터넷이나 로컬 네트워크를 통해 프로세스 간에 통신한다.
'OS' 카테고리의 다른 글
CS OS 세마포어와 뮤텍스 (0) | 2024.10.22 |
---|---|
CS OS Dead Lock(교착상태) (0) | 2024.10.22 |
CS OS PCB & Context Switching (2) | 2024.10.22 |
CS OS 인터럽트 (0) | 2024.10.22 |
[OS] 프로세스 & 스레드 (0) | 2024.10.22 |