Mac OS X的內核

首先,Mac OS X的內核叫 XNU ,它有許多組件構成,如: Mach 、 BSD 、 I/O Kit 、 Platform Expert 、 libkern 、 libsa 。 

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中去
發佈了115 篇原創文章 · 獲贊 13 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章