-
[OS] - IPCCS/면접준비 2022. 9. 29. 17:22
IPC(Inter-Process-Communication)
독립적 구조를 가진 Process들 끼리 통신해야할 상황을 처리하여 준다.
- Process는 독립적으로 실행되기 때문에 다른 Process에게 영향을 받지 않는다.
- Kernel을 이용하여 IPC 설비를 이용해 통신 할 수 있다.
Process간의 Data를 동기화 및 보호를 위하여 Semaphore와 mutex를 이용한다. ( 공유된 Resource에 하나의 프로세스만 접근 하는 경우 )
IPC 종류
1. 익명 Pipe
- Pipe는 2개의 Process를 연결하는데, 하나의 Process에서만 Write가 가능하고 하나의 Process에서는 Read만 가능하다
- 통신할 Process를 명확히 알 때 사용한다. ( Parent- Child )
- 한쪽 방향으로만 통신이 가능한 반이중 통신이라고 부른다.
- 양쪽다 송수신하기 위해서는 Pipe를 2개 사용해야 한다.
2. Named Pipe(FIFO)
- 전혀 모르는 상태의 Process 통신에 사용한다.
- 익명 Pipe가 확장된 상태로 부모 프로세스와 무관한 다른 프로세스도 통신이 가능하다. ( 통신을 위해 이름있는 파일 사용)
- Named Pipe 또한 Write/read가 동시에 불가능하다.
3. Message Queue
- I/O 방식은 Named Pipe와 동일하다.
- Pipe와 달리 메모리 공간이다. ( 파이프가 아닌 어디에서나 물건을 꺼낼 수 있는 컨테이너 벨트 )
- 사용할 Data에 번호를 붙임으로써, 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.
4. Shared Memory
- Pipe,Message Q가 통신을 위한 설비라면, 데이터 자체를 공유하도록 만들어진 설비이다.
- Process는 Memory 영역은 독립적인 영역으로 다른 Process의 접근이 제한된다. 하지만, Process가 Data를 공유하고 싶은 상황도 발생한다. 이를 위해 Thread처러 Data 값을 공유하도록 만든 것이다.
- Shared Memory는 Process간의 메모리 영역을 공유하여 사용 할 수 있도록 한다.
- Process가 Kernel에 Shared Memory 할당 Request -> Kernel이 메로리 공간을 할당 -> 다른 Process들이 메모리 영역에 접근이 가능하다.
중개자가 없고 메모리를 바라 봄으로 제일 빠르게 동작한다.
5. Memory map
- Shared Memory와 동일하게 메모리를 공유하여 준다.
- Memory map은 열린 파일은 메모리에 맵핑 시켜주어 공유한다. ( 매개체 = 파일 + 메모리 )
- 주로 파일과 같은 대용량 데이터를 공유 할 때 사용한다.
6. Socket
- 네트워크 Socket을 이용하여 공유한다.
- Clinet-Server 구조로 원격에서 Process를 공유할 때 사용
- Server( bind, listen, accept ) / Client (connect)
'CS > 면접준비' 카테고리의 다른 글
[OS] - DeadLock (0) 2022.09.29 [OS] - CPU Scheduling (0) 2022.09.29 [OS] - System call / PCB (0) 2022.09.29 [OS] - Interrupt (0) 2022.09.29 [OS] - Process vs Thread (1) 2022.09.29