Darwin (操作系統)

Darwin是由蘋果公司於2000年所釋出的一個開放原始碼作業系統。Darwin是macOS和iOS操作環境的作業系統部份。蘋果公司於2000年把Darwin釋出給開放原始碼社群。
Darwin是一種類Unix作業系統，並包含開放原始碼的XNU內核。其以微核心為基礎的核心架構來實作Mach，而作業系統的服務和使用者空間工具則以BSD為基礎。與其他類Unix作業系統相似，Darwin也有對稱多處理器的優點，高效能的網路設施和支援多種整合的檔案系統。
整合Mach到XNU內核的好處是可攜性，或者是在不同形式的系統使用軟體的能力。舉例來說，一個作業系統核心整合了Mach微核心，能夠提供多種不同CPU架構的二進位格式到一個單一的檔案（例如x86和PowerPC），這是因為它使用了Mach-O的二進位格式。Mach的缺點則是增加了作業系統內核的複雜度。在過去的微核心實作上，這種複雜度有時候會導致很難分離核心效能的問題。因此，採用Mach微核心會伴隨風險，但它有潛在的好處是廣泛的可移植性。以Darwin可移植性的具體例子來說，在2005年6月，蘋果電腦宣佈它會於2006年在Mac電腦上開始採用Intel處理器。
Darwin的開發者在2000年決定採用一個吉祥物，並最終選擇了鴨嘴獸Hexley。蘋果電腦沒有把Hexley認可為Darwin的一個標誌。
在2002年4月，Apple在網際網路軟體論壇（Internet Software Consortium, ISC）上成立OpenDarwin.org，一個協助合作Darwin發展的社群。OpenDarwin建立它自己釋出的Darwin作業系統。值得注意的是OpenDarwin子計畫中包含了DarwinPorts，其目標是組合下一世代的port集合給Darwin使用（長遠來說，其也能供給其他BSD所衍生的作業系統所用）。OpenDarwin專案於2006年中止，並且於2007年由另一個PureDarwin專案成立去接手OpenDarwin之前的目標。
2003年7月，蘋果在APSL的2.0版本下釋出了Darwin，其是由自由軟體基金會批准為自由軟體的許可證。儘管它先前在較早的APSL版本已經達到開放原始碼定義的要求，它們並不符合FSF對於自由軟體的定義。

**設計**
macOS 架構圖

**內核**
Darwin的內核是XNU，它是一種混合內核，它採用了來自OSF的OSFMK 7.3（Open Software Foundation Mach Kernel）和FreeBSD的各種要素（包括過程模型，網絡堆棧和虛擬文件系統），還有一個稱為I/O Kit的面向對象的設備驅動程序API。 混合內核設計使其具備了了微內核的靈活性和宏內核的性能。

**硬件和軟件支持**
Darwin目前支持在Mac中使用的Intel x86處理器的64位x86-64變體以及在iPhone 5S，第六代iPod Touch，iPad Air，第四代Apple TV中使用的64位ARM處理器，最初的HomePod和更高版本，以及在iPhone 5C和更早版本，早期版本的iPod Touch，直到第四代的iPad以及第二和第三代Apple TV中使用的32位ARM處理器。 XNU內核的一個開源的移植支持Apple尚未正式支持的Intel和AMD x86平臺上的Darwin，儘管自2009年以來似乎未進行過更新。XNU內核的開源移植也可用於ARM平臺。較舊的版本支持32位PowerPC，64位PowerPC和32位x86的部分或全部。
它通過對BSD的沿襲（主要是FreeBSD用戶領域）支持POSIX API，並且可以在Darwin上編譯為其他各種類UNIX系統編寫的大量程序，而無需更改源代碼。
Darwin不包含macOS的許多定義元素，例如Carbon和Cocoa API或Quartz Compositor和Aqua用戶界面，因此無法運行Mac應用程序。但是，它確實支持macOS的許多鮮為人知的功能，例如mDNSResponder，它是多播DNS響應器，是Bonjour網絡技術的核心組件，並已推出高級服務管理框架。

**許可證**
2003年7月，Apple在Apple Public Source License（APSL）2.0版之下發布了Darwin，自由軟件基金會（FSF）將其歸類為與GNU General Public License不兼容的自由軟件許可證。它之前的版本是根據APSL許可證的較早版本發佈的，儘管它確實滿足了開放源代碼定義的要求，但它不符合FSF對自由軟件的定義。

**版本歷史**
下表是主要的Darwin版本及其發行日期和相應的macOS版本的表格。請注意，相應的macOS版本可能是在其他日期發佈的；有關這些日期，請參閱macOS頁面。
Mac OS X v10.1.1發行版中，版本號從Darwin 1.4.1躍升至5.1，旨在將Darwin與Mac OS X版本和內部版本號系統聯繫起來，而後者又是從NeXTSTEP繼承而來的。在macOS的內部版本號系統中，每個版本都有一個唯一的開始內部版本號，用於標識其所屬的整個macOS版本。Mac OS X v10.0的內部版本號以4開頭，10.1的內部版本號以5開頭，依此類推（早期的內部版本號代表開發人員的版本）。
命令終端中的uname -r 命令將顯示Darwin版本號，uname -v命令將顯示XNU構建版本的字符串，其中包括Darwin的版本號。

