沙盒

本文档介绍了沙盒在 Fuchsia 中对进程的运作方式。

新进程没有任何内容

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

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

命名空间是通往世界的门户

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

为进程分配的命名空间会极大地影响该进程可以影响系统的范围。因此,配置进程运行的沙盒相当于配置进程的命名空间。

软件包命名空间

从软件包运行的组件会被授予对 /pkg 的访问权限,/pkg 是包含组件的软件包的只读视图。如需在运行时访问这些资源,进程可以使用 /pkg 命名空间。例如,root_presenter 可以使用绝对路径 /pkg/data/cursor32.png 访问 cursor32.png

组件功能

在其命名空间中包含协议服务/svc

典型组件将与 /svc 中的多项服务互动,以便在系统中发挥一些有用的功能。例如,如果组件希望记录日志,则必须使用服务 fuchsia.logger.LogSink

非组件的进程可以有也可以没有 /svc。这些进程会接收其创建者提供的任何 /svc