# 进程模型概述

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

应用进程启动后，系统会默认创建主线程并进入消息循环，应用组件运行在主线程上。如果应用需要处理复杂或耗时的任务，开发者可以创建[Worker](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-worker) 线程，或将任务提交到[Taskpool](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-taskpool)中执行。关于线程模型的详细说明，请参见[线程模型](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/thread-model-stage)。

## 组件驱动的进程模型

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

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

## 进程类型

### 基本进程类型

开发者开发一个复杂功能的应用，包含多个[UIAbility](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-uiability)组件和多个ExtensionAbility组件，ExtensionAbility如图1中的[FormExtensionAbility](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-form-formextensionability)和[ShareExtensionAbility](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-shareextensionability)。那么在应用运行态，可能存在的进程类型：

* **主进程**：默认情况下，应用中（同一Bundle名称）的所有UIAbility均是运行在同一个独立进程（主进程）中，即图1中的"Main Process1"。

* **ExtensionAbility进程**：应用中（同一Bundle名称）的所有同一类型ExtensionAbility均是运行在一个独立进程中，如图1中"FormExtensionAbility Process"、"其他类型ExtensionAbility Process"（其他类型的ExtensionAbility组件）。

  特别地，对于继承自[UIExtensionAbility](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-uiextensionability)的ExtensionAbility，可以为每个实例配置独立进程。例如ShareExtensionAbility可以指定每个ShareExtensionAbility实例分别运行在一个独立进程，详见[UIExtensionAbility](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-uiextensionability)。对于[AppServiceExtensionAbility](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-appserviceextensionability)，可以通过配置module.json5文件中的[extensionProcessMode](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/module-configuration-file#extensionabilities标签)字段为type，来指定不同name的AppServiceExtensionAbility组件各自运行在独立进程。
* **Render进程**：应用中的Web组件运行时，系统会为之分配一个Render进程，用于渲染。如图1中的"Render Process"。

**图1** 基本进程类型

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/49/v3/w4e4i90dS0qc-cJ2Ug_0Nw/zh-cn_image_0000002779090643.png?HW-CC-KV=V1&HW-CC-Date=20260929T121700Z&HW-CC-Expire=31536000000&HW-CC-Sign=491991037CF7ABF57F1330A4CDF061CA03CF1154349C717F495E58753079373F)
> 说明
>
> * 进程名称的命名无固定规则，而且与进程类型也不存在直接关联，不能用于业务逻辑的判断。例如，开发者开发了一款应用com.example.myapplication，其中有一个输入法组件[InputMethodExtensionAbility](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-inputmethod-extension-ability)，输入法组件是运行在独立进程中的，通常情况下其进程名是为"com.example.myapplication:input"。但这并不是固定的，该进程名对应的进程不一定是输入法进程，输入法进程也不一定是该进程名。
> * 一个进程可以包含多个AbilityStage，一个AbilityStage可以包含多个Ability。进程的生命周期与Ability生命周期息息相关，当进程内的所有Ability都退出后，进程才会走销毁流程。换句话说，如果想退出进程，需要先退出进程内的所有Ability。

### 扩展进程类型

**子进程** ： 在PC/2in1和Tablet设备上，如果开发者需要创建多进程来执行后台任务，可以调用[childProcessManager](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-childprocessmanager)中的接口创建子进程。子进程的生命周期跟随父进程，父进程消亡，子进程跟随消亡。如图2中的"ArkTS Child Process"和"Native Child Process"是主进程创建的子进程。子进程不支持再创建子进程。子进程的开发方式详见[子进程开发指导（C/C++）](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/capi-nativechildprocess-development-guideline)和[子进程开发指导（ArkTS）](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-child-process-development-guideline)。

## 独立进程配置

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

* **模块独立进程** ：对于多HAP的应用，每个HAP的业务相对独立，如果开发者希望不同HAP的UIAbility运行在不同的进程，可以在[module.json5配置文件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/module-configuration-file#配置文件标签)中将isolationMode字段配置为isolationOnly（只在独立进程中运行，在非PC/2in1设备上应用无法安装）或者isolationFirst（优先在独立进程中运行，PC/2in1设备上在独立进程运行，其他设备上在非独立进程中运行），那么该HAP下的所有UIAbility将运行在统一的独立的进程中。如图2中UIAbilityC运行在"Main Process2"， 而不是"Main Process1"。配置方式详见[模块独立进程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/isolation-process-development-guideline#模块独立进程)。

* **动态指定进程** ：当同一HAP中的UIAbility实例需要根据运行时状态（如每个进程最多支持5个实例）动态分配到不同进程时，开发者可以在module.json5配置文件中将该UIAbility的isolationProcess字段配置为true，如图2中的UIAbilityD。系统在启动UIAbilityD实例时，回调[主控进程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ability-terminology#masterprocess主控进程)的[onNewProcessRequest](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-abilitystage#onnewprocessrequest11)，开发者在该回调中返回自定义的一个进程标识字符串，如果该字符串与之前某次onNewProcessRequest回调返回的字符串相同，则复用该标识所在的进程，否则创建新的进程。如图2中的 "Main Process3"和"Main Process4"则是UIAbilityD运行的多个进程。配置方式详见[动态指定进程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/isolation-process-development-guideline#动态指定进程)。

* **静态指定进程** ：当同一应用中的UIAbility或EmbeddedUIExtensionAbility需要运行到不同进程时，开发者可以将module.json5配置文件的[abilities标签](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/module-configuration-file#abilities标签)中的process字段或[extensionAbilities标签](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/module-configuration-file#extensionabilities标签)中的process字段配置为不同的字符串。系统在启动UIAbility或EmbeddedUIExtensionAbility时，会根据这个字符串分配进程。如果同一应用的多个UIAbility和多个EmbeddedUIExtensionAbility的process字段都配置了相同的字符串，则这些UIAbility和EmbeddedUIExtensionAbility都会运行在同一个进程内。如图2中的 "Main Process5"。配置方式详见[静态指定进程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/isolation-process-development-guideline#静态指定进程)。

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

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/77/v3/VjSeWSG1QCSJj7ad4CDyCQ/zh-cn_image_0000002778930787.png?HW-CC-KV=V1&HW-CC-Date=20260929T121700Z&HW-CC-Expire=31536000000&HW-CC-Sign=DA3F529DA422FB81EE7ED6D48180106E0A487ACC8576A1C927FC090866A189DB)

