博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XNU介绍-待丰富
阅读量:6243 次
发布时间:2019-06-22

本文共 1281 字,大约阅读时间需要 4 分钟。

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

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

XNU内核是Mac和iOS的核心,有三个主要部分组成的一个分层体系结构;内核XNU是Darwin的核心,也是整个OS 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内核内部使用。

转载地址:http://jooia.baihongyu.com/

你可能感兴趣的文章
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>
Mars说光场(3)— 光场采集
查看>>
[CodeWars][JS]如何判断给定的数字是否整数
查看>>
实现div毛玻璃背景
查看>>
zoj 1010 Area 判断线段是否相交(把线段扩充一倍后 好处理) + 多边形求面积...
查看>>
sublime text ctrl+b
查看>>
时间复杂度几个概念
查看>>
poj 1273 Drainage Ditches(最大流入门)
查看>>
for语句
查看>>
网页总结
查看>>
我用过的那些电脑 -- 致逝去的美好时光
查看>>
SQLiteOpenHelper学习
查看>>
Tomcat路径下目录的介绍
查看>>