日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OS X 内核研究 准备知识

發(fā)布時(shí)間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OS X 内核研究 准备知识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0x00 內(nèi)容簡介

子貢問為仁。子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之賢者,友其士之仁者。”
—《論語·衛(wèi)靈公》

? 在開始研究OSX內(nèi)核以及與OSX相關(guān)知識之前,需要對OSX有一個(gè)比較全面的認(rèn)識,將一些簡單的概念搞清楚。

0x01 OS X 體系結(jié)構(gòu)

?

1.1 OS X系統(tǒng)的整體體系結(jié)構(gòu)

  • 用戶體驗(yàn)( The User Experience layer ):為了研究內(nèi)核做準(zhǔn)備,贊不關(guān)心。
  • 應(yīng)用軟件開發(fā)框架(The Application Frameworks layer):Cocoa, Carbon, Java這些開發(fā)的API與運(yùn)行時(shí)。
  • 核心開發(fā)框架(The Core Frameworks):圖形和多媒體一類軟件的開發(fā)環(huán)境。
  • Darwin:系統(tǒng)內(nèi)核。

google了其他一些文章,分層也是基本差不多,可以參考此圖:

1.2 Darwin體系結(jié)構(gòu)

主要關(guān)心的其實(shí)還是Darwin這個(gè)模塊,他的體系結(jié)構(gòu)大致如下圖所示:

這個(gè)圖暫時(shí)看不懂也沒關(guān)系,需要做到的知識儲備有以下幾點(diǎn):

  • Darwin是蘋果系統(tǒng)的一部分
  • Darwin是一種類似unix的操作系統(tǒng),他的核心是XNU。
  • XNU是一種混合式內(nèi)核。結(jié)合了machBSD兩種內(nèi)核。

1.3 XNU的簡單概括

有以下4個(gè)主要的功能模塊:

  • Mach微內(nèi)核

  • BSD內(nèi)核

  • libKern

  • I/O Kit

1.3.1 Mach微內(nèi)核簡介

?

Mach是作為傳統(tǒng)UNIX內(nèi)核的替代品出現(xiàn)的,因此其間的不同之處值得留意。當(dāng)時(shí)的人們已漸漸感受到了早期UNIX中“一切皆文件”的抽象機(jī)制的不足,有限的擴(kuò)展性使得開發(fā)者捉襟掣肘,苦不堪言。雖說貝爾實(shí)驗(yàn)室的Plan9在此方向上做了進(jìn)一步努力,可是效果并不理想。現(xiàn)代操作系統(tǒng)需要更進(jìn)一步的抽象[1]。

在XNU中主要完成以下幾個(gè)功能:

  • 進(jìn)程與線程的抽象
  • 虛擬內(nèi)存管理
  • 任務(wù)調(diào)度
  • 進(jìn)程間通信

1.3.2 BSD內(nèi)核簡介

BSD的實(shí)現(xiàn)在Mach的上層,這一層提供了一些流行的API,支持了POSIX。在XNU中主要實(shí)現(xiàn)了一些高級的API與模塊。

  • UNIX進(jìn)程模型
  • POSIX線程模型即pthread。以及相關(guān)的同步功能。
  • UNIX的用戶與組管理
  • 網(wǎng)絡(luò)棧(BSD Socket API)
  • 文件系統(tǒng)
  • 設(shè)備系統(tǒng)

1.3.3 libKern

libKern實(shí)現(xiàn)了一個(gè)C++的子集,為I/O kit 提供C++的實(shí)現(xiàn)。

1.3.4 I/O kit

I/O Kit 是XNU不同于其他傳統(tǒng)系統(tǒng)的設(shè)備驅(qū)動(dòng)框架。

IOKit是一個(gè)面向?qū)ο蟮尿?qū)動(dòng)模型框架,它是早期DriverKit的一個(gè)翻版,Driver Kit是使用Objective-C寫的,而IOKit是一個(gè)C++的驅(qū)動(dòng)架構(gòu),它在DriverKit的基礎(chǔ)上做了很大的改進(jìn),比如IOKit可以寫在用戶空間跑的驅(qū)動(dòng)(雖然大多仍是跑在內(nèi)核空間上的),因而驅(qū)動(dòng)掛了而系統(tǒng)不會掛。另外IOKit考慮到了計(jì)算機(jī)發(fā)展的趨勢,所以在電源管理、即插即用、動(dòng)態(tài)加載上做得更好[2]。

1.4 APPs的文件結(jié)構(gòu)

每一個(gè)應(yīng)用程序都是這樣一個(gè)大致類似的文件結(jié)構(gòu)。

