进程基本概念
在未配置OS的系统中,程序是顺序执行方式;在多道程序环境下,则是并发执行。
进程的特征
通常的程序是不能并发执行的,为使程序(含数据)能独立运行,应为其配置一进程控制块,即PCB(Process Control Block),而由程序段、相关的数据段和PCB三部分便构成了进程实体。在早期的UNIX版本中,把这三部分也称为“进程映像”。所谓的进程创建和撤销,其实就是对PCB的操作。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程的状态
基本状态
- 就绪状态:进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行。
- 执行状态:进程已获得CPU,其程序正在执行。
- 阻塞状态:正在进行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态。引起进程阻塞的典型事件有请求I/O、申请缓冲空间等。
挂起
但有些系统由于终端用户的请求(终端用户希望能暂停程序)、父进程请求(挂起子进程,以便考察、修改、协调子进程)、负荷调节的需要(由于负荷较重,讲一些不重要的进程挂起)、操作系统的需要,从而引入挂起状态。
这样进程的状态就有:
- 活动就绪:Readya,未挂起的就绪状态
- 静止就绪:Readys,挂起的就绪状态
- 活动阻塞:Blockeda,未挂起的阻塞状态
- 静止阻塞:Blockeds,挂起的阻塞状态
创建和终止状态
PCB
PCB是进程存在的惟一标志。系统是通过PCB来实现对进程的控制。
PCB中主要包含以下信息:
- 进程标识符
- 内部标识符:系统创建,方便系统使用
- 外部标识符:由创建者提供,往往由用户(进程)在访问该进程时使用。为了描述进程的家族关系,还应设置父子进程标识,此外,还可设置用户标识,以指示拥有该进程的用户。
- 处理机状态:处理机状态信息主要由处理机的各种寄存器中的内容组成的。这些寄存器包括通用寄存器、指令计数器、程序状态字(PSW)、用户栈指针
- 进程调度信息:进程状态、进程优先级、进程调度所需的额外信息(比如:进程已等待CPU的时间总和)、事件(即阻塞原因)
- 进程控制信息:程序和数据的地址、进程同步和通信机制、资源清单、链接指针
PCB的组织方式:
- 链接方式:基于链接方式的队列
- 索引方式:索引表
进程控制
进程的创建
引发的事件
- 用户登录
- 作业调度
- 提供服务
- 应用请求
进程的终止
引发的事件
- 正常结束
- 异常结束
- 越界错误
- 保护错
- 非法指令
- 特权指令错
- 运行超时
- 等待超时
- 算术运算错
- I/O故障
- 外界干预
- 操作员或操作系统干预,比如死锁
- 父进程请求
- 父进程终止
进程的阻塞与唤醒
引发的事件
- 请求系统服务
- 启动某种操作
- 新数据尚未到达
- 无新工作可做