XNU 的Mach部分來自 Mach 3.0 (但是 XNU 不是微內核),它負責 XNU 比較底層的任務,譬如:
搶佔式多任務,包括內核線程(Mac OS X用內核線程實現POSIX線程)
內存保護
虛擬內存管理
進程間通信
中斷管理
實時支持
內核調試支持
控制檯I/O
注意, BSD 子系統其實是內核的一部分(包括其它子系統),它主要使用FreeBSD作爲主要的參考代碼庫(當然也有NetBSD和OpenBSD的一些代碼)。 BSD 主要負責:
處理模型
用戶ID、權限,基本安全策略
POSIX API,BSD風格的系統調用
TCP/IP協議棧,BSD套接字,防火牆
VFS和文件系統
System V IPC
加密框架
各種同步機制
I/O Kit 是 XNU 不同於其他傳統系統的設備驅動框架,它是面向對象的,特性有:
多種設備家族
可共享設備的面向對象抽象
即插即用和熱插拔
電源管理
搶佔式多任務,線程,SMP,內存保護和數據管理
驅動的動態匹配和加載(多種總線類型)
一個追蹤和維護實例對象詳細信息的數據庫
一個系統上所有可用I/O Kit類的數據庫
衍生API
供應用程序和用戶空間的驅動與I/O Kit通信的一套機制/接口
驅動堆棧
對於 Platform Expert ,你可以把它看作某種驅動,它能系統所運行平臺的類型,它負責:
建立設備樹
語法分析某個引導參數
辨認機器(包括處理器和總線的時鐘頻率)
萬一內核崩潰就初始化一個用戶界面可用
I/O Kit 使用的是C++的一個子集,由 libkern 實現,這個庫的主要特性:
動態對象的分配、組建和破壞
某些微小操作和各種函數
提供追蹤每個類當前的實例數
避免“Fragile Base Class Problem”
libsa 提供用於各種目的的亂七八糟的函數:二叉樹搜索啊、排序啊、內核擴展管理啊...
那麼,Darwin是什麼?Darwin只能說是一個Mac OS X的基礎,它有超過250個軟體包,其中許多是Apple自己的包(包括內核和其他各種驅動),另外一些就是來自*BSD和GNU等系統,Apple作了很多努力讓這些開放源代碼的軟體整合到Mac OS X中去