總覽
本文件簡要介紹元件和元件架構的概念。
什麼是沙箱?
沙箱是一種安全機制,可在執行階段隔離各個程式。在 Fuchsia 中,所有軟體都會在沙箱中執行。程式在最初建立時,無法執行任何操作,甚至無法分配記憶體。程式會依賴其建立者提供執行所需的功能。這項隔離性質能讓 Fuchsia 採用最低權限原則:只為程式提供執行所需的最低功能集。
元件架構
元件架構 (CF) 包含核心概念、工具、API、執行階段,以及描述及執行元件,以及協調元件之間的通訊和存取資源所需的程式庫。
元件架構包含:
- CF 概念,包括元件、元件資訊清單、執行程式、Realm、環境、功能和解析器。
component_manager
程序,可協調元件之間的通訊和資源共用作業。component_manager
實作的 FIDL API,或由其他元件實作並由component_manager
使用的 API,用於協調。- 開發人員工具,用於建構、執行及測試元件。
- 元件可用來與系統互動的語言專屬程式庫。(示例)。
- 測試工具和程式庫,用於編寫可測試一或多個元件的單元和整合測試。(示例)。
功能
由於 Fuchsia 是功能型作業系統,因此元件會透過 能力會結合資源存取權和一組權利,提供存取權控管機制和與資源互動的管道。
為支援現今產品中複雜的軟體組合,元件架構提供以 Zircon 建構的獨特能力類型 這個能力碼會向特定 FIDL
元件架構會匯集
元件可使用 fuchsia.io.Directory
通訊協定,探索命名空間中可用的功能。
在執行階段,每個元件都會收到其命名空間,以及 Directory
管道的伺服器端程式庫。這個 Directory
管道稱為
透過傳出目錄,元件的可執行檔可讓您探索該元件提供的任何功能。
元件架構會透過稱為 雖然大部分功能都會轉送至元件執行個體,但runner 和resolver 功能會轉送至 環境會為其指派的領域設定架構行為。
延伸閱讀:
元件
元件是執行在 Fuchsia 中的軟體基本構成要素。每個元件都是可組合且具備沙箱功能的模組,可透過功能與其他元件互動。
元件的核心包含以下內容:
元件架構會依賴元件解析器,從元件來源擷取元件。解析器會將元件網址做為輸入內容,並產生元件資訊清單,以及 (選用) 軟體套件位元組的存取機制做為輸出內容。
包含可執行程式的元件可以透過 執行程式會使用資訊清單和套件的部分內容,並為元件的二進位檔提供執行方式。
解析器和執行程式本身就是功能,可直接與架構互動,擴充其功能。元件可以實作這些功能,以便支援新的元件來源和執行階段。
延伸閱讀:
樂曲
元件及其子項稱為 集體父母和孩子所有單一組件之間的關係稱為 組件實例樹 。 您經常會看到以 POSIX 路徑字串表示的別名。
延伸閱讀:
生命週期
元件會經歷下列生命週期狀態:
- 發現了
- 已開始
- 已停止
- 已刪除
元件會透過下列任一方式進行偵測:a) 在元件資訊清單中,將元件靜態宣告為另一個元件的子項;或 b) 新增至元件資訊清單。同樣地,元件會從元件資訊清單中移除靜態子項,或在執行階段從元件集合中移除,藉此隱含地銷毀。
元件啟動或停止時,component_manager
會與適當的執行元件協調,執行或終止元件的可執行檔。
延伸閱讀:
-
執行元件所需的早期啟動軟體除外。 ↩