苹果的达尔文操作系统和 XNU 内核深度剖析

主要观点:苹果的 Darwin 操作系统及 XNU 内核,从 Mach 和 BSD 起源发展至今,经历了多个阶段,在不同架构和设备上不断演进,融合了微内核和单体内核的特点,实现了高性能与灵活性的平衡。
关键信息

  • 发展历程:从 Mach 微内核起源,到 NeXT 的 Mach/BSD 混合内核,再到苹果收购 NeXT 后将其融入 Mac OS X,历经 Darwin 各版本,支持多种架构和设备,如从 PowerPC 到 Intel x86 再到 Apple Silicon,从 Mac 到 iOS 等。
  • 内核架构:XNU 是混合内核,Mach 提供核心基础设施和抽象,BSD 提供传统操作系统服务,I/O Kit 是对象导向的驱动框架,三者紧密协作。
  • 调度与线程管理:从 Mach 的优先级轮询调度发展到适应多核心、异构核心、能耗与性能权衡的调度,引入 QoS 类等。
  • 内存管理与虚拟内存:Mach 的 VM 子系统负责内存管理,采用 copy-on-write 等机制,适应不同架构和需求。
  • 虚拟化支持:从早期概念到现代硬件辅助虚拟化,在 Intel Mac 和 Apple Silicon 上都有相应支持,强调安全和性能。
  • 安全计算:利用 Secure Enclaves 和 Exclaves 进行隔离,保护敏感操作和数据。
    重要细节
  • Mach 相关:Mach 管理线程、任务地址空间、调度和虚拟内存,提供 IPC 机制,如任务和线程由 Mach 管理,通过 Mach 端口进行 IPC 等。
  • BSD 相关:BSD 提供 POSIX 兼容的服务,如 VFS、网络栈、UNIX IPC、安全与凭证等,与 Mach 紧密合作,如 BSD 进程创建时调用 Mach 等。
  • I/O Kit 相关:I/O Kit 运行在内核空间,用 C++编写,定义设备类层次,支持动态加载和卸载驱动,与 Mach 和 BSD 交互。
  • 调度细节:线程优先级分为多个级别,有运行队列、扩展策略、QoS 类等,如实时线程、空闲和电源管理等。
  • 内存管理细节:每个任务有虚拟地址空间,通过内存对象和分页管理,有多种分页机制,适应不同架构和需求,如压缩内存等。
  • 虚拟化细节:Intel Mac 上通过 Hypervisor.framework 支持用户空间虚拟化,Apple Silicon 上有更完善的 Virtualization.framework,支持容器和模拟等。
  • 安全相关:Secure Enclaves 是硬件集成的安全子系统,Exclaves 则将敏感资源隔离,提供额外的安全防护。
阅读 25
0 条评论