2016 年 6 月,蘋果公司宣布 OS X 更名為 macOS,以便與蘋果其他操作系統如 iOS、watchOS 和 tvOS 保持統一的命名風格。
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數據文件的格式將其序列化。