UNIX | |||||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin:-6px -1px -11px; word-break: keep-all;" | BSD | FreeBSD | DragonFly BSD · | ||
NetBSD | OpenBSD | ||||
XNU | Darwin · | ||||
System III/ System V | Solaris | OpenSolaris | Illumos | SmartOS · OpenIndiana | |
IBM AIX · HP-UX | |||||
기타 | |||||
취소선 처리된 배포판은 개발 중단된 배포판. | }}}}}}}}} |
| |||||
개발 | Apple | ||||
기반 | Mach, BSD | ||||
개발 언어 | C , C++, 어셈블리어 | ||||
라이선스 | Apple Public Source License 2.0 | ||||
지원 중인 플랫폼 | AMD64, ARM, ARM64 | ||||
지원 중단된 플랫폼 | IA-32, PowerPC | ||||
커널 종류 | 하이브리드 커널 | ||||
소스 코드 |
[clearfix]
1. 개요
XNU 커널은 macOS 및 iOS 운영체제에서의 이용을 위한 Darwin 운영체제의 일부입니다. XNU는 X is Not Unix의 두문자어입니다. XNU는 카네기 멜런 대학교에서 개발한 Mach 커널과 FreeBSD에서 온 컴포넌트들, 드라이버 작성을 위한 C++ API인 IOKit을 조합하여 만들어진 하이브리드 커널입니다. XNU는 x86_64 및 ARM64 환경의 단일 및 다중 프로세서 구성에서 작동합니다. Apple XNU OSS 프로젝트 README.md 파일 중에서 |
XNU는 Darwin의 커널이다. XNU 기반의 Darwin은 Apple의 macOS와 iOS의 핵심 요소로 사용된다.
2. 커널 구성
2.1. Mach
제일 밑바탕이 되는 것은 마이크로커널인 Mach이다. 여기서 Mach는 마하가 아니라 '먹'([mʌk])이라고 읽는다.2.2. BSD
Mach 커널 위에 BSD 모놀리식(Monolithic) 커널의 구성 요소들이 올라간다. 이 부분은 POSIX API를 제공한다. 또한 Mach 커널 위에서의 유닉스 프로세스 모델, 보안 규칙, 사용자와 그룹 ID, 권한, 네트워크 프로토콜, 가상 파일 시스템(저널링 단에 독립적인 파일 시스템도 포함), HFS/HFS+, 네트워크 파일 시스템, 클라이언트/서버, 암호 프레임워크, 유닉스 시스템 V, 프로세스 간 통신(IPC), 유닉스 audit 시스템, 필수 접근 관리 등을 제공한다.[1]3. 여담
- X is Not Unix(X는 Unix가 아니다)라는 이름에도 불구하고, XNU를 기반으로 하는 macOS는 단일 UNIX 규격 인증을 받았다. 그리고 UNIX 중에서도 AT&T 코드 베이스 시스템에 해당하는 "유전적 UNIX"로 분류된다. 그러니까 XNU는 사실 UNIX인 데다가, 그 중에서도 정통 UNIX 시스템에 해당한다는 것이다.
이러한 "~ is Not UNIX" 라는 방식의 네이밍은 꽤 유행했는데(Xinu, GNU 등), 당시 '진짜' UNIX를 만들기 위해서는 AT&T에 라이선스 비용을 아주 많이 내야 했다는 시대적 배경이 있었을 것이다. 지금도 UNIX 인증을 받으려면 돈을 많이 내야 하지만, 저 시절 AT&T의 법무팀은 지금의 오라클보다 악명 높은 매우 무서운 존재였기 때문이다.