0.
一道等待运行的程序只有在获得了处理器后才能运行,在多道程序环境下,程序并发执行,走走停停。这时由于资源共享,它们将失去封闭性,并且具有间断性,同样的输入多次运行可能得出不同的结果。所以,程序是不能参与并发执行的。为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,我们引入”进程”的概念。
进程实体是由程序段、相关数据和PCB(进程控制块)构成的,一般情况下,我们把进程实体就简称为进程。所谓创建进程就是创建进程实体中PCB;而撤销进程,实质上就是撤销进程的PCB。
1.PCB
通过第0节的介绍,可以得知PCB能使一个在多道程序下不能独立运行的程序(含数据)成为一个能与其他进程并发的进程。PCB操作系统核心中一种数据结构,下面对PCB的作用做进一步的阐释:
①作为独立运行基本单位的标志
系统通过PCB感知进程的存在,PCB是进程存在于系统中的唯一标志。
②实现间断性运行方式
当进程因阻塞而暂停运行时,系统将CPU现场信息保存在中断进程的PCB中,供进程再次被调度执行时恢复CPU现场。
③提供进程管理所需信息
在进程的整个生命期中,操作系统总是根据PCB实施对进程的管理控制。如:根据PCB中记录程序和数据在内存或外存中的始址指针,找到相应的程序和数据。
④提供进程调度所需要的信息
如:PCB中存有程序处于何种状态的信息、进程的优先级、进程的等待时间和已执行时间等。
⑤实现与其他进程的同步与通信
如:在采用信号量机制时,它要求每个进程中都设置有相应的用于同步的信号量;用于实现进程通信的区域或通信队列指针等。
PCB通常记载进程之相关信息,包括:
程序计数器:接着要运行的指令地址。
进程状态:可以是new、ready、running、waiting或 blocked等。
CPU暂存器:如累加器、索引暂存器(Index register)、堆栈指针以及一般用途暂存器、状况代码等,主要用途在于中断时暂时存储数据,以便稍后继续利用;其数量及类因电脑架构有所差异。
CPU排班法:优先级、排班队列等指针以及其他参数。
存储器管理:如标签页表等。
会计信息:如CPU与实际时间之使用数量、时限、账号、工作或进程号码。
输入输出状态:配置进程使用I/O设备,如磁带机
资源清单(CPU除外),此外还有一张已分配到该进程的资源的清单
2.进程的状态和转换
进程的三种基本状态:就绪(Ready)、执行(Running)、阻塞(Block)
就绪状态:进程已经准备好运行,就等CPU了
执行状态:进程获取了CPU,其程序正在执行
阻塞状态:进程正在执行,但是由于发生某事件(如:I/O请求)暂时无法继续执行的状态,即进程的执行受到阻塞进行不下去了。这是经过进程调度,OS将处理机分配给其他就绪的进程,让受阻进程处于暂停状态,一般将这种暂停状态称为阻塞状态。
在系统中,还为进程引入了两种常见的状态:创建状态和终止状态
创建状态:创建一个进程并不是一蹴而就的,需要经过多个步骤,如:申请空白PCB、申请管理资源等。此时进程还没被创建好,不被调度运行,所以将进程此时所处的状态称为创建状态。当进程获取了其所需的资源并且PCB的初始化工作完成后,便可以进入就绪状态。
终止状态:进程的终止需要两个步骤:①等待操作系统进行善后处理②将其PCB清零,并将PCB返回给系统。进入终止状态的进程不能再执行,但操作系统中依然保留一个记录,保留一些状态码和计时数据,供其他进程收集。一旦其他进程完成了对其信息的提取,操作系统将删除该进程,对其PCB清零并将该PCB返还系统。
在许多系统中,还引入了对进程的重要操作:挂起(Suspend)操作。进程被挂起,意味着进程处于静止状态,与挂起操作对应的操作是激活(Active)操作。
挂起与阻塞的区别:
阻塞是被动的,不知道什么时候会阻塞,也不知道什么时候能恢复。挂起是主动的,可以自己把自己挂起或者被操作系统挂起,什么时候唤醒也由自己或操作系统决定。
引入挂起操作后,进程可能发生的状态转换:
活动就绪(Readya)→静止就绪(Readys),静止就绪的进程不再被调度执行。
活动阻塞(Blocka)→静止阻塞(Blocks),处于静止阻塞状态的进程在所期待的事件发生后,从静止阻塞变为静止就绪。
静止就绪→活动就绪:静止就绪的进程用Active激活后变为活动就绪。
静止阻塞→活动阻塞:处于静止阻塞的进程用Active激活后变为活动阻塞。
进程状态转换图:
//期末 好好看书,好好整理笔记