XNU
XNU(X is Not Unix)는 Apple의 Darwin과 macOS·iOS 등 운영체제의 핵심을 이루는 하이브리드 커널이다. 카네기 멀런 대학교의 Mach 기술과 BSD 프로세스·파일 시스템·네트워크 구성 요소, C++ 기반의 I/O Kit 드라이버 프레임워크를 하나의 커널 환경에...
| 정식 명칭 | X is Not Unix |
|---|---|
| 분류 | 하이브리드 운영체제 커널 |
| 개발 | Apple |
| 선행 기술 | Mach, BSD, NeXTSTEP |
| 상위 운영체제 | Darwin |
| 내부 구성 | Mach, BSD, I/O Kit |
| 프로세스 관리 | Mach task·thread 및 BSD 프로세스 |
| 네트워크·파일 | BSD 하위 시스템 |
| 장치 관리 | I/O Kit 및 현대 드라이버 기술 |
| 대표 사용처 | macOS, iOS, watchOS, tvOS, visionOS |
| 아키텍처 | x86-64, ARM64 |
| 라이선스 | APSL 및 구성 요소별 라이선스 |
| 소스 코드 | Apple 공개 XNU |
XNU(X is Not Unix)는 Apple의 Darwin과 macOS·iOS 등 운영체제의 핵심을 이루는 하이브리드 커널이다. 카네기 멀런 대학교의 Mach 기술과 BSD 프로세스·파일 시스템·네트워크 구성 요소, C++ 기반의 I/O Kit 드라이버 프레임워크를 하나의 커널 환경에 결합한다. Mach에서 유래한 기능을 포함하지만 전체 시스템을 순수한 Mach 3.0식 사용자 공간 마이크로커널이라고 분류할 수는 없다.[1]
XNU의 Mach 구성 요소는 태스크와 스레드, 프로세서 스케줄링, 가상 메모리 보호와 메시지 중심 IPC를 제공한다. BSD 계층은 UNIX 프로세스 의미론과 사용자·그룹 권한, 파일 디스크립터, 소켓, 파일 시스템 및 시스템 호출을 담당하며, I/O Kit은 장치와 드라이버를 관리하는 객체 모델을 제공한다. 이러한 부분들은 하나의 커널 주소 공간에서 결합되므로 XNU는 Mach 3.0의 서버 분리형 마이크로커널과 구현 방법이 다르다.[2]
XNU의 직접적인 역사적 기반은 NeXT의 Mach·BSD 결합 운영체제와 Apple의 Darwin으로 이어진다. 이후 macOS뿐 아니라 iOS, iPadOS, watchOS, tvOS와 visionOS 등의 시스템 기반이 되었고, 하드웨어에 따라 드라이버, 보안 모델, 사용자 공간 서비스를 별도로 조정해 왔다. Apple이 공개하는 커널 소스는 Darwin 및 XNU의 기술 구조를 연구할 수 있게 하지만 각 제품의 독점 그래픽 환경과 모든 프레임워크까지 함께 제공하는 것은 아니다.[3]
XNU에서 Mach 하위 시스템은 스레드와 태스크, CPU 스케줄링, 가상 메모리와 메시지 전달을 처리한다. BSD 계층은 프로세스 ID, 사용자 자격 정보, 파일·소켓과 POSIX API를 구현하고 I/O Kit은 장치 드라이버의 계층 구조를 제공한다. 이 요소들은 한 커널 안에서 상호 작용하므로 Mach 3.0 마이크로커널 위의 개별 사용자 공간 UNIX 서버와 같은 구성이라고 볼 수 없다.[4]
커널의 핵심 기술은 NeXT 계열 UNIX 운영체제에서 시작하여 Apple의 Darwin·Mac OS X 개발과 함께 확장되었다. 이후 Apple silicon으로의 전환과 각기 다른 제품군에 맞는 하드웨어·보안 정책을 수용하면서도 공통적인 XNU 기반을 유지했다. macOS와 iOS 등 운영체제가 커널 코드를 공유한다는 사실은 그래픽·응용 프로그램 프레임워크나 사용자 공간 전체가 동일하다는 뜻이 아니다.[5]