fbpx
维基百科

XNU

XNU是一个由苹果电脑开发用于macOS操作系统的操作系统内核。它是Darwin操作系统的一部分,跟随着Darwin一同作为自由及开放源代码软件被发布。它还是iOStvOSwatchOS操作系统的内核。XNU是X is Not Unix的缩写[2]

XNU kernel
开发者蘋果公司
编程语言C, C++
作業系統家族类Unix
運作狀態开发中
源码模式開放原始碼
首次发布1996年12月,​26年前​(1996-12
当前版本
  • 8796.101.5 (2023年6月14日)[1]
支持的语言英文, 其他
支援平台IA-32, x86-64, ARM
内核类别混合
许可证苹果公共源代码许可证 2.0
官方網站opensource.apple.com/source/xnu
仓库
  • github.com/apple-oss-distributions/xnu

XNU最早是NeXT公司为了NeXTSTEP操作系统而发展的。它是一种混合式核心(Hybrid kernel),结合了由卡内基美隆大学发展的Mach 2.5版,4.3BSD,与称为Driver Kit的面向对象程序设计应用程序界面

在苹果电脑收购NeXT公司之后,XNU的Mach微内核被升级到Mach 3.0,BSD的部分升级至FreeBSD,Driver Kit则改成I/O Kit,一套以C++撰写的应用程序界面。

内核设计 编辑

XNU是一个混合内核,将宏内核微内核两者的特性兼收并蓄,以期同时拥有两种内核的优点————比如在微内核中提高操作系统模块化程度以及让操作系统更多的部分接受内存保护消息传递机制,和宏内核在高负荷下表现的高性能。

到2007年为止,XNU支持单核和具有对称多处理ARM[3]IA-32x86-64处理器。在第10版(即Mac OS X 10.6)之后,不再支持PowerPC

Mach 编辑

XNU内核以一个被深度定制的Mach3.0内核作为基础。如此这般,它便可以把操作系统的核心部分作为独立的进程运行,由此带来极大的灵活性(Mach核心之上可平行运行多个操作系统)。但是因为内核态/用户态的上下文切换会额外消耗时间,同时内核与服务进程之间的消息传递也会降低运行效率,所以这种设计通常会降低性能。为了提高效率,在 Mac OS X 中BSD部分与Mach一起内建于核心部分。深度定制的「混合」Mach3.0内核与传统BSD内核融合一体的产物就是一个「混合」内核,同时具有两者的优点与缺点。

BSD 编辑

内核的伯克利软件套件(BSD)部分提供了POSIX应用程序接口(BSD系统称为API):基于Mach的任务之上的Unix进程模型,基本安全策略,用户和用户组,权限,网络协议栈虚拟文件系统(包括一个文件系统无关的日志层),几个本地文件系统(例如HFS/HFS+),网络文件系统(NFS)客户端与服务器,加密框架,UNIX System V进程间通信(IPC),审计机制,强制访问控制,和一些锁原语[4]。XNU中的BSD代码来自FreeBSD内核。尽管其中相当一部分代码都被深度修改过,苹果和FreeBSD项目之间依然会交换代码[5]

K32/K64 编辑

XNU在Mac OS X 10.6 Snow LeopardDarwin版本号10)及之后演化为两个分支,称为K32的32位版和称为K64的64位[6]。K32可以在用户态运行64位应用。Mac OS X 10.6 的新特性是在64位用户空间运行XNU。在除2008年及之后的Mac ProXserve外的所有设备上,K32是10.6 Server系统的默认内核,并且可以运行64位应用[7]。K64相比K32有如下几点优势[8]

  • 可以管理超过32GB的内存,内存地址空间相比32位内核有巨大增长。
  • 缓存容量可以超过32位内核空间的限制,潜在提升I/O性能。
  • 当使用高性能网络设备或多个GPU时性能会提升,因为即使在直接存储器访问DMA缓存很大的情况下内核也可以把所有设备映射在64位地址空间中。

