티스토리 뷰
반응형
📮 메일슬롯(Mailslot): 운영체제가 제공하는 "한 방향 메시지 우체통"
🧠 메일슬롯이란?
**메일슬롯(Mailslot)**은
한쪽 프로세스가 메시지를 보내고, 다른 프로세스가 이를 읽을 수 있도록 하는
운영체제 제공의 “단방향 메시지 기반 통신” 시스템입니다.
마치 우체통처럼:
- 발신자(보내는 쪽)는 메시지를 우체통에 넣기만 하고
- 수신자(받는 쪽)는 정해진 시간마다 와서 확인해서 꺼내 갑니다.
운영체제는 이 우체통 역할을 하는 메일슬롯을 커널 자원으로 만들어 관리합니다.
🏗️ 메일슬롯의 구조
[Writer 프로세스] → (Mailslot) → [Reader 프로세스]
- Reader는 메일슬롯을 생성함 (우체통 설치)
- Writer는 메일슬롯 이름을 알고 있어야 메시지를 보낼 수 있음
- 메시지는 운영체제가 임시로 보관함
- Reader가 꺼내가면 메시지는 사라짐 (1회성 읽기)
🛠️ 어떻게 작동하나? (동작 순서)
1. 수신자(Reader) 측
HANDLE hSlot = CreateMailslot(
"\\\\.\\mailslot\\MySlot", // 고유한 이름
0, // 메시지 최대 크기 (0이면 제한 없음)
MAILSLOT_WAIT_FOREVER, // 대기 시간
NULL
);
- 고유한 이름을 가진 메일슬롯을 생성
- 이 이름은 Writer가 메시지를 보낼 때 필요
2. 송신자(Writer) 측
HANDLE hWrite = CreateFile(
"\\\\.\\mailslot\\MySlot", // Reader가 만든 메일슬롯 이름
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
WriteFile(hWrite, "Hello", 5, &written, NULL);
- Reader가 만든 우체통 이름으로 접근
- WriteFile로 메시지 전송
3. Reader가 메시지 수신
ReadFile(hSlot, buffer, sizeof(buffer), &read, NULL);
- 수신자는 ReadFile로 대기하거나 주기적으로 확인
- 읽고 나면 해당 메시지는 메일슬롯에서 삭제됨
📬 메일슬롯의 특징 요약
항목 설명
통신 방향 | 단방향 (Writer → Reader) |
메시지 타입 | 문자열 기반 |
통신 범위 | 같은 컴퓨터 또는 같은 네트워크 내 다른 컴퓨터 가능 |
연결 필요성 | 없음 (비연결형) |
속도 | 빠르지만 실시간 통신에는 부적합 |
운영체제 지원 | Windows에서만 지원되는 IPC 방식 |
🎯 메일슬롯은 언제 유용할까?
- 시스템 모니터링 툴에서 여러 클라이언트가 하나의 서버로 로그를 보내는 경우
- 메시지 양이 적고, 전달 순서가 완벽히 중요하지 않은 경우
- 간단한 브로드캐스트 통신이 필요한 경우
예를 들어,
- 여러 프로그램이 하나의 중앙 로깅 프로세스로 메시지를 보내고 싶을 때
- 사용자 이벤트 감지기들이 경고 메시지를 하나의 UI로 전달할 때
이런 단방향, 단순 메시지 전달용 구조에 메일슬롯은 매우 적합합니다.
❗ 한계점과 제약
한계 설명
단방향 | 송신자는 수신자로부터 응답을 받을 수 없음 |
메시지 확인 불가 | 메시지가 수신되었는지 보장하지 않음 (ACK 없음) |
보안 취약 | 네임 기반 식별이라 악의적 접근 가능성 존재 |
속도 제한 | 실시간 IPC에는 부적합 |
❗ 수신 여부 보장이 없기 때문에
“확실하게 데이터가 전달되어야 하는 시스템”에는 부적합합니다.
🔄 다른 IPC 방식과의 비교
방식 양방향? 구조 메시지 보관 네트워크 통신 윈도우 전용
메일슬롯 | ❌ 단방향 | 이름 기반 | O (커널이 보관) | O (같은 LAN) | ✅ |
Named Pipe | ✅ 양방향 | 서버-클라이언트 | X (즉시 읽어야 함) | O | ✅ |
메시지 큐 | ❌ 또는 ✅ | 큐 구조 | O | X (로컬 전용) | ❌ (POSIX/Linux) |
공유 메모리 | ✅ | 메모리 맵 공유 | X | X | ✅ |
소켓 | ✅ | 연결 기반 | 사용자 처리 | ✅ (IP 기반) | ✅ |
✅ 마무리 요약
항목 내용
정체 | 운영체제가 제공하는 단방향 메시지 통신 IPC |
특징 | 수신자는 메일슬롯 생성, 송신자는 그 이름으로 메시지 보냄 |
장점 | 구조 단순, 네트워크 확장 가능, 코드 짧음 |
단점 | 단방향, 응답 불가, 실시간성 약함 |
대표 용도 | 로깅, 이벤트 알림, 단순 브로드캐스트 |
📮 메일슬롯은 복잡한 설정 없이도 간단한 메시지를 주고받을 수 있게 해주는 도구입니다.
“가볍고 빠른 메시지 알림용”으로는 유용하지만,
양방향 통신이나 신뢰성 있는 데이터 처리에는 적합하지 않습니다.
2025.03.24 - [프로그래밍/시스템 프로그래밍] - IPC는 왜 필요할까?
반응형
'프로그래밍 > 시스템 프로그래밍' 카테고리의 다른 글
프로세스와 환경변수 (0) | 2025.03.26 |
---|---|
부모 프로세스 vs 자식 프로세스 (0) | 2025.03.24 |
IPC는 왜 필요할까? (0) | 2025.03.24 |
🧠 UC Count란 무엇인가? (0) | 2025.03.24 |
커널 오브젝트와 핸들 (0) | 2025.03.24 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Python
- 파이썬
- 통계학
- C
- 코딩테스트
- K-MOOC
- c++
- 일본어
- 사회심리학
- 오블완
- C/C++
- 티스토리챌린지
- 보세사
- 행동심리학
- 열혈프로그래밍
- 윤성우
- 심리학
- stl
- 일본어문법무작정따라하기
- 백준
- 정보처리기사
- 통계
- 류근관
- 인지부조화
- 조건형성
- 강화학습
- 일문따
- 뇌와행동의기초
- 데이터분석
- 회계
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함