Documentation Archive
https://developer.apple.com/library/archive/navigation/#section=Technologies&topic=Web Services
XNU内核是Darwin操作系统的一部分,可在macOS和iOS操作系统中使用。 XNU是X is Not Unix的首字母缩写。 XNU是一个混合内核,它结合了卡内基梅隆大学开发的Mach内核,FreeBSD的组件以及用于编写称为IOKit的驱动程序的C ++ API。 XNU在x86_64上针对单处理器和多处理器配置运行。
Darwin的内核是XNU,XNU is Not Unix。XNU是两种技术的混合体,Mach和BSD。BSD层确保了Darwin系统的UNIX特性,真正的内核是Mach,但是对外部隐藏。BSD以上属于用户态,所有的内容都可以被应用程序访问,而应用程序不能访问内核态。当需要从用户态切换到内核态的时候,需要通过mach trap实现切换。
1. XNU 包含:
- Mach微内核
- BSD层
- libkern
- I/O Kit
2. Mach
Mach 是 XNU的原子核,是一个微内核轻量级操作系统,仅处理最核心的任务
- 进程和线程抽象
- 任务调度
- 进程间通讯和消息传递
- 虚拟内存管理
3. BSD层
BSD层简历在Mach之上,确保了Darwin符合 POSIX 。提供了更高层次的功能,包括:
- UNIX 进程模型
- POSIX线程模型(Pthread)及相关的同步原语
- UNIX 用户和组
- 网络协议栈(BSD Socket API)
- 文件系统访问
- 设备访问(通过/dev目录访问)
4. libKern
I/OKit是C++ 编写的;为了支持C++运行时并提供所需要的基类,是一个內建的自包含的C++库。
I/O Kit
这是一个在内核中的完整的自包含的执行环境,让开发者可以使用C++快速创建设备驱动程序。
apple开源
https://github.com/apple/darwin-xnu
参考
http://www.uml.org.cn/mobiledev/201501293.asp
https://www.jianshu.com/p/06ee5c6fb3bd
https://www.jianshu.com/p/029cc1b039d6
https://www.jianshu.com/p/fdeea4dc86a8