




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章 进程管理3.1前趋图的定义311 前趋图和程序执行前趋图是一个有向无循环图DAG。图中的每个结点可用于表示一条语句、一个程序段或进程;结点间的有向边则表示在两结点之间存在的偏序或前趋关系“”,=(Pi,Pj)|Pi must complete before Pj may start 如果(Pi,Pj),可写成 PiPj;,称Pi是Pj的前趋,而Pj是Pi的直接后继。在前超图中,没有前趋的结点称为初始结点,没有后继的结点称为终止结点。此外,每个结点还具有一个重量,它可用该结点所含的程序量或结点的执行时间来计量。图2l示出的前趋图,存在下面的前趋关系:P1P2, P1P3,P1P4,P2P5,P3P5,P4P6, P5P7,P6P7,或表示为: P = P1, P2, P3, P4, P5, P6, P7= (P1,P2) , (P1, P3), (P1, P4) , (P2, P5) , (P3, P5) ,(P4, P6) , (P5, P7) , (P6, P7) 312 程序顺序执行一、程序顺序执行二、程序顺序执行时的特征1顺序性处理机的操作,严格按照程序所规定的顺序执行,即只有前一操作结束后,才能执行后继操作。2封闭性程序是在封闭的环境下运行的。即程序在运行时,它独占全机资源,因而机内各资源的状态(除初始状态外),只有本程序才能改变它。程序一旦开始运行,其执行结果不受外界因素的影响。3可再现性只要程序执行时的环境和初始条件相同,当程序多次重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果。 程序顺序执行时的特性,将为程序员检测和校正程序的错误,带来极大的方便。313程序并发执行一程序并发执行 对于具有下列四条语句的程序段:S1: a:=x+2;S2: b:=y+4;S3: c:=a+b;S4: d:=c+8;其前趋图如图2-4。二、程序并发执行时的特征程序的并发执行,虽然提高了系统吞吐量,但也产生了下述一些与顺序执行时不同的新特征:1间断性(并发程序间的相互制约)程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,致使在并发程序之间形成了相互制约的关系。简言之,相互制约将导致并发程序具有“执行-暂停执行-执行”这种间断性的活动规律。2失去封闭性程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。3不可再现性(程序和机器执行程序的活动不再一一对应)三 并发进程间的关系并发进程间的关系可以是无关的,也可以是有交往的。并发进程间无关是指它们是各自独立的,即如果一个进程的执行不影响其他进程的执行,且与其它进程的进展情况无关;并发进程间有交往是指一个进程的执行可能影响其他进程的执行结果,即一个进程的执行依赖其他进程的进展情况。有交往的并发进程一定共享某些资源。四与时间有关的错误例1: 由观察者和报告者两个进程管理交通路口的自动计数系统。观察者识别卡车并计数,报告者定时把观察者的计数值打印输出,然后把计数值清0。当这两个进程并发执行时,若报告者进程执行时无卡车通过,则能正确统计某时间段内的卡车数量;若报告者进程执行时有卡车通过,统计结果会产生错误。begincount: integer;count: = 0 ;cobegin26 / 26PR0CESS ObserverbeginL1: observe a lorry ;count: = count + 1; goto L1;end ;PROCESS Reporterbeginprint count;count: = 0; end ;coend;end; 执行的顺序打印的结果count的结果100100有交往的并发进程可能会同时使用共享资源,如果对这种情况不加控制,在使用共享资源时会出错。这里的共享变量是count,观察者进程的临界区是“count:= count 1”,在报告者进程中的临界区是“print count; count:=0”。由于对临界区不作管理,所以会产生与时间有关的错误。32进程的描述321进程的定义与特征一进程的定义中央处理器(CPU)是计算机系统中的重要资源之一。在单道程序设计环境下,CPU被一道程序独占,CPU严格按程序的指令顺序来执行。单道程序独占计算机系统的所有资源,只有程序本身的动作才能改变这些资源的状态,所以其具有封闭性。顺序执行的程序的运行结果与其运行速度无关,也就是说,同一程序在同一数据集上的多次运行的结果是相同的,具有可再现性。在单道程序环境下,CPU和其他资源被一个程序独占,资源利用率很低,造成了很大的浪费。为了提高CPU的利用率,采用了多道程序设计技术,系统中有多个程序同时运行。此时的程序具有下述特点:(1)程序的运行结果与它们的相对速度有关。(2)程序与它的执行过程不再一一对应。(3)并发程序之间存在直接或间接的依赖和制约关系。总之,程序一旦运行起来,它不但与程序本身有关,而且与它运行时所处的运行环境有关,程序的活动不再是静态的、封闭的,而显现出并发性、动态性以及相互制约的关系。所以用程序的概念已经不能描述上述这些特征,于是引入进程的概念。进程是程序及其数据在计算机上的一次运行,是系统进行调度和资源分配的独立单位。进程的概念能很好地描述程序的并发执行,并且能够揭示操作系统的内部特征。事实上,操作系统的并发性和共享性等特征就是通过进程的活动体现出来的。二进程的特征:(1)动态性:进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命期,是动态地产生、变化和消亡的。(2)并发性:进程之间的动作在时间上可以重叠,即系统中有若干进程都已经开始,但又没有结束,称这些进程为并发进程。(3)独立性:进程是系统调度和资源分配的独立单位,它具有相对独立的功能,拥有自己独立的进程控制块PCB。(4)异步性:各个并发进程按照各自独立的、不可预知的速度向前推进。(5)交互性:由于并发进程之间具有直接或间接的关系,在运行过程中它们之间需要进行必要的交互(同步、互斥和数据通信等),以完成特定的任务。(6)结构性:从结构上看,进程实体是由程序段、数据段和进程控制段三部分组成。三进程和程序的区别与联系(1)进程是程序及其数据在计算机上的一次运行活动,它属于一种动态的概念。进程的运行实体是程序,离开程序进程没有存在的意义。从静态角度看,进程是由程序、数据和进程控制块 PCB三部分组成的。而程序是一组有序的指令集合,属于一种静态的概念。(2)进程是程序的一次执行过程,它是动态地创建和消亡的,具有一定的生命期,是暂时存在的;而程序则是永久存在的,可长期保存。(3)一个进程可以执行一个或几个程序,一个程序也可以构成多个进程。322 进程的状态及相互转换进程在其生命期内,由于系统中各进程之间的相互制约关系及系统的运行环境的变化,使得进程的状态在不断地发生变化。一般来说,一个进程会处于几种状态。一进程的三个基本状态(1)就绪状态:若进程已具备了运行条件,只因 CPU被别的进程占用而不能被CPU执行,则称此时进程处于就绪状态。一旦把CPU分配给它,该进程就可以运行。从宏观上讲,它是一种逻辑上的可运行状态。系统中处于就绪状态的进程可以有多个。(2)执行状态:当一个进程已分配到CPU,它的程序正在被CPU执行时进程所处的状态称执行状态,也称为运行状态。对于单CPU系统而言,处于执行状态的进程只可能有一个。(3)等待状态:进程因等待某种事件的发生而暂时不能运行的状态称等待状态,例如,等待输人输出、等待进程间的同步互斥等。一旦引起等待的原因消失,进程便转为就绪状态。以便在适当的时候占用CPU。系统中处于等待状态的进程可以有多个。有的系统按照进程不同的等待原因,把处于等待状态的进程又分成多种状态。系统中处于等待状态的进程可以有多个。二创建(新)状态和终止状态(1)创建(新)状态:一个进程刚刚建立,但还未将它插入就绪对列时的状态。(2)终止状态:一个进程已经正常结束或异常结束,OS已将它从就绪对列中移出,但尚未将它撤消时的状态。进程的动态性决定了它不会固定处于某个状态,系统中的进程由于各种不同的原因在以上各个状态之间变化。其状态变化及原因如图25所示。如果等待的事件发生,处于等待状态的进程并不马上转入执行状态,而是先转入就绪状态,然后再由系统调度程序在适当的时候将该进程转为执行状态,这样进程转成执行状态(这一过程)由调度程序统一管理,就不会引起混乱。三进程状态的转换1创建(新)状态就绪状态:2就绪状态执行状态:3执行状态等待状态:4执行状态就绪状态:5执行状态终止状态 : 323 进程的挂起状态一挂起状态的引入引入挂起状态的原因有:1终端用户的需要;2父进程的需求:3操作系统的需要;4对换的需要;5系统负荷调节的需要;二带有挂起状态时的进程状态转换1活动就绪静止就绪:当过程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Ready。当用挂起原语 Suspend将该进程挂起后,该进程便转变为静止就绪状态,表示为 Readys,处于Readys状态的进程,不再被调度执行。2活动阻塞静止阻塞:当进程处于未被挂起的阻塞状态时,称为它处于活动阻塞状态,表示为 Blocked当用Suspend原语将它挂起后,进程便转变为静止阻塞状态,表示为Blockeds。处于该状态的进程,在其所期待的事件出现后,它将从静止阻塞变为静止就绪。3静止就绪活动就绪:处于 Readys状态的进程,若用激活原语Active激活后,该进程将转变为 Ready状态。4静止阻塞活动阻塞:处于Blockcds状态的进程,若用激活原语 Active激活后,进程将转变为 Blocked状态。图26示出了具有挂起状态的进程状态图。324进程的表示一进程控制块 PCB的作用进程通常有程序、数据集合和进程控制块三部分。系统在对进程管理时并不关心进程的具体内容,而只关心它的外部特性。于是系统通过建立进程控制块PCB来描述和管理进程。进程控制块PCB与进程一一对应,用于描述进程的特征和变化过程,PCB中记录了操作系统所需的、用于描述进程情况及控制进程运行所需的全部信息,系统可以通过PCB对进程进行管理,可以说PCB是进程存在的唯一标志。当进程被创建时,系统要为其分配一个PCB,在进程的生命期内系统利用该PCB对其进行管理,进程运行结束后要释放PCB。这时的进程实际上由程序、数据和 PCB三部分组成。不同的进程可以共享同一段程序而对不同的数据进行处理。这时要求被共享的程序段必须是纯代码。所谓纯代码,又称为可再入码,是可以为多个进程共享的程序段,代码不因程序的执行而改变。二PCB的内容和管理:PCB中记录了有关进程的一些描述信息和控制信息,包括进程标识符、进程当前的状态、优先级、进程放弃CPU时的现场信息,以及指示组成进程的程序和数据在存储器中存放位置的信息、资源使用信息、进程各种队列的链接指针和反映进程之间的隶属关系的信息等。为了实现对进程的管理,系统把所有进程的PCB按其状态实行分类管理。通常把每一类用一个队列来管理。一般来说,系统中的进程队列可分为三类,即执行队列、就绪队列和等待队列。三UNIX操作系统的进程控制块: UNIX操作系统的进程控制块PCB由 proc结构和user结构组成。proc结构又称为进程的基本控制块,它常驻内存,存放着进程的基本控制信息。user结构中存放着进程必需的、但次要的信息,也称为进程的扩展控制块,它非常驻内存。33进程的控制331 操作系统内核一支撑功能1中断处理2时钟管理3原语操作进程控制的主要职能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤消已有进程、实现进程的状态转换等功能。在操作系统内核中,有一组程序专门用于完成对进程的控制,主要包括创建新进程、挂起进程、唤醒进程、终止进程等操作。这些系统服务一般对用户是开放的,也就是说用户可以通过相应的接口来使用它,这主要是通过“原语”来完成的。所谓原语就是计算机机器指令的延伸,它是由若干条机器指令构成,并完成一种特定功能的程序段;为保证原语操作的正确性,还规定原语在执行期间必须一次执行完,中间不允许被中断。也就是说,原语具有原子性,即原语操作中的所有指令(动作)要么全做,要么全不做,不允许被分割。在单CPU系统中,在执行原语的过程中一般要关中断。二资源管理功能1进程管理2存储管理3设备管理332进程的创建一引起创建进程的事件1用户登录2作业调动3提供服务4应用请求一个进程可以通过创建原语来产生一个新创建。此时创建进程称为父进程,被创建的进程称为子进程。子进程又可以通过创建原语创建它的子进程,这样就形成一个进程家族树。在这种结构中,资源分配严格,子进程只能继承父进程所拥有的资源,便于管理;系统可根据需要赋予进程不同的控制权,并可以把一个任务分解成若干个进程来完成,具有较好的灵活性;树形结构层次清晰,关系明确。二进程的创建过程创建进程的主要工作是申请一个进程控制块PCB表,并向其中填入进程名、优先级等有关的参数。其基本过程是,首先从空闲的PCB集合中申请一个新的PCB,同时获得该进程的内部标识;为新进程的程序和数据分配内存资源;然后向该PCB中填写各种参数;把该进程的状态设置成就绪状态,并将该PCB插入到就绪队列中。333 进程的终止一引起进程终止的事件1正常结束2异常结束3外界干预进程完成任务后应予以终止,以便及时释放它所占用的资源。终止进程一般有两种策略,其一是终止指定进程,其二是终止该进程及其所有子孙进程。第一种方法可能使被终止进程的“子孙”进程与其进程家族隔离,导致进程不易管理和控制,所以终止原语一般采用第二种策略。二进程的终止过程终止原语的基本过程是,找到相应进程的PCB;若进程正处于执行状态,则立即停止,设置重新调度标志为真,同时终止属于该进程的所有子孙进程,释放被终止进程的所有资源,释放进程的PCB;若调度标志为真,则进行重新调度。334 进程的阻塞和唤醒一引起进程阻塞(等待)和唤醒的事件1请求系统提供服务2启动某种操作3新数据尚未到达4无新工作可做二进程的阻塞(等待)过程阻塞(等待)原语的功能是使进程变为等待状态。该原语可以使调用该原语的进程变为等待状态;将指定的进程变为等待状态;将某进程及其所有子孙进程变为等待状态。其基本过程是,用将要被挂起进程的标识数为索引找到该进程的PCB,如果该进程为执行状态,则保护其现场,将其状态改变为等待状态,停止运行,并把该PCB插入到相应的等待队列中去;若为就绪状态,则将其状态修改为等待状态,把它移出就绪队列,并插入到等待队列中去。二进程的唤醒过程进程因等待某事件的发生而处于等待状态,在等待事件发生后,就要用唤醒原语将其唤醒。唤醒原语的基本操作是,在等待队列中找到相应进程的PCB,将其从等待队列中移出,并置其状态为就绪状态,然后把该PCB插入就绪队列中,等待调度程序调度。335进程的挂起与激活一、进程的挂起过程当出现了引起进程挂起的事件时,比如,用户进程请求将自己挂起,或者父进程请求将自己的某个子进程挂起时,系统将利用挂起原语suspend()将指定进程或处于阻塞状态的进程控起。挂起原语的执行过程是,检查被挂起进程的状态:若正处于活动就绪状态,便将其改为静止就绪;对于活动阻塞状态的进程,则将其改为静止阻塞。为了方便用户或父进程考查该进程的运行情况,而把该进程的 PCB复制到某指定的内存区域。最后,如被挂起的进程正在执行,则转调度程序重新调度。二、进程的激活过程当发生激活过程的事件时,如用户进程或父进程请求激活指定进程,若进程驻留在外存而内存中已有足够的空间,则可将在外存上处于静止就绪状态的进程换人内存。这时,系统将利用激活原语active()将指定进程激活。激活原语先将进程从外存调入内存,检查该进程的现行状态:若是静止就绪,便将其改为活动就绪;若为静止阻塞,便将其改为活动阻塞。假如采用的是抢占调度策略,则每当有新进程进入就绪队列时,应检查是否要进行重新调度,即由调度程序将被激活进程与当前进程进行优先级的比较,如果被激活进程的优先级更低,就不必重新调度;否则,立即剥夺当前进程的运行,把处理机分配给刚被激活的进程。34线程的基本概念自从60年代提出进程概念后,在OS中一直都是以进程作为能独立运行的基本单位的。直到80年代中期,人们又提出了比进程更小的能独立运行的基本单位线程;试图用它来提高系统内程序并发执行的程度,从而可进一步提高系统的吞吐量。近几年,线程概念已得到广泛应用,不仅在新推出的OS中,大多都已引入了线程概念,而且在新推出的数据库管理系统和其它应用软件中,也都纷纷引入了线程,来改善系统的性能。341 线程的引入如果说,在操作系统中引入进程的目的,是为了使多个程序并发执行,以改善资源利用率及提高系统的吞吐量;那么,在操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使OS具有更好的并发性。为了说明这点,我们首先回顾进程的两个基本属性:(l)进程是一个可拥有资源的独立单位;(2)进程同时又是一个可以独立调度和分派的基本单位。正是由于进程具有这两个基本属性,才使之成为一个能独立运行的基本单位,从而也就构成了进程并发执行的基础。 然而为使程序能并发执行,系统还必须进行以下的一系列操作:(1)创建进程。系统在创建一个进程时,必须为之分配其所必需的、除处理机以外的所有资源,如内存空间、 I/O设备以及建立相应的 PCB。(2)撤消进程。系统在撤消进程时,又必须先对这些资源进行回收操作,然后再撤消PCB。(3)进程切换。在对进程进行切换时,由于要保留当前进程的 CPU环境和设置新选中进程的CPU环境,为此须花费不少处理机时间。简言之,由于进程是一个资源拥有者,因而在进程的创建、撤消和切换中,系统必须为之付出较大的时空开销。也正因如此,在系统中所设置的进程数目不宜过多,进程切换的频率也不宜过高,但这也就限制了并发程度的进一步提高。如何能使多个程序更好地并发执行,同时又尽量减少系统的开销,已成为近年来设计操作系统时所追求的重要目标。于是,有不少操作系统的学者们想到,可否将进程的上述两个属性分开,由操作系统分开进行处理。即对作为调度和分派的基本单位,不同时作为独立分配资源的单位,以使之轻装运行;而对拥有资源的基本单位,又不频繁地对之进行切换。正是在这种思想的指导下,产生了线程概念。在引入线程的OS中,线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程;同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中也呈现出间断性。相应地,线程也同样有就绪、阻塞和执行三种基本状态,有的系统中线程还有终止状态等。342线程与进程的比较线程具有许多传统进程所具有的特征,故又称为轻型进程(LightWeight Process)或进程元;而把传统的进程称为重型进程(Heavy-Weight Process),它相当于只有一个线程的任务。在引人了线程的OS中,通常一个进程都有若干个线程,至少也需要有一个线程。下面,我们从调度、并发性、系统开销、拥有资源等方面,来比较线程与进程。1调度在传统的操作系统中,拥有资源的基本单位和独立调度、分派的基本单位都是进程。而在引入线程的OS中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位使传统进程的两个属性分开,线程便能轻装运行,从而可显著地提高系统的并发程度。在同一进程中,线程的切换不会引起进程切换,在由一个进程中的线程切换到另一进程中的线程时将会引起进程切换。2并发性在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行因而使OS具有更好的并发性,从而能更有效地使用系统资源和提高系统吞吐量。例如,在一个未引入线程的单CPU的OS中,若仅设置一个文件服务进程,当它由于某种原因而被阻塞时,便没有其它的文件服务进程来提供服务。在引入了线程的OS中,可以在一个文件服务进程中,设置多个服务线程,当第一个线程等待时,文件服务进程中的第一二个线程可以继续运行;当第二个线程受阻塞时,第三个线程可以继续执行,从而显著地提高了文件服务的质量以及系统吞吐量。3拥有资源不论是传统的操作系统,还是没有线程的操作系统,进程都是拥有资源的一个独立单位,它可以拥有自己的资源。一般地说,线程自己不拥有系统资源(也有一点必不可少的资源),但它可以访问其隶属进程的资源。亦即,一个进程的代码段、数据段以及系统资源,如已打开的文件、I/O设备等,可供同一进程的其它所有线程共享。4系统开销由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,OS所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程 CPU环境的保存以及新被调度运行的进程的 CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,致使它们之间进行同步和通信的实现,也变得比较容易。343线程经历的六种状态(P62)1、 就绪状态2、 备用状态:系统中每个处理机上只能有一个线程处于备用状态3、 运行状态4、 等待状态5、 转化状态6、 终止状态3. 5 进程调度351 调度的类型一高级调度(作业调度)二低级调度(进程调度)调度方式:1非抢占方式(非剥夺式调度)所谓非剥夺式调度就是某进程一旦占用了CPU,除非由于它自身的原因(如调用原语操作或等待某事件的发生)而自动放弃 CPU,否则它将一直运行下去。这种方法简单,系统开销较小,但不能反映各个进程重要程度的差异。2抢占方式(剥夺式调度)剥夺式调度是指当系统中出现一个比现运行进程更适合、更应该占用CPU的进程时,系统应强迫处于执行状态的进程放弃CPU,使更适合的进程占用CPU。剥夺方式反映了进程的优先级特征,系统能及时处理紧急事件,但可能导致较大的系统开销,算法也相对复杂一些。抢占原则有:(1)时间片原则 (2)优先权原则 (3)短作业(进程)原则三中级调度(内外存对换)352 选择调度方式和算法的若干准则一面向用户的准则这是为满足广大用户的需求所应遵循的一些准则。其中,比较重要的有以下几点:1周转时间短:使批处理用户等待输出的时间尽可能短。通常把周转时间作为评价批处理系统的性能、选择作业调度方式与算法的准则。所谓周转时间,是指从作业提交给系统开始,到作业完成为止的这段时间间隔(称为作业周转时间)它包括: (1)作业在外存后备队列上等待(作业)调度的时间; (2)进程在就绪队列上等待进程调度的时间; (3)进程在CPU上执行的时间; (4)等待I/O操作完成的时间。其中第(2)、(3)、(4)项在一个作业的处理过程中,可能发生多次。对每个用户而言,都希望自己作业的周转时间最短。但作为计算机系统的管理者,总是希织能使平均周转时间最短;这不仅会有效地提高资源利用率,而且还可使大多数用户感到满意平均周转时间可描述为:T=(Ti)/n; (i=1,2,.,n)作业的周转时间T与系统为它提供的实际服务时间Ts之比,即W=T/Ts称为带权周转时间,而平均带权周转时间可表示为:W=(Ti/Tsi)/n; (i=1,2,.,n)2响应时间快响应时间常用于评价分时操作系统的性能,是选择分时系统中进程调度算法的重要准则之一。响应时间是从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间,或说直到在屛幕上显示出结果为止的一段时间间隔。它包括:(1)从键盘输入的请求信息传送到处理机的时间;(2)处理机对请求信息进行处理的时间;(3)将所形成的响应回送到终端显示器的时间。3截止时间的保证它是用来评价实时系统性能的重要指标,因而是选择实时调度算法的重要准则。所谓截止时间,是指某任务必须开始执行的最迟时间,或必须完成的最迟时间。4优先权准则:5公平:确保每个进程获得合理的 CPU份额。二面向系统的准则1吞吐量:使系统单位时间处理的进程数尽可能最多。2有效性:使 CPU尽可能地忙碌。3各类资源的平衡利用35. 3 调度算法进程调度的职责就是根据一定的算法,从多个就绪进程中选择其中之一来占用CPU。从宏观上讲,进程调度把一个物理上的CPU变为多个逻辑上的CPU。常用的进程调度算法有多种。 (1) 先进先出调度算法(FCFS)当在作业调度中采用该算法时,每次调度是从后备作业队列中,选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放人就绪队列。在进程调度中,采用FCFS调度算法时,则每次调度是从就绪队列中,选择一个最先进入该队列的进程,把处理机分配给它,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后,才放弃处理机。该算法比较有利于长作业(进程),而不利于短作业(进程)。据此可知: FCFS调度算法有利于 CPU繁忙型的作业,而不利于 IO繁忙型的作业(进程)。 CPU繁忙型作业,是指该类作业需要大量的 CPU时间进行计算,而很少请求 IO(通常的科学计算便属于CPU繁忙型作业。IO繁忙型作业,是指CPU进行处理时,又需频繁地请求IO,而每次IO的操作时间却又很短。目前的大多数的事务处理,都属于I/O繁忙型作业。先进先出算法比较简单,但很少作为一个独立的调度算法被使用,一般总是作为其他算法的一种辅助手段,例如在优先级调度算法中,对拥有相同的优先级的进程进行调度时,可采用先进先出算法。(2) 短作业(进程)优先调度算法(SJP)短作业(进程)优先调度算法,是对短作业或短进程优先调度的算法。(3) 时间片轮转调度算法该算法的基本思想是,把 CPU的处理时间划分成一个个时间片,就绪队列中的每个进程轮流运行一个时间片。每当一个过程的时间片结束时,该进程就放弃CPU,并把它插入到就绪队列的尾部,然后调度另一个进程占用CPU。在这种算法中,时间片大小的选择非常重要,直接影响着系统的性能。如果时间片选择过大,该算法就退化为先来先服务算法;如果过小,进程切换次数增加,系统开销增大。根据时间片的选择,该算法又可分为固定时间片和变长时间片两种。(4) 优先级调度算法优先级调度算法可分为非剥夺式优先级调度算法和剥夺式优先级调度算法,以及静态化先级和动态优先级算法。优先级调度算法的基本思想是系统为每个进程设置一个优先数(对应一个优先级),把所有的就绪进程按优先级从高到低排序,调度时从就绪队列中选择优先级最高的进程投入运行。在非剥夺式优先级调度算法中,仅当占用CPU的进程运行结束或因某种原因不能继续运行时,系统才进行重新调度;在剥夺式优先级调度算法中,当系统中有另一优先级更高的进程变成就绪状态时,系统应立即剥夺现运行进程占用CPU的权力,使该优先级更高的进程投入运行。在非剥夺式优先级调度算法中进程切换次数少,系统开销小,但可能导致优先级低的进程长期抢占不到CPU,也可能造成优先级的反转;而剥夺式优先级算法反映了进程的优先组特征,使系统能及时处理紧急事件,但系统开销较大。(4.1)静态优先权静态优先权是在创建进程时确定的,且规定它在进程的整个运行期间保持不变。一般,优先权是利用某一范围内的一个整数来表示。例如,07,或0255中的某一整数,又称该整数为优先数。只是具体用法各异:有的系统用“0”表示优先权最高,数值愈大其优先权愈低;而有的系统恰恰相反。确定进程优先权的依据有:(1)进程类型。通常,系统进程(如接收进程、对换进程、磁盘I/O进程)的优先权高于一般用户进程的优先权。(2)进程对资源的需求。如进程的估计执行时间及内存需要量少的进程,应赋予较高的优先权。(3)根据用户要求。这是由用户进程的紧迫程度及用户所付费用的多少来确定进程的优先权。静态优先权法简单易行、系统开销小,但不够精确,很可能出现优先权低的作业(进程),长期没有被调度的情况,因此,仅在要求不太高的系统中,才使用静态优先权。(4.2)动态优先权动态优先权是指在创建进程时所赋予的优先权,可以随进程的推进而改变,以便获得更好的调度性能。例如,我们可以规定,在就绪队列中的进程,随其等待时间的增长,其优先权以速率a增加。若所有的进程都具有相同的优先权初值,则显然是最先进入就绪队列的进程,将最先获得处理机。此即FCFS算法。若所有的就绪进程具有各不相同的优先权初值,对于优先权初值低的进程,在等待足够的时间后,其优先权便可能升为最高,从而可以获得处理机执行。假定,系统规定“0”为最低优先数、且有一长作业的优先数初值为“0”,若每隔15分钟令其优先数加“1”,当它在队列中等待了16小时时,其优先数便可升为63,变成最高优先数,从而可以投入运行。当采用抢占式优先权调度算法时,如果再规定正在执行的进程,其优先权以速率b下降,于是便可防止一个长作业长期地垄断处理机。(5) 高响应比优先调度算法在批处理系统中,用以作业调度的短作业优先算法是一个比较好的算法。其主要缺点是作业的运行得不到保证。如果我们能为每个作业引入前面所述的动态优先权机制,并使之以速率a增加,则长作业在等待一定的时间后,必然有机会分配到处理机。该优先权的变化可描述为由于等待时间加上要求服务时间,就是系统对该作业的响应时间,故该优先权又相当于响应比Rp。据此,又可表示为3.5.4实时系统的调度实时系统是指那些时间因素非常关键的系统。通常可分为硬实时系统和软实时系统。前者是指系统必须满足时间的约束,而后者则意味着偶尔超过时间限制也是可以容忍的。在实时系统中存在着一些实时任务(进程),它们反映或控制某些外部事件,以完成某种功能。实时系统要响应的事件进一步可分为周期性事件(每隔一段时间发生)和非周期性事件(事件发生的时间不可预测)。一个系统可能响应多个周期性时间流,假设有m个周期性事件,事件i的周期为Pi,其中每个事件需要Ci秒的CPU时间来处理,则当满足 Ci/Pi 1 的条件时,才可能处理所有事件。把满足该条件的实时系统称作是可调度的实时系统。实时调度算法可以是动态的或静态的。前者是在运行时作出调度决定,而后者则是在系统运行之前完成所有的调度策略。经典的实时调度算法有发生率单调算法,该算法事先为每个进程分配一个与事件发生频率呈正比的优先级,运行时,调度程序总是调度优先级最高的就绪进程,必要时将剥夺当前进程。另一种流行的实时调度算法是最早截止期优先算法。当一个事件发生时,对应的进程被加入到就绪队列中。该队列按照进程的截止期限排序,对于一个周期性事件,其截止期限就是事件下一次发生的时间,该算法总是调度处于就绪队列队首的进程。第三种算法是最小裕度(laxity)优先算法。如果一个进程需要运行200ms,而它必须在250ms内完成,则该进程的裕度为50ms。调度时选择裕度最小的进程。在设计和实现实时调度算法时,还要考虑算法应有合理的系统开销。3. 5. 5 UNIX操作系统的进程调度UNIX操作系统采用可剥夺的动态优先级调度策略。UNIX操作系统为每个过程设置一个优先数,并规定优先数越大,优先级越小。系统在适当时刻动态计算进程的优先级,若发现系统就绪队列中存在其优先级高于当前运行进程的进程时,系统则设置调度标志,在从核心态返回用户态时调度优先级高的进程运行,并把被抢占的进程放置到相应的队列中去。UNIX操作系统进程调度的时机有两个。一个是进程自动放弃CPU时进行调度,另一个是在从核心态转入用户态时,系统设置了高优先级就绪进程的强迫调度标志。例题: 考虑5个进程P1,P2,P3,P4,P5,见表2.1。规定进程的优先数越小,优先级越高。试描述在采用下述几种调度算法时各个进程运行过程,并计算采用每种算法时的进程平均周转时间。假设忽略进程的调度时间。(1)先来先服务调度算法;(2)时间片轮转调度算法(时间片为1ns);(3)非剥夺式优先级调度等法;(4)剥夺式优先级调度算法。 表2l例25数据表进程创建时间运行时间优先数P1033P2265P3441P4652P5824练习题一、 单选题1、 一个进程是_C_。 (清华大学1996)A 由协处理机执行的一个程序 B 一个独立的程序+数据集C PCB结构与程序和数据的组合 D 一个独立的程序2、 并发进程之间_D_。A 彼此无关 B 必须同步 C 必须互斥 D 可能需要同步或互斥3、_是进程调度算法。A 时间片轮转法 B 先来先服务 C 响应比高者优先 D 均衡调度算法4、当_B_时,进程从执行状态转变为就绪状态。 (西北工大 1999)A 进程被调度程序选中 B 时间片到 C 等待某一事件 D 等待的事件发生5、系统中有n(n2)个进程,并且当前没有执行进程调度程序,则_不可能发生。A 有一个运行进程,没有就绪进程,剩下的n-1个进程处于等待状态B 有一个运行进程和n-1个就绪进程,但没有进程处于等待状态C 有一个运行进程和1个就绪进程,剩下的n-2个进程处于等待状态D 没有运行进程但有2个就绪进程,剩下的n-2个进程处于等待状态6、支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中_不是引起操作系统选择新进程的直接原因。 (复旦大学 1999)A 运行进程的时间片用完 B 运行进程出错C 运行进程要等待某一事件的发生 D 有新进程进入就绪状态二、 判断题1、 在剥夺式进程管理方式下,现运行进程的优先级不低于系统中所有进程的优先级。2、 进程是一个独立的运行单位,也是系统进行资源分配和调度的基本单位。3、 程序的并发执行是指同一时刻有两个以上的程序,它们的指令在同一处理器上执行。4、 进程由进程控制块和数据集以及对该数据集进行操作的程序段组成。5、 并发是并行的不同表述,其原理相同。三、 问答题1、 操作系统中为什么要引入进程的概念?为了实现进程的并发运行,操作系统在进程管理方面应做那些工作? (南京大学 1997)2、 试比较进程与程序的区别。 (哈尔滨工业大学 2000)3、 进程与线程的主要区别是什么? (西北工大1999)3. 6 进程通讯36. 1 进程同步和互斥的基本概念在支持多道程序的系统中,并发程序之间并非毫无关系,它们之间存在着千丝万缕的联系。并发进程之间的各种关系可以抽象为直接和间接的关系。进程的同步是指进程之间的一种直接的协同工作关系。当某进程运行到某点时要求另一伙伴进程为它提供消息。在未得到对方的消息时,该进程必须处于等待状态,直到收到消息后被唤醒,这种关系就是进程之间的同步关系。即进程之间相互制约的等待与互通消息。进程的互斥是指进程之间的一种间接关系。是由各进程排它性使用共享资源引起的。即两个或两个以上的进程之间互相争夺临界资源的现象临界资源: 操作系统中一次仅允许一个进程使用的资源称为临界资源。临界区: 进程互斥执行的程序段。要保证临界资源互斥地被使用,就要保证临界区互斥地被执行。同类临界区进入的规则是:(1)若有进程欲进入临界区时,不能互相封锁,致使进程都不能进入;(2)每次只允许一个进程进入临界区;(3)进入临界区的进程要限时退出。据此,得出临界区的调用原则是:(1)有空让进:没有任何一个进程处于临界区内时,允许一个过程进入临界区;(2)忙则等待:已有进程进入临界区时,其他欲进人进程必须等待;(3)有限等待:一进程离开临界区时,若发现有进程正在等待进入临界区,则要唤醒这些进程,以免进程陷入“死等待”。(4)让权等待:当进程不能进入临界区时,应立即释放CPU,以免进程陷入“忙等待”。3.6.2 信号量和P、V操作1、 信号量信号量:是一个特殊变量,表示资源的实体,其值仅能由P、V操作来改变,信号量分为公用信号量和私用信号量公用信号量:用于实现进程间的互斥,初值为1,可进行P、V操作;私用信号量:用于实现进程间的同步,初值为0或正整数n,拥有它的进程只能进行P操作2、 P、V操作的定义: S为信号量 P(S): (1) S=S-1, 申请调用资源(2) 若S=0,调用P(S)的进程继续(3) 若S0, 调用V(S)的进程继续(3)若S=0,从等待队列中取一个进程V操作,任何一个进程退出临界区前必须调用V操作,以保证进程在临界区逗留有限时间,若有进程在等待进入临界区,V操作将唤醒等待队列中首进程,使其可以进入临界区3、利用信号量实现进程的互斥 (P67) S为两互斥进程的公用信号量,初值为1; 若S=1, 表示没有进程进入临界区; 若S=0, 表示有一个进程进入临界区; 若S=-1, 表示有一个进程进入临界区,另一个进程在等待进入。例1:设两个并发进程Pa和Pb,具有临界区Csa,CSb, 用信号量S实现互斥。4、利用信号量实现进程间的同步 (P69) 进程同步的主要任务,是使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。SfPaPbPc例2:设Pa,Pb,Pc为一组合作进程,其进程流程图如下所示,试用信号量的P、V操作实现这三个进程的同步。 例3:医生为病人看病,需要化验,于是医生开出化验单,病人到化验室化验,化验结果送回医生处,供医生诊断,医生看病为一个进程,化验室化验为一个进程,二者需要交换信息,是同步关系,试用P、V操作来实现这一关系。5、经典进程的同步问题(1) 生产者消费者问题:(P46)(2) 读者写者问题:(P49)3.6.3进程的高级通讯原语并发进程之间常常需要交换数据,这就需要进程之间的通信。进程之间通信的方式一般有消息缓冲、信箱通信和管道通信等。(1)消息缓冲:消息缓冲通信的基本思想是,由操作系统管理若干用于存放消息的缓冲区。当某个进程需要向另一个进程发送消息时,便向系统申请一个消息缓冲区,并把要发送的数据送到消息缓冲区,然后把该消息缓冲区插入到接收进程的消息队列中。接收进程在接收消息时,只要从本进程的消息队列中摘下该消息缓冲区,即可从中取下所需的信息,然后把该消息缓冲区交还给系统。(P74)(2)信箱通信:信箱通信的基本思想是,在进程间需要通信的时候,需要创建信箱,发送方向信箱内写入数据,接收方则从信箱中读出数据。其通信方式可分为单向和双向两种方式。在单向方式中,发送方向信箱中写人数据后,无须等待接收方的应答,就可以继续执行其他程序;而在双向方式中,发送方向信箱中写入数据后,要等待接收方收到数据后予以应答。信箱的容量有限,当信箱满(或空)时,收、发双方应进行同步,同时也应该进行必要的互斥。(P75) (3)管道通信:信箱通信和消息缓冲通信方式的通信量相对较小,而管道通信利用文件系统实现进程间大量数据的通信。实际上,管道就是连接两个进程的一个共享文件,进程通过对该文件的读、写实现进程间的通信。管道通信的通信速度较慢。364 管程的引入管程:信号量机制较好地解决了进程之间的同步和互斥,但编程时用户需要显式地使用P,V操作原语实现过程间的同步与互斥,给用户编程带来很多负担。而且这些原语如果使用不当还可能造成进程的死锁,于是操作系统引入了管程的概念。管程是一个由过程、变量及数据结构等组成的集合,它们组成一个特殊的模块或软件包。进程可以在任何需要的时候调用管程中的过程,但它们不能在管程外的过程中直接访问管程中的数据结构。管程有一个很重要的特性,使它们能有效地完成互斥,即任一时刻管程中只能有一个活跃进程。当一个进程调用管程中的过程时,管程中的前几条指令将检查管程中是否有其他的活跃进程。如果有,调用进程将被挂起,直到另一个过程离开管程;如果没有,则调用进程便进入管程。通过使临界区互斥自动化,管程比信号量更容易保证并发编程的正确性。Hansan为管程所下的定义:一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。由定义可知:管程由三部分组成:(1)局部于管程的共享变量说明;(2)对该数据结构进行操作的一组过程;(3)对局部于管程的数据设置初始值的语句。对管程的说明:局部于管程的数据结构,仅能被局部于管程的过程所访问,任何管程外的过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 星座起源课件
- 大疆T系无人机培训
- 2026届福建省泉州市永春一中学英语九上期末统考试题含解析
- 农村发展专业解读课件
- 公共卫生体系规则解读
- 湖南省长沙市望城区2026届九年级化学第一学期期中考试试题含解析
- Android基础培训:炫彩商务应用开发与总结
- 2026届安徽省合肥市行知学校化学九年级第一学期期中考试模拟试题含解析
- 2026届贵州省毕节市九上化学期中考试模拟试题含解析
- 2026届四川省绵阳地区化学九年级第一学期期中联考试题含解析
- 2025年中国酒店行业白皮书-
- 2025年市场运营专员资格考试试题及答案解析
- 煤矿井下爆破培训课件
- 2025年老年病康复护理技巧应用考核试卷答案及解析
- 2025年医疗卫生信息化系统操作考核答案及解析
- 2025年 七年级上册语文第一单元测试卷含答案
- 2025年数字解密:药食同源生意下最香的成分与赛道研究报告
- GB/T 12643-2025机器人词汇
- 商业银行监管评级简表
- 肾动脉狭窄介入治疗PPT课件(PPT 30页)
- 10kV架空线路设计PPT课件(PPT 69页)
评论
0/150
提交评论