메일슬롯과 IPC에 대한 고찰

메일슬롯은 한쪽 방향으로만 메시지를 전달할 수 있으므로 채팅 프로그램 제작에는 한계가 있다.
따라서 두 프로세스가 서로 메시지를 받을 수 있는 채팅 프로그램을 구현하기 위해서는
두개의 메일슬롯을 생성해야만 한다.

이때 양쪽 방향으로 메시지를 주고 받기 위해 사용 가능한 IPC 사용 기법이 있다.
그것은 바로, 파이프를 이용한 IPC인데
파이프에는 Anonymous 파이프와 Named 파이프가 있다.
이 중 Named 파이프는 기본적으로 양방향 데이터 송 수신을 지원하며, 채팅 프로그램 구현에 적합하다

메일슬롯은 브로드 캐스팅 방식의 통신을 지원한다.
즉 하나의 sender는 한번의 메시지 전송으로 여러 receiver에게 동일한 메시지를 동시에 전송하는 것이 가능하다.
예를 들어 동일한 네트워크로 연결되어 있는 서로 다른 컴퓨터에서
실행중인 receiver 프로세스 A,B,C가 존재할 때,
이 Receiver 들은 각각 다음과 같이 동일한 메일슬롯 주소를 기반으로 메일슬롯 오브젝트를 생성하였다.

" \\.\mailslot\mailbox"

그리고 동일한 네트워크상에 존재하는 sender 프로세스 D가 데이터를 전송하기 위해 사용하는
주소의 구성은 다음과 같다
" \\*\mailslot\mailbox"

컴퓨터 이름이 와야 하는 부분에 * 표시가 있다. 이는 모든 컴퓨터를 지칭하는 것이며,
\\.\mailslot\mailbox 을 주소로 생성된 모든 메일슬롯에 동일한 메시지가 전달된다.


메일슬롯은 생성과 동시에 Usage Count 가 1인데, 참조하는 프로세스는 메일슬롯을 생성한
프로세스 하나이기 때문이다. 자식 프로세스의 경우에는 생성과 동시에
참조하는 프로세스가 둘이 되기 때문에 2가 되는 것이다.
메일슬롯뿐만 아니라, 프로세스와 쓰레드를 제외한 다른 모든 커널 오브젝트는 생성과 동시에
Usage Count는 1이 된다. 윈도우즈는 내부적으로 생성하는 대부분의 리소스들에 대해 커널 오브젝트를 생성한다.

+ Recent posts