资源描述
第第2章章 进程的描述与控制进程的描述与控制 随着多道系统的出现,进程作为资源分配随着多道系统的出现,进程作为资源分配和处理器调度的基本单位,是操作系统中最活和处理器调度的基本单位,是操作系统中最活跃的因素,也是操作系统并发性、共享性、虚跃的因素,也是操作系统并发性、共享性、虚拟性和异步性的体现。操作系统为进程分配资拟性和异步性的体现。操作系统为进程分配资源,控制进程状态的变化,协调进程之间的关源,控制进程状态的变化,协调进程之间的关系,完成进程之间的切换。进程管理属于处理系,完成进程之间的切换。进程管理属于处理器管理范畴,是操作系统的重要功能。器管理范畴,是操作系统的重要功能。为了避免进程切换使得系统付出的开销过为了避免进程切换使得系统付出的开销过大,现代操作系统在进程的基础上又引入了大,现代操作系统在进程的基础上又引入了“线程线程”的概念,用线程代替进程成为处理器调的概念,用线程代替进程成为处理器调度的基本单位。度的基本单位。内容内容本章的主要内容如下:本章的主要内容如下:l 进程描述进程描述l 进程控制进程控制l 前趋图与进程前趋图与进程l UNIX操作系统的进程描述与控制操作系统的进程描述与控制l 线程的描述与控制线程的描述与控制l Solaris操作系统中的线程操作系统中的线程2.1 进进 程程 描描 述述2.12.1.1 进程的引入进程的引入(1)程序顺序执行与特征程序顺序执行与特征一个较大的程序通常都由若干个程序段组成,程序在执行一个较大的程序通常都由若干个程序段组成,程序在执行时,各程序段必须按照先后次序逐个执行时,各程序段必须按照先后次序逐个执行。程序各程序段程序各程序段先后执行次序关系可用前趋图表示。先后执行次序关系可用前趋图表示。前趋图前趋图是一个有向无循环图,图由结点和结点间有向边组是一个有向无循环图,图由结点和结点间有向边组成,结点代表各程序段操作,而结点间的有向边表示两程成,结点代表各程序段操作,而结点间的有向边表示两程序段操作之间存在的前趋关系(序段操作之间存在的前趋关系(“”)。两程序段。两程序段PiPi和和PjPj的前趋关系表示成的前趋关系表示成Pi Pi PjPj,PiPi是是PjPj的的前趋,前趋,PjPj是是PiPi的的后继。下图两个程序顺序执行,每个程序分后继。下图两个程序顺序执行,每个程序分3 3个功能段个功能段C1I1 I2C2P2 P12.12.1.1 进程的引入进程的引入(续续)程序顺序执行特征程序顺序执行特征:顺序性顺序性:程序各程序段严格按照规定的顺序执行。封闭性封闭性:程序运行时独占全部资源,机内各资源只受该程序控制而改变,执行中和执行的结果不受外界因素影响。可再现性可再现性:只要程序执行环境和初始条件相同,程序多次执行,可获得相同结果。(2 2)程序并发执行与特征程序并发执行与特征 在计算机系统支持并行操作时,如采用多道程序设计技术,则内存中多道程序处于并发执行状态。如上述有三个程序段的作业类,虽然每个作业有前趋关系的各程序段不能在系统CPU和输入输出各部件并行执行,但一个作业没有前趋关系的程序段或不同作业的程序段可以分别在CPU和各输入输出部件上并行执行。2.12.1.1 进程的引入进程的引入(续续)四个上述三个程序段类的作业并发执行的前趋图如下图所示:C3I1I2I3I4C1C2C4P1P2P3P4例:观察者例:观察者/报告者报告者观察者:观察者:报告者:报告者:begin beginbegin begin repeat repeat repeat repeat wait a car go through delay a time wait a car go through delay a time N=N+1 N=N+1;Print N Print N;N=0 N=0;until until until untilend endend end初始初始N=nN=n时不同执行序列:时不同执行序列:N=N+1N=N+1;Print N Print N;Print N Print N;Print N Print N;N=0 N=0;N=N+1 N=N+1;N=0 N=0;N=N+1 N=N+1;N=0 N=0;结果各不相同结果各不相同:打印打印n+1n+1,N=0N=0;打印打印n n,N=1N=1;打印打印n n,N=0N=0;2.12.1.1 进程的引入进程的引入(续续)程序并发执行特征程序并发执行特征:间断性间断性:程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,使在并发程序之间形成了相互制约的关系。相互制约将导致并发程序具有“执行-暂仃-执行”这种间断性活动规律。失去封闭性失去封闭性:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。不可再现性不可再现性:程序在并发执行时,由于失去了封闭性,也将导致失去结果的可再现性。即程序经过多次运行,虽然其各次的环境和初始条件相同,但得到的结果却各不相同。程序与程序的执行不再一一对应程序与程序的执行不再一一对应:一个程序可能对应多个执行中的程序。反之亦然。2.12.1.1 进程的引入进程的引入(续续)(3 3)进程的引入进程的引入为什么引入进程为什么引入进程 通道技术通道技术 中断技术中断技术多道程序设计技术多道程序设计技术程序并发执行程序并发执行并发执行出现新的特征,沿用程序的概念已经无法并发执行出现新的特征,沿用程序的概念已经无法分析、处理和解释这些现象分析、处理和解释这些现象 基于上述原因,所以必须引入新的概念-进程来描述程序的并发执行。进程这一术语最早由麻省理工学院著名的操作系统MULTICS中提出。进程定义:进程定义:“可并发执行的、具有独立功能的程序在可并发执行的、具有独立功能的程序在一个数据集合上的运行过程,是操作系统进行资源分配一个数据集合上的运行过程,是操作系统进行资源分配和调度的基本单位和调度的基本单位”。进程的特征进程的特征(进程与程序的区别进程与程序的区别):动态性动态性:动态性是进程的最基本特征,它是程序执行过程,它是有一定的生命期。它由创建而产生、由调度而执行,因得不到资源而暂仃,并由撤消而死亡。而程序是静态的,它是存放在介质上一组有序指令的集合,无运动的含义。2.12.1.1 进程的引入进程的引入(续续)2.12.1.1 进程的引入进程的引入(续续)并发性并发性:并发性是进程的重要特征,同时也是OS的重要特征。并发性指多个进程实体同存于内存中,能在一段时间内同时运行。而程序是不能并发执行。独立性独立性:进程是一个能独立运行的基本单位,即是一个独立获得资源和独立调度的单位,而程序不能作为独立单位参加运行、获取资源。异步性异步性:进程按各自独立的不可预知的速度向前推进,即进程按异步方式进行,正是这一特征,将导致程序执行的不可再现性,因此OS必须采用某种措施来限制各进程推进序列以保证各程序间正常协调运行。结构特征结构特征:从结构上,进程实体由程序段、数据段和进程控制块三部分组成,UNIX中称为“进程映象”。生命特征生命特征:进程有一个生命周期,有一个从创建到消亡的过程,而程序作为一种软件资源可以长期保存。另外,通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。2.1.2 进程的基本状态及转换进程的基本状态及转换1进程的三个基本状态进程的三个基本状态 进程的三个基本状态分别是:就绪状态、运行状态、阻塞状进程的三个基本状态分别是:就绪状态、运行状态、阻塞状态。进程的三个基本状态之间的转换,可用最基本的三态模型来描态。进程的三个基本状态之间的转换,可用最基本的三态模型来描述,如图述,如图2.1所示。所示。图图2.1 进程的三个基本状态及其转换进程的三个基本状态及其转换2.1.2 进程的基本状态及转换(续)进程的基本状态及转换(续)就绪状态(就绪状态(ready)进程在内存中已经具备执行的条件,等待分配处理器。进程在内存中已经具备执行的条件,等待分配处理器。一旦被分配处理器,进程立刻执行。一个进程在创建后处一旦被分配处理器,进程立刻执行。一个进程在创建后处于就绪状态。如果一个系统有多个进程都处于就绪状态,于就绪状态。如果一个系统有多个进程都处于就绪状态,这些处于就绪状态的进程以队列方式进行组织,这样的队这些处于就绪状态的进程以队列方式进行组织,这样的队列为就绪队列。列为就绪队列。运行状态(运行状态(running)进程已经被分配处理器并正在执行。在单处理器系统进程已经被分配处理器并正在执行。在单处理器系统中,一个时刻只有一个进程处于运行状态。中,一个时刻只有一个进程处于运行状态。阻塞状态(阻塞状态(blocked)当正在运行的进程由于发生某事件,如:请求并等当正在运行的进程由于发生某事件,如:请求并等待输入待输入/输出过程的完成、等待进程通信之间的进程到来输出过程的完成、等待进程通信之间的进程到来或进程同步之间的进程到来等,而受到阻塞不能继续执行或进程同步之间的进程到来等,而受到阻塞不能继续执行时,便需要放弃处理器,从运行状态转换到阻塞状态。如时,便需要放弃处理器,从运行状态转换到阻塞状态。如果一个系统中有多个进程都处于阻塞状态,这些进程被组果一个系统中有多个进程都处于阻塞状态,这些进程被组织成队列形式,称为阻塞队列。阻塞状态也称为等待织成队列形式,称为阻塞队列。阻塞状态也称为等待(waiting)状态。)状态。2.1.2 进程的基本状态及转换(续)进程的基本状态及转换(续)进程状态之间的转换有如下几种形式:进程状态之间的转换有如下几种形式:就绪状态就绪状态运行状态运行状态:当处理器空闲时,操作系统的进程调:当处理器空闲时,操作系统的进程调度程序会从就绪队列中选中一个就绪进程并分配给处理器,度程序会从就绪队列中选中一个就绪进程并分配给处理器,此时,进程的状态便从就绪状态转换到运行状态。此时,进程的状态便从就绪状态转换到运行状态。运行状态运行状态阻塞状态:阻塞状态:当正在运行的进程由于需要等待某当正在运行的进程由于需要等待某些事件的发生时,其状态需要从运行状态转换为阻塞状态。些事件的发生时,其状态需要从运行状态转换为阻塞状态。阻塞状态阻塞状态就绪状态就绪状态:当处于阻塞状态的进程,由于等待当处于阻塞状态的进程,由于等待的事件到来而不需要再等待时,进程状态便从阻塞状态转换的事件到来而不需要再等待时,进程状态便从阻塞状态转换到就绪状态。到就绪状态。运行状态运行状态就绪状态就绪状态:正被处理运行的进程会被其他进程中:正被处理运行的进程会被其他进程中断,如分时系统中,运行的时间片到,断,如分时系统中,运行的时间片到,当系统采用抢占式当系统采用抢占式调度算法时,若有一个优先级比现运行进程高的进程进入调度算法时,若有一个优先级比现运行进程高的进程进入就绪状态时就绪状态时,而放弃处理器,进程状态从运行状态转换到就,而放弃处理器,进程状态从运行状态转换到就绪状态,等待被再次调度。绪状态,等待被再次调度。2.1.2 进程的基本状态及转换(续)进程的基本状态及转换(续)进程的基本状态是对进程动态过程的简单描述。为了更加详细进程的基本状态是对进程动态过程的简单描述。为了更加详细的描述进程状态,需要考虑进程的创建和终止两个状态。具有创的描述进程状态,需要考虑进程的创建和终止两个状态。具有创建和终止状态的进程状态及状态转换如图建和终止状态的进程状态及状态转换如图2.2所示。所示。图图2.2 具有创建和结束状态的进程状态及其转换具有创建和结束状态的进程状态及其转换2.1.2 进程的基本状态及转换(续)进程的基本状态及转换(续)新建状态新建状态 新建状态是指操作系统创建进程时,进程所处的状态。新建状态是指操作系统创建进程时,进程所处的状态。进程相关的管理表格都初始化好了,但对应的程序在外存进程相关的管理表格都初始化好了,但对应的程序在外存中,没有在内存为分配空间。中,没有在内存为分配空间。终止状态终止状态 进程达到了结束点或进程出现了严重的错误时,会被进程达到了结束点或进程出现了严重的错误时,会被操作系统终止或被其他有终止权的进程终止。操作系统终止或被其他有终止权的进程终止。进入终止状态的进程不再被执行,等待操作系统完成进入终止状态的进程不再被执行,等待操作系统完成进程终止处理。当操作系统完成进程终止处理后,操作系进程终止处理。当操作系统完成进程终止处理后,操作系统会删除进程,收回进程所占用的资源。统会删除进程,收回进程所占用的资源。2.1.3 具有挂起功能的进程状态和转换具有挂起功能的进程状态和转换1进程挂起及挂起的原因进程挂起及挂起的原因 对大多数操作系统来说,用创建、就绪、运行、对大多数操作系统来说,用创建、就绪、运行、阻塞、结束五个状态来描述进程状态及其变化,还不能满阻塞、结束五个状态来描述进程状态及其变化,还不能满足系统管理的需要,还需要对进程实施足系统管理的需要,还需要对进程实施“挂起挂起”。“挂起挂起”是把内存中暂时不能或不需要运行的是把内存中暂时不能或不需要运行的进程从内存对换到外存,从而引起进程状态变化的过程。进程从内存对换到外存,从而引起进程状态变化的过程。进程可以在就绪状态被挂起,也可以在阻塞状态被挂起,进程可以在就绪状态被挂起,也可以在阻塞状态被挂起,还可以在运行状态被挂起。还可以在运行状态被挂起。引起进程挂起的原因是多方面的,引起进程挂起的主引起进程挂起的原因是多方面的,引起进程挂起的主要原因有以下几点。要原因有以下几点。(1)系统资源的需要)系统资源的需要 当系统中所有的进程均处于阻塞状态时,没有就绪进当系统中所有的进程均处于阻塞状态时,没有就绪进程,处理器处于空闲。如果这时内存空间已经被进程占满,程,处理器处于空闲。如果这时内存空间已经被进程占满,不能装入更多的进程,需要将内存中处于阻塞状态的进程不能装入更多的进程,需要将内存中处于阻塞状态的进程挂起,对换到外存上,让出内存空间接纳新创建的进程。挂起,对换到外存上,让出内存空间接纳新创建的进程。2.1.3 具有挂起功能的进程状态和转换(续)具有挂起功能的进程状态和转换(续)(2)调节竞争或消除故障的需要)调节竞争或消除故障的需要 操作系统在检查进程运行中竞争资源的情况时,或在系统出现故操作系统在检查进程运行中竞争资源的情况时,或在系统出现故障使某些功能受到破坏时,为了解决进程的资源竞争或消除系统故障,障使某些功能受到破坏时,为了解决进程的资源竞争或消除系统故障,操作系统需要挂起某些对资源竞争的进程或怀疑引起系统故障的进程,操作系统需要挂起某些对资源竞争的进程或怀疑引起系统故障的进程,将进程对换到外存。将进程对换到外存。(3)终端用户的需要)终端用户的需要 终端用户可以直接操作自己的程序。当程序员需要调试、检查和终端用户可以直接操作自己的程序。当程序员需要调试、检查和修改自己的程序时,可以要求挂起与程序相对应的进程,暂停进程的修改自己的程序时,可以要求挂起与程序相对应的进程,暂停进程的推进。推进。(4)父进程的需要)父进程的需要 父进程对自己的子进程实施控制、修改和检查时,需要挂起自己父进程对自己的子进程实施控制、修改和检查时,需要挂起自己的子进程,暂停子进程的推进。的子进程,暂停子进程的推进。(5)调节进程的需要)调节进程的需要 某些定期执行的进程,如系统监控进程、日志进程等,在执行时某些定期执行的进程,如系统监控进程、日志进程等,在执行时间未到而需要等待时,可以将进程挂起,对换到外存,从而减轻内存间未到而需要等待时,可以将进程挂起,对换到外存,从而减轻内存负担。当执行时间到时,再将这些进程激活换入到内存。负担。当执行时间到时,再将这些进程激活换入到内存。在进程被挂起后,当挂起的时间到或挂起的原因得到解决时,进在进程被挂起后,当挂起的时间到或挂起的原因得到解决时,进程被激活,从外存调入到内存。程被激活,从外存调入到内存。2.1.3 具有挂起功能的进程状态和转换(续)具有挂起功能的进程状态和转换(续)在操作系统中引入进程挂起后,进程的状态发生了变化。进程的在操作系统中引入进程挂起后,进程的状态发生了变化。进程的状态有:新建状态、就绪状态、挂起就绪状态、运行状态、阻塞状态有:新建状态、就绪状态、挂起就绪状态、运行状态、阻塞状态、挂起阻塞状态、结束状态,如图状态、挂起阻塞状态、结束状态,如图2.3所示。所示。图图2.3 引入挂起后的进程状态转换引入挂起后的进程状态转换2.1.3 具有挂起功能的进程状态和转换(续)具有挂起功能的进程状态和转换(续)如果就绪状态的进程被挂起,则进程的状态如果就绪状态的进程被挂起,则进程的状态转换为挂起就绪状态。处于挂起就绪状态的进程一旦被转换为挂起就绪状态。处于挂起就绪状态的进程一旦被激活,从挂起就绪状态转换为就绪状态。激活,从挂起就绪状态转换为就绪状态。如果阻塞状态的进程被挂起,则进程的状态如果阻塞状态的进程被挂起,则进程的状态转换为挂起阻塞状态。如果挂起阻塞状态的进程被激活,转换为挂起阻塞状态。如果挂起阻塞状态的进程被激活,则进程的状态转换为阻塞状态。如果挂起阻塞状态的进则进程的状态转换为阻塞状态。如果挂起阻塞状态的进程到阻塞的事件或程到阻塞的事件或I/O过程完成,被唤醒,则进程的状过程完成,被唤醒,则进程的状态转换为挂起就绪状态,仍然被挂起。态转换为挂起就绪状态,仍然被挂起。引入挂起后,当进程新建后,如果内存足够,引入挂起后,当进程新建后,如果内存足够,则进入就绪状态;如果没有足够的内存空间,则转入到则进入就绪状态;如果没有足够的内存空间,则转入到挂起就绪状态。挂起就绪状态。所有被挂起的进程只有被激活后才能由外存所有被挂起的进程只有被激活后才能由外存到内存,只有处于就绪状态的进程才有可能被处理器运到内存,只有处于就绪状态的进程才有可能被处理器运行。行。2.1.4 进程的描述进程的描述 在操作系统中,进程是资源分配和调度的基本单位。在操作系统中,进程是资源分配和调度的基本单位。操作系统需要分配多少资源给进程?进程调度引起进程切操作系统需要分配多少资源给进程?进程调度引起进程切换,进程切换的内容是什么?要解决这些问题,首先需要换,进程切换的内容是什么?要解决这些问题,首先需要知道在操作系统中是怎样描述进程的。知道在操作系统中是怎样描述进程的。1进程控制块(进程控制块(Process Control Block,PCB)进程控制块是对进程本质属性的描述,是操作进程控制块是对进程本质属性的描述,是操作系统管理进程所需要的基本信息。系统管理进程所需要的基本信息。进程控制块中记录了操作系统用于描述进程状进程控制块中记录了操作系统用于描述进程状况和控制进程运行所需要的基本信息。每个进程都有一个况和控制进程运行所需要的基本信息。每个进程都有一个进程控制块,进程是动态变化的,进程控制块中的信息也进程控制块,进程是动态变化的,进程控制块中的信息也是变化的,操作系统通过读或写进程控制块中的信息达到是变化的,操作系统通过读或写进程控制块中的信息达到了解进程,记录进程变化的目的。了解进程,记录进程变化的目的。PCBPCB与进程同生死,创建一个进程就是为其建立一个与进程同生死,创建一个进程就是为其建立一个PCBPCB,当进程被撤消时,系统就回收它的当进程被撤消时,系统就回收它的PCBPCB;OSOS对进程的对进程的控制就是根据控制就是根据PCBPCB来进行,对进程管理也通过对来进行,对进程管理也通过对PCBPCB管理来管理来实现,所以进程控制块是进程存在的唯一标志。实现,所以进程控制块是进程存在的唯一标志。进程控制块中有如下信息:进程控制块中有如下信息:2.1.4 进程的描述(续)进程的描述(续)(1)进程标志信息)进程标志信息 每个进程都有两种标志符:内部标志符和外部标志符。每个进程都有两种标志符:内部标志符和外部标志符。内部标志符是操作系统为进程设置的一个唯一数字内部标志符是操作系统为进程设置的一个唯一数字标志,操作系统管理进程时使用进程的内部标志符。标志,操作系统管理进程时使用进程的内部标志符。外部标志符由字母和数字组成,是进程创建者提供外部标志符由字母和数字组成,是进程创建者提供的进程名。用户访问进程时使用进程的外部标志。的进程名。用户访问进程时使用进程的外部标志。进程创建时,用户给出进程的外部标志,操作系统给出进程创建时,用户给出进程的外部标志,操作系统给出进程的内部标志。进程的内部标志。(2)处理机状态信息)处理机状态信息 处理机状态信息是处理机的通用寄存器、指令寄存处理机状态信息是处理机的通用寄存器、指令寄存器、程序状态字寄存器和用户堆栈指针寄存器中的内容。器、程序状态字寄存器和用户堆栈指针寄存器中的内容。这些内容反映了进程在处理机中运行时的情况,也是进程这些内容反映了进程在处理机中运行时的情况,也是进程推进的依据。当进程切换时,操作系统会将处理机中的这推进的依据。当进程切换时,操作系统会将处理机中的这些信息保留到被切换进程的进程控制块中,以便下次再被些信息保留到被切换进程的进程控制块中,以便下次再被处理机运行时使用。因此,每次进程切换,操作系统都能处理机运行时使用。因此,每次进程切换,操作系统都能够保证进程可以从上次执行处继续执行。一旦进程被分配够保证进程可以从上次执行处继续执行。一旦进程被分配处理器,其进程控制块中与处理器相关的信息马上刷新处处理器,其进程控制块中与处理器相关的信息马上刷新处理机中的寄存器,作为进程继续运行的依据。理机中的寄存器,作为进程继续运行的依据。2.1.4 进程的描述(续)进程的描述(续)一个进程经历多次处理机执行才能完成,而每一次处理一个进程经历多次处理机执行才能完成,而每一次处理机的执行都将使得进程向前推进。机的执行都将使得进程向前推进。(3)进程调度信息)进程调度信息 进程状态、进程优先级、进程的等待时间、进程的执行进程状态、进程优先级、进程的等待时间、进程的执行时间、与进程状态变化相关的事件等都包含在进程调度信息时间、与进程状态变化相关的事件等都包含在进程调度信息中,是操作系统进行进程调度的依据。中,是操作系统进行进程调度的依据。(4)进程控制信息)进程控制信息 操作系统控制进程需要的信息包括:程序和数据地址、操作系统控制进程需要的信息包括:程序和数据地址、进程同步和通信机制信息、进程的资源清单和链接指针。进程同步和通信机制信息、进程的资源清单和链接指针。当操作系统创建进程时,系统为进程分配进程控制块。当操作系统创建进程时,系统为进程分配进程控制块。进程控制块的初始信息在进程创建时写入,在进程的动态变进程控制块的初始信息在进程创建时写入,在进程的动态变化过程中不断被刷新。当进程终止时,操作系统回收进程控化过程中不断被刷新。当进程终止时,操作系统回收进程控制块。制块。2.1.4 进程的描述(续)进程的描述(续)2进程控制块的组织形式进程控制块的组织形式 为了便于管理进程和调度进程,系统需要把进程的进为了便于管理进程和调度进程,系统需要把进程的进程控制块用某些方式组织起来,常用的组织形式有两种:程控制块用某些方式组织起来,常用的组织形式有两种:链接方式和索引方式。链接方式和索引方式。(1)链接方式)链接方式 系统在每个进程控制块的首部和尾部设置链接指针,系统在每个进程控制块的首部和尾部设置链接指针,将处于相同状态的进程的进程控制块,分别通过首部和尾将处于相同状态的进程的进程控制块,分别通过首部和尾部指针链接在一起,形成链接队列,这样的队列称为进程部指针链接在一起,形成链接队列,这样的队列称为进程队列。操作系统保留每个队列的起始指针。队列。操作系统保留每个队列的起始指针。处于就绪状态的进程,其进程控制块被链接成就绪队处于就绪状态的进程,其进程控制块被链接成就绪队列;处于阻塞状态的进程,其进程控制块被链接成阻塞队列;处于阻塞状态的进程,其进程控制块被链接成阻塞队列。列。在进程控制块的链接队列中,系统可以按照进程等待在进程控制块的链接队列中,系统可以按照进程等待时间的长短进行链接,可以将等待时间长的进程的进程控时间的长短进行链接,可以将等待时间长的进程的进程控制块排在链接队列的前面;系统也可以按照进程的优先级制块排在链接队列的前面;系统也可以按照进程的优先级或进程需要执行时间的长短对其进行链接。或进程需要执行时间的长短对其进行链接。处于相同状态的进程,还可以组织成多个队列。如处处于相同状态的进程,还可以组织成多个队列。如处于阻塞状态的进程,可以按照等待事件的不同类型,组织于阻塞状态的进程,可以按照等待事件的不同类型,组织成不同的阻塞队列。成不同的阻塞队列。2.1.4 进程的描述(续)进程的描述(续)图图2.4 PCB双向链接队列方式双向链接队列方式2.1.4 进程的描述(续)进程的描述(续)进程控制块的链接分为单向链接和双向链接两种形式。进程进程控制块的链接分为单向链接和双向链接两种形式。进程控制块的双向链接形式如图控制块的双向链接形式如图2.4所示。所示。首先,操作系统给出首先,操作系统给出就绪队列的起始指针,图就绪队列的起始指针,图2.4中就绪队列的起始指针指向中就绪队列的起始指针指向PCB2的尾部,表明进程的尾部,表明进程2为就绪队列的首个进程,相应的就为就绪队列的首个进程,相应的就绪队列为:进程绪队列为:进程2进程进程5进程进程9进程进程12。进程。进程12中的尾部中的尾部指针为指针为0,表示进程,表示进程12为就绪队列的最后进程。为就绪队列的最后进程。同样,操作系统也可给出进程队列首部链接的起始同样,操作系统也可给出进程队列首部链接的起始指针,图指针,图2.4中首部指针组织的就绪队列为反方向链:进程中首部指针组织的就绪队列为反方向链:进程12进程进程9进程进程5进程进程2。图图2.4中的阻塞队列有中的阻塞队列有2个。第个。第1个阻塞队列为:进程个阻塞队列为:进程3进程进程7进程进程8进程进程13第第2个阻塞队列为:进程个阻塞队列为:进程4进程进程6进程进程10进程进程11进程进程14。图图2.4中,操作系统给出的执行指针指向中,操作系统给出的执行指针指向PCB1,表明,表明进程进程1正被正被CPU执行,处于执行状态。执行,处于执行状态。2.1.4 进程的描述(续)进程的描述(续)当进程的状态发生变化时,进程从原来的进程控制块链当进程的状态发生变化时,进程从原来的进程控制块链接队列中退出,进入新状态所对应的进程控制块链接队列。接队列中退出,进入新状态所对应的进程控制块链接队列。以链接方式组织进程控制块的主要优点是直观,体现了以链接方式组织进程控制块的主要优点是直观,体现了进程的本身特性,如等待时间的长短、优先级的高低、需要处进程的本身特性,如等待时间的长短、优先级的高低、需要处理时间的长短,为进程调度算法的实施提供了方便。理时间的长短,为进程调度算法的实施提供了方便。以链接方式组织进程控制块的主要缺点是如果进程状态以链接方式组织进程控制块的主要缺点是如果进程状态发生变化,则链接队列需要作相应的调整,进程控制块中的首发生变化,则链接队列需要作相应的调整,进程控制块中的首部和尾部指针需要改变。部和尾部指针需要改变。(2)索引方式)索引方式 索引方式是根据进程的状态分别建立进程索引表,如就索引方式是根据进程的状态分别建立进程索引表,如就绪进程索引表、阻塞进程索引表,如图绪进程索引表、阻塞进程索引表,如图2.5所示。所示。索引表中的进程控制块指针指向进程控制块。操作系统索引表中的进程控制块指针指向进程控制块。操作系统将每个索引表的首地址放到硬件寄存器中,通过硬件寄存器可将每个索引表的首地址放到硬件寄存器中,通过硬件寄存器可以快速得到每个索引表的首地址。以快速得到每个索引表的首地址。2.1.4 进程的描述(续)进程的描述(续)图图2.5 PCB索引组织方式索引组织方式2.1.4 进程的描述(续)进程的描述(续)索引表中的进程控制块指针指向进程控制块。操索引表中的进程控制块指针指向进程控制块。操作系统将每个索引表的首地址放到硬件寄存器中,通作系统将每个索引表的首地址放到硬件寄存器中,通过硬件寄存器可以快速得到每个索引表的首地址。过硬件寄存器可以快速得到每个索引表的首地址。进程控制块的索引方式与链接方式比较,索引方式最进程控制块的索引方式与链接方式比较,索引方式最明显的优点如下:明显的优点如下:(1)通过索引表可以快速得到进程控制块地址,不)通过索引表可以快速得到进程控制块地址,不 需要像链接方式一样,从链首到链尾查找;需要像链接方式一样,从链首到链尾查找;(2)如果进程状态变化,不需要修改进程控制块的链)如果进程状态变化,不需要修改进程控制块的链接接 指针,只需要增加或删除索引表中的记录。指针,只需要增加或删除索引表中的记录。索引方式的缺点为:索引表本身需要占用内存空索引方式的缺点为:索引表本身需要占用内存空间,间,搜索索引表需要时间。搜索索引表需要时间。2.1.4 进程的描述(续)进程的描述(续)3进程的内存映像进程的内存映像 进程的内存映像是进程在内进程的内存映像是进程在内存中的组成,包括如下内容:存中的组成,包括如下内容:进程程序块进程程序块 进程程序块为执行的程序代进程程序块为执行的程序代码,规定了进程一次运行需要完码,规定了进程一次运行需要完成的功能。成的功能。进程数据块进程数据块 进程运行时的全局变量、局进程运行时的全局变量、局部变量和常量等的存储区以及开部变量和常量等的存储区以及开辟的工作区。辟的工作区。系统或用户堆栈系统或用户堆栈 每个进程捆绑的系统每个进程捆绑的系统/用户用户堆栈,用来解决过程调用或系统堆栈,用来解决过程调用或系统调用时的信息存储和参数传递。调用时的信息存储和参数传递。进程控制块进程控制块 进程的标志信息、处理机状进程的标志信息、处理机状态信息、进程调度信息、进程控态信息、进程调度信息、进程控制信息。制信息。用户进程在虚拟存储中的组用户进程在虚拟存储中的组织形式如图织形式如图2.6所示。所示。图图2.6 用户进程在虚拟内存中的组织用户进程在虚拟内存中的组织2.1.4 进程的描述(续)进程的描述(续)4进程的上下文进程的上下文 进程的物理实体和支持进程运行的环境合称为进程上下文进程的物理实体和支持进程运行的环境合称为进程上下文(process context)。)。进程上下文包括:进程上下文包括:用户级上下文(用户级上下文(user-level context)、)、系统级上下文(系统级上下文(system-level context)、寄存器上下文)、寄存器上下文(register context)。用户级上下文由进程的正文区、数据区、用户栈区和共用户级上下文由进程的正文区、数据区、用户栈区和共享存储区组成,在编译目标文件时生成,占据进程的虚拟地址享存储区组成,在编译目标文件时生成,占据进程的虚拟地址空间。进程的正文区是只读的程序指令,数据区存放的是程序空间。进程的正文区是只读的程序指令,数据区存放的是程序运行时所需要的数据,用户栈区用来完成处理器运行时的过程运行时所需要的数据,用户栈区用来完成处理器运行时的过程调用和返回、参数传递等。共享内存区是与其它进程共享的部调用和返回、参数传递等。共享内存区是与其它进程共享的部分。分。系统级上下文是由进程控制块、内存管理信息、进系统级上下文是由进程控制块、内存管理信息、进程环境块和系统堆栈等组成的进程地址空间。程环境块和系统堆栈等组成的进程地址空间。寄存器上下文由程序状态寄存器、各类控制寄存器、寄存器上下文由程序状态寄存器、各类控制寄存器、地址寄存器、通用寄存器和用户栈指针等组成。地址寄存器、通用寄存器和用户栈指针等组成。当一个进程被系统调度而占有处理器时,会发生处当一个进程被系统调度而占有处理器时,会发生处理器在新老进程之间切换,切换的内容是进程上下文,进程运理器在新老进程之间切换,切换的内容是进程上下文,进程运行是在进程的上下文中执行的。行是在进程的上下文中执行的。2.2 进进 程程 控控 制制(Process Control)2.2.1核心态和用户态和原语核心态和用户态和原语1.CPUCPU对对OSOS保护模式支持保护模式支持 Intel公司的80386及更高级的CPU可以提供程序代码4层不同等级的权力,包括有Ring0-3。Ring0拥有最高的运行优先权,它访问所有系统内存和所有的CPU指令,而Ring1-3访问权限受到不同限制。Windows 98/NT为了与基于RISC的结构上兼容只使用两个特权级别:Ring0和Ring3。2.核心态和用户态核心态和用户态 为了防止用户应用程序访问和或更改重要的操作系统数据,Windows98/NT、UNIX使用两种处理器访问模式:核心态和用户态。操作系统代码在核心态下运行,即在X86处理器Ring0运行,它有着最高的特权。而用户应用程序代码在用户态下运行,即在X86处理器Ring3中运行。内核内核-1用户应用程序(在Windows98/NT中以用户线程方式出现)运行用户程序一般代码时,它是在用户态下执行。但当程序要调用系统服务,例如要调用OS中负责从磁盘文件中读取数据的NT执行体例程时,它就要通过一条专门的指令(系统调用)来完成从用户态切换到核心态,OS根据该指令及有关参数,执行用户的请求服务。在服务完成后将处理器模式切换回用户态,并将控制返回用户线程。因此用户线程有时在核心态下执行,在核心态下执行的是调用操作系统有关功能模块的代码。核心态又称系统态、特态、管态用户态又称常态、目态、算态3.原语原语 原语是一种特殊的广义指令,它的功能是由系统通过一段不可分割的指令操作来完成,它又称原子操作,原语在核心态下完成。进程控制操作(创建、撤消、阻塞)大都为原语操作。2.2.2 进程控制原语进程控制原语 进程管理的主要任务是对进程状态进行控制,使得操进程管理的主要任务是对进程状态进行控制,使得操作系统能够掌握并控制进程的各种状态和状态之间的转换,实作系统能够掌握并控制进程的各种状态和状态之间的转换,实现进程的创建、结束、阻塞和唤醒、挂起和激活。现进程的创建、结束、阻塞和唤醒、挂起和激活。1.进程创建原语进程创建原语 操作系统为一个程序构建一个进程控制块并分配地操作系统为一个程序构建一个进程控制块并分配地址空间后,就创建了一个进程。址空间后,就创建了一个进程。操作系统创建进程主要步骤如下:操作系统创建进程主要步骤如下:(1)命名进程:为进程设置进程标志符;)命名进程:为进程设置进程标志符;(2)从)从PCB集合中为新进程申请一个空白集合中为新进程申请一个空白PCB;(3)确定进程的优先级;)确定进程的优先级;(4)为进程的程序段、数据段和用户栈分配内存空间;如果进程)为进程的程序段、数据段和用户栈分配内存空间;如果进程中需要共享某个已在内存的程序段,则必须建立共享程序段的中需要共享某个已在内存的程序段,则必须建立共享程序段的链接指针。链接指针。(5)为进程分配除内存外的其他各种资源。)为进程分配除内存外的其他各种资源。(6)初始化进程控制块,将进程的初始化信息写入进程控制块。)初始化进程控制块,将进程的初始化信息写入进程控制块。(7)如果就绪队列能够接纳新创建的进程,则将新进程插入到就)如果就绪队列能够接纳新创建的进程,则将新进程插入到就绪队列。绪队列。(8)通知操作系统的其他管理模块,如记账程序、性能监控程序)通知操作系统的其他管理模块,如记账程序、性能监控程序等。等。2.2.2 进程控制原语进程控制原语(续)(续)在操作系统中,进行资源管理和系统控制的进程为在操作系统中,进行资源管理和系统控制的进程为系统进程,系统进程执行系统代码,在操作系统生成时创建。系统进程,系统进程执行系统代码,在操作系统生成时创建。系统进程承担系统资源分配和管理,运行在系统空间。系统进程承担系统资源分配和管理,运行在系统空间。用户进程是用户为了完成自己的任务而创建的进程,用户进程是用户为了完成自己的任务而创建的进程,用户进程执行用户代码,运行在用户空间。用户进程执行用户代码,运行在用户空间。进程创建的时机进程创建的时机:
展开阅读全文