工作

本文件特別探討 Fuchsia 工作的概念,特別是如何使用工作,以及工作與程序的關係。

總覽

在 Fuchsia 中,工作是整理、控管和監管程序的一種方式,這些是作業系統內資源的主要使用者。

在 Fuchsia 中,工作為「核心物件」,由以下內容組成:

  • 父項工作的參照
  • 一組子工作 (每個工作都有這個工作的父項)
  • 一組成員程序
  • 一組政策

工作是程序和其他「子項」工作的容器。工作可用來追蹤權限,以便執行核心作業,例如發出系統呼叫、追蹤和限制基本資源 (例如記憶體和 CPU) 的使用量。在 Fuchsia 中,工作會沿著工作樹狀結構向上傳播,但以由上而下的方式套用政策和配額。詳情請參閱例外狀況處理

每個程序只能有一個工作。Fuchsia 系統上的所有工作都會形成樹狀結構,每個工作均隸屬於某個父項工作,但根工作除外 (這是無父項工作)。

根工作是由核心在啟動時建立,並傳遞至 userboot。這是開始執行的第一個使用者空間程序。

工作與程序

Zircon 程序是傳統上程式的執行個體,也就是由一或多個執行緒執行的一組指令,以及一組資源。zx_process_create() 會在工作中建立新的程序。只有在呼叫 zx_process_start() 後,執行緒才會執行。

工作可能用來終止、取得子項程序的例外狀況或偵錯。如要建立程序,您必須將工作傳送至 zx_process_create()。在 Fuchsia 中,如未明確授予必要的資源,程序就無法分配記憶體或通訊。

設定工作政策

您可以為空白工作設定安全性政策和/或資源政策。工作的有效政策結合了父項的有效政策與工作政策中指定的政策。

zx_job_set_policy() 系統呼叫會將工作安全性和資源政策設為空白工作。在呼叫之後,所有新的子項程序或子工作也套用了新的有效政策。