iOS&mac 系统内核

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++快速创建设备驱动程序。

Mac Technology Overview

https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/OSX_Technology_Overview/MediaLayer/MediaLayer.html

Kernel Architecture Overview

https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDCAGC

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

posted @ 2020-07-05 23:59  七夜i  阅读(2620)  评论(0编辑  收藏  举报