MacOS結構

OS X 是蘋果公司 Mac OS 操作系統替代品的產物。 在多次失敗的嘗試之後，蘋果於1994年啟動了 Pink 項目（後來和 IBM 進行了合作），這就是 Taligent 和 Copland ，兩年後這一項目取消。
通過收購獲得了 NeXT 和其 NeXTSTEP 操作系統之後，蘋果公司開始著手開發他們最新的操作系統 (Mac OS X) 
OS X 首次出現是1999年的 OS X Server 1.0，第一個正式的 OS X 桌面版本發佈於2001年3月24日。
從10.5版本開始，OS X 通過了 Open group Unix O3 單一 Unix 規範認證。
2016年6月，蘋果公司宣佈OS X更名為macOS，以便與蘋果其他操作系統如iOS、watchOS和tvOS保持統一的命名風格。
Mac OS X 包含兩個主要的部分：以FreeBSD源代碼和Mach微核心為基礎的 XNU 混合內核，並在 XNU 上構建的 Darwin 核心系統；及一個由蘋果開發，稱為 Aqua 的閉源、獨佔版權的圖形用戶界面。
細分的看，Mac OS X 系統可以分成五層結構，每一層有其代表性的技術。

**開發**

**NeXTSTEP**
NeXTSTEP 使用基於卡內基梅隆大學開發的 Mach 2.5 微內核 BSD 4.3 子系統開發的混合內核。 NeXTSTEP 還推出了基於 DPS 的窗口系統，通過在顯示器和打印機上使用同一種語言以達到更好的所見即所得效果。 NeXT 還包含他們從 StepStone 的收購的面向對象的 Objective-C 的語言和一系列旨在加快軟件開發的框架（工具包）。
NeXTSTEP 最初設計運行在跑摩托羅拉68K處理器上，但後來被移植到英特爾的x86，惠普的PA-RISC和昇陽電腦的SPARC處理器。後來，開發工具和框架以OpenStep形式發佈，作為一個開發平臺，它可以其他操作系統上運行。

**Rhapsody**
1997年2月4日，蘋果公司收購了NeXT，並著手開發 Rhapsody 操作系統。Rhapsody 基於 NeXTSTEP 構建，並將核心系統移植到了 PowerPC 架構上並添加了一個重新設計的用戶接口。允許舊 Mac OS 的程序運行在獨立的 JAVA 平臺上的模擬層稱為 Blue Box，而 Objective-C 開發工具和框架被稱為 Yellow Box，Yellow Box 將為 Windows 獨立提供。
Rhapsody 項目的最終結果，以 OS X Server 1.0 的形式於1999年發佈。

**Mac OS X**
OS X 體系結構圖解
在1998年的蘋果全球開發者大會(WWDC)上，由於 Macintosh 平臺軟件開發者對 Rhapsody 上的Yellow Box 和 Blue Box存在諸多不滿，蘋果公司作出回應，稱 Mac OS X 將提供一個不同於 Rhapsody 中現存的、全新的 API。
來自 Macintosh Toolbox 的關鍵 API 使得 OS X 可以直接運行在 BSD 層上而不需要 Macintosh 模擬層，這個接口被稱為 Carbon，是 Mac OS X 中五大主要 API 之一，Carbon 去除了約2000個有問題的 API（系統中 API 總數約8000個）並將之替換為現代操作系統兼容的系統調用。
與此同時，蘋果宣佈將 Mach 部分內核版本號升級到3，BSD 部分的內核將被 FreeBSD, NetBSD 和 OpenBSD 項目所替代. 他們還發布了名為 I/O Kit的新驅動層，用於替代 NeXTSTEP 中的 Driver Kit，針對 Driver Kit 缺少電源管理和熱交換特性、自動配置功能匱乏等問題作出了改進。
在1999年的 WWDC 上，蘋果公司發佈了 Quartz，一個基於 便攜式文檔格式 的窗口系統以避免產生（先前 NeXTSTEP 中 DPS 系統中遇到過的）和 Adobe 的版權糾紛和相關費用。
蘋果還宣佈，Yellow Box 被更名為 Cocoa 並撤回了 Yellow Box 將在 Windows 系統上提供的承諾。此次 WWDC 蘋果還首次演示了將 Mac OS X 運行在 HFS+ 格式的驅動器上 。
第一個面向消費者的 Mac OS X 版本是2000年9月13日發佈的公開預覽版。

**結構**

**內核和設備服務層**
內核和設備服務層包括 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 也被用於稱呼其衍生的各種套件。
BSD 開創了現代計算機的潮流，由於BSD設計出眾，代碼編寫清晰，包括它的文檔，BSD 是最早添加庫以支持 IP 協議棧和伯克利套接字的 Unix 系統，套接字系統的發明使得計算機系統的網絡通信和本地讀寫一樣方便，BSD 。時至今日，BSD仍在學術機構，乃至許多商業或自由產品的高科技實驗中，繼續被用作試驗平臺，甚至在嵌入式設備中。
最初的 OS X 的內核 XNU 所使用的是 4.3BSD ，該版本發佈於1986年6月。時至今日，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 的子集，和 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數據文件的格式將其序列化。

**參考文檔**

**外部鏈接**
  OS X 和 PDF date=20200927201738 -  Apple: Mac OS X date=20060728031552  — OS X 官方頁面。-  Mac OS X (arstechnica.com) date=20080706064713  —  Mac OS X 評測 (10.0 - 10.10)-  Mac OS X Internals The web page associated with the book.-  OpenGL for OS X date=20180714134450   Apple developer guide for OpenGL.-  Kernel Extension Programming Topics date=20160517170710  Mac developer library.