Darwin (操作系统)

Darwin是由蘋果公司於2000年所釋出的一個開放原始碼作業系統。Darwin是macOSiOS操作環境的作業系統部份。蘋果公司於2000年把Darwin釋出給開放原始碼社群。

Darwin
开发者蘋果公司
编程语言CC++Objective-C汇编语言
作業系統家族类Unix系统
運作狀態Current
源码模式自由及開放源碼件
当前版本
  • 1228 (2007年10月30日)[1]
  • 22.2.0 (2022年12月13日)
支援平台目前:x86-6464-bit ARM
历史上:PowerPCIA-3232-bit ARM (ARM32位支持是闭源的)
内核类别混合內核
许可证主要为APSL,含有闭源的设备驱动
官方網站
仓库

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[2](Open Software Foundation Mach Kernel)和FreeBSD的各种要素(包括过程模型,网络堆栈和虚拟文件系统),[3]还有一个称为I/O Kit的面向对象的设备驱动程序API。[4] 混合内核设计使其具备了了微内核的灵活性和宏内核的性能。[5]

硬件和软件支持

Darwin目前支持在Mac中使用的Intel x86处理器的64位x86-64变体以及在iPhone 5S,第六代iPod TouchiPad Air,第四代Apple TV中使用的64位ARM处理器,最初的HomePod和更高版本,以及在iPhone 5C和更早版本,早期版本的iPod Touch,直到第四代的iPad以及第二和第三代Apple TV中使用的32位ARM处理器。 XNU内核的一个开源的移植支持Apple尚未正式支持的Intel和AMD x86平台上的Darwin,尽管自2009年以来似乎未进行过更新。[6]XNU内核的开源移植也可用于ARM平台。[7]较旧的版本支持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不兼容的自由软件许可证。[8]它之前的版本是根据APSL许可证的较早版本发布的,尽管它确实满足了开放源代码定义的要求,但它不符合FSF对自由软件的定义。[9]

版本歷史

下表是主要的Darwin版本及其发行日期和相应的macOS版本的表格。[10]请注意,相应的macOS版本可能是在其他日期发布的;有关这些日期,请参阅macOS页面。

版本 版本發佈日期 對應的版本 注解
0.1 1999年3月16日 Mac OS X Server 1.0发行版
  • 初始版本
  • 0.1是人为设置的版本号,为了便于排序和标识。它本身的标识是 Rhapsody 5.3
0.2 1999年4月14日 Mac OS X Server 1.0.1
0.3 1999年8月5日 基于 Rhapsody 5.5
  • 可于archive.org找到ISO镜像
  • 此后,内核从 NeXTSTEP/OPENSTEP/Rhapsody 更改为Mac OS X的较新XNU。
1.0 2000年4月12日 開發者預覽第3版
1.1 2000年4月5日 開發者預覽第4版
1.2.1 2000年11月15日 Mac OS X 公開測試版 代号 "Kodiak"
1.3.1 2001年4月13日 Mac OS X v10.0
  • 代号 "Cheetah"
  • Darwin的首个商业版本
  • Cheetah(v10.0.0-4)的所有版本都有相同版本的Darwin
1.4.1 2001年10月2日 Mac OS X v10.1
  • 代号 "Puma"
  • 启动时间、实时线程、线程管理、缓存刷新和抢占式处理的性能改进
  • 支持SMBNFS
  • Wget取代cURL[11]
5.1 2001年11月12日 Mac OS X v10.1.1
  • 更改编号方案以匹配Mac OS X内部版本编号方案
5.5 2002年6月5日 Mac OS X v10.1.5
6.0.1 2002年9月23日 Mac OS X v10.2
  • 代号 "Jaguar"
  • GCC由2更新至3.1
  • 支持IPv6IPSec
  • mDNSResponder 服務探索守護行程Rendezvous)
  • 新增CUPS, Ruby, Python
  • HFS+中支持日志
  • 速度更快的應用程序配置文件("pre-heat files")[12]
6.8 2003年10月3日 Mac OS X v10.2.8
7.0 2003年10月24日 Mac OS X Panther
  • Mac OS X v10.3.0
  • BSD層與FreeBSD5同步
  • HFS+中的自動文件碎片整理、熱文件集群和可選的区分大小写功能
  • bash取代tcsh作為默認shell
  • 支持只讀NTFS(Darwin 7.9).[13]
7.9 2005年4月15日 Mac OS X v10.3.9
8.0 2005年4月29日 Mac OS X Tiger
Mac OS X for Apple TV
  • Mac OS X v10.4.0
  • 穩定版的应用程序接口,细粒度的内核锁,64位的BSD
  • launchd服務管理框架
  • 擴展文件屬性存取控制表
  • 更新如cpmv的命令以保護擴展屬性及resource forks[14]
