




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章进程管理
进程是操作系统中最重要的概念之一在现代计算机系统中,进程不仅是最基本的并发执行单位,而且也是分配资源、交换信息的基本单位。而进程管理则是操作系统中最重要且最复杂的管理。第二章进程管理1
§2.1前趋图一程序的顺序执行与特征1.
程序的顺序执行
一个程序通常可分成若干个程序段,它们必须按照某种先后次序执行,仅当前一操作执行完后,才能执行后继操作。§2.1前趋图2C1P1I1C1P1I1C1P1I2C2P2C1P1I1C1P1I1C1P1I2C2P23
程序顺序执行时的特征(1)顺序性。处理机的操作严格按照程序规定的顺序执行,即只有前一操作结束后,才能启动后一操作的执行;(2)封闭性。程序在封闭的环境下运行,并独占全机,因此机内资源的状态只有运行程序的操作才能改变它,其执行结果不受外界因素的影响;(3)可再现性。只要程序执行时环境和初始条件相同,程序经多次运行后所得的结果必然相同。程序顺序执行时的特征4514236789二
前趋图的定义前趋图是一个有向无环图,记为DAG。如图所示:有向无环图123456789514236789二前趋图的定义有向无环图123455
三
程序的并发执行与特征1虽然对于一个程序的输入、计算和打印必须顺序执行,但在对一批程序进行处理时,则可使上述三种操作并发执行,以提高系统的吞吐量。例如,输入程序在输入第三个程序(I3)的同时,计算程序可以正在对第二个程序进行计算(C2),而打印程序正在打印第一个程序(P1)的计算结果。如下图所示:I1I2I3I4C1C2C3C4P1P2P3P4程序段并发执行的有向图
三
程序的并发执行与特征I1I2I3I4C1C2C3C6
程序的并发执行(concurrence)指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发是指宏观上在一段时间内有多道程序在同时运行,而微观上这些程序是在交替地执行。
(并行(parallel)指两个或多个事件在同一时刻进行,例如,在具有中断的计算机系统中,CPU可以和I/O设备并行执行。
程序的并发执行虽然提高了系统的吞吐量,但也产生了下述一些新特征:程序的并发执行(concurrence)72.程序并发执行所带来的影响(特征)(1)间断性相互制约将导致并发程序具有“执行-暂停-执行”这种间断性的活动规律。(2)失去封闭性
程序在并发执行时,是多个程序共享一台机器,因而机内资源的状态将由多个程序来改变,因此使程序的运行已失去了封闭性,这样,某程序在执行时,也必然会受到其他程序的影响,例如,当处理机资源被其他程序占有时,某程序必须等2.程序并发执行所带来的影响(特征)8(3)不可再现性程序在并发执行时,也将失去其可再现性。例如,有两个循环程序A和B,它们共享一个变量n。程序A每执行一次时都要做n:=n+1操作;程序B则每执行一次都要执行print(n)操作,然后再将N置成“0”。如下程序段所示:varn:integer;beginn:=0;cobeginprogramA:beginrepeat…n:=n+1;remainderofprogramAuntilfalseend;programB:beginrepeat…printn;n:=0;remainderofprogramBuntilfalseend;coendend;(3)不可再现性程序在并发执行时,也将失去其可再现性。例9
§2.2进程的基本概念
由上所述可知,程序并发执行时,产生了一些新特征,致使一般的程序不能并发执行。例如,程序在执行中一旦受阻而停下来时,系统无法保留该程序的现场,因而也就无法再恢复该程序的现场并以继续执行。为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,而专门为之配置了一个称为“进程控制块”的数据结构。其中,存放了进程标识符、进程运行的当前状态、程序和数据的地址,以及能保存该程序运行时CPU的环境信息。由程序段、数据段及进程控制块三部分构成了进程的实体。§2.2进程的基本概念10一、进程的定义和特征
1.进程的定义
至此,已知程序并发执行产生了一系列新特点,为了能对并发程序的执行加以描述而引入了进程的概念。曾有许多人从不同角度对进程下过各种定义,其中较典型的进程定义有:
进程是程序的一次执行。
进程是一个程序及其数据,在处理机上顺序执行时所发生的活动。
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
进程是可并发执行的程序在一个数据集合上的运行过程。
第三个定义比较准确,它包含了进程的主要特征。这里,我们在该定义的基础上加以修改后,可把进程定义为:进程是程序的一次执行过程,是系统进行资源分配和调度的一个独立单位,动态产生和动态消亡,它可以和其他程序并发执行。一、进程的定义和特征112.进程的特征进程和程序是两个截然不同的概念。进程具有五个基本特征,而程序则没有。(1)
动态性进程的实质是程序的一次执行过程,因此,动态性是进程的最基本特征。动态性还表现为:“它由创建而产生,由调度而执行,由撤消而消亡”。可见,进程有一定的生命期,而程序只是一组有序指令的集合,并存放于某种介质上,本身并无运动的含义,因此是静态的。(2)并发性这是指多个进程能在一段时间内同时运行,并发性是进程的重要特征。引入进程的目的也正是为了使其程序能和其他进程的程序并发执行,而程序(没有建立进程)是不能并发执行的(由于程序不反映执行过程)。2.进程的特征12(3)
独立性
这是指进程是一个能独立运行、独立分配资源和独立调度的基本单位,凡未建立进程的程序,都不能作为一个独立的单位参加运行。(4)异步性
这是指进程按各自独立的、不可预知的速度向前推进,或说进程按异步方式运行。(5)结构特征
为使进程能独立运行,应为之配置一个称为“进程控制块”的数据结构,简称PCB。这样,从结构上看,进程是由程序段、数据段及PCB三部分组成,有人把这三部分称为“进程映象”。(UNIX称进程的映象)。(3)独立性这是指进程是一个能独立运行、独立分配资源和133进程和程序的联系与区别:
(1)联系。程序是构成进程的组成部分之一,一个进程的运行目标是执行它所对应的程序,如果没有程序,进程就失去了其实际存在的意义。从静态的角度看,进程是由程序、数据和进程控制块三部分组成的。
(2)区别。程序是静态的,而进程是动态的。进程既是程序的执行过程,因而进程是有生命期的,有诞生,亦有消亡。因此,程序的存在是永久的,而进程的存在是暂时的,动态地产生和消亡。一个进程可以执行一个或几个程序,一个程序亦可以构成多个进程。例如,一个编译进程在运行时,要执行词法分析、语法分析、代码生成和优化等几个程序,或者一个编译程序可以同时生成几个编译进程,为几个用户服务。进程具有创建其他进程的功能,被创建的进程称为子进程,创建者称为父进程,从而构成进程家族。3进程和程序的联系与区别:
(1)联系。程序是构成14二、进程的状态及其转换
进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态:
1
进程的基本状态(由进程运行的间断性,决定了进程至少具有下述三种基本状态)①就绪状态当进程已分配到除CPU以外的所有必要的资源后,只要能再获得处理机,便能立即执行,把进程这时的状态称为就绪状态。在一个系统中,可以有多个进程同时处于就绪状态,通常把它们排成一个队列,称为就绪队列。②执行状态指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程正在执行状态。③阻塞状态进程因发生某事件(如请求I/O、申请缓冲空间等)而暂停执行时的状态,亦即进程的执行处于受到阻塞,故称这种暂停状态为阻塞状态,有时也称为“等待”状态,或“睡眠”状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。二、进程的状态及其转换152进程状态的转换
就绪执行阻塞执行就绪阻塞进程调度时间片用完、请求I/O操作、P操作I/O完成、V操作挂起状态:系统需要进程释放某些资源。如系统内存空间不足,可用挂起原语将进程挂起,该进程从内存转到外存,将活动状态变为挂起状态,由就绪态挂起后转换为就绪挂起;由阻塞态挂起称为阻塞挂起。它们被激活后分别转换为就绪态和阻塞态。退出完成就挂等挂挂起激活挂起激活2进程状态的转换就绪执行阻塞执行就绪阻塞进程调度时间片用16三、进程控制块1.进程控制块的作用
为了描述和控制进程的运行,随时跟踪和记录各进程的变化情况,以及掌握进程间的相互关系,系统为每个进程配置了一个数据结构,该数据结构被称为进程控制块PCB(ProcessControlBlock)。所谓系统创建一个进程,就是由系统为某个程序设置一个PCB,用于对该进程进行控制和管理。进程任务完成,由系统收回其PCB,该进程便消亡。系统将根据某PCB而感知相应进程的存在,故说PCB是进程存在的唯一标志。2.进程控制块中的内容PCB中包含了进程的描述信息和控制信息。主要有:进程标识符、现行状态、现场保留区、程序与数据地址、互斥与同步机构、进程通信机构、进程优先数、资源清单、链接字、家族联系
进程控制块PCB是系统感知进程存在的唯一实体。三、进程控制块17四、进程的组成
进程由程序、数据和PCB三部分组成。PCB是进程的“灵魂”,由于进程控制块中保存有进程的地址信息,通过PCB可以得到该进程所对应的程序的存储位置。程序和数据是进程的“躯体”。由于现代操作系统提供程序共享的功能,这就要求程序是可重入程序,且与数据分离。所谓可重入程序是指“纯”代码程序,即在运行过程中不修改自身。四、进程的组成18
§2.3进程控制进程和处理机管理的一个重要任务是进程控制。所谓进程控制,就是系统使用一些具有特定功能的程序段(内核)来创建、撤消进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。即进程控制的主要任务是创建和撤消进程,以及实现进程的状态转换等。进程控制一般是由操作系统的内核来实现的。§2.3进程控制19OS内核
在进行层次设计时,往往指一些与硬件紧密相关的模块或运行频率较高的模块以及为许多模块公用的一些基本操作,安排在靠近硬件的层次中,并使它们常驻内层,以提高OS的运行效率,通常将这一部分称为OS的内核。亦即OS内核是OS常驻内存的程序和数据。OS内核20
一内核的基本功能内核包含系统支撑功能和资源管理功能中的许多基本操作。(1)中断处理。这是操作系统中内核的最基本功能,也是整个操作系统赖以活动的基础。通常,内核只对中断进行“有限的处理”,然后便转由有关进程继续处理;(2)进程控制和管理。进程管理的任务有四个:进程的建立和撤消;进程状态的转换。系统应能使进程从阻塞变为就绪,把活动进程挂起或把挂起的进程激活;进程调度。进行处理机的重新分配;控制进程的并发执行。保证进程间的同步,实现相互全作进程间的通信。(3)资源管理中的基本操作。包括对时钟、I/O设备和文件系统进行控制和管理的基本操作。
一内核的基本功能211特权指令特权指令是指只允许操作系统使用,而不允许一般用户使用的指令。如启动I/O设备的指令、取寄取器状态指令及对系统安全有影响的指令等。这些指令如果允许用户随便使用,就可能使系统陷入混乱。2.非特权指令特权指令以外的指令。非特权指令的执行不影响其他用户以及系统,如算术运算指令、逻辑运算指令、取操作数指令等。处理机的两种执行状态,用它们来区分某程序是否享有特权。3.核心态(管态)计算机的一种工作方式,在此方式下,可以执行任何指令,可以访问全部主存。OS在核心态下运行。4
用户态(目态)计算机的另一种工作方式,在此方式下,不允许执行特权指令,只允许访问受限定的主存。用户程序或其它系统程序在目态下运行。1特权指令特权指令是指只允许操作系统使用,而不允许一般用225
原语(primitive)完成某一特定功能的程序段,其执行是不可分割的。换言之,在一个操作中的所有动作,要么全做,要么全不做。原语可分为两类:一类是机器指令级的,其特点是执行期间不允许中断;另一类是功能级的,其特点是人作为原语的程序段不允许并发执行。这两类原语都在系统态下执行,且都是为了完成某个系统管理所需要的功能和被高层软件所调用。进程控制由原语实现。5
原语(primitive)完成某一特定功能的程序段23二、进程的创建和撤消原语1.
创建原语一个进程可借助于创建原语来创建一个新进程。创建一个新进程的主要工作是:
申请一空闲PCB→无空闲PCB,则创建失败;否则产生PID(进程标识)→申请必要的资源→初始化PCB→插入就绪队列2.
撤消进程原语找出被撤消进程的PCB→该进程若正在执行,则终止该进行的执行→该进程若有子进程,则撤消其所有子进程→将该进程所拥有的全部资源,归还给父进程或系统→将被撤消进程的PCB从所在队列(或链表)中清除,放回到空闲PCB队列。二、进程的创建和撤消原语24三、进程的阻塞和唤醒原语1.进程的阻塞原语
正在执行的进程,当出现请求操作系统服务、启动某种操作、新数据尚未到达、无新工作可做等事件时,由于无法继续运行,于是自己便通过调用block原语,把自己阻塞起来。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时进程还在执行,故而应先立即停止执行,把进程控制块中的现行状态由“执行”改为“阻塞”,并将它插入到阻塞队列。若系统中设置了由于不同事件而阻塞的多个阻塞队列,则应将该进程插入到具有相同事件的阻塞(等待)队列,最后,转进程调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,即保留被阻塞进程的处理机状态在PCB中,按新进程PCB中的处理机状态设置CPU状态。保存CPU现场→置该进程的状态→被阻塞进程入等待队列→转进程调度。三、进程的阻塞和唤醒原语252.进程的唤醒原语
当被阻塞进程所期待的事件出现,如I/O操作完成,其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语weakup(),将等待该事件的进程唤醒。唤醒原语的操作有:先把被阻塞进程从等待该事件的阻塞队列中移出,将其PCB的现行状态由阻塞改为就绪,然后再将该进程插到就绪队列中。
从等待队列中摘下被唤醒进程→置进程的状态→将被唤醒进程送入就绪队列→转进程调度或返回。应当指出:block原语和weakup原语是一对功能刚好相反的原语,因此,如果在某进程中调用了阻塞原语,则必须在与之相合作的另一进程或其他相关进程中调用唤醒原语来唤醒它,否则被阻塞进程将会因不能被唤醒而长久地处于阻塞状态,从而再无运行机会。2.进程的唤醒原语26
§2.4进程的互斥与同步
一、进程间的制约关系
在多道程序系统中,由于资源共享与进程合作,使诸进程之间可能产生两种形式的制约关系:1.间接相互制约
这种制约主要源于资源共享。例如,有两进程A和B,如果在A进程提出打印请求时,系统已将打印机分配给进程B,则进程A阻塞;一旦进程B将打印机释放,也就使进程A由阻塞改为就绪状态。2.直接相互制约
这种制约主要源于进程合作。例如,有一输入进程A通过单缓冲向进程B提供数据。当该缓冲空时,计算进程B因不能获得所需数据而阻塞,当进程A把数据送入缓冲时,便将B唤醒;反之,进程A因不能再向缓冲区投放数据而阻塞,当进程B将缓冲区内数据取走时唤醒A。§2.4进程的互斥与同步27
可见,诸进程在并发执行时,必须按照一定的次序执行。进程同步的定义如下:
进程同步指多个相关进程在执行次序上的协调。用于保证这种关系的相应机制称为进程的同步机制。例如,对于共享一个缓冲区的输入进程和计算进程,当输入进程未将数据送入缓冲区时,计算进程不能开动计算;同样,若计算进程未从缓冲区中取走数据时,输入进程不能再启动下一次的输入。缓冲区输入进程计算进程可见,诸进程在并发执行时,必须按照一定的次序执28二、临界区(criticalsection)1.临界资源:一次仅允许一个进程使用的资源。例如,有两个进程共享一个变量count:(R1和R2是处理机中的寄存器):
当两个进程按下述顺序执行时但若P1和P2按另一种顺序对count进行修改
P1:R1:=count;P1:R1:=count;
R1:=R1+1;P2:R2:=count;
count:=R1;P1:R1:=R1+1;count:=R1;
P2:R2:=count;P2:R2:=R2+1;count:=R2;
R2:=R2+1;虽然P1和P2都各自对count作了加
count:=R2;1操作,但最后的count却只增加了1。亦其结果使count增加了2;即发生了与执行顺序有关的错误。
二、临界区(criticalsection)29
2.
临界区:访问临界资源的那段代码。诸进程在访问临界资源时,必须互斥。我们把每个进程中访问临界资源的那段代码称为临界区。为了实现对临界区的互斥访问,应保证诸进程互斥地进入自己的临界区。为此,每个进程在进入其临界区前,必须先提出申请,经允许后方可进入。称用以实现此请求的代码段为进入区。显然,在临界区后还应跟上一段退出区。进程代码中的其它部分称为剩留区。这样一个循环进程可描述为
repeat
entrysection
criticalsection
exitsection
remaindersection
untilfalse2.临界区:访问临界资源的那段代码。诸进程在访问临界资303
进程互斥
不允许多于一个事件在同一时刻发生。亦即指在多道程序环境下,每次只允许一个进程对临界资源进行访问。为此必须使诸进程互斥地进入自己的临界区。综上,诸进程对临界资源的访问必须互斥。我们把每个进程中访问临界资源的那段代码称为临界区。显然,若能保证诸进程互斥进入自己的临界区,便可实现它对临界资源的互斥访问。进程互斥也可被称作是一种特殊形式的同步。3
进程互斥不允许多于一个事件在同一时刻发生。亦即指在314.同步机制应遵循的准则
为实现进程互斥与同步,系统中应设置专门的同步机制,所有同步机制都应遵循下述四条准则:(1)
空闲让进临界资源空闲时,允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。(2)
忙则等待当临界资源正被访问时,其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。(3)有限等待对要求访问临界资源的进程,应能在有限的时间内进入自己的临界区,以免陷入“死等”状态。(4)
让权等待当进程不能进入临界区时,应立即释放处理机,以免进程“忙等”。4.同步机制应遵循的准则32信号量管理相应的临界区的公有资源,它代表可用资源实体。(1)经典信号量机制
三、信号量机制1.
信号量(semaphore)信号量管理相应的临界区的公有资源,它代表可用资源实体。33(2)
计录型信号量机制计数信号量机制是一个不具有“忙等”现象的进程同步机制。计录型信号量是一个记录型的数据结构,包含两个数据项,它可描述为:typesemaphore=recordvalue:integer;L:listofprocess;end相应地,P(S)和V(S)操作可描述为:(2)
计录型信号量机制34procedureP(S)varS:semaphore;beginS.value:=S.value-1;ifS.value<0thenblock(S.L)end;procedureV(S)varS:semaphore;beginS.value:=S.value+1;ifS.value≤0thenweakup(S.L)end;procedureP(S)35varmutex:semaphore:=1;begincobeginprocess1:beginrepeat
P(mutex);criticalsecion;V(mutex);remaindersection;untilfalseendprocess2:beginrepeat
P(mutex);criticalsection;V(mutex);remaindersection;untilfalseendcoendEnd
利用信号量实现进程互斥varmutex:semaphore:=1;利用信号量实现36说明:①mutex为互斥信号量,其取值范围为(1,0,-1);其中mutex=1表示进程1、进程2都未进入类名为S的临界区,mutex=0表示进程1或进程2已进入类名为S的临界区,mutex=-1表示进程1和进程2中,一个进程已进入临界区,而另一个进程等待进入临界区。若有n个并发进程,有一个临界资源,则信号量取值范围-(n-1)——1,n-1表示阻塞进程的个数。由此可见,在记录型信号量机制中,如果S.value的初值为1,表示只允许一个进程访问临界资源,此时的信号量便转化为上述互斥信号量。②P(mutex)和V(mutex)必须成对地出现。P、V操作是不可分割的。P、V操作“不可分割”的含义是指在同一个信号量上不能同时执行一个以上的P或V操作,亦即一个P或V操作的执行必须在另一个操作执行完毕以后进行,否则会产生与时间有关的错误。缺少P(mutex)将会引起系统混乱,不能保证对临界资源的互斥访问;而缺V(mutex)将会使该临界资源永久不被释放,从使而因等待该资源而阻塞的进程不再被唤醒。说明:①mutex为互斥信号量,其取值范围为(1,0,-1)37管程用信号量可以实现进程间的同步与互斥,但信号量的操作分散在各个进程中,不利于系统对临界资源的集中管理。管程是指把信号量与操作原语封装在一个对象内部,即将共享资源以及针对共享资源的所有操作集中在一个模块中。管程可以用函数库的形式实现,一个管程就是一个基本程序单位,可以单独编译。所有进程要访问临界资源时,要经过管程才能进入,而管程每次只允许一个进程进入,从而实现了进程互斥。管程用信号量可以实现进程间的同步与互斥,但信号量的操作分散在38
§2.5进程通信一、
低级和高级进程通信方式
虽然一个作业可分为若干个能并发执行的进程,但它们应经常保持联系,以便协调一致地完成指定任务。这种联系是指在进程之间交换一定数量的信息。信息量可多可少,多是指能交换成千个数据,少则仅是一个状态或数值。显然,进程同步是一种简单通信方式,进程通过修改信号量,可向另一进程表明临界资源是否可用。在生产者-消费者问题中,可由生产者进程向消费者进程传送一批消息,或者说,生产者通过缓冲池与消费者通信。应当指出,信号量机制作为同步工具是卓有成效的,但作为通信工具则不够理想,因为其效率甚低,因此,称为低级通信方式。§2.391低级进程通信
进程的互斥和同步可归结为低级进程通信。在进程互斥中进程通过修改信号量,向其他进程表明临界资源是否可用;在生产者-消费者问题中,生产者通过缓冲池与消费者通信。应当指出,信号量机制作为同步工具是卓有成效的,但作为通信工具则不够理想,主要表现在:
(1)效率低生产者每次只能向缓冲区中投放一个消息,消费者每次只能从缓冲区中取得一个消息;
(2)通信对用户不透明即设置共享数据结构,数据的传送、进程的互斥与同步都是由程序员去实现,操作系统只提供共享存储器。
简言之,这种通信方式的效率低,不方便,故只适用于传送少量信息的情况。1低级进程通信进程的互斥和同步可归结为低级进程通信。402.
高级进程通信
以较高的效率传送大量数据的一种通信方式。高级通信的目的不是为了控制进程的执行速度,而是为了交换信息。在这种通信方式中,程序员可直接利用系统提供的一组通信命令(通信原语),高效地传送大量数据,操作系统隐藏了实现通信的细节,这大大简化了通信程序编制上的复杂性。高级通信原语不仅保证相互制约的进程之间的正确关系,还同时实现了进程之间的信息交换。目前常用的高级通信机构有消息缓冲通信、管道通信和信箱通信。2.
高级进程通信以较高的效率传送大量数据的一种41二、进程通信的类型(1)共享存储区内存中开辟一个共享存储区,各进程通过该储存区进行通信.(2)消息传递系统
通过os提供的一组消息通信命令来实现信息的传递.
直接通信方式:os提供send和receive实现.
间接通信方式:通过共享信箱来实现.二、进程通信的类型42(3)
管道通信管道通信是由UNIX首创的,是一种重要的通信方式。管道通信以文件系统为基础。所谓管道,就是连接两个进程的一个打开的共享文件(pipes),专用于进程之间进行数据通信。发送进程可以源源不断地从管道一端写入数据流,接收进程在需要时可以从管道的另一端读出数据。在对管道文件进行读写操作时,发送进程和接收进程要实施正确的同步和互斥,以确保通信的正确性。管道通信的实质是利用外存来进行数据通信,故具有传送数据量大的优点,但管道通信速度较慢。(3)管道通信43
§2.6进程调度一、
调度的基本概念
在多道程序环境下,进程数目往往多于处理机数目,致使它们争用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由进程调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率及改善系统性能(吞吐量、响应时间)在很大程序上取决于进程调度性能的好坏,因而进程调度便成为操作系统设计的中心问题之一。§2.6进程44三级调度(1)
高级调度(宏观调度)又称作业调度,如几分钟才调度一次,且调度算法复杂。(2)低级调度(微观调度)又称为进程调度。(3)中级调度又称进程对换,按一定算法在内存和外存之间进行进程对换,其目的是为了使内存紧张的情况得以缓和。中级调度的主要工作是将内存中处于阻塞状态的某些进程换至外存,腾出内存空间以便将外存上已具备执行条件的进程换入内存,准备执行。进程在运行期间可能要经历多次换进换出,在分时系统中常采用中级调度。三级调度452.引起进程调度的原因(1)
正在执行的进程执行完毕(处理机要分配给新进程);(2)
执行中进程自己调用阻塞原语将自己阻塞起来而进入等待状态;(3)执行进程调用了P、V操作。P-因资源不足而被阻塞,V-激活等待资源的进程队列;(4)执行中进程提出I/O请求;(5)
时间片用完(分时系统);(6)执行完系统调用后。执行完系统调用后的系统程序返回用户进程时,这时可看作系统进程执行完毕,从而可选择一新的用户进程执行;(7)
就绪队列中的某进程的优先级变得高于当前执行进程的优先级,从而也将引发进程调度。2.引起进程调度的原因463.进程调度的方式(1)非剥夺方式以这种调度方式运行时,不允许强行剥夺已经分配给某进程的处理机。例如,调度程序一旦把处理机分配给某进程后应让它一直运行下去,直至进程完成或发生某事件而阻塞时,才把处理机分配给另一进程。这种调度方式的优点是简单、系统开销小,但却可能导致系统性能的恶化,表现为:①
当一个紧急任务到达时,它不能立即投入运行,以至于延误时机;②
若干个后到的短作业,需等待先到的长作业运行完毕,致使短作业的周转时间较长。例如,有三个进程P1、P2、P3先后(但又几乎在同时)到达,它们分别需要20、4和2个单位时间运行完毕。若它们就按P1、P2、P3的顺序执行,且不可剥夺,则三进程各自的周转时间分别为20、24和26个单位时间,平均周转时间是(20+24+26)/3=70/3个单位时间。这种非剥夺方式对短作业P3而言是不公平的。
非剥夺方式在批处理系统中常用。3.进程调度的方式47(2)
剥夺调度方式这是指进程正在运行时,系统可根据某种原则,剥夺已分配给它的处理机,并再分配给其他进程的一种调度方式。剥夺的原则有:①优先权原则优先权高的进程可以剥夺优先权低的进程而运行;②短进程优先原则短进程到达后可以剥夺长进程的运行;③时间片原则一个时间片运行完后重新调度。下面我们仍以上述三个进程的情况为例,说明基于时间片原则的剥夺调度方式。由下图可以看出,P1、P2、P3的周转时间分别为26、10、6个单位时间,而平均周转时间已由剥夺方式的70/3,降低为(26+10+6)/3=14个单位时间。设时间片为2个单位时间
基于时间片原则的剥夺调度方式示例P1P2P1P1P2P1P1P1…P1(2)
剥夺调度方式这是指进程正在运行时,系统可根据483与调度算法和性能有关的术语(1)周转时间(TurnaroundTime)周转时间是批处理系统中衡量调度性能的一个重要指标。对于一个作业来讲,从提交开始到完成为止的这段时间间隔称为该作业的周转时间。它包括:①作业在外存后备队列上等待进入内存的时间;②在就绪队列上等待获得处理机的时间;③在CPU上的执行时间;④等待I/O操作完成的时间。对于一个进程来说,它的周转时间是从第一次进入就绪队列开始,到进程运行完毕所经历的时间。当一个作业转换为一个进程时,进程的周转时间便是作业周转时间中的后三部分之和。3与调度算法和性能有关的术语49(2)响应时间(responseTime)它是分时系统中衡量调度性能的一个重要指标。所谓响应时间,是指从提交一个请求开始到首次产生响应为止(显示出结果)的一段时间间隔。它包括:①把请求信息从键盘传送到计算机的时间;②计算机对请求进行处理的时间;③再将响应送回终端的时间。(3)CPU-I/O执行期通常一个进程在运行时,会交替地处于两种工作状态:CPU忙或称CPU运行期(CPUburst);I/O忙(或称I/O运行期)。CPU执行期的长短因进程而异,对于含有大量I/O操作的作业(简称I/O型作业),每个CPU执行期通常很短,例如为几十毫秒;对那些需要长期利用CPU进行计算的作业(简称计算型作业),CPU执行期可能长达数小时。(2)响应时间(responseTime)它是分时系统50二、进程调度算法对于不同的系统及系统目标,应采用不同的调度算法。例如,在批处理系统中,如果希望照顾到为数众多的短作业,应采取短进程优先的进程调度算法;在分时系统中,为了保证具有合理的响应时间,应采用轮转法。下面分别介绍几种进程调度算法。
1先来先服务(FCFS或FIFO)算法2最短CPU运行期优先调度算法(SCBF-ShortestCPUBurstFirst)
二、进程调度算法513
最高优先数优先调度算法
这是在批处理系统和实时系统中常用的一种调度算法。它是把处理机分配给就绪队列中具有最高优先权的进程。该算法的关键是如何确定进程的优先权,常用以下两种方法:(1)静态优先数。静态优先权是在创建进程时确定的,在整个运行期间不再改变。确定进程优先权的依据有:进程类型(通常系统进程的优先权高于用户进程的优先权)、进程对资源的要求(如估计的运行时间、内存需要量等)、用户要求的优先级(静态优先权法简单易行,但不够准确)。3
最高优先数优先调度算法52基于静态优先权的调度算法实现简单,系统开销小,但由于静态优先权一旦确定之后,直到执行结束为止始终保持不变,从而使系统效率较低,调度性能不高。现在在操作系统中,如使用优先权调度算法的话,大多采用动态优先权算法。(2)动态优先数。动态优先权是基于某种原则,使进程的优先权随时间而改变,例如在就绪队列中的进程,其优先权以速度a增加,若再令正在执行进程的优先权以速度b下降,便可防止一个长作业长期垄断处理机。基于静态优先权的调度算法实现简单,系统开销小,但由于静态优先534
时间片轮转法
在分时系统中都采用时间片轮转法。在简单的轮转法中,系统将所有就绪进程按FIFO规则排成一个队列,把CPU分配给队首进程,并规定它执行一个时间片。当时间片完时,系统剥夺该进程珠运行并将它送就绪队列末尾,重新把处理机分配给就绪队列中新的队首进程,同样也让它执行一个时间片。这样,就绪队列中的所有进程在一给定时间内,均可获得一个时间片的处理机执行时间。4
时间片轮转法545多级反馈队列(目前分时系统将之与时间片结合)
多级反馈队列方式系统中,设置了多个就绪队列,并赋予各队列以不同的优先权。系统在调度时,总是先调度第一级队列上的进程执行:仅当第一级队列空时,才调度第二级队列上的进程执行;类推之,仅当第1~(n-1)级队列都空时,才调度第n级队列中的进程执行。如果处理机正在服务于第i级队列中的进程又有新进程进入较高级队列,则此时将引起重新调度,把处理机分配给新进程。这种调度算法能较好地满足各种用户的要求。5多级反馈队列(目前分时系统将之与时间片结合)556.响应比高者优先(HRN)HighestResponse-ratio
设响应比为R,则一种常用的响应比的计算方法如下:R=(W+T)/T=1+W/TW:在后备队列中等待的时间;T:该作业估计要执行的时间。这样,即使是长作业,随着它等待时间的增加,W/T也就增加,R也就随之增加,也就有机会获得调度而执行。6.响应比高者优先(HRN)HighestRespons56§2.7线程
引入线程是为了减少程序并发执行时付出的时空开销,使系统具有更好的并发性。线程仅拥有在运行中必不可少的资源.
具有动态性、并发性和结构性,还有共享性。同一进程中的所有线程共享进程资源.线程:是调度的单位,进程是分配资源的单位类型:(1)内核级线程:可以存在于系统进程和用户进程中,它们的创建、撤消和切换都由内核实现。(2)用户级线程:仅存在于用户进程中.(3)混合式线程:§2.7线程
引入线程是为了减少程序并发执行时付出57
§2.8死锁一、死锁的概念在多道程序系统中,可借助于多个进程的并发执行来改善系统的资源利用率和提高系统的处理能力。但可能发生一种危险——死锁。1.死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作这些进程都将永远不能再向前推进。产生死锁的原因可归结为以下两点:(1)竞争资源。为多个进程所共享的资源不足,引起它们对资源的竞争而产生死锁;(2)进程推进顺序不当。进程运动过程中,请求和释放资源的顺序不当,而导致进程死锁。2.死锁的起因(1)竞争资源引起死锁(2)进程推进顺序不当引起死锁§2.583.产生死锁的四个必要条件(1)互斥条件并发进程所要求和占有的资源是不能同时被两个以上进程使用或操作的,进程对它所需要的资源进行排它性控制,即进程间必须互斥使用资源。(2)请求和保持条件(部分分配条件)进程每次申请它所需要的一部分资源,在等待新资源的同时,继续占用已分配到的资源。即进程保持已占用资源,等待分配附加资源。(3)不剥夺条件进程所获得的资源在未使用完毕之前,不能被其它进程强行剥夺,而只能由获得该资源的进程自己释放。即进程已获得资源,只能在使用完时自行释放。(4)
环路等待条件进程资源图构成的有向环路(在发生死锁时,必然存在一个进程——资源环形链,即进程集合{P0,P1,P2,…,Pn}中的P0正在等待一个P1占用的资源,P1正在等待一个P2占用的资源……Pn正在等待一个P0占用的资源。3.产生死锁的四个必要条件59二、死锁的处理解决死锁的方法一般可分为预防死锁、避免死锁、检测死锁、解除死锁(恢复)四种,由于检测死锁与解除死锁的方法通常必须联合使用,故有些教材将解决死锁的方法分为预防、避免、检测和恢复三种。(一)预防死锁通过设置某些限制条件,以破坏产生死锁的四个必要条件中的一个或几个,来防止发生死锁。预防死锁方法已得到广泛应用,但可能导致资源利用率很低。我们可以通过使(2、(3)、(4)三个必要条件不能成立的方法,来预防死锁的产生,至于必要条件(1),由于是设备的固有特性,不仅不能改变,还应设法加以保证。二、死锁的处理601.摒弃“请求和保持”(部分分配)条件为了摒弃这一条件,系统要求所有进程都一次性地申请其所需的全部资源,若系统拥有足够的资源分配给进程时,便把进程所需资源分配给它,这样,该进程在整个运行期间,便不会再提出资源请求,从而摒弃了请求条件,但只要有一种资源的要求不能满足,则已有的其他资源也全部不分配给该进程,让进程等待。由于在等待期间的进程不占有任何资源,因此摒弃了保持条件,从而可以避免发生死锁。这种方法的优点是简单,易于实现,且很安全;但缺点也极其明显:(1)
资源严重浪费:一个进程一次获得共所需的全部资源,严重地恶化了系统的资源利用率;(2)
进程推迟运行:仅当进程获得其所需全部资源后,方能开始运行,但可能有某些资源长期被其它进程占用,致使进程迟迟不能运行。1.摒弃“请求和保持”(部分分配)条件612
摒弃“不剥夺”条件该策略规定,一个已保持了某些资源的进程,若新的资源要求不能立即得到满足,它必须释放已保持的所有资源,以后需要时再重新申请。这意味着,进程已占有资源在运行过程中可被剥夺,从而摒弃了“不剥夺条件”。这种策略实现起来比较复杂,且要付出很大代价。因为一个资源在使用一段时间后被释放,可能会造成前阶段工作的失效。此外,该策略还可能由于反复地申请和释放资源,使进程的执行无限推迟。这不仅延长了进程的周转时间,也增加了系统开销。2
摒弃“不剥夺”条件623.摒弃“环路等待”条件该策略规定,系统将所有的资源按类型进行线性排队,并赋予不同的序号。例如,令输入机的序号为1,打印机的序号为2,穿孔机为3,磁带机为4,磁盘为5。所有进程对资源请求,必须严格按资源序号递增的顺序提出,这样在所形成的资源分配图中不再可能出现环路,因而摒弃了“环路等待”条件。在采用这种策略时,由于总有一个进程占据了较高序号的资源,它继续请求的资源必然是空闲的,因此进程可以一直向前推进。该策略较之前两种策略,在资源利用率、系统吞吐量上都有显蓍提高,但也存在不述严重问题:(1)
为系统中各种资源类型分配的序号,必须相对稳定,这就限制了新设备类型的增加;(2)尽管在为资源分配序号时,已考虑到大多数作业实际使用这些资源的顺序,但也经常会发生作业使用资源的顺序与系统规定顺序不同的情况,造成资源的浪费
3.摒弃“环路等待”条件63(二)避免死锁在预防死锁中所采取的几种策略,都施加了较强的限制条件,因而严重地损害了系统性能。而避免死锁方法所施加的限制条件较弱,可能获得较为满意的系统性能。死锁避免可被称为动态预防,因为系统采用动态分配资源的方法,在分配过程中预测出死锁发生的可能性并加以避免。这种方法中把运行中的系统归为下述两种状态:(二)避免死锁641.安全与不安全状态(1)安全状态在避免死锁方法中,系统允许进程动态地申请资源。系统在为进程分配资源前,要先对系统的安全性进行计算。若为进程分配了其所需的资源后,系统仍处于安全状态,那么才可将资源分配给进程。所谓安全状态,是指系统能按某种进程推进顺序(P1,P2,…,Pn)(称<P1,P2,…,Pn>为安全序列),来为每个进程分配其所需资源,直至最大需求,使每个进程都能顺利完成(即所有并发进程都在该序列中)。若系统不存在这样一个安全序列,则称系统处于不安全状态。只要系统处于安全状态,系统便可避免进入死锁状态。因此,避免死锁的实质在于如何使系统不进入不安全状态。1.安全与不安全状态65(2)
安全状态之例假定系统有三个进程P1、P2、P3,共有12台磁带机。进程P1、P2、P3分别要求10台、4台和9台。设在T0时刻进程P1、P2、P3已分别获得5台、2台和2台,尚有3台空闲磁带机未分配出去。分配情况如下表所示:进程号最大需求量已分配未分配P11053P242P392(2)
安全状态之例进程号最大需求量已分配未分配66经分析发现,在T0时刻系统是安全的,因为此时存在一个安全序列<P2,P1,P3>,即只要系统按此进程顺序分配资源,每个进程就都可顺利完成。例如:将剩余的磁带机取2台分配给P2,使这继续运行,待P2完成便使可用资源增至5台,再将它们全部分配给P1,待P1完成后释放出10台磁带机,P3便可获得足够的资源,从而使P1、P2、P3三个进程都能顺利完成。经分析发现,在T0时刻系统是安全的,因为此时存在一个安全序列67(3)向不安全状态的转换
如果在T0时刻以后,P3请求1台磁带机,若系统此时把剩余3台中的1台分配给P3,则系统进入不安全状态。因为,把未分配的2台分配给P2,而P2完成后只能释放出4台,既不能满足P3,从而它们都无法推进到完成,于是,系统进入了不安全状态。由此可见,在P3请求资源时,尽管系统中尚有可用的磁带机,但却不能为它分配,而需让它一直等待到P1、P2完成,释放出资源后,再将足够的资源分配给P3,它才能顺利完成。.银行家算法(3)向不安全状态的转换68三、检测死锁检测死锁,系统必须:(1)保存有关资源的请求和分配信息;(2)提供一种算法,以利用这些信息来检测系统是否已进入死锁状态。检测死锁算法主要是检查系统中进程是否有循环等待,如可利用资源分配图进行检查。
三、检测死锁69PR1R2
Q资源分配图进程死锁状态的示意图PR1R2Q资源分配图进程死锁状态的示意图70四、死锁的解除当发现有进程死锁后,便应立即把它从死锁状态中解脱出来,常采用的两种方法是:(1)剥夺资源。从其它进程剥压足够数量的资源给死锁进程,以解除死锁状态;(2)撤消进程。最简单的撤消进程的方法是使全部死锁进程都夭折掉;稍为温和一点的方法是按照某种顺序逐个地撤消进程,直至有足够的资源可用,死锁状态消除为止。
四、死锁的解除71
第二章进程管理
进程是操作系统中最重要的概念之一在现代计算机系统中,进程不仅是最基本的并发执行单位,而且也是分配资源、交换信息的基本单位。而进程管理则是操作系统中最重要且最复杂的管理。第二章进程管理72
§2.1前趋图一程序的顺序执行与特征1.
程序的顺序执行
一个程序通常可分成若干个程序段,它们必须按照某种先后次序执行,仅当前一操作执行完后,才能执行后继操作。§2.1前趋图73C1P1I1C1P1I1C1P1I2C2P2C1P1I1C1P1I1C1P1I2C2P274
程序顺序执行时的特征(1)顺序性。处理机的操作严格按照程序规定的顺序执行,即只有前一操作结束后,才能启动后一操作的执行;(2)封闭性。程序在封闭的环境下运行,并独占全机,因此机内资源的状态只有运行程序的操作才能改变它,其执行结果不受外界因素的影响;(3)可再现性。只要程序执行时环境和初始条件相同,程序经多次运行后所得的结果必然相同。程序顺序执行时的特征75514236789二
前趋图的定义前趋图是一个有向无环图,记为DAG。如图所示:有向无环图123456789514236789二前趋图的定义有向无环图1234576
三
程序的并发执行与特征1虽然对于一个程序的输入、计算和打印必须顺序执行,但在对一批程序进行处理时,则可使上述三种操作并发执行,以提高系统的吞吐量。例如,输入程序在输入第三个程序(I3)的同时,计算程序可以正在对第二个程序进行计算(C2),而打印程序正在打印第一个程序(P1)的计算结果。如下图所示:I1I2I3I4C1C2C3C4P1P2P3P4程序段并发执行的有向图
三
程序的并发执行与特征I1I2I3I4C1C2C3C77
程序的并发执行(concurrence)指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发是指宏观上在一段时间内有多道程序在同时运行,而微观上这些程序是在交替地执行。
(并行(parallel)指两个或多个事件在同一时刻进行,例如,在具有中断的计算机系统中,CPU可以和I/O设备并行执行。
程序的并发执行虽然提高了系统的吞吐量,但也产生了下述一些新特征:程序的并发执行(concurrence)782.程序并发执行所带来的影响(特征)(1)间断性相互制约将导致并发程序具有“执行-暂停-执行”这种间断性的活动规律。(2)失去封闭性
程序在并发执行时,是多个程序共享一台机器,因而机内资源的状态将由多个程序来改变,因此使程序的运行已失去了封闭性,这样,某程序在执行时,也必然会受到其他程序的影响,例如,当处理机资源被其他程序占有时,某程序必须等2.程序并发执行所带来的影响(特征)79(3)不可再现性程序在并发执行时,也将失去其可再现性。例如,有两个循环程序A和B,它们共享一个变量n。程序A每执行一次时都要做n:=n+1操作;程序B则每执行一次都要执行print(n)操作,然后再将N置成“0”。如下程序段所示:varn:integer;beginn:=0;cobeginprogramA:beginrepeat…n:=n+1;remainderofprogramAuntilfalseend;programB:beginrepeat…printn;n:=0;remainderofprogramBuntilfalseend;coendend;(3)不可再现性程序在并发执行时,也将失去其可再现性。例80
§2.2进程的基本概念
由上所述可知,程序并发执行时,产生了一些新特征,致使一般的程序不能并发执行。例如,程序在执行中一旦受阻而停下来时,系统无法保留该程序的现场,因而也就无法再恢复该程序的现场并以继续执行。为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,而专门为之配置了一个称为“进程控制块”的数据结构。其中,存放了进程标识符、进程运行的当前状态、程序和数据的地址,以及能保存该程序运行时CPU的环境信息。由程序段、数据段及进程控制块三部分构成了进程的实体。§2.2进程的基本概念81一、进程的定义和特征
1.进程的定义
至此,已知程序并发执行产生了一系列新特点,为了能对并发程序的执行加以描述而引入了进程的概念。曾有许多人从不同角度对进程下过各种定义,其中较典型的进程定义有:
进程是程序的一次执行。
进程是一个程序及其数据,在处理机上顺序执行时所发生的活动。
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
进程是可并发执行的程序在一个数据集合上的运行过程。
第三个定义比较准确,它包含了进程的主要特征。这里,我们在该定义的基础上加以修改后,可把进程定义为:进程是程序的一次执行过程,是系统进行资源分配和调度的一个独立单位,动态产生和动态消亡,它可以和其他程序并发执行。一、进程的定义和特征822.进程的特征进程和程序是两个截然不同的概念。进程具有五个基本特征,而程序则没有。(1)
动态性进程的实质是程序的一次执行过程,因此,动态性是进程的最基本特征。动态性还表现为:“它由创建而产生,由调度而执行,由撤消而消亡”。可见,进程有一定的生命期,而程序只是一组有序指令的集合,并存放于某种介质上,本身并无运动的含义,因此是静态的。(2)并发性这是指多个进程能在一段时间内同时运行,并发性是进程的重要特征。引入进程的目的也正是为了使其程序能和其他进程的程序并发执行,而程序(没有建立进程)是不能并发执行的(由于程序不反映执行过程)。2.进程的特征83(3)
独立性
这是指进程是一个能独立运行、独立分配资源和独立调度的基本单位,凡未建立进程的程序,都不能作为一个独立的单位参加运行。(4)异步性
这是指进程按各自独立的、不可预知的速度向前推进,或说进程按异步方式运行。(5)结构特征
为使进程能独立运行,应为之配置一个称为“进程控制块”的数据结构,简称PCB。这样,从结构上看,进程是由程序段、数据段及PCB三部分组成,有人把这三部分称为“进程映象”。(UNIX称进程的映象)。(3)独立性这是指进程是一个能独立运行、独立分配资源和843进程和程序的联系与区别:
(1)联系。程序是构成进程的组成部分之一,一个进程的运行目标是执行它所对应的程序,如果没有程序,进程就失去了其实际存在的意义。从静态的角度看,进程是由程序、数据和进程控制块三部分组成的。
(2)区别。程序是静态的,而进程是动态的。进程既是程序的执行过程,因而进程是有生命期的,有诞生,亦有消亡。因此,程序的存在是永久的,而进程的存在是暂时的,动态地产生和消亡。一个进程可以执行一个或几个程序,一个程序亦可以构成多个进程。例如,一个编译进程在运行时,要执行词法分析、语法分析、代码生成和优化等几个程序,或者一个编译程序可以同时生成几个编译进程,为几个用户服务。进程具有创建其他进程的功能,被创建的进程称为子进程,创建者称为父进程,从而构成进程家族。3进程和程序的联系与区别:
(1)联系。程序是构成85二、进程的状态及其转换
进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态:
1
进程的基本状态(由进程运行的间断性,决定了进程至少具有下述三种基本状态)①就绪状态当进程已分配到除CPU以外的所有必要的资源后,只要能再获得处理机,便能立即执行,把进程这时的状态称为就绪状态。在一个系统中,可以有多个进程同时处于就绪状态,通常把它们排成一个队列,称为就绪队列。②执行状态指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程正在执行状态。③阻塞状态进程因发生某事件(如请求I/O、申请缓冲空间等)而暂停执行时的状态,亦即进程的执行处于受到阻塞,故称这种暂停状态为阻塞状态,有时也称为“等待”状态,或“睡眠”状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。二、进程的状态及其转换862进程状态的转换
就绪执行阻塞执行就绪阻塞进程调度时间片用完、请求I/O操作、P操作I/O完成、V操作挂起状态:系统需要进程释放某些资源。如系统内存空间不足,可用挂起原语将进程挂起,该进程从内存转到外存,将活动状态变为挂起状态,由就绪态挂起后转换为就绪挂起;由阻塞态挂起称为阻塞挂起。它们被激活后分别转换为就绪态和阻塞态。退出完成就挂等挂挂起激活挂起激活2进程状态的转换就绪执行阻塞执行就绪阻塞进程调度时间片用87三、进程控制块1.进程控制块的作用
为了描述和控制进程的运行,随时跟踪和记录各进程的变化情况,以及掌握进程间的相互关系,系统为每个进程配置了一个数据结构,该数据结构被称为进程控制块PCB(ProcessControlBlock)。所谓系统创建一个进程,就是由系统为某个程序设置一个PCB,用于对该进程进行控制和管理。进程任务完成,由系统收回其PCB,该进程便消亡。系统将根据某PCB而感知相应进程的存在,故说PCB是进程存在的唯一标志。2.进程控制块中的内容PCB中包含了进程的描述信息和控制信息。主要有:进程标识符、现行状态、现场保留区、程序与数据地址、互斥与同步机构、进程通信机构、进程优先数、资源清单、链接字、家族联系
进程控制块PCB是系统感知进程存在的唯一实体。三、进程控制块88四、进程的组成
进程由程序、数据和PCB三部分组成。PCB是进程的“灵魂”,由于进程控制块中保存有进程的地址信息,通过PCB可以得到该进程所对应的程序的存储位置。程序和数据是进程的“躯体”。由于现代操作系统提供程序共享的功能,这就要求程序是可重入程序,且与数据分离。所谓可重入程序是指“纯”代码程序,即在运行过程中不修改自身。四、进程的组成89
§2.3进程控制进程和处理机管理的一个重要任务是进程控制。所谓进程控制,就是系统使用一些具有特定功能的程序段(内核)来创建、撤消进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。即进程控制的主要任务是创建和撤消进程,以及实现进程的状态转换等。进程控制一般是由操作系统的内核来实现的。§2.3进程控制90OS内核
在进行层次设计时,往往指一些与硬件紧密相关的模块或运行频率较高的模块以及为许多模块公用的一些基本操作,安排在靠近硬件的层次中,并使它们常驻内层,以提高OS的运行效率,通常将这一部分称为OS的内核。亦即OS内核是OS常驻内存的程序和数据。OS内核91
一内核的基本功能内核包含系统支撑功能和资源管理功能中的许多基本操作。(1)中断处理。这是操作系统中内核的最基本功能,也是整个操作系统赖以活动的基础。通常,内核只对中断进行“有限的处理”,然后便转由有关进程继续处理;(2)进程控制和管理。进程管理的任务有四个:进程的建立和撤消;进程状态的转换。系统应能使进程从阻塞变为就绪,把活动进程挂起或把挂起的进程激活;进程调度。进行处理机的重新分配;控制进程的并发执行。保证进程间的同步,实现相互全作进程间的通信。(3)资源管理中的基本操作。包括对时钟、I/O设备和文件系统进行控制和管理的基本操作。
一内核的基本功能921特权指令特权指令是指只允许操作系统使用,而不允许一般用户使用的指令。如启动I/O设备的指令、取寄取器状态指令及对系统安全有影响的指令等。这些指令如果允许用户随便使用,就可能使系统陷入混乱。2.非特权指令特权指令以外的指令。非特权指令的执行不影响其他用户以及系统,如算术运算指令、逻辑运算指令、取操作数指令等。处理机的两种执行状态,用它们来区分某程序是否享有特权。3.核心态(管态)计算机的一种工作方式,在此方式下,可以执行任何指令,可以访问全部主存。OS在核心态下运行。4
用户态(目态)计算机的另一种工作方式,在此方式下,不允许执行特权指令,只允许访问受限定的主存。用户程序或其它系统程序在目态下运行。1特权指令特权指令是指只允许操作系统使用,而不允许一般用935
原语(primitive)完成某一特定功能的程序段,其执行是不可分割的。换言之,在一个操作中的所有动作,要么全做,要么全不做。原语可分为两类:一类是机器指令级的,其特点是执行期间不允许中断;另一类是功能级的,其特点是人作为原语的程序段不允许并发执行。这两类原语都在系统态下执行,且都是为了完成某个系统管理所需要的功能和被高层软件所调用。进程控制由原语实现。5
原语(primitive)完成某一特定功能的程序段94二、进程的创建和撤消原语1.
创建原语一个进程可借助于创建原语来创建一个新进程。创建一个新进程的主要工作是:
申请一空闲PCB→无空闲PCB,则创建失败;否则产生PID(进程标识)→申请必要的资源→初始化PCB→插入就绪队列2.
撤消进程原语找出被撤消进程的PCB→该进程若正在执行,则终止该进行的执行→该进程若有子进程,则撤消其所有子进程→将该进程所拥有的全部资源,归还给父进程或系统→将被撤消进程的PCB从所在队列(或链表)中清除,放回到空闲PCB队列。二、进程的创建和撤消原语95三、进程的阻塞和唤醒原语1.进程的阻塞原语
正在执行的进程,当出现请求操作系统服务、启动某种操作、新数据尚未到达、无新工作可做等事件时,由于无法继续运行,于是自己便通过调用block原语,把自己阻塞起来。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时进程还在执行,故而应先立即停止执行,把进程控制块中的现行状态由“执行”改为“阻塞”,并将它插入到阻塞队列。若系统中设置了由于不同事件而阻塞的多个阻塞队列,则应将该进程插入到具有相同事件的阻塞(等待)队列,最后,转进程调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,即保留被阻塞进程的处理机状态在PCB中,按新进程PCB中的处理机状态设置CPU状态。保存CPU现场→置该进程的状态→被阻塞进程入等待队列→转进程调度。三、进程的阻塞和唤醒原语962.进程的唤醒原语
当被阻塞进程所期待的事件出现,如I/O操作完成,其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语weakup(),将等待该事件的进程唤醒。唤醒原语的操作有:先把被阻塞进程从等待该事件的阻塞队列中移出,将其PCB的现行状态由阻塞改为就绪,然后再将该进程插到就绪队列中。
从等待队列中摘下被唤醒进程→置进程的状态→将被唤醒进程送入就绪队列→转进程调度或返回。应当指出:block原语和weakup原语是一对功能刚好相反的原语,因此,如果在某进程中调用了阻塞原语,则必须
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Delphi开发环境设置试题及答案细节
- 口腔医学助理病例分析
- 2025年惠城区六年级上学期期末语文考试试卷(地方文化素材解析与评价)
- 2025年注册会计师考试《会计》新准则金融工具准则模拟试题
- 派拉软件java面试题及答案
- 安徽省师大附中2012届高三第三次模拟考试(地理)
- 第二单元(复习课件)-2024-2025学年六年级语文下册单元复习(统编版)-课件下载
- 苏逸java面试题及答案
- 腾讯重庆java面试题及答案
- java后端社招面试题及答案
- 翻译员工作合同
- NB-T31052-2014风力发电场高处作业安全规程
- 2024年湖南高考历史真题
- 海外仓合同范本
- 体育行业投标书
- 慢性淋巴增殖性疾病的诊断课件
- 2024年高校教师资格证资格考试题库含答案(满分必刷)
- 2024-2029全球及中国电气电子中的CFD行业市场发展分析及前景趋势与投资发展研究报告
- 中国法律史-第三次平时作业-国开-参考资料
- 五十六个民族之土族介绍
- JT∕T 794-2019 道路运输车辆卫星定位系统车载终端技术要求
评论
0/150
提交评论