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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM