[Chapter 07] 프로세스간 통신(IPC)

·2022년 10월 26일
0

※ 아래는 윤성우 뇌를 자극하는 윈도우즈 프로그래밍 한빛미디어(주) 2022년
Chapter07(p.211 ~ 237)를 읽고 정리한 내용입니다.

01 프로세스간 통신(IPC)의 의미

Inter-Process Communication 프로세스 사이의 통신
-> 둘 이상의 프로세스가 데이터를 주고 받는 행위

프로세스들은 서로 만나서 데이터를 주고 받는 것이 불가능 함
(자신에게 할당된 메모리 공간 이외에는 접근이 불가능)

데이터를 주고 받기 위해서는 Windows 운영체제에서 제공하는 기능상의 도움을 받아야만 한다.

02 메일슬롯 방식의 IPC

메일 슬롯(Mail Slot)의 원리

데이터를 주고 받기 위해서 프로세스가 우체통을 마련하는 것
*메일 슬롯은 단방향 브로드캐스팅 방식의 통신을 지원함
(하나의 Sender는 한 번의 메시지 전송으로 여러 Receiver에게 동일한 메시지 전달 가능)

03 Signaled vd Non-Signaled

커널 오브젝트의 상태는 두 가지이다.
상태는 나머지 다른 하나의 상태로 변경되는데,
변경되는 시점은 커널 오브젝트의 종류에 따라서 다르다.

  • Signaled 상태(신호를 받은 상태)
  • Non-signaled 상태(신호를 받지 않은 상태)
    *프로세스 커널 오브젝트의 상태는 일단 Signaled가 되면 절대로 다시 Non-signaled 상태로 변하지 않는다.

04 WaitForSingleObject, WaitForMultipleObjects함수와 커널 오브젝트의 관계

WaitForSingleObject 함수는 커널 오브젝트를 감시하는 역할을 함
커널 오브젝트가 Non-Signaled 상태에 있으면 함수를 반환하지 않고 블로킹 상태에 있다가
함수가 Signaled 상태가 되면 함수를 빠져 나오는 특성을 지님

WaitForMultipleObjects 함수는 둘 이상의 커널 오브젝트를 감시할 때 사용

05 종료코드(Exit Code)

main 함수의 return 문에 의한 반환값은 프로세스의 종료코드로 커널 오브젝트에 저장됨
종료코드를 얻기 위해서는 GetExitCodeProcess 함수를 호출하면 되고,
이 종료코드는 프로세스의 종료 이유를 담는 용도로 사용하는 것이 일반적임

0개의 댓글