XNU

XNU kernel开发者| 蘋果公司

|

编程语言| C, C++
作業系統家族| 类Unix
運作狀態| 开发中
源码模式| 開放原始碼
首次发布| 1996年12月，​27年前​（1996-12）
当前版本|

* 1228（2007年10月30日）[1]
* 8796.101.5（2023年6月14日）[2]

支持的语言| 英文, 其他
支援平台| IA-32, x86-64, ARM
内核类别| 混合
许可证| 苹果公共源代码许可证 2.0
官方網站| opensource.apple.com/source/xnu
仓库|

* github.com/apple-oss-distributions/xnu

XNU是一个由苹果电脑开发用于macOS操作系统的操作系统内核。它是Darwin操作系统的一部分，跟随着Darwin一同作为自由及开放源代码软件被发布。它还是iOS、tvOS和watchOS操作系统的内核。XNU是X is Not Unix的缩写[3]。

XNU最早是NeXT公司为了NeXTSTEP操作系统而发展的。它是一种混合式核心（Hybrid kernel），结合了由卡内基美隆大学发展的Mach 2.5版，4.3BSD，与称为Driver Kit的面向对象程序设计应用程序界面。

在苹果电脑收购NeXT公司之后，XNU的Mach微内核被升级到Mach 3.0，BSD的部分升级至FreeBSD，Driver Kit则改成I/O Kit，一套以C++撰写的应用程序界面。

## 内核设计

[编辑]

XNU是一个混合内核，将宏内核与微内核两者的特性兼收并蓄，以期同时拥有两种内核的优点————比如在微内核中提高操作系统模块化程度以及让操作系统更多的部分接受内存保护的消息传递机制，和宏内核在高负荷下表现的高性能。

到2007年为止，XNU支持单核和具有对称多处理的ARM[4]，IA-32和x86-64处理器。在第10版（即Mac OS X 10.6）之后，不再支持PowerPC。

### Mach

[编辑]

XNU内核以一个被深度定制的Mach3.0内核作为基础。如此这般，它便可以把操作系统的核心部分作为独立的进程运行，由此带来极大的灵活性（Mach核心之上可平行运行多个操作系统）。但是因为内核态/用户态的上下文切换会额外消耗时间，同时内核与服务进程之间的消息传递也会降低运行效率，所以这种设计通常会降低性能。为了提高效率，在 Mac OS X 中BSD部分与Mach一起内建于核心部分。深度定制的「混合」Mach3.0内核与传统BSD内核融合一体的产物就是一个「混合」内核，同时具有两者的优点与缺点。

### BSD

[编辑]

内核的伯克利软件套件（BSD）部分提供了POSIX应用程序接口（BSD系统称为API）：基于Mach的任务之上的Unix进程模型，基本安全策略，用户和用户组，权限，网络协议栈，虚拟文件系统（包括一个文件系统无关的日志层），几个本地文件系统（例如HFS/HFS+），网络文件系统（NFS）客户端与服务器，加密框架，UNIX System V进程间通信（IPC），审计机制，强制访问控制，和一些锁原语[5]。XNU中的BSD代码来自FreeBSD内核。尽管其中相当一部分代码都被深度修改过，苹果和FreeBSD项目之间依然会交换代码[6]。

### K32/K64

[编辑]

XNU在Mac OS X 10.6 Snow Leopard（Darwin版本号10）及之后演化为两个分支，称为K32的32位版和称为K64的64位版[7]。K32可以在用户态运行64位应用。Mac OS X 10.6 的新特性是在64位用户空间运行XNU。在除2008年及之后的Mac Pro和Xserve外的所有设备上，K32是10.6 Server系统的默认内核，并且可以运行64位应用[8]。K64相比K32有如下几点优势[9]：

* 可以管理超过32GB的内存，内存地址空间相比32位内核有巨大增长。
* 缓存容量可以超过32位内核空间的限制，潜在提升I/O性能。
* 当使用高性能网络设备或多个GPU时性能会提升，因为即使在直接存储器访问DMA缓存很大的情况下内核也可以把所有设备映射在64位地址空间中。