在支持64位内核的机器启动时按下6和4按键会使机器使用K64启动。K64可以运行32位应用,但不会运行32位的内核模块,所以这些内核模块需要移植到K64才能被加载。

I/O Kit 编辑

I/O Kit 是一个设备驱动框架,用基于Embedded C++C++子集编写[9]。借助它的面向对象设计,框架提供每种设备驱动需要的常见特性,以使驱动程序可以用更少的时间和代码完成。I/O Kit 具有多线程设计,对称多处理安全,支持热拔插设备和自动动态配置设备等特性。 很多设备驱动可以编写运行于用户态,进一步提升了系统的稳定性。如果用户态的驱动崩溃,内核不会因此崩溃。但是,内核态的驱动崩溃会导致内核崩溃。磁盘适配器和网络适配器驱动、显卡驱动、USB驱动和火线控制器驱动以及虚拟机软件如VirtualBox,Parallels Desktop for Mac和VMware Fusion等的驱动都是典型的内核态驱动。

共享资源保护 编辑

为了在多核设备上安全运行,对共享资源(文件、数据结构等) 的访问必须被序列化,这样线程和进程就无法在同一时间修改同一资源。原子操作、自旋锁、临界区块互斥锁("mutexes")和序列化标记(serializing tokens)都可以实现防止访问冲突发生。从Mac OS X 10.4与Darwin8.0开始,XNU如较新版本的Linux与FreeBSD一样使用一种折中的互斥模型来获得在多处理器系统上的高性能表现。

参见 编辑

  • 内核
  • A/UX
  • mkLinux
  • Darwin – 苹果公司以XNU为内核发布的开源操作系统
  • macOS – 苹果公司以XNU为内核发布的操作系统

参考资料 编辑

  1. ^ xnu-8796.101.5. 2023年6月14日 [2023年7月30日]. 
  2. ^ Porting UNIX/Linux Applications to Mac OS X: Glossary. Apple Computer. 2005 [March 27, 2009]. (原始内容存档于2012年8月13日). 
  3. ^ iPhone processor found: 620MHz ARM CPU (页面存档备份,存于互联网档案馆) (July 1, 2007) Retrieved January 6, 2008
  4. ^ Watson, Robert. . freebsd-advocacy (邮件列表). August 2, 2008 [October 24, 2013]. (原始内容存档于2021-02-25). 
  5. ^ . April 2009 [October 24, 2013]. (原始内容存档于2009-10-14). 
  6. ^ Mac OS X 10.6 Snow Leopard: the Ars Technica review, page 5. [2017-04-08]. (原始内容存档于2012-08-13). 
  7. ^ Mac OS X Server v10.6: Macs that use the 64-bit kernel. [2017-04-08]. (原始内容于2010-12-05). 
  8. ^ What's New in Mac OS X: Mac OS X v10.6. [2017-04-08]. (原始内容于2009-12-08). 
  9. ^ I/O Kit uses a restricted subset of C++. [2017-04-08]. (原始内容于2019-04-19). 

