프로세스 간에 데이터를 교환하는 방법
- 익명 파이프 (Anonymous Pipes)
- 하나의 프로세스는 데이터 송신만, 다른 하나는 데이터를 수신만 가능
- 양쪽으로 모두 송수신을 하고 싶으면 2개의 파이프를 만들어야 함
- 일반적으로 부모 프로세스와 그 자식 프로세스 간의 통신에 사용
- 명명 파이프 (Named Pipes)
- FIFO(First In First Out) 구조
- 하나의 프로세스는 데이터 송신만, 다른 하나는 데이터를 수신만 가능
- 양쪽으로 모두 송수신을 하고 싶으면 2개의 파이프를 만들어야 함
- 전혀 모르는 상태의 프로세스들 사이 통신에 사용
- Sockets:
- 프로세스 간 통신의 엔드포인트
- 전송 계층과 응용 프로그램 사이의 인터페이스
- 원격에서 프로세스 간 데이터를 공유할 때 사용
- 클라이언트-서버 모델 기반
- Message Queues
- 입출력 방식은 명명 파이프와 동일하나 데이터의 흐름이 아니라 메모리 공간
- 양방향 통신 가능
- 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터 접근 가능
- 공유 메모리 (Shared Memory)
- 두 개 이상의 프로세스가 메모리의 동일한 부분을 공유하여 접근할 수 있게 하는 방법
- 프로세스가 공유 메모리 할당을 커널에 요청하면, 커널은 해당 프로세스에 메모리 공간을 할당
- IPC중 가장 빠름
- 동기화 메커니즘(예: 세마포어)이 함께 사용되어야 데이터의 일관성을 유지 가능
- 메모리 맵 파일 (Memory Mapped Files)
- 열린 파일을 메모리에 맵핑시켜서 공유
- 주로 파일로 대용량 데이터를 공유해야 할 때 사용
'운영체제' 카테고리의 다른 글
데드락(Deadlock, 교착 상태) (0) | 2024.03.21 |
---|---|
CPU 스케줄링(CPU Scheduling) (0) | 2024.03.20 |
PCB와 Context Switching (0) | 2024.03.20 |
시스템 콜(system call) (0) | 2024.03.20 |
인터럽트(Interrupt) (0) | 2024.03.13 |