本文档介绍了沙盒在 Fuchsia 中进程的工作原理。
新进程没有任何内容
在 Fuchsia 中,新创建的进程为空。它无法访问任何内核对象、分配内存或执行代码。因此,在创建进程时,通常会有一些初始资源和功能。
最常见的情况是,进程使用初始堆栈、一些命令行参数、一些环境变量和一组初始句柄开始执行一些代码。 Zircon 程序加载和动态链接中介绍了在启动时为程序提供的资源。
命名空间是通往全球
提供给进程的一些初始句柄是进程装载到其命名空间中的目录。这些句柄可让进程发现系统上运行的其他进程(包括文件系统和其他服务器)并与之通信。如需了解详情,请参阅命名空间。
为进程指定的命名空间会强烈影响该进程可以影响的系统范围。因此,配置运行进程的沙盒相当于配置进程的命名空间。
软件包命名空间
/pkg
如需在运行时访问这些资源,进程可以使用 /pkg
命名空间。例如,root_presenter
可以使用绝对路径 /pkg/data/cursor32.png
访问 cursor32.png
。
组件功能
典型组件会与 /svc
中的许多服务进行交互,以在系统中发挥某些有用作用。例如,如果组件想要记录日志,则必须使用服务 fuchsia.logger.LogSink
。
非组件进程不一定具有 /svc
。这些进程会收到其创建者提供给它们的任何 /svc
。