概览
本文档简要介绍了组件和组件框架。
什么是沙盒?
沙盒是一种在运行时将程序彼此隔离的安全机制。在 Fuchsia 中,所有软件都经过沙盒屏蔽。程序最初创建时,并不能执行任何操作,甚至不能分配内存。程序依赖其创建者提供执行所需的功能。此隔离属性允许 Fuchsia 采用最小权限原则:为程序仅提供执行所需的最小权限集。
组件框架
组件框架 (CF) 包含描述和运行组件以及协调组件之间资源通信和资源访问所需的核心概念、工具、API、运行时和库。
组件框架包括:
- CF 概念,包括组件、组件清单、运行程序、realm、environment、功能和解析器。
component_manager
进程,用于协调组件之间的资源通信和分享。- 由
component_manager
实现或由其他组件实现并由component_manager
使用(出于协调目的)的 FIDL API。 - 用于构建、执行和测试组件的开发者工具。
- 用于与系统进行交互的组件的特定语言的库。(示例)
- 用于编写可测试一个或多个组件的单元测试和集成测试的测试工具和库。 (示例)
功能
capabilities 功能结合了对资源的访问权限和一系列权限,既提供了访问权限控制机制,又提供了资源互动方式。
组件可以使用 fuchsia.io.Directory
协议发现其命名空间中的可用功能。
在运行时,每个组件都会收到自己的命名空间以及 Directory
通道服务器端的句柄。
Directory
通过传出目录,该组件的可执行文件可检测出其提供的任何功能。
深入阅读:
组件
组件是在 Fuchsia 中运行的软件的基本构建块。每个组件都是一个可组合的沙盒化模块,可通过 capability 与其他组件进行交互。
从本质上讲,组件由以下部分组成:
组件框架依靠组件解析器从其来源检索组件。解析器将组件网址作为输入,并生成组件清单,并(可选)提供对软件包字节的访问机制作为输出。
运行程序会使用部分清单和软件包,并为组件的二进制文件提供执行方式。
解析器和运行程序本身就是功能,直接与框架交互以扩展其功能。组件可以通过实现这些功能来添加对新的组件来源和运行时的支持。
boot-resolver
深入阅读:
合成
- - parent 您通常会看到名称表示为 POSIX 类似路径字符串。
深入阅读:
生命周期
组件会经历以下生命周期状态:
- 发现
- 已开始
- 已停止
- 已销毁
同样地,系统会通过以下方式隐式销毁组件:从组件清单中的静态子项列表中移除;或者通过在运行时从组件集合中移除显式销毁。
当组件启动或停止时,component_manager
会与相应的运行程序协调以执行或终止组件的可执行文件。
深入阅读:
-
运行组件所需的前期启动软件除外。 ↩