本文將說明沙箱在 Fuchsia 中處理程序的運作方式。
新程序沒有任何內容
在 Fuchsia 中,新建立的程序是空白的。它無法存取任何核心物件、分配記憶體或執行程式碼。因此,程序通常會使用一些初始資源和功能建立。
通常,程序會開始執行部分程式碼,並使用初始堆疊、部分指令列引數、部分環境變數和一組初始句柄。「Zircon 程式載入和動態連結」一文說明程式啟動時提供的資源。
命名空間是通往世界的入口
部分提供給程序的初始句柄,是程序掛載至其命名空間的目錄。這些句柄可讓程序探索系統上執行的其他程序 (包括檔案系統和其他伺服器),並與這些程序進行通訊。詳情請參閱「命名空間」。
提供給程序的命名空間會大大影響程序可影響的系統規模。因此,設定程序執行的沙箱,等同於設定程序的命名空間。
套件命名空間
A
/pkg
如要在執行階段存取這些資源,程序可以使用 /pkg
命名空間。舉例來說,root_presenter
可以使用絕對路徑 /pkg/data/cursor32.png
存取 cursor32.png
。
元件功能
一般元件會與 /svc
中的多項服務互動,以便在系統中扮演某些實用角色。舉例來說,如果元件想要記錄,就必須使用 fuchsia.logger.LogSink
服務。
非元件的程序可能會有或沒有 /svc
。這些程序會接收創作者提供的 /svc
。