Mach port
Mach port는 Mach IPC에서 메시지를 주고받는 통신 끝점과 접근 권한을 표현하는 커널 관리 객체다. 태스크는 포트 이름과 송신·수신 권한을 통해 서비스에 접근하며, 포트 권한은 메시지 전달과 운영체제 서버 구조에서 중요한 capability 역할을 한다. 일반적인 TCP/UD...
| 분류 | Mach IPC 통신 객체·권한 모델 |
|---|---|
| 관련 기술 | Mach IPC |
| 원형 커널 | Mach |
| 핵심 개념 | 포트 이름 공간 |
| 수신 권한 | Receive right |
| 송신 권한 | Send right |
| 일회성 응답 | Send-once right |
| 포트 집합 | Port set |
| 보호 모델 | capability 기반 접근 |
| 주요 구현 | GNU Mach, XNU |
| 다른 개념과의 구분 | TCP/UDP 네트워크 포트와 다름 |
| 기술 문서 | GNU Mach Ports |
Mach port는 Mach IPC에서 메시지를 주고받는 통신 끝점과 접근 권한을 표현하는 커널 관리 객체다. 태스크는 포트 이름과 송신·수신 권한을 통해 서비스에 접근하며, 포트 권한은 메시지 전달과 운영체제 서버 구조에서 중요한 capability 역할을 한다. 일반적인 TCP/UDP 네트워크 포트 번호와는 의미가 다른 개념이다.[1]
Mach port는 메시지가 오가는 커널 관리 통신 객체이며 사용자 태스크가 사용하는 포트 이름은 해당 태스크의 이름 공간 안에서 해석된다. 포트의 수신권은 메시지를 받는 권한을, 송신권은 그 포트로 메시지를 보낼 수 있는 권한을 뜻한다. 일회성 송신권 등 다양한 권한 형식은 서비스를 호출하거나 응답을 전달할 때 활용된다. 커널은 권한의 생성·복사·이동과 메시지 큐의 동작을 관리한다.[2]
운영체제 서버를 포트로 표현하면 프로그램은 서버의 내부 구현을 알지 못해도 메시지 규약에 맞춰 서비스를 호출할 수 있다. 포트 권한은 단순한 통신 대상 이름이 아니라 capability로서 자원 접근의 허용 범위를 정하는 역할을 한다. Mach 3.0, GNU Mach·GNU Hurd, XNU는 이러한 통신·권한 모델을 계승하지만 상위 운영체제 서비스의 구성과 포트의 사용 방식은 각각 다르다.
Mach 포트는 메시지를 보낼 수 있는 대상이면서 커널이 보호하는 통신 객체다. 한 태스크의 포트 이름은 해당 태스크의 이름 공간에서 의미를 가지며, 실제 커널 객체에 접근할 수 있는지는 포트 권한에 따라 달라진다. 수신권을 가진 태스크가 메시지를 받을 수 있고 송신권을 가진 태스크는 그 포트로 메시지를 전송할 수 있다. 포트 권한을 메시지와 함께 이동·복사할 수도 있어 서비스 접근을 다른 태스크에 제한적으로 위임할 수 있다.[3]
이 구조 덕분에 사용자 공간 운영체제 서버는 내부 포인터를 공유하지 않고도 메시지 인터페이스를 통해 서비스에 접근하도록 설계할 수 있다. Mach 3.0의 UNIX 서버, GNU Hurd 및 XNU에서 포트는 실행·통신·권한 모델을 연결하는 핵심 개념으로 남아 있다. 다만 포트가 가리키는 시스템 서비스와 구체적 권한 검사는 해당 운영체제의 구현에 따라 달라진다.