XNU简介

XNU内核比较庞大复杂,因此这里只是进行主要内容的介绍

XNU据说是一个无限递归的缩写:XNU’s Not UNIX

XNU内核是Mac和iOS的核心,有三个主要部分组成的一个分层体系结构;内核XNU是Darwin的核心,也是整个OS X的核心。

下图为MacOS X 体系结构图:
MacOS X 体系结构图

Mach概述

该内核内环称为Mach层,源自卡内基-梅陇大学开发的Mach3.0内核。而iOS中的Mach是指Apple自己实现的内核,而不是原始工程。

Mach作为微内核,是仅提供基础服务的一个薄层,如处理器管理和调度以及IPC(inter-process communication,进程间通信),IPC是mach内核的核心概念。由于是分层体系结构, 所以Mac和iOS的mach版本之间几乎没有区别。

虽然XNU中的mach层与原始工程中的职责相同,但是其他操作系统服务(如文件系统和网络)都在与mach相同的内存空间运行, Apple这样做主要是出于对性能的考虑,因为地址空间切换(上下文切换)的操作代价很高。

在一定程度上mach是一个孤立的部分,很多人常常将XNU称为混合内核而不是微内核或宏内核,在这两种内核中,所有的操作系统服务都在相同的环境中运行。XNU的体系结构如下图:
XNU的第二个主要部分是BSD层们可以将其看做围绕mach层的一个外环, BSD同样也为最终用户的应用程序提供变成接口,其职责包括进程管理,文件系统和网络。
最后一个是I/O Kit, 他为设备驱动程序提供一个面向对象的框架。
实际情况是更加复杂的, 各层之间的界限非常模糊,因为许多操作系统的服务和任务都涉及多个部分。

KEXT(内和扩展)
XNU内核运行时可将代码动态加载到内核地址空间,这样即使内核运行时也可装载和写在额外功能(如驱动程序)。内和扩展有两个主要类: 第一个类用于I/O Kit的内核扩展这些扩展用于硬件驱动程序,采用C++语言编程。第二类用于通用内核扩展,这些扩展通常采用C语言编写。这些扩展可以实现从新网络协议到文件系统的任何内容。通过内核扩展通常与BSD或mach层进行交互。

Mach
mach层可以看做内核的核心
为高层部分(BSD和I/O Kit)提供底层服务,
mach负责硬件抽象,隐藏power PC体系结构和因特尔X86、X86-64体系结构之间的差别。这包括处理异常和中断的细节以及管理内存(包括虚拟内存和分页)的细节。这种设计可以使内核很容易地移植到新的硬件体系结构,苹果后来转向英特尔x86以后来的iOS转向ARM都证明了这点。
除了硬件抽象,mach还负责线程调度, mach支持对称多处理(SMP)可以在多个CPU或CPU核心之间调度进程。实际上在现有的BSD Unix内核中实现适当的SMP支持, 对mach开发很有帮助。
进程间通信IPC是mach设计的核心原则,mach中的IPC作为客户端、服务器系统而实现
一个任务(客户端)可以请求另一个任务(服务器)的服务。系统中的端点称为端口。端口具有确定客户是否可以访问特定服务的相关权限。IPC机制在XNU内核内部使用。

更多操作系统文章:
https://blog.csdn.net/zhuge1127/article/details/82222714
https://blog.csdn.net/zhuge1127/article/details/82222701
https://blog.csdn.net/zhuge1127/article/details/82222687

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值