<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=XNU</id>
	<title>XNU - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=XNU"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=XNU&amp;action=history"/>
	<updated>2026-07-19T08:05:59Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=XNU&amp;diff=777049&amp;oldid=prev</id>
		<title>2025年5月12日 (一) 02:03 202.75.86.154</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=XNU&amp;diff=777049&amp;oldid=prev"/>
		<updated>2025-05-12T02:03:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox OS&lt;br /&gt;
| name                   = XNU kernel&lt;br /&gt;
| logo                   =&lt;br /&gt;
| caption                =&lt;br /&gt;
| developer              = [[蘋果公司]]&lt;br /&gt;
| family                 = [[类Unix]]&lt;br /&gt;
| working state          = 开发中&lt;br /&gt;
| source model           = [[開放原始碼]]&lt;br /&gt;
| released               = {{Start date and age|1996|12}}&lt;br /&gt;
| programmed in          = [[C语言|C]], [[C++]]&lt;br /&gt;
| language               = 英文, 其他&lt;br /&gt;
| supported platforms    = [[IA-32]], [[x86-64]], [[ARM架构|ARM]]&lt;br /&gt;
| kernel_type            = [[混合核心|混合]]&lt;br /&gt;
| license                = [[苹果公共源代码许可证]] 2.0&lt;br /&gt;
| website                = {{URL|https://opensource.apple.com/source/xnu}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XNU&amp;#039;&amp;#039;&amp;#039;是一个由[[苹果电脑]]开发用于[[macOS]]、[[iOS]]、[[iPadOS]]、[[tvOS]]、[[watchOS]]和[[visionOS]]操作系统的[[操作系统]][[内核]]。它是[[Darwin (操作系统)|Darwin]]操作系统的一部分，跟随着Darwin一同作为[[自由及开放源代码软件]]被发布。XNU是“&amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; is &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;ot &amp;#039;&amp;#039;&amp;#039;U&amp;#039;&amp;#039;&amp;#039;nix”的[[遞迴縮寫]]&amp;lt;ref&amp;gt;{{cite web |year=2005 |url=https://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/glossary/glossary.html |title=Porting UNIX/Linux Applications to Mac OS X: Glossary |publisher=Apple Computer |accessdate=March 27, 2009 |deadurl=yes |archiveurl=https://www.webcitation.org/69tH6UvBx?url=https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/glossary/glossary.html |archivedate=2012年8月13日 }}&amp;lt;/ref&amp;gt;&amp;lt;!-- Please read the footnote before making changes to the last line. XNU is NOT a recursive abbreviation, and it does NOT stand for &amp;quot;XNU is not Unix.&amp;quot;--&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
XNU最早是[[NeXT]]公司为了[[NeXTSTEP]]操作系统而发展的。它是一种[[混合式核心]]（Hybrid kernel），结合了由[[卡内基美隆大学]]发展的[[Mach]] 2.5版，[[BSD|4.3BSD]]，与称为Driver Kit的[[面向对象程序设计]][[应用程序接口|应用程序界面]]。&lt;br /&gt;
&lt;br /&gt;
在苹果电脑收购NeXT公司之后，XNU的Mach微内核被升级到Mach 3.0，BSD的部分升级至[[FreeBSD]]，Driver Kit则改成[[I/O Kit]]，一套以[[C++]]撰写的应用程序界面。&lt;br /&gt;
&lt;br /&gt;
== 内核设计 ==&lt;br /&gt;
XNU是一个[[混合核心|混合内核]]，将[[宏内核]]与[[微内核]]两者的特性兼收并蓄，以期同时拥有两种内核的优点————比如在微内核中提高操作系统模块化程度以及让操作系统更多的部分接受[[内存保护]]的[[訊息傳遞 (軟體)|消息传递]]机制，和宏内核在高负荷下表现的高性能。&lt;br /&gt;
&lt;br /&gt;
到2007年为止，XNU支持单核和具有[[对称多处理]]的[[ARM]]&amp;lt;ref&amp;gt;[http://www.engadget.com/2007/07/01/iphone-processor-found-620mhz-arm/ iPhone processor found: 620MHz ARM CPU] {{Wayback|url=http://www.engadget.com/2007/07/01/iphone-processor-found-620mhz-arm/ |date=20090123013252 }} (July 1, 2007) Retrieved January 6, 2008&amp;lt;/ref&amp;gt;，[[IA-32]]和[[x86-64]]处理器。在第10版（即[[Mac OS X Snow Leopard|Mac OS X 10.6]]）之后，不再支持[[PowerPC]]。&lt;br /&gt;
&lt;br /&gt;
=== Mach ===&lt;br /&gt;
XNU内核以一个被深度定制的[[Mach]]3.0内核作为基础。如此这般，它便可以把操作系统的核心部分作为独立的进程运行，由此带来极大的灵活性（Mach核心之上可平行运行多个操作系统）。但是因为内核态/用户态的上下文切换会额外消耗时间，同时内核与服务进程之间的消息传递也会降低运行效率，所以这种设计通常会降低性能。为了提高效率，在 Mac OS X 中BSD部分与Mach一起内建于核心部分。深度定制的「混合」Mach3.0内核与传统BSD内核融合一体的产物就是一个「混合」内核，同时具有两者的优点与缺点。&lt;br /&gt;
=== BSD ===&lt;br /&gt;
&lt;br /&gt;
内核的[[BSD|伯克利软件套件]]（BSD）部分提供了[[POSIX]]应用程序接口（BSD系统称为API）：基于Mach的[[作業 (電腦)|任务]]之上的[[Unix]]进程模型，基本安全策略，用户和用户组，权限，[[协议栈|网络协议栈]]，[[虚拟文件系统]]（包括一个文件系统无关的[[日志]]层），几个本地文件系统（例如[[分层文件系统|HFS]]/[[HFS+]]），[[网络文件系统]]（NFS）客户端与服务器，加密框架，[[UNIX System V]][[进程间通信]]（IPC），审计机制，[[强制访问控制]]，和一些锁原语&amp;lt;ref&amp;gt;{{cite mailing list|url=http://lists.freebsd.org/pipermail/freebsd-advocacy/2008-August/003674.html|title=Re: freebsd-advocacy Digest, Vol 248, Issue 1|last=Watson|first=Robert|authorlink=Robert Watson (computer scientist)|mailinglist=freebsd-advocacy|date=August 2, 2008|accessdate=October 24, 2013|archive-date=2021-02-25|archive-url=https://web.archive.org/web/20210225134829/https://lists.freebsd.org/pipermail/freebsd-advocacy/2008-August/003674.html}}&amp;lt;/ref&amp;gt;。XNU中的BSD代码来自[[FreeBSD]]内核。尽管其中相当一部分代码都被深度修改过，苹果和FreeBSD项目之间依然会交换代码&amp;lt;ref&amp;gt;{{cite web|url=http://www.freebsd.org/news/status/report-2009-04-2009-09.html#Grand-Central-Dispatch---FreeBSD-port|title=FreeBSD Quarterly Status Report (Grand Central Dispatch - FreeBSD port)|date=April 2009|accessdate=October 24, 2013|archive-date=2009-10-14|archive-url=https://web.archive.org/web/20091014031730/http://www.freebsd.org/news/status/report-2009-04-2009-09.html#Grand-Central-Dispatch---FreeBSD-port}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== K32/K64 ===&lt;br /&gt;
&lt;br /&gt;
XNU在[[Mac OS X Snow Leopard|Mac OS X 10.6 Snow Leopard]]（[[Darwin (操作系统)|Darwin]]版本号10）及之后演化为两个分支，称为K32的[[32位]]版和称为K64的[[64位]]版&amp;lt;ref&amp;gt;{{Cite web |url=http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/5 |title=Mac OS X 10.6 Snow Leopard: the Ars Technica review, page 5 |accessdate=2017-04-08 |archive-date=2012-08-13 |archive-url=https://www.webcitation.org/69swuj0Ua?url=http://arstechnica.com/apple/2009/08/mac-os-x-10-6/5/ |dead-url=no }}&amp;lt;/ref&amp;gt;。K32可以在用户态运行64位应用。Mac OS X 10.6 的新特性是在64位[[使用者空間|用户空间]]运行XNU。在除2008年及之后的[[Mac Pro]]和[[Xserve]]外的所有设备上，K32是10.6 Server系统的默认内核，并且可以运行64位应用&amp;lt;ref&amp;gt;{{Cite web |url=http://support.apple.com/kb/HT3770 |title=Mac OS X Server v10.6: Macs that use the 64-bit kernel |accessdate=2017-04-08 |archive-date=2010-12-05 |archive-url=https://web.archive.org/web/20101205233913/http://support.apple.com/kb/HT3770 |dead-url=no }}&amp;lt;/ref&amp;gt;。K64相比K32有如下几点优势&amp;lt;ref&amp;gt;{{Cite web |url=http://developer.apple.com/mac/library/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html |title=What&amp;#039;s New in Mac OS X: Mac OS X v10.6 |accessdate=2017-04-08 |archive-date=2009-12-08 |archive-url=https://web.archive.org/web/20091208151435/http://developer.apple.com/Mac/library/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html |dead-url=no }}&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
* 可以管理超过32GB的内存，内存地址空间相比32位内核有巨大增长。&lt;br /&gt;
* 缓存容量可以超过32位内核空间的限制，潜在提升I/O性能。&lt;br /&gt;
* 当使用高性能网络设备或多个[[GPU]]时性能会提升，因为即使在[[直接存储器访问]]DMA缓存很大的情况下内核也可以把所有设备映射在64位地址空间中。&lt;br /&gt;
&lt;br /&gt;
在支持64位内核的机器启动时按下6和4按键会使机器使用K64启动。K64可以运行32位应用，但不会运行32位的内核模块，所以这些内核模块需要移植到K64才能被加载。&lt;br /&gt;
&lt;br /&gt;
=== I/O Kit ===&lt;br /&gt;
I/O Kit 是一个[[驱动程序|设备驱动]]框架，用基于[[Embedded C++]]的[[C++]]子集编写&amp;lt;ref&amp;gt;{{Cite web |url=http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html |title=I/O Kit uses a restricted subset of C++ |accessdate=2017-04-08 |archive-date=2019-04-19 |archive-url=https://web.archive.org/web/20190419152142/http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html |dead-url=no }}&amp;lt;/ref&amp;gt;。借助它的[[面向对象程序设计|面向对象]]设计，框架提供每种设备驱动需要的常见特性，以使驱动程序可以用更少的时间和代码完成。I/O Kit 具有多线程设计，[[对称多处理]]安全，支持热拔插设备和自动动态配置设备等特性。&lt;br /&gt;
很多设备驱动可以编写运行于[[用户态]]，进一步提升了系统的稳定性。如果用户态的驱动崩溃，内核不会因此崩溃。但是，内核态的驱动崩溃会导致内核崩溃。磁盘适配器和网络适配器驱动、显卡驱动、[[USB]]驱动和[[IEEE 1394|火线控制器]]驱动以及[[虚拟机]]软件如[[VirtualBox]]，[[Parallels Desktop for Mac]]和[[VMware|VMware Fusion]]等的驱动都是典型的内核态驱动。&lt;br /&gt;
&lt;br /&gt;
== 共享资源保护 ==&lt;br /&gt;
为了在多核设备上安全运行，对共享资源（文件、数据结构等） 的访问必须被序列化，这样线程和进程就无法在同一时间修改同一资源。原子操作、自旋锁、[[臨界區段|临界区块]]、[[互斥锁]]（&amp;quot;mutexes&amp;quot;）和序列化标记（serializing tokens）都可以实现防止访问冲突发生。从Mac OS X 10.4与Darwin8.0开始，XNU如较新版本的Linux与FreeBSD一样使用一种折中的互斥模型来获得在[[多核心處理器|多处理器]]系统上的高性能表现。&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
{{Portal|自由软件}}&lt;br /&gt;
*[[内核]]&lt;br /&gt;
*[[A/UX]]&lt;br /&gt;
*[[mkLinux]]&lt;br /&gt;
*[[Darwin (操作系统)|Darwin]]{{snd}}苹果公司以XNU为内核发布的开源操作系统&lt;br /&gt;
*[[macOS]]{{snd}}苹果公司以XNU为内核发布的操作系统&lt;br /&gt;
&lt;br /&gt;
== 参考资料 ==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* http://opensource.apple.com/source/xnu/ {{Wayback|url=http://opensource.apple.com/source/xnu/ |date=20220308121457 }}&lt;br /&gt;
* [https://github.com/opensource-apple/xnu Unofficial mirror of XNU at GitHub] {{Wayback|url=https://github.com/opensource-apple/xnu |date=20180924043346 }}&lt;br /&gt;
* [http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html XNU: The Kernel] {{Wayback|url=http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html |date=20190419152142 }}{{snd}} Amit Singh 于 2003年12月写的对XNU结构组成的概述&lt;br /&gt;
* [http://www.derchris.eu/ccc/24C3/mp4/24c3-2303-en-inside_the_macosx_kernel-COMPATIBLE.mp4 Inside the Mac OS X Kernel] {{Wayback|url=http://www.derchris.eu/ccc/24C3/mp4/24c3-2303-en-inside_the_macosx_kernel-COMPATIBLE.mp4 |date=20160407134037 }}{{snd}} &amp;quot;This talk intends to clear up the confusion by presenting details of the Mac OS X kernel（这次演讲旨在通过深入介绍Mac OS X 内核来澄清误解）&amp;quot;&lt;br /&gt;
{{移动操作系统}}&lt;br /&gt;
{{macOS}}&lt;br /&gt;
{{FreeBSD}}&lt;br /&gt;
{{DEFAULTSORT:Xnu}}&lt;br /&gt;
[[Category:Mach]]&lt;br /&gt;
[[Category:宏内核]]&lt;br /&gt;
[[Category:macOS]]&lt;/div&gt;</summary>
		<author><name>202.75.86.154</name></author>
	</entry>
</feed>