XNU简介

article/2025/10/15 2:55:02

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


http://chatgpt.dhexx.cn/article/5kJDjWKW.shtml

相关文章

函数

1.编写函数,完成下面的程序,将一个字符串中的字母排序后输出。输出要求:字母从小到大排序(包括大小写)后的字符串。例如: 输入:Hello World! 输出:!HWdellloor 程序中的必要代码为: main() …

HangOver

How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length. (We’re assuming that the cards must be perpendicular to the table.) With two cards you can make the top card overhang t…

❤️对比PyWinAuto和uiautomation实现微信联系人自动采集❤️

大家好,我是小小明。昨天我在《UI自动化工具轻松实现微信消息的自动收发和朋友圈爬取》一文中演示了UIAutomation的三个使用示例,链接:https://blog.csdn.net/as604049322/article/details/119899542 由于昨天对UIAutomation的API了解还不够全面,个别代码优化空间还较大。…

适用于winform程序的UI自动化实现(python+uiautomation)

适用于winform程序的UI自动化实现(pythonuiautomation) 一、使用的工具和库 定位工具:inspect(提取码:kvwx)、UISpy(提取码:ab0e) python库使用:subprocess(内置库&…

WPF UIAutomation测试套件开发

目录 介绍 目标 测试方案 功能测试(黑匣子) 测试示例 设计 记录测试并生成测试方法 更新测试方法并构建 测试用例规范 测试方法 初始化方法 实现自定义TestContext 测试配置 关于CodedUI的常见问题 不要手动更改* .Designer.cs文件中的代…

安卓手机 Python 自动化( uiautomation、uiautomation2、weditor )

其他自动化工具或者框架: Airtest:https://airtest.readthedocs.io/zh_CN/latest/autojs:Auto.js快速入门实战教程:https://zhuanlan.zhihu.com/p/90065914appium:https://blog.csdn.net/freeking101/article/details/…

UIAutomation识别UI元素

MS UI Automation(Microsoft User Interface Automation:UIA)是随.net framework3.0一起发布的,虽然在如今这个几乎每天都有各种新名词、新技术出来的所谓的21世纪,它显得已经有些过时了。前些日子,正好一个项目,可以用…

uiautomation实现自动化

1.下载UI SPY 下载地址:https://download.csdn.net/download/yangzhichao_csdn/85389759 2.CMD指令导入uiautomation库 pip install uiautomation 3.打开计算器,然后打开UISpy 如图ControlType为”ControlType.Window” 那么捕获窗口就用:uiautomation.WindowCo…

Python uiautomation初探,测试Win10计算器

在网上找 Python 客户端自动化测试的库,一般有 pywinauto、pywin32、pyautogui、uiautomation。本文仅对 uiautomation 做简单的了解。 MS UI Automation 是 MSAA 技术的一个替代品:即让控件和应用程序具有更好的可达性(accessible&#xff…

UIAutomation 自动化

Introduction UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active Accessibility。UI Automation在某些方面超过了MSAA,UI自动化提供了Windows Vista中,微软…

Python UI自动化 编程(一) UIAutomation

Python UI自动化 编程 第一章 Python UI自动化 编程入门之打开文件夹双击文件 文章目录 Python UI自动化 编程前言一、什么是Python UI自动化 编程二、环境说明1、Python环境:Python 3.82、IDE: Pycharm3、使用的库:UIAutomation 三、使用步…

【python】UI自动化-uiautomation

UI自动化-uiautomation 0- 前言1- inspect2- uiautomation3- 【实战】RustDesk软件自动 安装、指定服务器信息4- 参考文章 0- 前言 做应用程序自动点击的记录,暂不完整,仅供参考。参考多位大佬文章,链接在后面涉及工具 inspect【应用程序元素…

CAD 双击实体事件

CAD本身为我们提供的双击事件的设置。工具-工作空间-自定义...打开用户自定界面 窗体内找到双击动作。在双击动作下我们可以看到CAD自带的所有实体 例如我们在双击三维实体时自定义一个事件。那么我们就选中三维实体-快捷特性。在右侧特性里编辑宏内容。以下是系统彼带的宏$M$(…

深入探索透视投影变换(续)

-潘宏 -2009.4.14 -本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教 -email: popyynetease.com -B站专栏: https://b23.tv/oWsl6PD 在上一篇文章中我们讨论了透视投影变换的原理,分析了OpenGL所使用的透视…

凯文·凯利:AI将改变一切设计工作

每一项新技术诞生之初都会引发新一轮科技恐慌周期,近期大火的AI生成艺术更是如此。连线杂志创始主编、知名科技思想家凯文凯利(Kevin Kelly)在6个月重度使用之后认为,这次AI进展的确是一次令人震惊的突破。但是,它不会…

鼠标双击退出应用程序简单实现

文章目录 Android 简单模拟鼠标双击退出应用程序,利用Toast提示“再点一次退出”使用Toast鼠标单击提示信息鼠标双击实现退出系统 Android 简单模拟鼠标双击退出应用程序,利用Toast提示“再点一次退出” 使用Toast // 参数:当前上下文环境&…

如何用JavaScript完美地区分双击和单击事件

通过一个悬浮球交互功能的案例来阐述问题,以及解决办法。 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 1.可以点击拖动,然后吸附在窗口边缘2.点击悬浮球,可以跳转界面,或者更改悬浮球的形态准备 1.移…

单机显示、双击隐藏;事件绑定、单击div、双击div、删除事件;元素显示、隐藏、交替; 向上收缩、向下展开、交替;淡入淡出

单机显示、双击隐藏 <style>div {width: 500px;height: 200px;background-color: green;display: none;} </style> <body><button id"btn">单击显示&#xff0c;双击隐藏</button><br><br><div> </div&…

干货分享 | UE游戏鼠标双击判定

UE虚幻引擎对于游戏开发者来说都不陌生&#xff0c;市面上有47%主机游戏使用虚幻引擎开发游戏。作为是一款游戏的核心动力&#xff0c;它的功能十分完善&#xff0c;囊括了场景制作、灯光渲染、动作镜头、粒子特效、材质蓝图等。本文介绍了虚幻引擎游戏开发过程中游戏鼠标双击判…

鼠标单击变双击问题

解决此问题可以从硬件和软件两方面思考角度入手:我们先把鼠标插在别人的机器上使用,如果没发现问题可能是软件问题,若发现同样的问题则可能是硬件方面的问题。 软件方面:(1)病毒导致将杀毒软件病毒库更新至最新版,全盘扫描。 (2)鼠标属性设置不当我们打开控制面板-&…