本文主要参考《计算机操作系统(第四版)》(西安电子科技大学出版社)以及清华大学操作系统公开课(向勇、陈渝),整理操作系统的基本概念,供自己复习查阅。
进程(Process)
在多道程序环境下,程序的执行是并发的,因此程序也失去了封闭性,执行具有间断性且执行结果具有不可再现性。这也就决定了程序是不能参与并发执行的。为此,引入了“进程”的概念。
定义
进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。进程包含代码段、数据段、以及进程控制块(Process Control Block,PCB)。进程的创建和撤销实质上是创建和撤销进程实体中的PCB。
基本状态
进程在并发时共享系统资源,因此它们在运行时呈现间断性,即进程在生命周期中可能具有多种状态。一般来说进程处于三种基本状态之一,同时为了保证描述的完整性,引入了创建状态和终止状态。
分类
创建状态
前面提到进程的创建主要是指创建PCB。创建PCB一般需要如下步骤:申请一个空白PCB,并向其中填写用于控制管理进程的信息;为该进程分配运行所必须的资源。完成上述步骤之后,进程就处于就绪状态并被送入就绪队列。
就绪(Ready)状态
指进程已经处于准备好运行的状态(即进程已经获取到除了CPU以外所有所需的资源,只要再获得CPU即可执行)。通常把所有就绪态的进程按一定的策略排序,存放到就绪队列中。
执行(Running)状态
即程序已经获得CPU,正在执行。
阻塞(Block)状态
阻塞是指正在执行的进程由于发生某事件而暂时无法继续执行的状态。
终止状态
进程终止一般需要如下步骤:等待操作系统处理善后;将PCB清零然后归还给操作系统。
状态间的切换
为了系统和用户观察和分析进程的需要,引入一个对进程的重要操作——挂起操作。进程被挂起意味着该进程处于静止状态,即若进程在执行,它将暂停执行;若进程已就绪,它将暂时不接受调度。对应地,解除挂起状态的操作是激活操作。
进程控制块PCB
操作系统管理的数据结构一般分为四类:内存表、设备表、文件表、进程表,其中进程表即进程控制块,它是一种记录型数据结构。
作用
使一个在多道程序环境下不能独立运行的程序(包含数据)成为一个能独立运行的基本单位,具体作用如下:
- 独立运行基本单位的标志。
- 实现间断性运行方式。
- 提供进程管理所需要的信息。
- 提供进程调度所需要的信息。
- 实现进程间的同步与通信。
信息
进程控制块中主要包含如下信息:
- 进程标识符:外部标识符描述进程间的关系,方便用户访问进程;内部标识符通常是进程的序号,方便系统使用进程。
- 处理机状态:又称为处理机上下文,主要是由处理机的各种寄存器组成,包括通用寄存器、指令计数器、程序状态字、用户栈指针等。当进程被切换时,正在处理的信息都会从寄存器保存到相应的PCB中,以便之后可以在断点处重新执行。
- 进程调度信息:包括进程状态、进程优先级、事件(阻塞原因)等。
- 进程控制信息:包括程序和数据的地址、进程同步和通信机制、资源清单、链接指针等。
组织方式
常用的PCB组织方式有三种:
- 线性方式:即顺序存放,遍历查找,类似数组,适合进程数少的系统。
- 链接方式:即把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。
- 索引方式:即根据进程状态的不同建立索引表。