外部链接 编辑

  • http://opensource.apple.com/source/xnu/ (页面存档备份,存于互联网档案馆
  • Unofficial mirror of XNU at GitHub (页面存档备份,存于互联网档案馆
  • XNU: The Kernel (页面存档备份,存于互联网档案馆) – Amit Singh 于 2003年12月写的对XNU结构组成的概述
  • Inside the Mac OS X Kernel (页面存档备份,存于互联网档案馆) – "This talk intends to clear up the confusion by presenting details of the Mac OS X kernel(这次演讲旨在通过深入介绍Mac OS X 内核来澄清误解)"

是一个由苹果电脑开发用于macos操作系统的操作系统内核, 它是darwin操作系统的一部分, 跟随着darwin一同作为自由及开放源代码软件被发布, 它还是ios, tvos和watchos操作系统的内核, 是x, unix的缩写, kernel开发者蘋果公司编程语言c, 作業系統家族类unix運作狀態开发中源码模式開放原始碼首次发布1996年12月, 26年前, 1996, 当前版本8796, 2023年6月14日, 支持的语言英文, 其他支援平台ia, arm内核类别混合许可证苹果公共源代码许可证, 0官方網. XNU是一个由苹果电脑开发用于macOS操作系统的操作系统内核 它是Darwin操作系统的一部分 跟随着Darwin一同作为自由及开放源代码软件被发布 它还是iOS tvOS和watchOS操作系统的内核 XNU是X is Not Unix的缩写 2 XNU kernel开发者蘋果公司编程语言C C 作業系統家族类Unix運作狀態开发中源码模式開放原始碼首次发布1996年12月 26年前 1996 12 当前版本8796 101 5 2023年6月14日 1 支持的语言英文 其他支援平台IA 32 x86 64 ARM内核类别混合许可证苹果公共源代码许可证 2 0官方網站opensource wbr apple wbr com wbr source wbr xnu仓库github wbr com wbr apple oss distributions wbr xnuXNU最早是NeXT公司为了NeXTSTEP操作系统而发展的 它是一种混合式核心 Hybrid kernel 结合了由卡内基美隆大学发展的Mach 2 5版 4 3BSD 与称为Driver Kit的面向对象程序设计应用程序界面 在苹果电脑收购NeXT公司之后 XNU的Mach微内核被升级到Mach 3 0 BSD的部分升级至FreeBSD Driver Kit则改成I O Kit 一套以C 撰写的应用程序界面 目录 1 内核设计 1 1 Mach 1 2 BSD 1 3 K32 K64 1 4 I O Kit 2 共享资源保护 3 参见 4 参考资料 5 外部链接内核设计 编辑XNU是一个混合内核 将宏内核与微内核两者的特性兼收并蓄 以期同时拥有两种内核的优点 比如在微内核中提高操作系统模块化程度以及让操作系统更多的部分接受内存保护的消息传递机制 和宏内核在高负荷下表现的高性能 到2007年为止 XNU支持单核和具有对称多处理的ARM 3 IA 32和x86 64处理器 在第10版 即Mac OS X 10 6 之后 不再支持PowerPC Mach 编辑 XNU内核以一个被深度定制的Mach3 0内核作为基础 如此这般 它便可以把操作系统的核心部分作为独立的进程运行 由此带来极大的灵活性 Mach核心之上可平行运行多个操作系统 但是因为内核态 用户态的上下文切换会额外消耗时间 同时内核与服务进程之间的消息传递也会降低运行效率 所以这种设计通常会降低性能 为了提高效率 在 Mac OS X 中BSD部分与Mach一起内建于核心部分 深度定制的 混合 Mach3 0内核与传统BSD内核融合一体的产物就是一个 混合 内核 同时具有两者的优点与缺点 BSD 编辑 内核的伯克利软件套件 BSD 部分提供了POSIX应用程序接口 BSD系统称为API 基于Mach的任务之上的Unix进程模型 基本安全策略 用户和用户组 权限 网络协议栈 虚拟文件系统 包括一个文件系统无关的日志层 几个本地文件系统 例如HFS HFS 网络文件系统 NFS 客户端与服务器 加密框架 UNIX System V进程间通信 IPC 审计机制 强制访问控制 和一些锁原语 4 XNU中的BSD代码来自FreeBSD内核 尽管其中相当一部分代码都被深度修改过 苹果和FreeBSD项目之间依然会交换代码 5 K32 K64 编辑 XNU在Mac OS X 10 6 Snow Leopard Darwin版本号10 及之后演化为两个分支 称为K32的32位版和称为K64的64位版 6 K32可以在用户态运行64位应用 Mac OS X 10 6 的新特性是在64位用户空间运行XNU 在除2008年及之后的Mac Pro和Xserve外的所有设备上 K32是10 6 Server系统的默认内核 并且可以运行64位应用 7 K64相比K32有如下几点优势 8 可以管理超过32GB的内存 内存地址空间相比32位内核有巨大增长 缓存容量可以超过32位内核空间的限制 潜在提升I O性能 当使用高性能网络设备或多个GPU时性能会提升 因为即使在直接存储器访问DMA缓存很大的情况下内核也可以把所有设备映射在64位地址空间中 在支持64位内核的机器启动时按下6和4按键会使机器使用K64启动 K64可以运行32位应用 但不会运行32位的内核模块 所以这些内核模块需要移植到K64才能被加载 I O Kit 编辑 I O Kit 是一个设备驱动框架 用基于Embedded C 的C 子集编写 9 借助它的面向对象设计 框架提供每种设备驱动需要的常见特性 以使驱动程序可以用更少的时间和代码完成 I O Kit 具有多线程设计 对称多处理安全 支持热拔插设备和自动动态配置设备等特性 很多设备驱动可以编写运行于用户态 进一步提升了系统的稳定性 如果用户态的驱动崩溃 内核不会因此崩溃 但是 内核态的驱动崩溃会导致内核崩溃 磁盘适配器和网络适配器驱动 显卡驱动 USB驱动和火线控制器驱动以及虚拟机软件如VirtualBox Parallels Desktop for Mac和VMware Fusion等的驱动都是典型的内核态驱动 共享资源保护 编辑为了在多核设备上安全运行 对共享资源 文件 数据结构等 的访问必须被序列化 这样线程和进程就无法在同一时间修改同一资源 原子操作 自旋锁 临界区块 互斥锁 mutexes 和序列化标记 serializing tokens 都可以实现防止访问冲突发生 从Mac OS X 10 4与Darwin8 0开始 XNU如较新版本的Linux与FreeBSD一样使用一种折中的互斥模型来获得在多处理器系统上的高性能表现 参见 编辑 nbsp 自由软件主题 内核 A UX mkLinux Darwin 苹果公司以XNU为内核发布的开源操作系统 macOS 苹果公司以XNU为内核发布的操作系统参考资料 编辑 xnu 8796 101 5 2023年6月14日 2023年7月30日 Porting UNIX Linux Applications to Mac OS X Glossary Apple Computer 2005 March 27 2009 原始内容存档于2012年8月13日 iPhone processor found 620MHz ARM CPU 页面存档备份 存于互联网档案馆 July 1 2007 Retrieved January 6 2008 Watson Robert Re freebsd advocacy Digest Vol 248 Issue 1 freebsd advocacy 邮件列表 August 2 2008 October 24 2013 原始内容存档于2021 02 25 FreeBSD Quarterly Status Report Grand Central Dispatch FreeBSD port April 2009 October 24 2013 原始内容存档于2009 10 14 Mac OS X 10 6 Snow Leopard the Ars Technica review page 5 2017 04 08 原始内容存档于2012 08 13 Mac OS X Server v10 6 Macs that use the 64 bit kernel 2017 04 08 原始内容存档于2010 12 05 What s New in Mac OS X Mac OS X v10 6 2017 04 08 原始内容存档于2009 12 08 I O Kit uses a restricted subset of C 2017 04 08 原始内容存档于2019 04 19 外部链接 编辑http opensource apple com source xnu 页面存档备份 存于互联网档案馆 Unofficial mirror of XNU at GitHub 页面存档备份 存于互联网档案馆 XNU The Kernel 页面存档备份 存于互联网档案馆 Amit Singh 于 2003年12月写的对XNU结构组成的概述 Inside the Mac OS X Kernel 页面存档备份 存于互联网档案馆 This talk intends to clear up the confusion by presenting details of the Mac OS X kernel 这次演讲旨在通过深入介绍Mac OS X 内核来澄清误解 取自 https zh wikipedia org w index php title XNU amp oldid 76926157, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。