程序

本文件介紹 Zircon 程序的概念。

總覽

Zircon 程序是程式的執行個體,其中包含由一或多個執行緒執行的指示,以及程式可用來實現目標並與系統互動的一系列資源。

核心使用名為 Process Objects 的功能管理程序。Thread 物件與特定 Process 物件相關聯,該物件可提供記憶體,並處理 I/O 和相關執行緒進行運算所需的其他核心物件。

每個程序一開始都有一個虛擬記憶體位址區域 (VMAR),也就是橫跨整個使用者位址空間的程序根 VMAR (請參閱 zx_process_create())。根 VMAR 可用於直接使用,也可以細分為子項 VMAR。

VMAR 可用於將虛擬記憶體物件 (VMO) 進行對應,以便將程式所需的程式碼、資料、匿名與共用記憶體頁面提供到處理程序的位址空間。

處理程序會在下列情況停止執行:

  • 程序中的最後一個執行緒會終止或結束。
  • 程序會呼叫 zx_process_exit() 自行終止。
  • 父項工作會終止程序。
  • 父項工作遭到刪除。

處理程序和工作

程序由「工作」擁有,這類工作支援將一或多個程序和子工作組成單一實體,以便管理資源限制和權限,並提供群組的生命週期控制權。

建立程序需要工作的控制代碼,而新建立的程序會成為工作的子項。只有具備工作控制代碼的程序可以建立新的程序或工作,而有效限制哪些程序可能會手動建立其他程序。

許多 Fuchsia 程序沒有工作控制代碼,而且必須使用系統提供的機制 (例如元件架構) 來啟動其他程序。

詳情請參閱工作一節。