进程,就是程序的执行,也是资源分配的基本单位。
一、进程的执行顺序执行
一个挨一个执行,独占所有资源,一旦开始执行不受外界干扰。重复执行的结果是一致的。
并发执行
多个程序一起执行,便会带来资源的抢占,相互制约、相互影响。
由于时间片的抢占,所以程序是断断续续执行的。
由于相互影响,而且不一定是谁影响谁,导致多次执行的结果不一定一样。
二、进程的描述进程映像的组成(静态的)
- 进程控制块(PCB):进程的标志。
- 程序段:即代码。
- 数据段:即初始化的数据、处理的数据,输出的结果数据。
进程的状态转换
三种基本状态:
- 就绪(ready):获得了对应资源(除CPU),进入了就绪队列。
- 执行(Running):获得了时间片,开始执行。
- 阻塞(BLock):时间片用完,或者发生了某个事件(比如等待IO),进程暂停执行了,进入了阻塞队列。
就绪和阻塞:就绪状态得到时间片后能立即执行,而阻塞并不能。
在三种基础状态上,添加了两种:
- 创建:申请了PCB,获取了部分资源,OS会根据性能(内存剩余量)来延迟就绪,即为创建状态。
- 终止:即善后处理。释放PCB、回收资源等。
最后,添加了一组操作,挂起和激活。
挂起和激活是一种主动操作,表明我现在不想执行它,但是我待会会执行,先帮我保留现场。我会让出CPU和其他资源。
PCB的数据结构
- 进程标识符
包括进程ID,父进程ID,子进程ID,进程家族等信息。 - CPU状态
包括通用寄存器、指令计数器、程序状态字PSW,用户栈指针。 - 进程调度信息
- 进程的状态
- 进程的优先级
- 进程已等待CPU的时间、已执行时间。(调度算法使用)
- 事件,即阻塞原因。
- 进程控制块信息
- 内存和外存的首地址,方便找到数据段和程序段。
- 消息同步的信息,比如消息队列指针、信号量等。
- 资源清单,使用了哪些资源。
- 下一个进程PCB的地址。