沙箱機制

本文將說明沙箱在 Fuchsia 中處理程序的運作方式。

新程序沒有任何內容

在 Fuchsia 中,新建立的程序是空白的。它無法存取任何核心物件、分配記憶體或執行程式碼。因此,程序通常會使用一些初始資源和功能建立。

通常,程序會開始執行部分程式碼,並使用初始堆疊、部分指令列引數、部分環境變數和一組初始句柄。「Zircon 程式載入和動態連結」一文說明程式啟動時提供的資源。

命名空間是通往世界的入口

部分提供給程序的初始句柄,是程序掛載至其命名空間的目錄。這些句柄可讓程序探索系統上執行的其他程序 (包括檔案系統和其他伺服器),並與這些程序進行通訊。詳情請參閱「命名空間」。

提供給程序的命名空間會大大影響程序可影響的系統規模。因此,設定程序執行的沙箱,等同於設定程序的命名空間。

套件命名空間

A /pkg如要在執行階段存取這些資源,程序可以使用 /pkg 命名空間。舉例來說,root_presenter 可以使用絕對路徑 /pkg/data/cursor32.png 存取 cursor32.png

元件功能

在其 /svc 目錄中,

一般元件會與 /svc 中的多項服務互動,以便在系統中扮演某些實用角色。舉例來說,如果元件想要記錄,就必須使用 fuchsia.logger.LogSink 服務。

非元件的程序可能會有或沒有 /svc。這些程序會接收創作者提供的 /svc