进程

本文档介绍了 Zircon 中进程的概念。

概览

Zircon 进程是程序的一个实例,由一个或多个线程执行的一组指令以及程序可用于执行其目标并与系统交互的一组资源组成。

内核使用称为“进程对象”的功能管理进程。线程对象与特定的进程对象相关联,而进程对象为相关线程的 I/O 和计算提供所需的内存和句柄。

每个进程都从单个虚拟内存地址区域 (VMAR) 开始,即进程根 VMAR,覆盖整个用户地址空间(请参阅 zx_process_create())。根 VMAR 可以直接使用,也可以细分为子 VMAR。

VMAR 用于映射虚拟内存对象 (VMO),这些对象提供程序所需的代码、数据、匿名和共享内存页面到进程的地址空间中。

在以下情况下,进程停止执行:

  • 进程中的最后一个线程被终止或退出。
  • 该进程会调用 zx_process_exit() 来终止自身。
  • 父作业终止该进程。
  • 父作业会被销毁。

进程和作业

进程由作业拥有,作业支持将一个或多个进程和子作业划分到单个实体中来管理资源限制和权限,并为组提供生命周期控制。

创建进程需要作业的句柄,新创建的进程会成为其子级。只有具有作业句柄的进程才能创建新进程或作业,从而有效限制哪些进程可以手动创建其他进程。

许多 Fuchsia 进程没有作业句柄,必须使用系统提供的机制(例如组件框架)来启动另一个进程。

如需了解详情,请参阅作业