一方面,为了便于对计算机的各类资源(包括硬件和信息)的使用和管理,OS将它们抽象为相应的各种数据结构,以及提供一组对资源进行操作的命令,用户利用这些数据结构和操作命令来执行相关的操作,无需关系具体实现细节
另一方面,操作系统作为计算机资源的管理者,尤其是为了协调诸多用户对系统中共享资源的使用,它还必须记录和查询各类资源的使用及各类进程运行情况的信息,OS对于这些信息的组织和维护也是通过建立和维护各种数据结构的方式来实现的。
1. 操作系统中用于管理控制的数据结构
每个资源和每个进程都设置了一个数据结构,用于表征其实体 —— 资源信息表或进程信息表 —— 包含了资源或进程的标识、描述、状态等信息以及一批指针
通过这些指针,可将同类资源或进程的信息表,或者同一进程所占用的资源信息表分类链接成不同的队列,便于操作系统查找。
OS管理的这些数据结构一般分为以下四类:
内存表、设备表、文件表、进程表(进程控制块PCB)
2.进程控制块PCB的作用
PCB作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。
PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
具体作用进一步阐述:
1)作为独立运行基本单位的标志
系统是通过PCB感知进程的存在的,PCB已成为进程存在于系统的唯一标识
2)能实现间断性运行方式
进程因阻塞而暂停运行时 —— 必须保留运行时的CPU现场信息
系统将CPU现场信息保存在被中断进程的PCB中,供其再次被调用时恢复
3)提供进程管理所需要的信息
当调度程序调度到某进程运行时,只能根据该进程PCB中记录的程序和数据在内存或外村中的始址指针,找到相应的程序和数据
在进程运行过程中,当需要访问文件系统中的文件或I/O设备时,也需要借助于PCB中的信息
还可根据PCB中的资源清单了解到该进程所需的全部资源等。
4)提供进程调度所需要的信息
PCB中提供了进程处于何种状态的信息
在进行调度时往往还需要了解进程的其他信息 —— 优先级、等待时间、已执行时间
5)实现与其他进程的同步通信
进程同步机制是用于实现诸进程的协调运行的,在采用信号量机制时,它要求在每个进程中都设置有相应的用于同步的信号量。在PCB中还具有用于实现进程通信的区域或通信队列指针。
3. 进程控制块PCB中的信息
1)进程标识符
用于唯一地标识一个进程。一个进程通常有两种标识符:
外部标识符 |
内部标识符 |
方便用户(进程)访问 |
方便系统对进程的使用 |
由字母、数字组成 |
唯一的数字标识符,通常是一个进程的序号 |
创建者提供 |
操作系统设置 |
2)处理机状态
主要是由处理机的各种寄存器中的内容组成的。
寄存器类型 |
作用 |
通用寄存器 |
用户程序可访问,用于暂存信息 |
指令计数器 |
存放要访问的下一条指令的地址 |
程序状态字PSW |
含有状态信息,如条件码、执行方式、中断屏蔽标志等 |
用户栈指针 |
用户进程与之相关的系统栈,存放过程、系统调用参数及调用地址 |
处理机处于执行状态时,正在处理的许多信息都是放在寄存器中。当进程被切换时,处理机状态信息都必须保存在相应的PCB中,以便在该进程重新执行时能再从断点继续执行。
3)进程调度信息
OS进行调度时 —— 须了解进程状态和有关调度的信息 ——
- 进程状态
- 进程优先级
-
进程调度所需的其他信息 与采用的调度算法有关
-
事件 阻塞原因
4)进程控制信息
- 程序和数据的地址
-
进程同步和通信机制
实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等(全部或部分存放在PCB)
-
资源清单
除了运行期间所需的全部资源(除CPU)外,还有一张已经分配到该进程的资源的清单
-
链接指针
给出本进程(PCB)所在队列中的下一个进程的PCB的首地址
4. 进程控制块的组织方式
-
线性方式
组织在一张线性表中 —— 实现简单、开销小,每次查找需要扫描整个表 —— 适合进程数目不多的系统
-
链接方式
把同状态进程的PCB分别通过PCB的链接字链接成一个队列
形成就绪队列、若干个阻塞队列、空白队列
就绪队列 —— 按优先级排列,高的在前面
阻塞队列 —— 按阻塞原因的不同,排成多个阻塞队列
-
索引方式
系统根据所有进程状态的不同,建立几张索引表,例如就绪索引表、阻塞索引表等,把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表的地址。