在支持64位内核的机器启动时按下6和4按键会使机器使用K64启动。K64可以运行32位应用，但不会运行32位的内核模块，所以这些内核模块需要移植到K64才能被加载。

### I/O Kit

[编辑]

I/O Kit 是一个设备驱动框架，用基于Embedded C++的C++子集编写[10]。借助它的面向对象设计，框架提供每种设备驱动需要的常见特性，以使驱动程序可以用更少的时间和代码完成。I/O Kit 具有多线程设计，对称多处理安全，支持热拔插设备和自动动态配置设备等特性。 很多设备驱动可以编写运行于用户态，进一步提升了系统的稳定性。如果用户态的驱动崩溃，内核不会因此崩溃。但是，内核态的驱动崩溃会导致内核崩溃。磁盘适配器和网络适配器驱动、显卡驱动、USB驱动和火线控制器驱动以及虚拟机软件如VirtualBox，Parallels Desktop for Mac和VMware Fusion等的驱动都是典型的内核态驱动。

## 共享资源保护

[编辑]

为了在多核设备上安全运行，对共享资源（文件、数据结构等） 的访问必须被序列化，这样线程和进程就无法在同一时间修改同一资源。原子操作、自旋锁、临界区块、互斥锁（"mutexes"）和序列化标记（serializing tokens）都可以实现防止访问冲突发生。从Mac OS X 10.4与Darwin8.0开始，XNU如较新版本的Linux与FreeBSD一样使用一种折中的互斥模型来获得在多处理器系统上的高性能表现。

## 参见

[编辑]

* 自由软件主题

* 内核
* A/UX
* mkLinux
* Darwin - 苹果公司以XNU为内核发布的开源操作系统
* macOS - 苹果公司以XNU为内核发布的操作系统

## 参考资料

[编辑]

1. ^ Release 1228. 2007年10月30日  [2023年6月22日].
2. ^ xnu-8796.101.5. 2023年6月14日  [2023年7月30日].
3. ^ Porting UNIX/Linux Applications to Mac OS X: Glossary. Apple Computer. 2005  [March 27, 2009]. （原始内容存档于2012年8月13日）.
4. ^ iPhone processor found: 620MHz ARM CPU （页面存档备份，存于互联网档案馆） (July 1, 2007) Retrieved January 6, 2008
5. ^ Watson, Robert. Re: freebsd-advocacy Digest, Vol 248, Issue 1. freebsd-advocacy (邮件列表). August 2, 2008  [October 24, 2013]. （原始内容存档于2021-02-25）.
6. ^ FreeBSD Quarterly Status Report (Grand Central Dispatch - FreeBSD port). April 2009  [October 24, 2013]. （原始内容存档于2009-10-14）.
7. ^ Mac OS X 10.6 Snow Leopard: the Ars Technica review, page 5.  [2017-04-08]. （原始内容存档于2012-08-13）.
8. ^ Mac OS X Server v10.6: Macs that use the 64-bit kernel.  [2017-04-08]. （原始内容存档于2010-12-05）.
9. ^ What's New in Mac OS X: Mac OS X v10.6.  [2017-04-08]. （原始内容存档于2009-12-08）.
10. ^ I/O Kit uses a restricted subset of C++.  [2017-04-08]. （原始内容存档于2019-04-19）.

## 外部链接

[编辑]

* http://opensource.apple.com/source/xnu/ （页面存档备份，存于互联网档案馆）
* Unofficial mirror of XNU at GitHub （页面存档备份，存于互联网档案馆）
* XNU: The Kernel （页面存档备份，存于互联网档案馆） - Amit Singh 于 2003年12月写的对XNU结构组成的概述
* Inside the Mac OS X Kernel （页面存档备份，存于互联网档案馆） - "This talk intends to clear up the confusion by presenting details of the Mac OS X kernel（这次演讲旨在通过深入介绍Mac OS X 内核来澄清误解）"

* 查
* 论
* 编