8.11 2007年11月14日 Mac OS X v10.4.11
9.0 2007年10月26日 Mac OS X Leopard
iPhone OS 1.0
Mac OS X v10.5.0
  • Darwin 9.0.0d1中的iPhone OS 1支持
  • 完整的POSIX標準实现,改進分層的行程排程模型,動態分配分頁檔案、動態資源限制(對個別檔案與行程)、行程沙盒化、隨機位址空間配置、DTrace的追蹤框架、檔案系統事件的管理員、目錄的硬式連結
  • Apache1.3及PHP4更新至Apache 2.2及PHP 5
  • 支持只讀ZFS[15]
  • 最早用于iPhone的Darwin内核
9.8 2009年8月5日 Mac OS X v.10.5.8
10.0 2009年8月28日 Mac OS X Snow Leopard
iOS 4.0
Mac OS X v10.6.0
10.1 2009年9月10日 Mac OS X v10.6.1
10.2 2009年11月9日 Mac OS X v10.6.2
10.3 2010年3月29日 Mac OS X v10.6.3
iOS 4.0
10.4 2010年6月15日 Mac OS X v10.6.4
10.5 2010年11月11日 Mac OS X v10.6.5
10.6 2011年1月6日 Mac OS X v10.6.6
10.7 2011年3月21日 Mac OS X v10.6.7
10.8 2011年6月23日 Mac OS X v10.6.8
11.0.0 2011年7月20日 Mac OS X Lion
iOS 5[17]
Mac OS X v10.7.0
  • XNU不再支持PowerPC二进制文件(大二进制文件仅适用于i386,x86_64)。
  • XNU需要x86_64处理器,基于ARMiOS除外。
  • 改进了应用程序的沙箱
  • 完全支持自动引用计数
11.1.0 2011年8月16日 Mac OS X v10.7.1
11.2.0 2011年10月13日 Mac OS X v10.7.2
11.3.0 2012年2月2日 Mac OS X v10.7.3
11.4.2 2012年10月4日 Mac OS X v10.7.5 (额外的)
12.0.0 2012年2月16日 OS X Mountain Lion OS X v10.8.0
12.6.0 2015年1月27日 OS X v10.8.5(带有安全更新2015-001)
13.0 2013年6月10日 OS X Mavericks
iOS 6
OS X v10.9.0
  • 虚拟内存压缩
  • 计时器合并
  • OpenGL 4.1和OpenCL 1.2
  • 服务器消息块版本2(SMB2)取代AFP成为共享文件的默认协议。这是为了提高性能和跨平台兼容性。
  • IPoTB(基于Thunderbolt桥的Internet协议)。
  • Open Transport API已被删除
13.4.0 2014年9月7日 OS X v10.9.5
14.0.0 2014年9月18日 OS X Yosemite
iOS 7
iOS 8
OS X v10.10.0
14.5.0 2015年8月13日 OS X v10.10.5
15.0.0 2015年9月16日 OS X El Capitan
iOS 9
OS X v10.11.0

iOS 9.0

  • 系统完整性保护。 即使由root或具有root特权的用户运行,也可以防止某些系统部件被进程修改或篡改。
  • sudo配置默认情况下使用“tty_tickets”标志,将会话超时限制为用户在其中验证程序的终端会话(例如窗口或选项卡)。
  • LibreSSL取代了OpenSSL
15.6.0 2016年7月18日 OS X v10.11.6

iOS 9.3.3

16.0.0 2016年9月13日 macOS Sierra
iOS 10
macOS v10.12.0

iOS 10.0.1(初始发行版)

  • OS X被更名为macOS
  • 现在,仅有root用户或具有root特权的用户可以写入/Volumes目录
  • 系统完整性保护现在涵盖了/Library/ApplicationSupport/com.apple.TCC目录,其中包含允许“控制计算机”的应用程序列表
  • 删除了Objective-C垃圾收集器,并替换为Darwin v12.0(OS X v10.8)引入的自动引用计数。使用垃圾回收的Objective-C应用程序将不再起作用。
  • 对PPTP的本机支持已删除。
16.5.0 2017年3月27日 macOS v10.12.4

iOS 10.3

  • 在iOS设备上将文件系统从HFS+更改为APFS。自10.12.0起,APFS已在macOS上可用,但不能在启动分区上使用。
16.6.0 2017年7月19日 macOS v10.12.6

iOS 10.3.3

17.0.0 2017年9月19日 macOS High Sierra
iOS 11
  • 在具有闪存的Mac上,macOS中引导分区的默认文件系统HFS+替换为了APFS。在具有HDD的Mac上,必须重新格式化启动分区才能使用APFS。
  • 将时间同步服务从ntpd替换为了timed
  • FTPtelnet命令被删除。
  • 内核扩展(Kexts)将需要用户明确批准才能运行。