1.4.1 Info.plist

為了提供更好的用戶體驗(yàn),IOS 和 OS X的每個(gè)app或bundle都依賴于特殊的元信息(meta Information).

  • 直接向用戶展示信息
  • 系統(tǒng)內(nèi)部用來標(biāo)識你的app或其支持的文檔類型
  • 系統(tǒng)框架用來輔助app的加載

    每個(gè)application都使用Info.plist文件來存儲以上的元信息,從名稱上也可以判斷出Info.plist就是以上提到的“屬性列表”[3]。

1.4.2 Resources

就是APP需要的資源。與我們研究內(nèi)容關(guān)系不大不多關(guān)注。

1.4.3 MacOS

這里存放的就是可執(zhí)行文件

0x02 OS X使用的安全機(jī)制

2.1 代碼簽名

膚淺的理解就是確認(rèn)APP是通過了蘋果審核的,可以認(rèn)為是沒有惡意的。

摘錄了一段比較詳細(xì)的描述:

作為一個(gè) iOS 開發(fā)者,在你開發(fā)使用的機(jī)器上應(yīng)該已經(jīng)有一個(gè)證書,一個(gè)公鑰,以及一個(gè)私鑰。這些是代碼簽名機(jī)制的核心。像 SSL 一樣,代碼簽名也依賴于采用 X.509 標(biāo)準(zhǔn)的公開密鑰加密。

在 OS X 上一個(gè)應(yīng)用是否允許被開啟是由 Gatekeeper 的選項(xiàng)決定的,你可以在系統(tǒng)設(shè)置的安全選項(xiàng)中改變選項(xiàng)。在 Gatekeeper 選項(xiàng)中選擇 “受信任的開發(fā)者或者來自 Mac App Store” 會要求被打開的應(yīng)用必須被證書簽名,可以是 Mac App Store 開發(fā)者的應(yīng)用發(fā)布證書也可以是開發(fā)者 ID 證書。這些選項(xiàng)是由一個(gè)系統(tǒng)工具 spctl 來管理的,它管理著系統(tǒng)的所有安全評估策略。

在 iOS 上規(guī)則是不一樣的,無論是用戶還是開發(fā)者都不能改變應(yīng)用開啟策略,你必須有一個(gè)開發(fā)者帳號或者應(yīng)用發(fā)布證書才能讓應(yīng)用運(yùn)行在 iOS 系統(tǒng)上[4]。

2.2 強(qiáng)制訪問控制 (Mandatory Access Control)

FreeBSD 5.x最早引入,是OS X隔離機(jī)制(Sandboxing,沙盒機(jī)制)和iOS的entitlement機(jī)制基礎(chǔ)。

強(qiáng)制訪問控制(Mandatory Access Control——MAC),用于將系統(tǒng)中的信息分密級和類進(jìn)行管理,以保證每個(gè)用戶只能訪問到那些被標(biāo)明可以由他訪問的信息的一種訪問約束機(jī)制。通俗的來說,在強(qiáng)制訪問控制下,用戶(或其他主體)與文件(或其他客體)都被標(biāo)記了固定的安全屬性(如安全級、訪問權(quán)限等),在每次訪問發(fā)生時(shí),系統(tǒng)檢測安全屬性以便確定一個(gè)用戶是否有權(quán)訪問該文件。

2.3 沙盒(sandbox)

沙盒是一種安全機(jī)制,為運(yùn)行中的程序提供了一個(gè)隔離的環(huán)境。OS X的沙盒在啟動(dòng)的時(shí)候可以設(shè)置運(yùn)行的程序是否可以訪問網(wǎng)絡(luò)、文件、目錄等。

圖片摘自這里[5]。

參考

[1].Mach — https://zh.wikipedia.org/wiki/Mach

[2].OSX系統(tǒng)編程環(huán)境的介紹 — http://www.tanhao.me/talk/440.html/

[3].IOS之Info.plist文件簡介 — http://my.oschina.net/hmj/blog/104196

[4]代碼簽名探析 — http://http://objccn.io/issue-17-2/

[5]《深入解析Mac OS X & iOS操作系統(tǒng)》讀書筆記 —http://blog.okeyang.com/blog/2015/07/24/shen-ru-jie-xi-mac-os-x-and-ioscao-zuo-xi-tong--du-shu-bi-ji/



?原文地址: http://turingh.github.io/2016/02/29/OS-X-%E5%86%85%E6%A0%B8%E7%A0%94%E7%A9%B6-%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/

總結(jié)

以上是生活随笔為你收集整理的OS X 内核研究 准备知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。