macOS 結構

2016 年 6 月,蘋果公司宣布 OS X 更名為 macOS,以便與蘋果其他操作系統如 iOS、watchOS 和 tvOS 保持統一的命名風格。

macOS 結構圖

Mac OS X 包含兩個主要部分:以 FreeBSD 源代碼 和 Mach 微核心為基礎的 XUN 混合內核,并在 XNU 上構建的 Darwin 核心系統;及一個由蘋果開發,稱為 Aqua 的閉源、獨占版權的圖形用戶界面。細分的看,Mac OS X 系統可以分成五層結構,每一層有其代表性技術。

內核和設備服務層

內核和設備服務層:包括 XNU 內核、設備驅動和其他底層組件。XNU 是由蘋果電腦發展的操作系統內核,被使用于 Mac OS X 中。它是 Darwin 操作系統的一部分,跟隨著 Darwin 一同作為自由及開放源代碼軟件被發布。其中,XNU
是 X is Not Unix 的縮寫。XNU 包括 Mach 和 BSD(libSystem)兩個部分,最初版本的 XNU 是 Mach 2.5 版本和 BSD 4.3的混合,隨著 OS X 的發布,Mach 版本升級到 3,BSD 部分被 FreeBSD 替代。

  • Mach

Mach 是一個由卡內基梅隆大學開發的計算機操作系統微內核, 是最早實現微內核操作系統的例子之一,也是許多其他相似的項目的標準。同 Unix 一樣,Mach 系統也包含了一組豐富的實用工具,并保留了 Unix 中驅動程序的概念用以硬件交互。在 OS X 中,Mach 內核為系統提供了 64 內核和主要驅動支持。

  • BSD

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD),也被稱為伯克利Unix(Berkeley Unix),是一個操作系統的名稱,現在 BSD 也被用于稱呼其衍生的各種套件。時至今日, OS X中的許多命令行工具還是來源于 BSD。在 OS X 中,文件系統、網絡棧、IPC、通知機制的支持也來自 BSD。

核心系統層(Core OS)

核心系統層的技術和框架是硬件/網絡相關的底層服務,這些服務是和內核特性直接相關的。包括以下組件和框架(不完全列舉):

  • 安全措施:(為上層提供支持)包括Gatekeeper、APP 沙盒化、代碼簽名等。
  • Core OS 框架:包括磁盤管理、硬件加速、OpenCL、系統配置等。
  • Hypervisor:虛擬化支持。

核心服務層(Core service)

核心服務層和用戶界面的應用程序沒有直接聯系,但是它們建立在內核和核心系統層上,為APP提供諸如數據處理、字符串控制、封裝網絡庫等核心支持。包括以下組件和框架(不完全列舉):

  • iCloud 存儲服務和 CloudKit
  • 社交網絡帳號:包括保存在 OS X 內的社交帳戶的管理。
  • 文件管理
  • 本地化設置:語言、貨幣、日期和時間的格式化、編碼、字體排版和渲染。
  • 安全認證:包括本地賬戶、信任的證書、安全傳輸、密鑰串訪問等。
  • Time Machine 支持:OS X 的系統備份功能。
  • Bonjour:局域網下的設備發現服務,是打印機服務和局域網文件共享服務的基礎。
  • XML 和 SQLite 支持:系統和 APP 的配置文件使用 XML 格式進行存儲,數據使用 SQLite 格式進行保存。
  • Webkit: 允許 APP 進行網頁渲染,具有 Web Core 和 JavaScript Core 兩個部分。
  • 快速預覽:包括在 spotlight 中預覽和空格鍵預覽。
  • Store Kit: 為 Mac Appstore 和 iTunes 提供支持,處理相關請求。
  • Core Services Umbrella Framework:包括管理文件打開方式、MIME 支持、文件元數據管理、SearchKit 搜索支持、詞典服務等。
    • Carbon: Carbon 也是 OS X 上的原生 API,也是 Core Services Umbrella Framework 的子集[4],和 Cocoa 不同的是,Carbon是面向過程(Procedural)的編程語言API,也更加接近系統底層,可以使用包括 C 和 C++ 在內的多種編程語言進行開發,類似 Windows 的 win32 API。Carbon API 提供了良好的向下兼容性,為開發者快速將舊 MacOS 上的程序移植到 OS X 提供了便利,但是 Carbon 本身已經處于被蘋果不建議使用的狀態,也沒有64位支持,在 OS X 10.8 后蘋果沒有對 Carbon 提供后續更新。

媒體層

媒體層負責音頻、圖像等多媒體文件的處理,2D 和 3D 圖像的渲染,各種動畫支持。

  • OpenGL :OpenGL是一個定義了一個跨編程語言、跨平臺的應用程序接口(API)的規范,它用于生成二維、三維圖像。OpenGL本身與語言和平臺無關,它將具體實現交給窗口系統,OS X 也提供了OpenGL 的實現。
  • Metal :Metal 是一種面向底層的硬件加速 API,Metal 在單一 API 下提供了類似 OpenGL 和 OpenCL 的功能,旨在為提供和 Windows上Direct3D 12和跨平臺的Vulkan相似的功能和特性。 從10.11開始在 OS X 上提供支持。
  • Quartz:Quartz 是 OS X 上的 UI 繪圖層,由 Quartz Compositor(合成視窗系統,管理和合成幕后視窗視頻來創建Mac OS X用戶界面) 和 Quartz 2D(以PDF規范為基礎的圖形庫,用來繪制二維文字和圖形,現在被稱為 Core Graphics)組成。
  • 顏色管理
  • 音視頻文件解析:包括QuickTime Kit、Core Media 、Core Video等一系列多媒體處理框架。
  • 字體渲染系統:包括 Cocoa Text 系統和Core Text。

圖形用戶界面(Cocoa 層)

圖形用戶界面層包括設計和用戶交互的 UI、響應用戶操作、管理程序的行為。

  • Aqua:Aqua 是承載于 Quartz 上的 GUI 系統和視覺主題,首次發布于2000年。
  • X11(XQuartz): XQuartz 是 OS X 上 X窗口系統的一個實現,最初和 OS X 10.2 公開預覽版一起提供,從 OS X 10.8 開始不隨系統提供。
  • Spotlight:OS X 下的搜索工具。
  • Cocoa: Cocoa是 Mac OS X 上原生面向對象的編程環境,建立在 Quartz 上并由Objective-C語言編寫,Cocoa 程序也主要使用Objective-C語言編寫,但是通過橋接技術,也可以使用 JAVA、Python、Ruby 等語言開發 Cocoa 應用。Cocoa是典型的 MVC 模式。
    • Appkit:直接派生自NeXTSTEP的AppKit的。它包含了程序與圖形用戶界面交互所需的代碼。
    • Foundation 工具包:首先出現在OpenStep中。在Mac OS X中,它是基于Core Foundation的。作為通用的面向對象的函數庫,Foundation提供了字符串,數值的管理,容器及其枚舉,分布式計算,事件循環,以及一些其它的與圖形用戶界面沒有直接關系的功能。
    • Core Data:Core Data是Mac OS X中Cocoa API的一部分,它允許按照MVC模型組織APP的數據,并以XML,二進制文件或SQLite數據文件的格式將其序列化。
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375