# 说明

**注意：**
1. 本文中的定义目前只适用于桌面客户端的app。~~~~
2. 优先级的数字越小代表优先级越高。
3. 本文的状态管理和切换都建立在PC处于正常模式的情况下。暂不考虑省电模式等。
4. 对进程的管理策略也仅限在平板模式下，PC模式下所有进程均恢复至前台进程的管理策略。


# 关于进程状态的定义

## 前台进程
- 优先级： 1
- 定义：用户目前执行操作的进程，即当前显示的应用的进程。平板模式下当前只能有一个前台进程。
- ~~管理：不受任何 `CPU` 和 `IO` 使用的限制。~~
- 管理：不受任何资源使用的限制。

## 不可见进程
- 优先级： 2
- ~~定义：除前台进程之外正在执行当前用户知晓的任务的应用进程。比如打开应用商店下载安装软件的过程中切回到桌面，再打开 `WPS`，此时 `WPS` 就是前台进程，应用商店就是可见进程。~~
- ~~管理：`CPU` 和 `IO` 的调度优先级降一级。~~
- 定义：不可见进程是前台进程最小化后不显示应用界面的进程。
- 管理：资源使用限制降级。

## 缓存进程
- 优先级： 3
- ~~定义：目前不需要的进程，未显示在屏幕的应用的进程，在 `30min` 之内未进行任何任务的进程即可视为缓存进程。~~
- 定义：不可见进程在 `30min` 之内未切换至前台进程的话会转换成缓存进程。
- 管理：冻结该进程。

# 状态时序转换

![](./out/状态时序/状态时序.svg)

**注意：** 一旦进程被判定为缓存进程之后，该进程便无法直接切换至可见进程。

# 内存管理策略
极端情况下，系统可能会出现内存不足的情况，~~在出现启动某应用失败时会获取当前内存情况~~ 每`30S`获取一次内存的使用情况，如果内存使用超过 `90%`，应用管理会尝试结束掉部分应用。进程优先级越低的应用会被优先结束，**前台进程永远不允许被结束掉**~~，如果还是启动失败或者没有可结束的进程则不予处理~~。 

# 资源限制
`Cgroup`
