Mach Interface Generator
Mach Interface Generator(MIG)는 Mach IPC의 메시지 기반 인터페이스 명세에서 클라이언트와 서버의 RPC 처리 코드를 생성하는 도구다. 개발자가 메시지 포맷과 송수신 절차를 매번 수동으로 작성하지 않고 .defs 파일에 인터페이스를 정의한 뒤 통신용 스텁을 생...
| 약칭 | MIG |
|---|---|
| 분류 | Mach RPC 인터페이스 코드 생성기 |
| 기술 기반 | Mach IPC |
| 입력 형식 | 인터페이스 정의 파일(.defs) |
| 주 출력 | 클라이언트 스텁, 서버 코드 |
| 기능 | 메시지 인코딩·디코딩 및 디스패치 |
| 사용 커널 | Mach, XNU, GNU Mach |
| 관련 객체 | Mach 포트 |
| 주 사용 언어 | C 인터페이스 |
| 역할 | 운영체제 서비스의 RPC 정의 |
| 상태 | 현대 Mach 계열 개발 도구 |
| 참고 자료 | GNU MIG Documentation |
Mach Interface Generator(MIG)는 Mach IPC의 메시지 기반 인터페이스 명세에서 클라이언트와 서버의 RPC 처리 코드를 생성하는 도구다. 개발자가 메시지 포맷과 송수신 절차를 매번 수동으로 작성하지 않고 .defs 파일에 인터페이스를 정의한 뒤 통신용 스텁을 생성할 수 있도록 한다. 역사적인 Mach와 현대 XNU 환경에서 사용되며, 실행되는 커널 자체가 아닌 시스템 개발 도구다.[1]
MIG는 개발자가 인터페이스 정의 파일에 루틴의 이름과 인수·반환값, 포트 및 타입 정보를 기술하면 해당 호출에 필요한 메시지 직렬화와 응답 처리 코드를 생성한다. 일반적으로 클라이언트 측 스텁과 서버 측의 요청 해석·디스패치 코드가 만들어지므로 구현자는 메시지의 바이트 단위 구조보다 제공할 시스템 기능에 집중할 수 있다. 이 방식은 Mach 포트와 메시지 규약 위에서 원격 프로시저 호출과 유사한 인터페이스를 구성한다.[2]
Mach 계열의 RPC 도구는 단순히 함수 호출 문법을 바꾸는 것을 넘어 메시지 크기, 타입과 포트 권한을 올바르게 검사하는 문제와 관련된다. GNU Mach·XNU의 서버·커널 인터페이스에서도 MIG 기반 생성 코드를 활용해 호출 측과 구현 측의 계약을 맞춘다. 같은 이름의 기술이라도 버전·운영체제에 따라 지원되는 정의 파일 문법과 생성 결과는 차이가 있을 수 있으므로 구현별 문서를 기준으로 구분한다.
MIG는 시스템 개발자가 포트와 메시지 헤더의 세부 형식을 반복 구현하지 않고 인터페이스 정의에 집중하도록 한다. 개발자가 루틴의 인수·결과와 메시지 타입을 선언하면 MIG가 클라이언트 측의 통신 코드와 서버 측의 요청 처리 코드를 생성한다. 이로써 호출자와 서비스 구현자는 같은 명세를 공유하며, 버전과 데이터 구조가 변경될 때 관련 코드를 일관되게 다시 생성할 수 있다.[3]
이 도구는 UNIX에서 흔히 사용하는 일반적인 링커나 컴파일러 자체가 아니라 Mach IPC 계층의 인터페이스 생성에 특화되어 있다. GNU Mach·XNU와 관련된 서버 및 커널 개발에서 중요하지만 각 구현의 MIG 버전, 메시지 타입 검사와 생성 코드의 세부 규약은 다를 수 있다. 따라서 Mach 계보의 운영체제 구현 도구로 설명하되 그 자체를 별도 운영체제나 마이크로커널로 분류하지 않는다.