关于 Mac OS X 内核技术来源
Mach(Multiple Asynchronously Communication Hosts) 是一個由卡內基梅隆大學開發的操作系統內核,Mach的開發是為了取代BSD的UNIX核心。
Mach 內核的設計目標之一是要兼容 Unix 系統。
當初他們的設想是,真正的操作系統可以作為一個用戶態的程序跑在 Mach 內核上。
Mach 內核開發的時候以 4.3BSD 為基礎進行開發。
他們在論文上稱這是”為 UNIX 開發的一個新內核”。
Mach 內核開源且無任何 licensing 約束。這意味著任何人都可以免費發行 Mach 內核。
嫌棄傳統 UNIX 內核什么都干,過于臃腫。所以 Mark 的設計目標是要取代 UNIX 內核,讓 UNIX 跑在 Mach 內核的用戶空間里。這個特性在 Mach 3.0 真正實現了。但是眾所周知 Mach 內核并不提供文件系統和網絡實現,所以依然需要和 UNIX 做大量的數據交換。這種交換的方式就是通過 Mach 的 IPC 通信。而讓幾乎所有進程都在兩個空間之間做 IPC 通信是非常低效的。
所以 NEXTSTEP 系統修改了 Mach 內核的實現,讓 Mach 和 BSD 都跑在同樣的內核空間上,所謂的混合內核 XNU 出現了,同時讓用戶空間發起的文件、網絡請求等本來要通過 IPC 調用的接口都改成 system call。
Mach 繼承卡內基梅隆大學的 Accent kernel,Mach 項目主導人理查德·拉希德曾于微軟的研究部門擔任高級人員,后成為微軟副總裁。另一位 Mach 開發者阿瓦德斯·特凡尼安(Avie Tevanian)曾是 NeXT 首席程序員,之后擔任蘋果電腦軟件技術部門主管直到2006年。
該項目在1985年啟動,并且在1994年因為 mach3.0 的顯著失敗而告終。但是 Mach 卻是一個真正的微核。GNU Mach 就是 Mach 的延續,現在 GNU Mach的計劃與GNU HURD聯系緊密。Debian GNU/Hurd 就是基于 GNU Mach 的。
史蒂夫·喬布斯(Steve Jobs) 1985 年創辦的 NeXT 團隊使用了卡耐基梅隆大學的 Mach 內核和部分 BSD 代碼庫來創建 NeXTSTEP 操作系統。
蘋果計算機在 1997 年 2 月將 NeXT 買下,NeXTSTEP 成為 Mac OS X 的基礎。
Apple 的工程師們開始使用 NeXTSTEP 4.2 作為新 Macintosh OS 的起點,并開始了為期三年的研發,將 Unix 核心的 OS 轉變為一般消費者使用的作業系統。此計畫的第一個專案的代號為“Rhapsody”。
1999 年 3 月發布 Mac OS X Server 1.0,這是第一個、也是唯一一個商業版本的 Rhapsody,系統核心技術則來自 NeXTSTEP。
2001 年 3 月 24 日,Apple 開始發售第一個正式版本的 Mac OS X v 10.0,由 Yellow Box 為基礎開發的“Cocoa”API、圖形顯示技術“Quartz”以及其他來自 NeXT 的技術,最后與 Rhapsody 整合得到 Mac OS X v 10.0,Rhapsody 演化為 OS X
Darwin 是一種 類 Unix 的操作系統,整合數種的技術,包含開放源碼的 XNU 核心 和 Mach 微核心,操作系統的服務和 userland 工具是以 4.4BSD,特別是以 FreeBSD 為基礎。Darwin 軟件本身來自于 NeXT 公司開發的 NextStep 操作系統的 BSD 層。
2005年5月蘋果公司關閉了基于 Intel 架構的 Darwin 的源代碼。蘋果公司同時宣布,他們將繼續完全開放基于PowerPC架構的Darwin的源代碼。
Mac OS X 的內核中含有早期 Mach 的組件,Mac OS X 使用混合內核 XNU,XNU 是將卡耐基梅隆大學開發的 Mach 內核和 FreeBSD 組件整合而成的混合內核。
NeXT 不久后釋出了NEXTSTEP系統程序開發中用到的API,NeXT將這個組API命名為 OPENSTEP。隨后NeXT在1993年中止了硬件業務,轉為專注于 OPENSTEP 的軟件市場開發上。這里有疑問,到底是命名為 OpenStep 還是 OPENSTEP?
OpenStep 是一組面向對象的 API。1993年,NeXT 和 Sun 公司聯合發布的一個針對 NEXTSTEP 系統的標準規范。OpenStep 在自由軟件基金會的實現名稱稱為 GNUStep。此外還有一個 Linux 版本,命名為 LinuxSTEP。
OPENSTEP 是由 NeXT 開發的一個 OpenStep 的特殊實現。OPENSTEP 作為 NeXT 的主要作業系統產品,直到 1997 年被蘋果電腦收購。接下來,OPENSTEP 與現存的 Mac OS 的相關技術相結合,產生了 Mac OS X。
NEXTSTEP(官方寫法很多種,一開始叫做 NextStep、NeXTstep、 NeXTSTEP,最后才叫做 NEXTSTEP。)是由 NeXT 所開發的操作系統。
NEXTSTEP 是操作系統,又它衍生了一組面向對象的 API,是一種操作系統的標準規范,叫 OpenStep。
OPENSTEP 是操作系統,它是一個 OpenStep 的特殊實現。
Mac OS X 就是奠基于 OPENSTEP 和 NEXTSTEP 的基礎上。
XNU 是內核,由 Mark 和 BSD 系統內核混合構建而成。XNU 最早出現在 NEXTSTEP 中,后來的 OPENSTEP 也是以 XNU 為內核。
Darwin 是操作系統,而且是最為底層的操作系統,稱為核心操作系統,由 XNU 和其它蘋果技術及相關工具構建而成。Darwin 是在 Mac OS X 中才出現的。
Darwin 首次出現在 1999 發布的 Mac OS X Server 1.0 中,以 XNU 為核心,但是把 4.4BSD 更新成了 FreeBSD 的代碼,把 Mark 更新成了OSFMK 的 Mach 3.0 和部分來自 University of Utah 的 Mach 4 項目。
早期蘋果甚至提供了 Darwin 安裝包,可以作為一個獨立系統安裝到 x86 和 PowerPC 機器上。不過現在只開放源代碼了。
嚴格來說現在我們接觸到的 macOS 內核,官方叫做 Darwin,它的核心是 XNU,可以獨立安裝。嚴格意義上 XNU 和 Darwin 并不完全相等,較真地講 XNU 只是 Mach/BSD 部分。在前面的文章里我基本上把 Darwin 和 XNU 當做同義詞,這并不嚴謹。但是根據我的考證,目前 Darwin, XNU 和 macOS Kernel 基本等同于一個意思,只要讀者朋友不會產生歧義即可。
Rhapsody 基于 NeXT 的 OPENSTEP 開發,可以認為是 Mac OS X 的過渡產品。
2007 年 10 月 26 日正式發布的 Mac OS X v10.5 (Leopard) 得到 The Open Group 的“Single UNIX Specification”認證,成為正式的 UNIX。
下面這張圖非常好呈現了 Mac OS X 各種技術層的關系:
下圖是 Mac OS X 的衍生關系圖:
最后:Mac OS X 其實就是 Unix 的衍生操作系統,屬于 BSD 這個分支
總結
以上是生活随笔為你收集整理的关于 Mac OS X 内核技术来源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac OS 的历史
- 下一篇: RPM 软件包名中的 el5、el6、e