> 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/3.-jin-cheng-kong-zhi.md).

# 3. 进程控制

![](/files/-MEwfNTDetQCD_tcMcFa)

**定义：**&#x8FDB;程控制的主要功能是对系统中的所有进程实施有效的管理，它具有创建新进程、撤销已有进程、实现进程状态转换等功能 -> **实现进程状态转换**

**实现：**&#x901A;过原语（一气呵成的特性，不允许被中断）

**补充：**&#x43;PU 执行完一条指令后，就会检查一遍是否有中断信号需要处理，如果有，则转而去处理中断信号。这也是导致本来应该一起执行的两条指令，可能出现只执行一条指令的情形

**为什么要使用原语：**&#x5982;果一个进程从阻塞态 -> 就绪态，需要两步，第一：修改 state 变量；第二：从阻塞队列中移除放到就绪队列中。如果这两步骤不能一气呵成的执行，就会出现问题。

**原语的实现原理：**&#x52A0;入&#x4E86;**“关中断”指令**&#x548C;**“开中断”指令**

* 执行“关中断”指令后，就不去处理中断信号，仅仅执行连续的指令
* 执行“开中断”指令后，就把之前没有处理的中断信号全部处理完
* 这样，“关中断”指令和“开中断”指令之间的指令就可以一气呵成的执行完

![](/files/-MEwcxkvHquvcd_xD9-9)

## 进程控制相关原语

### 进程的创建

![](/files/-MEwdXWM3w5DDoBKLeVW)

### 进程的终止

![](/files/-MEwdc71ZfPNMagZJwbP)

### 进程的阻塞 & 唤醒

![](/files/-MEwdjbRp5yN9sjbRux2)

### 进程的切换

![](/files/-MEwdpdvSshN7SIeI4Cb)

## 保存运行环境

当一个进程在执行时，会产生很多信息，这些信息都保存在 CPU 的寄存器中，而这些寄存器都是公用的；当进行进程切换时，就需要把当前进程的信息保存，等到下一次该进程恢复运行的时候，再把这些信息加载
