很多朋友雖然知道Mac OS X,然而並不是很了解其中的組成,本文將從底層開始,依次介紹macOS的幾個重要組成部分。
圖片許可:CC BY-SA 3.0
說到macOS(Mac OS X、OS X),我們不能不提到它的前身——NeXTSTEP。
前身
1985年,喬布斯在內部鬥爭失敗,離開蘋果創建了NeXT,在NeXT中,他的團隊基於Mach和BSD創建了一款類Unix的面向對象的作業系統——NeXTSTEP,1996年喬布斯回歸蘋果之後,這款先進於Classic Mac OS的作業系統也隨之來到了蘋果,最終取代了比較原始的Classic Mac OS。
圖片許可:Fair Use
Darwin Operarting System
Darwin是macOS的基礎部分(或者稱為Core OS),它也是一款開放源代碼的類Unix作業系統。它大體由兩部分組成:XNU內核和Unix工具。
由於開放源代碼的特性,所以一些組織正在利用蘋果釋出的Darwin源碼進行二次開發,比如PureDarwin項目。
XNU
我們通常會說macOS的內核是“Darwin”,其實這是一個不嚴謹的說法,因為Darwin不只包含內核,還包括其他東西。嚴格來說macOS的內核是XNU。
說到這裡,插一句題外話,蘋果有一個自相矛盾的地方,雖然macOS已經通過Unix認證,然而XNU的全稱和GNU格式一樣,是XNU’s not Unix,顧名思義,XNU不是Unix。
XNU是macOS的核心部分,它是一款結合了微內核與巨集內核特性的混合內核,它包括三個部分:Mach、BSD和I/O Kit。
Mach
Mach原來是一款微內核,XNU中的Mach來自於OSFMK 7.3(Open Software Foundation Mach Kernel))它負責CPU調度、記憶體保護等功能。它是macOS內核中最重要的部分,XNU中大部分代碼來自於它,而且macOS中的可執行檔案也是mach-o格式。
BSD
XNU中包含一個經過修改的BSD,它負責進程管理、Unix檔案權限、網絡堆棧、虛擬檔案系統、POSIX兼容。macOS之所以符合單一Unix規範,也正是因為如此。
I/O Kit
I/O Kit是XNU內核中的開源框架,可幫助開發人員為Apple的macOS和iOS作業系統編寫設備驅動程式代碼。I/O Kit框架由NeXTSTEP的DriverKit演變而來,與Mac OS 9的設備驅動程式框架或BSD的沒有任何相似之處。
命令行工具
除了內核以外,Darwin還包括一些Unix工具,這些Unix工具一些是Apple開發,一些來自於第三方,比如FreeBSD Project、GNU Project、Apache。
這裡說一說它的初始化程式launchd。
Launchd由蘋果開發,它是一款統一服務管理框架,用於啟動,停止和管理macOS中的守護進程,應用程式,進程和腳本。由於它支持多線程,所以它比傳統的Unix初始化程式SysVinit要高,launchd同時正在被移植到FreeBSD平台,它的設計思想也被systemd所借鑒,後者成為目前Linux發行版中的主流系統初始化程式。
Core Foundation
Core Foundation(也稱為CF)是macOS和iOS中的C應用程式編程接口(API),是低級例程和包裝函數的混合。
Quartz
macOS畢竟是類Unix作業系統,類Unix作業系統想要進行圖形化操作,必須要有一個圖形框架,在Linux上我們有X11,有Wayland,在macOS中,我們有Quartz。它是一款基於PDF技術的圖形框架。
作為一個類unix,不兼容X11是不可能的,如果你想在macOS中運行X11應用,也可以,有個開源項目叫XQuartz了解一下。
Cocoa
Cocoa是蘋果公司為Mac OS X所創建的原生面向對象的API,是Mac OS X上五大API之一(其它四個是Carbon、POSIX、X11和Java)。
蘋果的面向對象開發框架,用來生成Mac OS X的應用程式。主要的開發語言為Objective-c,一個c的超集。Cocoa開始於1989年9月上市的NeXTSTEP 1.0,當時沒有Foundation框架,只有動態運行庫,稱為kit,最重要的是AppKit. 1993年NeXTSTEP 3.1被移植到了Intel, Sparc, HP的平台上,Foundation首次被加入,同時Sun和NeXT合作開發OpenStep也可以運行在Windows系統上VCV。
據說Cocoa API裡面到現在還有不少NS開頭的API,何為NS?NS者,NeXTSTEP也。
Aqua UI
macOS的桌面環境,類似Linux中的GNOME。
不過,不是所有Mac OS X都是Aqua UI,在Mac OS X早期測試版Rhapsoy中,用的還是經典的Classic Mac OS界面。
好了,macOS的一些重要部件就介紹完了,感謝大家的閱讀。
部分資料來自百科Cocoa詞條和英文維基百科macOS Darwin launchd條目,本文的撰寫也得到了一些朋友的幫助,在此表示感謝。