苹果对XNU最重要的修改是引入了I/O Kit设备驱动程序框架。这是一个在内核中的完整的、自包含的执行环境,让开发者可以快速创建优雅稳定的设备驱动程序。能实现这一点的原因是I/O Kit形成了一个受限的C++环境(通过libkern),其中带有语言提供的最重要功能——继承和重载。
那么,编写I/O Kit驱动程序这件事情就被极大地简化了,只需要找到一个已有的驱动程序作为超类,并且在运行时中继承其所有功能。这样可以避免样板化代码的复制,这种代码复制很可能会引入稳定性的bug,此外还能使得代码规模非常小——在内存紧张的内核空间中总是好事情。在驱动程序中添加新的方法或重载/隐藏已有的方法可以进行功能的修改。
使用C++环境的另一个好处是驱动程序可以工作在一个面向对象的环境中。因此OS X的驱动程序和其他操作系统上的设备驱动程序大有不同,其他操作系统上的设备驱动程序只能使用C语言编写,而且就算是最简单的功能也需要大量的代码才能实现。I/O Kit在XNU中组成了一个几乎自包含的系统,带有一个由很多驱动程序组成的丰富环境。单是I/O Kit的内容就可以用一本书来描述(事实上最近就有这么一本书),不过本书的整个第18章都在讲解I/O Kit的架构。