iOS 系統分析(一) 閱讀核心準備知識
原文出自【聽雲技術部落格】:http://blog.tingyun.com/web/article/detail/1134
0x01 iOS體系架構
1.1 iOS 系統的整體體系架構
使用者體驗( The User Experience layer ):SpringBoard 同時支援 Spotlight。
應用軟體開發框架(The Application Frameworks layer):Cocoa ( Cocoa Touch )。
核心開發框架(The Core Frameworks):圖形和多媒體一類軟體的開發環境,包括 核心框架,Open GL和QuickTime等。
Darwin:系統核心核心:包括 核心 和Unix Shell 環境。
1.2 Darwin體系
1.3 XNU概述
Darwin是一種類似unix的作業系統,他的核心是XNU。
XNU是一種混合式核心。結合了mach與BSD兩種核心。
Mach 是微核心實現。
BSD 實現在Mach的上層,這一層提供的API 支援了POSIX標準模型。在XNU中主要實現了一些高階的API與模組。
1.3.1 Mach 微核心簡介
在XNU中主要完成以下幾個功能:
程式與執行緒的抽象
虛擬記憶體管理
任務排程
程式間通訊
1.3.2 BSD 核心簡介
BSD 實現在Mach的上層,這一層提供的API 支援了POSIX標準模型。在XNU中主要實現了一些高階的API與模組。
UNIX 程式模型;
POSIX 執行緒模型即pthread,以及相關的同步功能;
UNIX的使用者與組管理;
網路協議棧(BSD Socket API),符合POSIX 模型;
檔案系統/裝置系統;
1.3.3 libKern
實現了一個C+ +的子集(以庫的形式為支援C+ +提供了執行時),為I/O kit 提供基礎設施;
1.3.4 I/O kit
I/O kit 是XNU 不同於其他作業系統的裝置驅動框架。IOKit是一個物件導向的驅動模型框架,它是早期DriverKit的一個翻版,Driver Kit是使用Objective-C寫的,而IOKit是一個C+ +的驅動架構,它在DriverKit的基礎上做了很大的改進,比如IOKit可以寫在使用者空間跑的驅動(雖然大多仍是跑在核心空間上的),因而驅動掛了而系統不會掛。另外IOKit考慮到了計算機發展的趨勢,所以在電源管理、即插即用、動態載入上做得更好。
0x02 iOS安全機制
2.1 程式碼簽名
在iOS開發者使用的機器上應該已經有一個證書,一個公鑰,以及一個私鑰。這些事程式碼簽名機制的核心。像SSL一樣,程式碼簽名也依賴於採用X.509 標準的公開金鑰加密體系。無論是使用者還是開發者都不能改變應用開啟策略,你必須有一個開發者帳號或者應用釋出證書才能讓應用執行在 iOS 系統上。
2.2(強制訪問控制(Mandatory Access Control)
iOS的entitlement 機制的基礎。簡稱MAC,用於將系統中的資訊分密級和類進行管理,以保證每個使用者只能訪問那些被標明可以由他訪問的資訊的一種訪問約束機制。通俗的說,在MAC下,使用者與檔案都被標記了固定的安全屬性(如安全級別,訪問許可權等),在每次訪問發生時,系統檢測安全屬性以便確定一個使用者是否有權訪問該檔案)。
2.3 沙盒機制(sandbox)
沙盒是一種安全機制,為執行中的程式提供隔離環境。沙盒在啟動的時候可以設定執行的程式是否可以訪問網路、檔案、目錄等。
參考 《深入解析Mac OS X & iOS作業系統》
相關文章
- iOS Tagged Pointer (原始碼閱讀必備知識)iOS原始碼
- jitsi視訊會議系統準備知識
- 配置DataGuard的準備知識
- 談談面試知識點準備面試
- 【核心檔案系統】原始碼閱讀stat.h原始碼
- 音視訊學習(一)-- 基礎知識準備
- 預備知識-python核心用法常用資料分析庫(上)Python
- iOS Safari閱讀模式分析過程iOS模式
- 如何閱讀一本書——分析閱讀Pre
- Scrapy原始碼閱讀分析_3_核心元件原始碼元件
- YYModel原始碼閱讀–基礎知識原始碼
- vue 面試時需要準備的知識點Vue面試
- BCSphere入門教程:導言和知識準備
- 一文讀懂分散式架構知識體系(內含超全核心知識大圖)分散式架構
- 心智閱讀系列:定期投資你的知識資產
- 高效的知識閱讀和資訊篩選技巧
- 計算機網路基礎知識(面試準備)計算機網路面試
- 你去面試,需要準備什麼知識點?面試
- 機器閱讀理解 / 知識庫 / 深度學習 / 對話系統 / 神經機器翻譯 | 本週值得讀深度學習
- 【譯】通過閱讀原始碼來提高 JS 知識原始碼JS
- 標準IO和系統IO的相關知識積累
- 給計算機專業的大一新生準備的閱讀連結計算機
- iOS——Core Animation 知識摘抄(一)iOS
- RxSwift之路 1#Swift語法知識準備Swift
- Java初學者必備4大核心基礎知識Java
- 談談系統分析員的知識結構 (轉)
- 分散式系統閱讀清單分散式
- 微軟系統知識庫微軟
- 閱讀目錄(置頂)(長期科技領域知識)
- 兩篇知識表示方面的論文閱讀筆記筆記
- JVM--Java核心面試知識整理(一)JVMJava面試
- 【譯】給小白準備的Web架構基礎知識Web架構
- 知識儲備
- 必備知識
- iOS Safari閱讀模式研究iOS模式
- 我也來打造一個個人閱讀追蹤系統
- 如何實現一個HTTP請求庫——axios原始碼閱讀與分析HTTPiOS原始碼
- iOS 知識點iOS