进程,就是程序的执行,也是资源分配的基本单位。

一、进程的执行

顺序执行

一个挨一个执行,独占所有资源,一旦开始执行不受外界干扰。重复执行的结果是一致的。

并发执行

多个程序一起执行,便会带来资源的抢占,相互制约、相互影响。

由于时间片的抢占,所以程序是断断续续执行的。

由于相互影响,而且不一定是谁影响谁,导致多次执行的结果不一定一样。

二、进程的描述

进程映像的组成(静态的)

  • 进程控制块(PCB):进程的标志。
  • 程序段:即代码。
  • 数据段:即初始化的数据、处理的数据,输出的结果数据。

进程的状态转换

三种基本状态:

  • 就绪(ready):获得了对应资源(除CPU),进入了就绪队列。
  • 执行(Running):获得了时间片,开始执行。
  • 阻塞(BLock):时间片用完,或者发生了某个事件(比如等待IO),进程暂停执行了,进入了阻塞队列。

【操作系统笔记】 02.进程的描述与控制_时间片

就绪和阻塞:就绪状态得到时间片后能立即执行,而阻塞并不能。

在三种基础状态上,添加了两种:

  • 创建:申请了PCB,获取了部分资源,OS会根据性能(内存剩余量)来延迟就绪,即为创建状态。
  • 终止:即善后处理。释放PCB、回收资源等。

【操作系统笔记】 02.进程的描述与控制_程序段_02

最后,添加了一组操作,挂起和激活。

挂起和激活是一种主动操作,表明我现在不想执行它,但是我待会会执行,先帮我保留现场。我会让出CPU和其他资源。

【操作系统笔记】 02.进程的描述与控制_进程控制_03

PCB的数据结构

  • 进程标识符
    包括进程ID,父进程ID,子进程ID,进程家族等信息。
  • CPU状态
    包括通用寄存器、指令计数器、程序状态字PSW,用户栈指针。
  • 进程调度信息
  • 进程的状态
  • 进程的优先级
  • 进程已等待CPU的时间、已执行时间。(调度算法使用)
  • 事件,即阻塞原因。
  • 进程控制块信息
  • 内存和外存的首地址,方便找到数据段和程序段。
  • 消息同步的信息,比如消息队列指针、信号量等。
  • 资源清单,使用了哪些资源。
  • 下一个进程PCB的地址。