
_START_ARTICLE_
XNU
_START_SECTION_
内核设计
_START_PARAGRAPH_
XNU是一个混合内核，将宏内核与微内核两者的特性兼收并蓄，以期同时拥有两种内核的优点————比如在微内核中提高操作系统模块化程度以及让操作系统更多的部分接受内存保护的消息传递机制，和宏内核在高负荷下表现的高性能。_NEWLINE_到2007年为止，XNU支持单核和具有对称多处理的ARM，IA-32和x86-64处理器。在第10版（即Mac OS X 10.6）之后，不再支持PowerPC。
_START_SECTION_
Mach
_START_PARAGRAPH_
XNU内核以一个被深度定制的Mach3.0内核作为基础。如此这般，它便可以把操作系统的核心部分作为独立的进程运行，由此带来极大的灵活性（Mach核心之上可平行运行多个操作系统）。但是因为内核态/用户态的上下文切换会额外消耗时间，同时内核与服务进程之间的消息传递也会降低运行效率，所以这种设计通常会降低性能。为了提高效率，在 Mac OS X 中BSD部分与Mach一起内建于核心部分。深度定制的“混合”Mach3.0内核与传统BSD内核聚变一体的产物就是一个“混合”内核，同时具有两者的优点与缺点。
_START_SECTION_
BSD
_START_PARAGRAPH_
内核的伯克利软件套件（BSD）部分提供了POSIX应用程序接口（BSD系统称为API）：基于Mach的任务之上的Unix进程模型，基本安全策略，用户和用户组，权限，网络协议栈，虚拟文件系统（包括一个文件系统无关的日志层），几个本地文件系统（例如HFS/HFS+），网络文件系统（NFS）客户端与服务器，加密框架，UNIX System V进程间通信（IPC），审计机制，强制访问控制，和一些锁原语。XNU中的BSD代码来自FreeBSD内核。尽管其中相当一部分代码都被深度修改过，苹果和FreeBSD项目之间依然会交换代码。
_START_SECTION_
I/O Kit
_START_PARAGRAPH_
I/O Kit 是一个设备驱动框架，用基于Embedded C++的C++子集编写。借助它的面向对象设计，框架提供每种设备驱动需要的常见特性，以使驱动程序可以用更少的时间和代码完成。I/O Kit 具有多线程设计，对称多处理安全，支持热拔插设备和自动动态配置设备等特性。_NEWLINE_很多设备驱动可以编写运行于用户态，进一步提升了系统的稳定性。如果用户态的驱动崩溃，内核不会因此崩溃。但是，内核态的驱动崩溃会导致内核崩溃。磁盘适配器和网络适配器驱动、显卡驱动、USB驱动和火线控制器驱动以及虚拟机软件如VirtualBox，Parallels Desktop for Mac和VMware Fusion等的驱动都是典型的内核态驱动。
_START_SECTION_
共享资源保护
_START_PARAGRAPH_
为了在多核设备上安全运行，对共享资源（文件、数据结构等） 的访问必须被序列化，这样线程和进程就无法在同一时间修改同一资源。原子操作、自旋锁、临界区块、互斥锁（"mutexes"）和序列化标记（serializing tokens）都可以实现防止访问冲突发生。从Mac OS X 10.4与Darwin8.0开始，XNU如较新版本的Linux与FreeBSD一样使用一种折中的互斥模型来获得在多处理器系统上的高性能表现。