**吉祥物**
Hexley是開放原始碼的作業系統——Darwin（Mac OS X的核心）的吉祥物。Hexley是一個卡通的鴨嘴獸，通常戴著一個類似BSD小惡魔的帽子，並握著三叉戟。Hexley是由Jon Hooper所設計的，版權也為他所有。但Hexley並不附屬於蘋果電腦。本來這個吉祥物的名稱應該是Huxley，源由是捍衛達爾文（Darwin）演化理論的英國生物學家托馬斯·亨利·赫胥黎，而原先提議的人誤以為是達爾文的助理，並錯用了Hexley。而發現錯誤時，要改名已經太晚，因此沿用了Hexley這個名稱。

**衍生項目**
由於Darwin的自由軟件性質，已經有了一些旨在修改或增強操作系統的項目。

**OpenDarwin**
OpenDarwin是基於Darwin的社區主導的操作系統。 它由Apple Inc.和Internet Systems Consortium於2002年4月成立。其目標是加強Apple開發人員與自由軟件社區之間的協作。 蘋果公司從該項目中受益，因為OpenDarwin的改進將納入Darwin版本中。自由/開源社區受益於對其操作系統的完全控制，並且可以將其用於GNU-Darwin等自由軟件發行版中。
2006年7月25日，OpenDarwin團隊宣佈該項目已關閉，因為他們認為OpenDarwin“已成為Mac OS X相關項目的唯一託管工具”，並且創建獨立的Darwin操作系統的努力失敗了。他們還指出：“消息來源的可用性，與Apple代表的互動，建立和跟蹤消息來源的困難以及社區缺乏興趣，這一切都為此做出了貢獻。”它最後的穩定版本是2004年7月16日發行的7.2.1版。

**PureDarwin**
PureDarwin是一個從Apple發行的Darwin源代碼中創建可引導的操作系統映像的項目。自從OpenDarwin停止運行以及Darwin8.x以來發布可啟動映像以來，由於許多組件都成為封閉源，因此創建完整的操作系統變得越來越困難。 該項目已成功創建了基於Darwin 9和X11 GUI的Xmas版本和僅基於Darwin 17的命令行17.4 Beta。

**其他衍生項目**
XDarwin上的Window Maker- XQuartz（前身為XDarwin），是蘋果電腦為Mac OS X/OS X/macOS（Darwin）上X Window系統的實作。- GNUstep，GNU計劃的專案之一。它將Cocoa（前身為NeXT的OpenStep）Objective-C軟體庫，部件工具箱（widget toolkits）以及其上的應用軟體，以自由軟體方式重新實作。- Window Maker，是X Window系統上一個自由及開放原始碼的窗口管理器，可讓圖形化應用軟體在類Unix作業系統上執行。它最最初設計用來模擬NeXT的圖形使用者介面，令其成為符合OpenStep相容環境。- WebKit是一個開源的Web瀏覽器引擎(Web browser engine)。它被用於Apple Safari。Webkit亦被使用於Apple iOS的預設瀏覽器。- MacPorts（以前是DarwinPorts），Fink和Homebrew是將UNIX程序移植到Darwin操作系統並提供包管理服務的程序。另外，幾個標準的UNIX軟件包管理器（例如RPM，pkgsrc和Portage）具有Darwin的移植。其中一些在自己的名稱空間中運行，以免干擾基本系統。- GNU-Darwin是一個將自由軟件的軟件包移植到Darwin的項目。它們用類似於Linux發行版的方式打包OS鏡像。- Darwine項目是Wine在Darwin上的移植，它使人們可以在Darwin上運行Microsoft Windows軟件。- SEDarwin是TrustedBSD強制訪問控制框架和SELinux框架的一部分在Darwin上的移植。它已被合併到Mac OS X 10.5中。- Darbat項目是Darwin在L4微內核系列上的試驗性移植。 它旨在與現有的Darwin二進制文件二進制兼容。
*Darling項目是用於在Linux系統上運行macOS二進制文件的兼容性層。它使用了一些Darwin的源代碼。- 有許多項目專注於驅動程序支持：例如無線驅動程序，有線NIC驅動程序，調制解調器驅動程序，讀卡器，ext2和ext3文件系統。

**參考**

**外部連結**
  Apple - Mac OS X - Technologies - Darwindate=20140309084505 -  PureDarwin社群開發網頁date=20100411053829 -  DarwinPorts專案-  Hexley, Darwin吉祥物date=20110213095652 -  Apple Public Source License 2.0-  對於APSL之自由軟體基金會的意見date=20050728090903 -  Apple Press Release：蘋果電腦於2006年開始使用Intel微處理器-  Mac OS X和BSD的差異