seL4 內核服務、對象以及基本能力訪問和控制

內核服務和對象

微內核提供了一些有限的原始服務,更多複雜的服務要在這些原始服務基礎上像應用程序一樣實現。以此種服務,此係統的功能可以被拓展而不用增加特權模式下的代碼和複雜度,雖然在應用程序域潛在的支持相當廣泛的服務。
seL4 內核基本支持的服務如下:

線程(Threads )是CPU支持應用程序運行的抽象化。

地址空間(Address spaces)是一塊包含一個應用程序的虛擬內存空間,應用程序只能使用他們自己地址空間下的內存。

進程間交互(Inter-process communication{IPC})允許線程通過終端節點使用消息傳遞進行交流。

原始設備(device primitive)允許設備驅動像無特權應用程序一樣實現。此內核輸出硬件設備終端通過{IPC}《IPC 不知道的查!!!!》消息。

能力空間(capability space)存儲着伴隨他們的記錄信息的內核服務的能力(即。。使用權利)

這一部分給了這些服務的概述,描述了內核對象如何被用戶空間的應用程序所使用,以及描述了新對象如何被創建。

2.1 基本能力訪問控制

seL4微內核提供了基本能力訪問控制模型,訪問控制管理內核的所有服務,爲了執行一個操作,一個應用程序必須調用一個他所佔有的能力,已經擁有足夠的訪問權限去請求服務。用這個,這個系統能夠在隔離軟件組件的條件下初始化,也能夠被授權,通過選擇性的給與特定的通信能力來控制組件間的通信。這使得軟件組建的隔離得到了高度的保證,因爲只有這些操作明確授權被能力佔有所承認。

一個能力是一個不能僞造的令牌,參考一個特定的內核對象(如線程控制塊《TCB》),和存儲着控制調用什麼方法的訪問權限。從概念上講,一個能力存儲在一個應用程序的能力空間裏。這個空間裏的一個地址指向一個槽(slot)可能也可能不包含一個能力,一個應用程序可能指向一個能力,去請求一個內核服務,比如使用這個槽(slot)的地址去支持能力。這意味着,seL4 微內核能力模型是一個(種族隔離???segregated)的實例(或者分區)能力模型,能力被內和管理的地方。

能力空間被實現如一個內核管理的能力節點的有向圖。(CNodes),一個能力節點是一個槽的表,一個每個槽都進一步包含能力節點的能力的地方。一個在能力空間的地址然後連接能力節點能力形成目標位置的路徑。我們詳細討論能力節點對象在第三部分。

能力在能力空間中能夠被複制和移動,也能夠被髮送通過進程間通信(IPC),這允許帶着特定訪問權限的應用程序的創建,給其他應用程序授權,傳遞給一個應用程序權限去新創建(或選擇)內核服務。此外,能力可以鑄造創建派生能力用原始能力的權限的一個子集(從不用更多的權限)。一個新的創造的能力能夠被使用於部分授權。

能力也能夠被撤銷收回權力,撤銷遞歸刪除任何能力,已經派生了原始能力.此係統的能力的傳播被一個take-grant(取-予)基本模型所控制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章