目录

进程模型概述

进程是系统分配资源的基本单位,也是操作系统运行结构的重要基础。下面从应用全局视角介绍系统的进程模型。

应用进程启动后,系统会默认创建主线程并进入消息循环,应用组件运行在主线程上。如果应用需要处理复杂或耗时的任务,开发者可以创建Worker 线程,或将任务提交到Taskpool中执行。关于线程模型的详细说明,请参见线程模型。

组件驱动的进程模型

在传统的桌面操作系统(如Windows)中,进程模型以应用为中心。应用通过系统API显式创建进程,并在所创建的进程内自行创建窗口、消息循环等组件,开发者需要直接管理进程的创建、调度与退出。

HarmonyOS的进程模型则以组件为中心,大多数情况下应用并不直接参与进程的创建与管理,而是开发和配置各类组件(如UIAbility、ExtensionAbility),由系统根据组件类型与配置自动创建并分配进程,开发者一般只需关注组件本身;仅子进程场景下需要应用主动创建(详见扩展进程类型)。

进程类型

[h2]基本进程类型

开发者开发一个复杂功能的应用,包含多个UIAbility组件和多个ExtensionAbility组件,ExtensionAbility如图1中的FormExtensionAbility和ShareExtensionAbility。那么在应用运行态,可能存在的进程类型:

图1 基本进程类型

  • 进程名称的命名无固定规则,而且与进程类型也不存在直接关联,不能用于业务逻辑的判断。例如,开发者开发了一款应用com.example.myapplication,其中有一个输入法组件InputMethodExtensionAbility,输入法组件是运行在独立进程中的,通常情况下其进程名是为“com.example.myapplication:input”。但这并不是固定的,该进程名对应的进程不一定是输入法进程,输入法进程也不一定是该进程名。
  • 一个进程可以包含多个AbilityStage,一个AbilityStage可以包含多个Ability。进程的生命周期与Ability生命周期息息相关,当进程内的所有Ability都退出后,进程才会走销毁流程。换句话说,如果想退出进程,需要先退出进程内的所有Ability。

[h2]扩展进程类型

子进程: 在PC/2in1和Tablet设备上,如果开发者需要创建多进程来执行后台任务,可以调用childProcessManager中的接口创建子进程。子进程的生命周期跟随父进程,父进程消亡,子进程跟随消亡。如图2中的“ArkTS Child Process”和“Native Child Process”是主进程创建的子进程。子进程不支持再创建子进程。子进程的开发方式详见子进程开发指导(C/C++)和子进程开发指导(ArkTS)。

独立进程配置

应用启动时创建的第一个独立进程即主进程,核心组件默认运行其中。在PC/2in1和Tablet设备上,还可通过如下方式将指定组件配置到主进程之外的其他独立进程(拥有独立资源与生命周期,进程间相互隔离,需通过IPC通信)运行,以实现业务隔离或故障隔离:

图2 独立进程配置和子进程