17.5.0 2018年3月29日 macOS 10.13.4
  • 支持使用Thunderbolt 3的外部图形处理器,并删除了使用Thunderbolt 1和2的外部图形处理器的支持。
17.6.0 2018年6月1日 macOS v10.13.5
17.7.0 2018年7月9日 macOS v10.13.6

iOS 11.4.1

18.0.0 2018年9月2日 macOS Mojave
iOS 12
18.2.0 2018年10月30日 macOS v10.14.1

iOS 12.1

  • 在新的MacBook中增加了对新的Radeon Vega 20 GPU的支持
19.0.0 2019年9月19日 macOS Catalina
iOS 13
19.2.0 2019年12月10日 macOS 10.15.2

iOS 13.3

19.3.0 2020年1月28日 macOS 10.15.3

iOS 13.3.1

  • 系统扩展取代了Kexts,并在内核之外的用户空间中运行。[18]
  • DriverKit取代了IOKit。 它引入了使用DriverKit构建的“ Dexts”(驱动程序扩展)。 Driverkit是一个新的SDK,具有基于IOKit的所有新框架,但已进行了更新和现代化。 设备驱动程序在内核外部的用户空间中运行。[19][20][21]
20.1.0 2020年10月30日
  • macOS Big Sur
  • iOS 14
macOS 11.0.1
20.2.0 2021年12月15日 macOS 11.1
20.3.0 2021年2月2日 macOS 11.2
20.4.0 2021年4月20日 macOS 11.3
20.5.0 2021年5月24日 macOS 11.4
20.6.0 2021年6月2日 macOS 11.5
21.0.0 2021年6月7日
  • macOS Monterey
  • iOS 15
macOS 12.0 beta 1
21.0.1 2021年10月25日 macOS 12.0
21.1.0 2021年10月25日 macOS 12.0.1
21.2.0 2021年12月7日 macOS 12.1
21.3.0 2022年1月7日 macOS 12.2

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开头,依此类推(早期的内部版本号代表开发人员的版本)。[22]

命令终端中的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等自由软件发行版中。[23]

2006年7月25日,OpenDarwin团队宣布该项目已关闭,因为他们认为OpenDarwin“已成为Mac OS X相关项目的唯一托管工具”,并且创建独立的Darwin操作系统的努力失败了。他们还指出:“消息来源的可用性,与Apple代表的互动,建立和跟踪消息来源的困难以及社区缺乏兴趣,这一切都为此做出了贡献。”[24]它最后的稳定版本是2004年7月16日发行的7.2.1版。[25]

PureDarwin

PureDarwin是一个从Apple发行的Darwin源代码中创建可引导的操作系统映像的项目。[26]自从OpenDarwin停止运行以及Darwin8.x以来发布可启动映像以来,由于许多组件都成为封闭源,因此创建完整的操作系统变得越来越困难。 该项目已成功创建了基于Darwin 9和X11 GUI的Xmas版本[27]和仅基于Darwin 17的命令行17.4 Beta。[28]

其他衍生项目

XDarwin上的Window Maker
  • XQuartz(前身為XDarwin),是蘋果電腦Mac OS X/OS X/macOS(Darwin)上X Window系統的實作。
  • GNUstepGNU計劃的專案之一。它將Cocoa(前身為NeXT的OpenStep)Objective-C軟體庫,部件工具箱(widget toolkits)以及其上的應用軟體,以自由軟體方式重新實作。
  • Window Maker,是X Window系統上一个自由及開放原始碼的窗口管理器,可讓圖形化應用軟體在類Unix作業系統上執行。它最最初设计用来模擬NeXT圖形使用者介面,令其成為符合OpenStep相容环境。
  • MacPorts(以前是DarwinPorts),FinkHomebrew是将UNIX程序移植到Darwin操作系统并提供包管理服务的程序。另外,几个标准的UNIX软件包管理器(例如RPMpkgsrc和Portage)具有Darwin的移植。其中一些在自己的名称空间中运行,以免干扰基本系统。
  • GNU-Darwin是一个将自由软件的软件包移植到Darwin的项目。它们用类似于Linux发行版的方式打包OS镜像。
  • Darwine项目是Wine在Darwin上的移植,它使人们可以在Darwin上运行Microsoft Windows软件。
  • SEDarwin是TrustedBSD强制访问控制框架和SELinux框架的一部分在Darwin上的移植。[29]它已被合并到Mac OS X 10.5中。[30]
  • Darbat项目是Darwin在L4微内核系列上的试验性移植。 它旨在与现有的Darwin二进制文件二进制兼容[31]
  • Darling项目是用于在Linux系统上运行macOS二进制文件的兼容性层。它使用了一些Darwin的源代码。[32]
  • 有许多项目专注于驱动程序支持:例如无线驱动程序[33][34],有线NIC驱动程序[35][36][37],调制解调器驱动程序[38],读卡器[39],ext2和ext3文件系统[40][41]