移动操作系统

Linux内核|

| Android|

* AliOS
* 百度雲OS
* CopperheadOS
* CyanogenMod
* Fira OS（英语：Fira OS）
* Fire OS
* Hive UI（英语：Hive UI）
* Indus OS（英语：Indus OS）
* LineageOS
* MIUI
* 魔趣
* Nokia X Platform
* OPhone
* Replicant
* Resurrection Remix OS
* Ubuntu for Android
* Wear OS

|

SHR（英语：SHR (operating system)）|

* OpenEmbedded
* Familiar Linux
* OpenZaurus（英语：OpenZaurus）
* KaeilOS（英语：KaeilOS）
* Openmoko Linux
* Qt Extended
* Ångström Linux-based

其他|

* Access Linux
* Bada (操作系统)
* EZX Linux（英语：EZX Linux）
* Firefox OS
* KaiOS
* LuneOS（英语：LuneOS）
* MeeGo
* Mer
* Sailfish OS
* Moblin
* MontaVista
* Mobilinux
* MotoMagx
* Nokia Asha Platform
* PostmarketOS
* Tizen
* Ubuntu Touch
* webOS
* LuneOS

XNU|

* iOS
* iPadOS
* tvOS
* watchOS

QNX|

* BlackBerry 10
* BlackBerry PlayBook OS

Windows|

* Windows Mobile
* Windows Phone
* Windows XP Tablet PC Edition
* Windows RT
* Windows 8.1 with Bing
* Windows 10移动版

Zircon|

* Fuchsia

其他|

* BlackBerry OS
* EPOC
* GEOS（英语：GEOS (16-bit operating system)）
* 任天堂DSi
* 任天堂3DS
* Palm OS
* PSP
* PS Vita
* S30
* S30+
* S40
* Symbian
* MOAP（英语：MOAP）(S)
* UIQ
* S60
* S80
* S90

相關平臺|

* 无线二进制运行环境（BREW）
* Java ME
* JavaFX Mobile

* 移动操作系统比较
* 行動軟體發行平台列表
* 開放手機聯盟
* 開放移動聯盟
* 流動應用程式開發（英语：Mobile application development）

* 查
* 论
* 编

macOS

版本|

* Server 1.0 Hera
* Public Beta Kodiak
* 10.0 Cheetah
* 10.1 Puma
* 10.2 Jaguar
* 10.3 Panther
* 10.4 Tiger
* 10.5 Leopard
* 10.6 Snow Leopard
* 10.7 Lion
* 10.8 Mountain Lion
* 10.9 Mavericks
* 10.10 Yosemite
* 10.11 El Capitan
* 10.12 Sierra
* 10.13 High Sierra
* 10.14 Mojave
* 10.15 Catalina
* 11 Big Sur
* 12 Monterey
* 13 Ventura
* 14 Sonoma
* 15 Sequoia

应用程序|

*   * 计算器
* 日历
* 国际象棋（英语：List of macOS components#Chess）
* 通訊錄
* 词典
* DVD播放程序
* FaceTime通话
* 访达
* iTunes（版本歷史）
* Mac App Store
* 郵件
* 信息
* 备忘录（英语：Notes (Apple)）
* 通知中心
* Photo Booth
* 预览
* QuickTime
* 提醒事項
* Safari浏览器（版本歷史）
* 便笺
* 捷徑
* 文字編輯
* 地图
* 字體簿
* Grapher

停止開發|

* Front Row
* iChat
* iSync
* Sherlock
* Dashboard
* 自动操作（將來）

实用工具|

