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
Kernel Architecture Overview
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