进程管理(六)-进程的描述
- 进程控制块:进程的PCB 是系统感知进程的唯一实体
- 程序段:描述进程所要完成的功能
- 程序操作的数据集:程序在执行时必不可少的工作区和操作对象
PCB
PCB是什么
PCB包含有关进程的描述信息、控制信息以及资源信息,是进程动态特征的集中反映。
PCB作用
1.系统根据PCB感知进程的存在和通过PCB中所包含的各项变量的变化,掌握进程所处的状态以达到控制进程活动的目的。
2.一个进程的PCB结构都是全部或部分常驻内存的。
PCB的生命周期
在创建一个进程时,首先创建其 PCB,然后根据PCB 中信息对进程实施有效的管理和控制。
当一个进程完成其功能之后,系统释放PCB,进程也随之消亡。
PCB包含内容
描述信息
1.进程名或进程标识号
2.用户名或用户标识号
3.家族关系:每一个进程必有一个父进程;可以有0个或者多个子进程。
控制信息
1.进程当前状态
2.进程优先级
3.程序开始地址
4.各种计时信息:进程占有和利用资源的有关情况。
5.通信信息:执行过程中与其他进程的信息交换情况
资源信息
1.占用内存大小及其管理用数据结构指针,例如后述内存管理中所用到的进程页表指针等。
2.在某些复杂系统中,还有对换或覆盖用的有关信息,如对换程序段长度,对换外存地址等。在进程申请、释放内存时使用
3.共享程序段大小及起始地址
4.输入输出设备的设备号,所要传送的数据长度、缓冲区地址、缓冲区长度及所用设备的有关数据结构指针等。在进程申请释放设备进行数据传输中使用
5.指向文件系统的指针及有关标识等。
CPU 现场保护结构
进程因等待某个事件而进入等待状态或因某种事件发生被中止在处理机上的执行时,为了以后该进程能在被打断处恢复执行,需要保护当前进程的 CPU现场(或称进程上下文)。
PCB的大小
一个PCB表一般占几百到几千个字节(Linux系统的每个PCB约占1KB多的内存空间)。
有的系统为了减少 PCB对内存的占用量,只允许PCB中最常用的部分,如CPU现场保护、进程描述信息、控制信息等常驻内存。PCB 结构中的其他部分则存放于外存之中,待该进程将要执行时与其他数据一起装入内存。
组织方式
线性方式
描述:将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中
特点:该方式实现简单、开销小,但每次查找时都需要扫描整张表,因此适合进程数目不多的系统。
链接方式
描述:把具有相同状态的进程的PCB通过PCB中的链接字链接成一个队列,形成就绪队列、若干个阻塞队列和空白队列等。
排序优先级:
就绪队列:
把具有相同状态的进程的PCB通过PCB中的链接字链接成一个队列,形成就绪队列、若干个阻塞队列和空白队列等。
阻塞队列:
处于阻塞状态进程的PCB根据其阻塞原因的不同,排成多个阻塞队列,如等待I/O操作完成的队列和等待分配内存的队列等。
索引方式
描述:
根据所有进程状态的不同,建立几张索引表,例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。
在每个索引表的表目中,记录具有相应状态的某个PCB的地址。
进程上下文
进程上下文是什么
进程上下文是一个抽象的概念,包含进程执行过的、执行时的以及待执行的指令和数据,是存储在指令寄存器、堆栈(调用子程序的返回点和参数等)、状态字寄存器等中的内容。
进程上下文包括
- 上文:已执行过的进程指令和数据。
- 正文:正在执行的进程指令和数据。
- 下文:待执行的进程指令和数据。
进程上下文的构成
- 与执行该进程有关的各种寄存器的值
- 程序段经过编译之后形成的机器指令代码集
- 数据集及各种堆栈值与PCB结构构成
UNIX中上下文
用户上下文
- 进程的用户程序段部分编译而成的用户正文段
- 用户数据
- 用户栈等组成。
寄存器上下文
- 程序寄存器PC(下条指令地址)
- 处理机状态字寄存器PS(硬件状态)
- 栈指针(下一项地址)和通用寄存器的值(参数)组成
系统级上下文
静态部分
- PCB 结构
- 将进程虚地址空间映射到物理空间用的有关表格和核心栈(装载进程中所使用系统调用的调用序列)
动态部分
动态部分指在进入和退出不同的上下文层次时,系统为各层上下文中相关联的寄存器值所保存和恢复的记录,其变化规则满足先进后出的堆栈方式,每个上下文层次在栈中各占一项。
进程上下文切换
进程空间
什么是进程空间
任一进程,都有一个自己的地址空间,称为进程空间或虚空间。
进程空间的大小
进程空间的大小只与处理机的位数有关。例如,16位长处理机的进程空间大小为216,而32位长处理机的进程空间大小为232。
进程空间内程序的执行
程序的执行在进程空间内进行。用户程序、进程的各种控制表格等都按一定的结构排列在进程空间中。
进程空间的划分
用户空间
用户程序在用户空间内执行
系统空间
操作系统内核程序在系统空间内执行。
两种执行模式
为防止用户程序访问系统空间,造成访问出错,系统通过程序状态寄存器等设置不同的执行模式,即用户模式(用户态)和系统模式(系统态)来进行保护。