* 活動監視器
* AirPort实用工具
* 音频MIDI设置
* 蓝牙文件交换
* BOMArchiveHelper（英语：BOMArchiveHelper）
* 色彩同步实用工具
* 控制台
* Crash Reporter（英语：Crash Reporter）
* 数码测色计（英语：Digital Color Meter）
* 目錄工具程式
* DiskImageMounter
* 磁盘工具程序
* Grab（英语：Grab_(software)）
* Help Viewer（英语：Help Viewer）
* 图像捕捉（英语：Image Capture）
* 安裝程式
* 钥匙串访问
* 系統移轉輔助程式（英语：Migration Assistant）
* 网络实用工具（英语：Network Utility）
* ODBC Administrator（英语：ODBC Administrator）
* 螢幕共享（英语：Screen Sharing）
* 系统偏好设置（英语：System Preferences）
* 系统信息（英语：System Information）
* 终端
* 輔助使用;（英语：Universal Access）
* 旁白
* Apple X11

停止開發|

* Apple Software Update
* Remote Install Mac OS X（英语：Remote Install Mac OS X）

技術與
使用者界面|

* 隔空投送
* Command键
* Option鍵
* Apple Push Notification Service
* AppleScript
* Aqua
* Audio Units（英语：Audio Units）
* Bonjour
* Boot Camp
* Carbon
* Cocoa
* Core Audio（英语：Core Audio）
* Core Data
* Core Image
* Core Video（英语：Core Video）
* Core Animation（英语：Core Animation）
* Darwin
* 程序坞
* 调度中心
* FileVault
* Kernel panic
* 钥匙串
* Launchpad
* Mach-O
* Mission Control
* OpenGL
* 属性列表
* Quartz
* QuickTime
* QuickLook
* Spotlight
* 堆疊
* 时间机器
* Uniform Type Identifier（英语：Uniform Type Identifier）
* 通用二进制
* Rosetta
* WebKit
* XNU
* XQuartz
* Metal

停止開發|

* Classic Environment
* Spaces

* 查
* 论
* 编

FreeBSD项目

FreeBSD|

* FreeBSD核心团队（英语：FreeBSD Core Team）
* FreeBSD文档许可证（英语：FreeBSD Documentation License）
* FreeBSD基金会（英语：FreeBSD Foundation）
* FreeBSD Ports
* 历史（英语：History of FreeBSD）

子系统|

* busdma（英语：busdma）
* GEOM（英语：GEOM）
* Ipfirewall
* FreeBSD jail
* Netgraph（英语：Netgraph）
* OpenPAM（英语：OpenPAM）
* OpenBSM（英语：OpenBSM）
* pf（英语：PF (firewall)）
* Soft updates（英语：Soft updates）
* ULE scheduler（英语：ULE scheduler）
* bhyve（英语：bhyve）
* 高可用存储
* portsnap（英语：portsnap）
* kqueue
* geom raid5（英语：geom raid5）
* geli（英语：Geli (software)）
* moused（英语：moused）
* Vinum volume manager（英语：Vinum volume manager）

人物|

* Jordan Hubbard（英语：Jordan Hubbard）
* Poul-Henning Kamp（英语：Poul-Henning Kamp）
* Mike Karels（英语：Michael J. Karels）
* Ben Laurie（英语：Ben Laurie）
* Sam Leffler（英语：Samuel J Leffler）
* Marshall Kirk McKusick（英语：Marshall Kirk McKusick）
* Diomidis Spinellis（英语：Diomidis Spinellis）
* Robert Watson（英语：Robert Watson (computer scientist)）
* Dru Lavigne（英语：Dru Lavigne）

衍生品（英语：List of products based on FreeBSD）|

| 开源软件|

* BSD路由器项目（英语：BSD Router Project）
* XNU
* Darwin
* DesktopBSD
* DragonFly BSD
* TrueNAS
* FreeSBIE
* GhostBSD
* 银河麒麟
* MidnightBSD
* m0n0wall
* TrueOS
* PfSense
* GhostBSD
* FuryBSD
* GNU/kFreeBSD
* Gentoo/FreeBSD（英语：Gentoo/FreeBSD）

|

专有软件|

* Junos（英语：Junos）
* macOS
* iOS
* tvOS
* watchOS
* 任天堂Switch操作系统
* PlayStation 3操作系统
* PlayStation 4操作系统
* PlayStation Vita操作系统

*[查]: 查看该模板
*[论]: 讨论该模板
*[编]: 编辑该模板