[OS] 프로세스 간 통신(IPC): 공유 메모리와 메시지 패싱

전두엽힘주기·2025년 10월 5일

OS

목록 보기
2/7

프로세스

프로그램: 디스크에 저장된 수동적 실체
프로세스: 메모리에서 실행중인 능동적 실체

프로세스 : 실행 중인 프로그램, OS가 자원을 할당하는 작업의 기본 단위
하나의 프로그램은 여러개의 프로세스로 구성될 수 있고, 사용자는 같은 프로그램을 여러개의 프로세스로 동시에 실행 시킬 수 있다

프로세스 메모리 구조

  • text : 실행할 코드
  • data : 전역변수, 정적변수
  • heap : 동적할당메모리
  • stack : 함수호출, 지역변수

OS는 4가지 영역으로 구성된 가상 주소 공간을 각 프로세스에게 할당하여 독립적인 실행환경 보장

프로세스간 통신

  • 공유메모리 : 성능이 중요할 때 사용

  • 메세지 패싱 : 동기화가 간단하고 안전한 통신이 필요할 때 사용

    공유 메모리

    여러 프로세스가 함께 접근할 수 있는 공통의 메모리 공간을 OS가 만들어주는 방식

  1. 한 프로세스가 OS에 공유 메모리 공간 할당 요청

  2. 다른 프로세스들이 해당 공간에 연결

  3. 이후 커널의 개입없이 각 프로세스는 자신의 메모리처럼 해당 공간을 자유롭게 읽고 쓸 수 있음

    장점: 커널을 거치지 않기 때문에 통신 속도가 빠름
    단점: 동기화 문제 발생(한쪽이 데이터를 쓰는 도중에 다른 쪽에서 데이터를 읽으면 깨진 데이터가 보일 수 있다) - 락같은 동기화 기법 필요

메세지 패싱

프로세스들이 커널을 통해 메세지를 전달

  1. send와 receive 같은 시스템 콜을 사용
  2. 모든 통신은 커널이 중재하므로 데이터가 섞일 위험이 없다

장점: 커널이 통신을 관리해주므로 안전하고 동기화가 비교적 쉽다
단점: 매번 커널을 거쳐야하므로(시스템 콜 오버해드), 공유 메모리 방식보다 느리다

구현 방식 종류

  • 연결 방식:
    직접 통신: 통신할 프로세스를 명시적으로 지정
    간접 통신: 메일 박스 또는 포트라는 중간 매개체를 통해 메세지를 주고 받음

  • 동기화 방식
    블로킹(동기): 메세지를 보내거나 받을 때까지 프로세스가 대기
    논블로킹(비동기): 메세지를 보내거나 받은 후 즉시 다음 작업 수행

    동기화

    공유메모리는 빠르지만 여러 프로세스가 동시에 한 공간에 접근할때 race condition 문제 발생
    데이터 일관성을 보장하기 위해 프로그래머가 직접 동기화 문제를 해결해야함

1개의 댓글

comment-user-thumbnail
2025년 10월 5일

핀토스는 안올려 주시나요?

답글 달기