参考

  1. . 2007年10月30日 [2023年1月9日].
  2. Jim Magee. . 14 记录于. [2020-04-29]. (原始内容存档于2018-12-26).
  3. . Apple Developer Connection. [February 11, 2013]. (原始内容存档于2014-03-09).
  4. Singh, Amit. . January 7, 2004 [February 11, 2013]. (原始内容存档于2019-04-19).
  5. . Porting UNIX/Linux Applications to OS X. Apple Inc. (原始内容存档于2017-11-14).
  6. . (原始内容存档于2015-09-30). 需要一个Apache SVN客户端。
  7. .
  8. . (原始内容存档于2020-05-04).
  9. . (原始内容存档于2020-04-19).
  10. . Apple Developer Connection. [February 11, 2013]. (原始内容存档于2020-09-17).
  11. "Technical Note TN2029:Mac OS X v10.1。" 页面存档备份,存于 Apple Developer Connection. 于2008年6月2日检索。
  12. Siracusa, John (September 5, 2002). "Mac OS X 10.2 Jaguar." 页面存档备份,存于 Ars Technica. 于2008年5月31日检索。
  13. Siracusa, John (November 9, 2003). "Mac OS X 10.3 Panther." 页面存档备份,存于 Ars Technica.于2008年5月31日检索。
  14. Siracusa, John (April 28, 2005). "Mac OS X 10.4 Tiger." 页面存档备份,存于 Ars Technica. 于2008年5月30日检索。
  15. Siracusa, John (October 28, 2007). "Mac OS X 10.5 Leopard:Ars Technical review." 页面存档备份,存于 Ars Technica. 于2008年5月30日检索。
  16. Siracusa, John (August 31, 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review." 页面存档备份,存于 Ars Technica. 于2009年11月29日检索。
  17. 在一台越狱iPhone 4S中发现。
  18. . Apple Developer. [2020-04-29]. (原始内容存档于2020-03-04) (英语).
  19. . Apple Developer Documentation. [2020-04-09]. (原始内容存档于2021-11-08).
  20. . Apple Developer Documentation. [2020-04-09]. (原始内容存档于2020-03-19).
  21. . Apple Developer Documentation. [2020-04-09]. (原始内容存档于2020-03-04).
  22. Prabhakar, Ernie. . darwin-development (邮件列表). November 9, 2001 [June 2, 2008]. (原始内容存档于2009-01-14).
  23. . OpenDarwin Project. [2020-04-29]. (原始内容存档于2006-01-06).
  24. OpenDarwin Core Team and Administrators. . OpenDarwin Project. July 25, 2006 [2020-04-29]. (原始内容存档于2006-08-04).
  25. . 2004-08-05 [2019-10-07]. (原始内容存档于2004-08-05).
  26. . [2010-04-04]. (原始内容存档于2010-04-11).
  27. PureDarwin Xmas 页面存档备份,存于 (2015)
  28. . GitHub. PureDarwin. 30 November 2019 [11 January 2020]. (原始内容存档于2019-12-13).
  29. . SEDarwin. January 22, 2007 [2020-04-29]. (原始内容存档于2011-10-05).
  30. . Mac OS X Reference Library. Apple Inc. November 13, 2009 [2020-04-29]. (原始内容存档于2009-12-08).
  31. . Ertos.nicta.com.au. May 9, 2007 [2020-04-29]. (原始内容存档于2013-12-19).
  32. . www.darlinghq.org. [11 January 2020]. (原始内容存档于2020-04-21).
  33. yuriwho. . Wirelessdriver.sourceforge.net. May 5, 2002 [July 12, 2010]. (原始内容存档于2020-07-28).
  34. . SourceForge. March 27, 2009 [June 13, 2010]. (原始内容存档于2019-04-02).
  35. . Sourceforge.net. [July 12, 2010]. (原始内容存档于2019-04-02).
  36. . SourceForge. March 15, 2006 [June 3, 2010]. (原始内容存档于2019-04-02). Project inactive since March 15, 2006.
  37. fansui; et al. . SourceForge. August 1, 2007 [June 13, 2010]. (原始内容存档于2018-12-08).
  38. . Sourceforge.net. May 14, 2002 [July 12, 2010]. (原始内容存档于2019-04-02).
  39. . Pccardata.sourceforge.net. December 20, 2001 [July 12, 2010]. (原始内容存档于2020-08-05).
  40. . Sourceforge.net. October 14, 2002 [July 12, 2010]. (原始内容存档于2011-08-25).
  41. . SourceForge. July 14, 2008 [June 13, 2010]. (原始内容存档于2020-04-28).

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.