본문 바로가기

운영체제

IPC

프로세스 간에 데이터를 교환하는 방법
  • 익명 파이프 (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