每日最新頭條.有趣資訊

IT之家:macOS結構知多少,一看就懂了

很多朋友雖然知道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條目,本文的撰寫也得到了一些朋友的幫助,在此表示感謝。

獲得更多的PTT最新消息
按讚加入粉絲團