> For the complete documentation index, see [llms.txt](https://lfool.gitbook.io/operating-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lfool.gitbook.io/operating-system/di-er-zhang-jin-cheng-guan-li/2.-jin-cheng-de-zhuang-tai-zhuan-huan.md).

# 2. 进程的状态 & 转换

![](https://824295091-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEmUhsvIFBb8ar2-Um3%2F-MEvvfvLOeBqtYJKLxx3%2F-MEwGDRdiMDfu3wT5g4T%2F%E8%BF%9B%E7%A8%8B%E7%9A%84%E7%8A%B6%E6%80%81%20%26%20%E8%BD%AC%E6%8D%A2.svg?alt=media\&token=b1a5e852-600c-459c-bf01-04aa3888b237)

## 1. 进程的状态

**创建态：**&#x8FDB;程正在被创建时，它的状态是“创建态”，在这个阶段操作系统会为进程**分配资源**，**初始化 PCB**

**就绪态：**&#x5F53;进程创建完成后，便进入“就绪态”，处于就绪态的进程**已经具备运行条件**，但由于**没有空闲的 CPU**，就暂时不能运行

**运行态：**&#x5982;果一个进程此时在 CPU 上运行，那么这个进程就处于“运行态”。CPU 会执行该进程对应的程序

**阻塞态：**&#x5728;进程运行的过程中，可能会**请求等待某个事件的发生**（如等待某种系统资源分配，或者等待其他进程的响应）。在这个事件发生之前，进程无法继续往下执行，此时操作系统会让这个进程下 CPU，并让它进入“阻塞态”

**终止态：**&#x4E00;个进程可以执行 exit 系统调用，请求操作系统终止该进程。此时该进程会进入“终止态”，操作系统会让该进程**下 CPU**，并**回收内存空间等资源**，最后还要**回收该进程的 PCB**

**进程 PCB 中，会有一个变量 state 来表示进程当前状态**。如：1 表示创建态、2 表示就绪态、3 表示运行态......

为了对同一个状态下的各个进程进行统一的管理，操作系统会将各个进程的 PCB 组织起来，组织方法如下：

![](https://824295091-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEmUhsvIFBb8ar2-Um3%2F-MEvvfvLOeBqtYJKLxx3%2F-MEwDTSpbe9xjFdFX2tk%2Fimage.png?alt=media\&token=78270cd6-627e-4507-a49f-b848e741f012)

**链接方式：**

![](https://824295091-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEmUhsvIFBb8ar2-Um3%2F-MEvvfvLOeBqtYJKLxx3%2F-MEwD9UnKSZnzVR81JKa%2Fimage.png?alt=media\&token=55a332f7-04a3-4920-a258-c34adf5388f8)

**索引方式：**

![](https://824295091-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEmUhsvIFBb8ar2-Um3%2F-MEvvfvLOeBqtYJKLxx3%2F-MEwDGX65If2UWsa_169%2Fimage.png?alt=media\&token=23a599e3-22fd-4120-a001-5dc3ea614be8)

## 2. 进程状态的转换

![](https://824295091-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEmUhsvIFBb8ar2-Um3%2F-MEvvfvLOeBqtYJKLxx3%2F-MEwAxKWKNwjG6i7CB-3%2Fimage.png?alt=media\&token=9e6ed774-1424-403a-b015-a3be00f8a09e)

**阻塞态 -> 就绪态**不是进程自身能控制的，是一种**被动行为**

**运行态 -> 阻塞态**是一种进程自身做出的**主动行为**

**不能由阻塞态直接转换为运行态，也不能由就绪态直接转换为阻塞态**（因为进入阻塞态是进程主动请求的，必然需要进程在运行时才能发出这种请求）
