沙盒

本文档介绍了如何在 Fuchsia 中针对进程采用沙盒机制。

新进程没有任何内容

在 Fuchsia 中,新创建的进程是空的。它无法访问任何内核对象、分配内存或执行代码。因此,创建进程时通常会包含一些初始资源和功能。

最常见的情况是,进程开始执行一些具有初始堆栈、一些命令行参数、一些环境变量和一组初始句柄的代码。Zircon 程序加载和动态链接描述了在启动程序时向程序提供的资源。

命名空间是通往全球的通道

提供给进程的一些初始句柄是进程装载到其命名空间中的目录。这些句柄可让进程发现系统上运行的其他进程(包括文件系统和其他服务器)并与之通信。如需了解详情,请参阅命名空间

为进程指定的命名空间会极大地影响该进程可影响系统程度的程度。因此,配置在其中运行的进程的沙盒相当于配置进程的命名空间。

软件包命名空间

/pkg如需在运行时访问这些资源,进程可以使用 /pkg 命名空间。例如,root_presenter 可以使用绝对路径 /pkg/data/cursor32.png 访问 cursor32.png

组件功能

/svc

典型的组件会与 /svc 中的多项服务交互,以便在系统中发挥一些实用作用。例如,如果某个组件希望进行记录,则需要使用服务 fuchsia.logger.LogSink

不属于组件的进程不一定有 /svc。这些进程会收到其创建者提供给它们的任何 /svc