Mach IPC
Mach IPC는 Mach 커널 계열에서 태스크 사이의 통신을 위해 사용하는 메시지 및 포트 기반 프로세스 간 통신 메커니즘이다. 송수신 권한을 가진 포트를 중심으로 메시지를 전달하며, 메모리 영역이나 포트 권한 같은 자원을 메시지와 함께 전송할 수 있다. 운영체제 서버와 사용자 프로그...
| 정식 명칭 | Mach Inter-Process Communication |
|---|---|
| 분류 | 커널 기반 프로세스 간 통신 |
| 기술 원형 | Mach |
| 주요 객체 | Mach 포트와 포트 권한 |
| 전달 단위 | 메시지 |
| 주요 권한 | 송신권, 수신권, 일회성 송신권 |
| 관련 개념 | capability, RPC |
| 지원 데이터 | 인라인 데이터, 외부 메모리, 포트 권한 |
| 관련 도구 | Mach Interface Generator |
| 주요 구현 | GNU Mach, XNU |
| 상태 | Mach 계열 시스템에서 사용 |
| 공식 자료 | GNU Mach IPC Manual |
Mach IPC는 Mach 커널 계열에서 태스크 사이의 통신을 위해 사용하는 메시지 및 포트 기반 프로세스 간 통신 메커니즘이다. 송수신 권한을 가진 포트를 중심으로 메시지를 전달하며, 메모리 영역이나 포트 권한 같은 자원을 메시지와 함께 전송할 수 있다. 운영체제 서버와 사용자 프로그램 사이의 원격 프로시저 호출, 서비스 검색 및 보안 경계의 구성에 사용되며 XNU에서도 중요한 역할을 한다.[1]
Mach IPC의 중심 개념은 메시지와 포트에 부여되는 권한이다. 태스크는 포트 이름 공간을 가지고 송신권·수신권·일회성 송신권 등을 통해 메시지 대상에 접근하며, 커널은 메시지를 수신 큐로 전달한다. 메시지에는 단순 데이터뿐 아니라 메모리 영역 및 다른 포트 권한을 함께 전달하는 구조도 포함될 수 있다. 따라서 Mach의 통신 모델은 단순한 데이터 교환을 넘어 커널 객체의 접근 권한을 전달하는 역할을 한다.[2]
이 모델은 Mach 기반 운영체제에서 사용자 공간 서버가 파일·프로세스·네트워크와 같은 기능을 제공하는 데 필요한 저수준 인터페이스가 된다. Mach Interface Generator는 메시지 규격에 대응하는 RPC 코드를 생성해 호출자와 서버 구현을 연결한다. GNU Mach·GNU Hurd뿐 아니라 Apple의 XNU에서도 Mach 포트와 메시지 전달이 중요한 시스템 통신 수단으로 사용되며, 구체적인 메시지 구조와 상위 서비스 API는 구현마다 다르다.
Mach IPC는 태스크가 대상 서버의 메모리나 내부 데이터 구조에 직접 접근하지 않고 포트에 메시지를 보내 서비스를 이용하도록 하는 통신 모델이다. 커널은 포트 이름을 확인하고 해당 태스크가 메시지를 전송할 권한을 갖는지 검사하며, 수신 큐를 관리한다. 포트 권한 자체를 다른 태스크에 전달할 수도 있으므로 통신 기능과 자원 접근 제어가 결합된 capability 형태로 동작한다.[3]
메시지는 인라인 데이터뿐 아니라 out-of-line 메모리 영역과 포트 권한을 포함할 수 있고, 응용 프로그램 간 호출·응답 패턴에는 원격 프로시저 호출에 가까운 구조가 사용된다. GNU Hurd의 파일 시스템 서버나 XNU의 시스템 서비스처럼 서로 다른 구현에서도 Mach IPC의 개념을 활용하지만 상위 서비스와 권한 정책은 달라진다. Mach IPC는 TCP·UDP의 네트워크 포트와 무관한 커널 객체에 대한 통신 모델이다.