Mach task
Mach task는 Mach 계열 커널에서 가상 주소 공간과 포트 이름 공간 등 실행 자원을 묶는 추상화다. 실제 명령어 실행 단위는 태스크에 속한 스레드이며, 태스크와 스레드를 분리함으로써 여러 실행 흐름이 한 주소 공간과 자원을 공유할 수 있다. BSD UNIX의 프로세스 개념과 연...
| 분류 | Mach 커널 실행 자원 추상화 |
|---|---|
| 기술 계보 | Mach |
| 주요 역할 | 태스크의 주소 공간과 자원 관리 |
| 실행 단위 | Mach thread |
| 메모리 | 태스크별 가상 주소 공간 |
| 통신 | 포트 이름 공간 |
| 접근 제어 | 포트 권한 |
| 관련 인터페이스 | 태스크 생성·종료·상태 관리 |
| 주요 구현 | GNU Mach, XNU |
| UNIX 관련 개념 | 프로세스와 관련되지만 동일하지 않음 |
| 기술 문서 | GNU Mach Tasks |
Mach task는 Mach 계열 커널에서 가상 주소 공간과 포트 이름 공간 등 실행 자원을 묶는 추상화다. 실제 명령어 실행 단위는 태스크에 속한 스레드이며, 태스크와 스레드를 분리함으로써 여러 실행 흐름이 한 주소 공간과 자원을 공유할 수 있다. BSD UNIX의 프로세스 개념과 연결되는 방식은 Mach 3.0, GNU Mach, XNU 등 구현에 따라 달라진다.[1]
Mach에서는 태스크가 실행에 필요한 자원을 소유하는 추상화이고, 스레드는 실제 CPU 명령어를 실행하는 스케줄링 단위다. 하나의 태스크에 여러 스레드가 속할 수 있으며 같은 가상 주소 공간과 태스크의 포트 이름 공간을 공유한다. 커널은 태스크의 생성·종료와 자원 보호를 처리하고, 스레드별 실행 상태와 스케줄링을 관리한다. 이 구분은 UNIX 프로세스의 주소 공간과 실행 흐름을 분리해 연구하는 데 중요한 기반이 되었다.[2]
Mach task를 UNIX 프로세스와 완전히 같은 객체로 간주할 수는 없다. Mach 3.0의 마이크로커널은 태스크와 스레드 등 기본 실행 자원에 집중하고, 프로세스 식별자나 파일 디스크립터 같은 UNIX 의미론은 사용자 공간 서버에 맡길 수 있다. GNU Hurd는 이 모델 위에 UNIX 서버를 구성했으며 Apple의 XNU는 Mach 태스크와 BSD 프로세스를 커널 내부에서 연결한다. 같은 태스크 개념이 여러 운영체제 계보에서 서로 다른 방식으로 활용된다는 점이 중요하다.
Mach의 태스크는 실제 명령어를 실행하는 스레드와 분리된 자원 관리 단위다. 여러 스레드가 하나의 태스크에 속해 주소 공간과 포트 이름 공간을 공유할 수 있으며, 커널은 스레드의 실행 상태와 태스크의 메모리·권한을 별도의 인터페이스로 관리한다. 이러한 구분은 하나의 응용 프로그램에 여러 병렬 실행 흐름을 부여하거나 서버를 별도의 보호 영역에 배치하는 데 활용되었다.[3]
UNIX 프로세스의 ID와 파일 디스크립터, 사용자 자격 정보를 Mach 태스크가 모두 직접 나타내는 것은 아니다. GNU Hurd는 별도의 사용자 공간 서버가 UNIX의 프로세스 의미론을 구현하고, Apple XNU는 BSD 프로세스와 Mach 태스크를 커널 내부에서 연결한다. 따라서 Mach 기반 운영체제 계보에서 태스크라는 공통 추상화가 유지되어도 상위 프로세스 모델은 크게 달라질 수 있다.