《三章进程管理-1.ppt》由会员分享,可在线阅读,更多相关《三章进程管理-1.ppt(98页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 进 程 管 理 三章进程管理-1 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第三章 进 程 管 理 3.1 进程的基本概念进程的基本概念 3.1.1 进程概念的引入进程概念的引入C编译程序CC程序程序A程序程序B时间片用完中断可再入程序11/6/20222第三章 进 程 管 理 进程:一段功能完整的程序在处理机上的执行过程。进程:一段功能完整的程序在处理机上的执行过程。3.1.2 进程与程序的区别进程与程序的区别进程是动态的,程序是静态的进程是动态的,
2、程序是静态的进程是暂时的概念,程序是永久的概念进程是暂时的概念,程序是永久的概念进程有自己的数据结构进程有自己的数据结构PCB进程和程序不是一一对应的。进程和程序不是一一对应的。11/6/20223第三章 进 程 管 理 3.1.3 进程的定义进程的定义进程进程:是一个具有独立功能的程序对某个数据集在处理是一个具有独立功能的程序对某个数据集在处理 机上的执行过程和分配资源的基本单位机上的执行过程和分配资源的基本单位.程序程序:指一组操作序列指一组操作序列.数据集数据集:接受程序规定操作的一组存储单元的内容接受程序规定操作的一组存储单元的内容.进程的特征进程的特征动态性动态性并行性并行性独立性独
3、立性异步性异步性11/6/20224第三章 进 程 管 理 进程的结构特征进程的结构特征:PCB,程序代码段程序代码段,数据段数据段程序数据PCB进程的结构特征进程的结构特征11/6/20225第三章 进 程 管 理 进程程序动态静态暂时永久并行串行(顺序)PCB多个一个一个多个进程与程序的区别与联系进程与程序的区别与联系11/6/20226第三章 进 程 管 理 3.2 进程的基本状态进程的基本状态 为了描述和控制进程的运行为了描述和控制进程的运行,系统为每个进程定义了一个数据系统为每个进程定义了一个数据结构结构,即进程控制块即进程控制块PCB(Process Control Block),
4、系统根据系统根据PCB,感知该进程的存在感知该进程的存在,故亦称故亦称PCB是进程存在的标志是进程存在的标志.PCB的作用的作用:u感知进程的存在u记录进程的状态或有关信息通常在一个实际系统中通常在一个实际系统中,PCB的总数是固定的的总数是固定的,该数目规定了系该数目规定了系统所允许拥有的进程数目统所允许拥有的进程数目,同时将所有的同时将所有的PCB形成一个结构数形成一个结构数组组(或称或称PCB表表),存放在系统的数据区中存放在系统的数据区中.一个进程的一个进程的PCB机构全部或部分常驻内存机构全部或部分常驻内存.11/6/20227第三章 进 程 管 理 3.2.1 进程的基本状态进程的
5、基本状态1.进程状态进程状态就绪态就绪态:等待系统分配处理机以便执行时 所处的状态.即获得了除处理机之外的所以资源,一旦由调度 程序选中得到处理机就可以立即执行的状态.运行态运行态:正在处理机上执行时所处的状态.在单CPU情况下,处于该状态的进程数只有一个.等待态等待态:等待某个事件的完成时进程所处的状态.除了 CPU之外其他的资源也没有得到满足 11/6/20228第三章 进 程 管 理 运行就绪等待进程调度策略进程调度策略时时间间片片用用完完等待某一事件发生等待某一事件发生等待事件结束等待事件结束剥剥夺夺处处理理机机创建创建撤销撤销进程的三种基本状态及其转换进程的三种基本状态及其转换 11
6、/6/20229第三章 进 程 管 理 进程控制块3.3 进程的描述与管理进程的描述与管理1.OS1.OS感知进程存在的唯一标识感知进程存在的唯一标识-PCB-PCB2.2.记录了记录了OSOS所需的用于描述进程及控制进程全部信息所需的用于描述进程及控制进程全部信息.在在PCBPCB中主要包括下面信息中主要包括下面信息:1)1)进程描述信息进程描述信息 2)2)进程控制信息进程控制信息 3)3)资源信息资源信息 4)4)现场保护信息现场保护信息 1)1)进程描述信息进程描述信息:进程名或进程标识符进程名或进程标识符.家族关系家族关系.11/6/202210第三章 进 程 管 理 2)2)进程控
7、制信息进程控制信息1.1.进程的当前信息进程的当前信息:指明进程的当前状态指明进程的当前状态,作为进程调度作为进程调度和对换的依据和对换的依据.2.2.进程优先级进程优先级:调度依据调度依据,是进程占有处理机的重要依据是进程占有处理机的重要依据.3.3.程序开始地址程序开始地址:便于执行这段程序便于执行这段程序.4.4.各种计时信息各种计时信息:记录资源占用的信息记录资源占用的信息.5.5.通信信息通信信息:保证进程之间相应的联系保证进程之间相应的联系.3)3)资源管理信息资源管理信息1.1.占用内存大小及其管理用数据结构指针占用内存大小及其管理用数据结构指针.2.2.对换或覆盖用的有关信息对
8、换或覆盖用的有关信息.3.3.共享程序的大小及起始地址共享程序的大小及起始地址.4.4.I/OI/O设备号设备号,传送的数据长度传送的数据长度,缓冲区地址缓冲区地址,缓冲区长度缓冲区长度及所有设备的有关数据结构指针及所有设备的有关数据结构指针.5.5.指向文件系统的指针及有关标识符指向文件系统的指针及有关标识符.11/6/202211第三章 进 程 管 理 4)CPU4)CPU现场保护信息现场保护信息(进程上下文进程上下文)1.1.通用寄存器的用户通用寄存器的用户2.2.PCPC3.3.PSW:PSW:含状态信息(条件码的执行方式含状态信息(条件码的执行方式,中断屏蔽标识中断屏蔽标识)。4.4
9、.用户栈指针:为每个用户进程有一个或若干隔与之相关用户栈指针:为每个用户进程有一个或若干隔与之相关的系统栈,用于存放过程和系统调用参数和调用地址。的系统栈,用于存放过程和系统调用参数和调用地址。当处理机被中断时当处理机被中断时,各种寄存器的内容都必须保存在各种寄存器的内容都必须保存在被中断进程的被中断进程的PCBPCB中中,以便在该进程重新执行时以便在该进程重新执行时,能从能从断点继续执行断点继续执行.由于由于PCBPCB中包含较多的信息(占几百几千中包含较多的信息(占几百几千BYTE),BYTE),在有的系在有的系统中只含统中只含PCBPCB中最常用部分(中最常用部分(CPUCPU现场保护部
10、分,进程描述现场保护部分,进程描述信息,控制信息)常驻内存,其他部分则放在外存中,待该信息,控制信息)常驻内存,其他部分则放在外存中,待该进程将要执行时与其他数据一起装入内存。进程将要执行时与其他数据一起装入内存。11/6/202212第三章 进 程 管 理*进程上下文进程上下文 是对进程动态活动的静态描述是对进程动态活动的静态描述 进程的上下文是其相应的程序地址空间的内容,硬件进程的上下文是其相应的程序地址空间的内容,硬件寄存器的内容以及与该进程有关的核心数据结构(系寄存器的内容以及与该进程有关的核心数据结构(系统堆栈,用户堆栈)构成的。统堆栈,用户堆栈)构成的。包括:计算机系统中与执行该进
11、程有关的各种寄存器包括:计算机系统中与执行该进程有关的各种寄存器值;程序段经过编译连接后形成的机器指令代码段值;程序段经过编译连接后形成的机器指令代码段(text);text);数据段以及各种堆栈的值和数据段以及各种堆栈的值和PCBPCB块)。块)。例:例:UNIXUNIX进程上下文进程上下文用户级上下文用户级上下文 系统级上下文系统级上下文寄存器上下文寄存器上下文*进程上下文进程上下文11/6/202213第三章 进 程 管 理*进程的组成进程的组成 进程进程PCBPCB程序(代码和数据)程序(代码和数据)进程的表记进程的表记PCB程序PCB程序代码11/6/202214第三章 进 程 管
12、理*PCB*PCB的组成方式的组成方式 在一个系统中,通常可以拥有数十个以及若干个在一个系统中,通常可以拥有数十个以及若干个PCB,PCB,为了能对他们进行有效的管理,应当用适当的方式将为了能对他们进行有效的管理,应当用适当的方式将他们组织起来。他们组织起来。PCBPCB目前常用的组织方式:链接方式;索引方式目前常用的组织方式:链接方式;索引方式 系统中进程队列分类:就绪队列,等待队列,运行队列。系统中进程队列分类:就绪队列,等待队列,运行队列。就绪队列:整个系统一个就绪队列:整个系统一个 等待队列:每一个等待事件一个。等待队列:每一个等待事件一个。运行队列:单机系统中整个系统一个。运行队列:
13、单机系统中整个系统一个。11/6/202215第三章 进 程 管 理 1.1.链接方式链接方式PCB链接队列示意图 把具有相同状态的把具有相同状态的PCB,PCB,用其中的链接字链接成一个队列用其中的链接字链接成一个队列.线性表线性表11/6/202216第三章 进 程 管 理 按索引方式组织PCB 2.2.索引方式索引方式系统根据所有进程的状态系统根据所有进程的状态,建立几张索引表建立几张索引表,如就绪索引表如就绪索引表,阻塞索引阻塞索引表表,并把各索引表在内存的首地址记录于内存中的一些专用库文件中并把各索引表在内存的首地址记录于内存中的一些专用库文件中.11/6/202217第三章 进 程
14、 管 理 3.4 进程控制进程控制为了防止为了防止OSOS及关键数据如及关键数据如PCBPCB等等,受到用户程序有意或无意的破坏受到用户程序有意或无意的破坏,通通常将处理机的执行状态分为常将处理机的执行状态分为:系统态和用户态系统态和用户态.1.1.系统态系统态(核心态核心态):):具有较高的特权具有较高的特权,能执行一切指令能执行一切指令,访问访问所有的寄存器和存储区所有的寄存器和存储区.2.2.用户态用户态:具有较低特权的执行状态具有较低特权的执行状态,只能执行规定的指令只能执行规定的指令,访问指定的寄存器和存储区访问指定的寄存器和存储区.进程控制进程控制:就是系统使用一些具有特定功能的程
15、序段来创建、撤销进程以及就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程状态间的转换,从而达到多进程高效率并发执行和协调完成进程状态间的转换,从而达到多进程高效率并发执行和协调实现资源共享的目的。实现资源共享的目的。原语(原语(Atomic Operation):Atomic Operation):系统态下执行的某些具有特定功能的程序段。系统态下执行的某些具有特定功能的程序段。11/6/202218第三章 进 程 管 理.创建原语创建原语为此进程分配进程控制块为此进程分配进程控制块为此进程分配资源为此进程分配资源把此进程插入到就绪队列中把此进程插入到就绪队列中,等待等待CPUC
16、PU的调度的调度.引起创建进程的事件引起创建进程的事件 用户登陆用户登陆作业调度作业调度提供服务提供服务应用请求应用请求3.4.1.进程的创建进程的创建11/6/202219第三章 进 程 管 理 1.1.引起进程终止的事件引起进程终止的事件 正常结束正常结束异常结束异常结束外界干预外界干预3.4.2.进程的终止进程的终止 Procedure Destroy(n)Procedure Destroy(n)begin begin sched=false;sched=false;i=i=获取获取n n进程内部名进程内部名 kill(i);kill(i);if(sched)schedure if(sc
17、hed)schedure else continue(else continue(当前正在执行的进程当前正在执行的进程););end end11/6/202220第三章 进 程 管 理.进程创建原语的描述形式进程创建原语的描述形式create(n,So,Po,Mo,Ro,acc)Begin i=get internal name(n);/*获得内部名获得内部名*/i.id=n;/*填外部名填外部名*/i.priority=Po;/*设优先级设优先级*/i.Cpustate=So;/*填填CPU初始状态初始状态*/i.mainstore=Mo;/*填写主存区域填写主存区域 */i.resourc
18、e=Ro;/*填写资源清单填写资源清单*/i.status=readys;/*填写进程状态填写进程状态*/j=EP;/*获取调用者内部标识获取调用者内部标识*/i.parent=j;/*填写填写i进程的父进程进程的父进程j*/j.progency=;/*置置i的家族指的家族指针为空空*/i.progency=i;/*把把i填入其父进程填入其父进程PCB的家族指针处的家族指针处*/i.state=RQ;/*置置i所在状态队列首指针所在状态队列首指针 */insert(RQ,i);/*把把i进程插入到进程插入到RQ对尾对尾 */EndPCBi11/6/202221第三章 进 程 管 理 lProc
19、edure kill(i)lbeginl if i-status=“running”l begin l stop(i);l sched=true;l endl remove(i-state,i);将被撤销进程i从i.state所指示的队列中去掉.l for all s(i.progency)do kill(s);l for all r(i.mainstoreUi.resoure)do l if owner(r)insert(r.semaphore,r.data);l 归还属于父进程资源且插入父资源清单归还属于父进程资源且插入父资源清单.l for all Rcreated resoure(i)
20、do remove descriptor(R);l 撤销自己的资源清单并归还系统撤销自己的资源清单并归还系统l remove process control block(i);lEND 11/6/202222第三章 进 程 管 理 1.根根据据被被终终止止进进程程的的标标识识符符,从从PCB链链表表中中检检索索出出该该进进程程的的PCB,从从中中读读出该进程的状态。出该进程的状态。2.若若被被终终止止进进程程正正处处于于执执行行状状态态,应应立立即即终终止止该该进进程程的的执执行行,并并置置调调度度标标志为真,用于指示该进程被终止后应重新进行调度。志为真,用于指示该进程被终止后应重新进行调度。
21、3.若若该该进进程程还还有有子子孙孙进进程程,还还应应将将其其所所有有子子孙孙进进程程予予以以终终止止,以以防防他他们们成成为不可控的进程。为不可控的进程。4.将将被被终终止止进进程程所所拥拥有有的的全全部部资资源源,或或者者归归还还给给其其父父进进程程,或或者者归归还还给给系统。系统。5.将被终止进程将被终止进程(它的它的PCB)从所在队列从所在队列(或链表或链表)中移出,中移出,等待其他程序来等待其他程序来搜集信息。搜集信息。2 2.进程的终止过程进程的终止过程11/6/202223第三章 进 程 管 理 3.4.3 进程的挂起和激活进程的挂起和激活挂起挂起:让进程暂时不参与资源的竞争让进
22、程暂时不参与资源的竞争1.1.挂起原语的方式挂起原语的方式 把挂起原语调用者本身挂起把挂起原语调用者本身挂起,即自己挂起自己即自己挂起自己挂起某个标识符的进程挂起某个标识符的进程将某个指定标识符的进程及其全部或部分子孙挂起将某个指定标识符的进程及其全部或部分子孙挂起.挂起用以保存挂起用以保存N进程的进程的PCB副本的内存区副本的内存区,以备参考以备参考.lProcedure suspend(n,a)lBeginl i=get internal name(n);l s=i.status;l if i.status=“running”stop(i);l a=copy pcb(i);/*相应的相应的
23、PCB保留起来以便查看是属于哪一种挂起保留起来以便查看是属于哪一种挂起.l if s=blocka i.status=Blocks else i.status=readys;l if s=running schedule else continue;lEnd 11/6/202224第三章 进 程 管 理 当当出出现现了了引引起起进进程程挂挂起起的的事事件件时时,比比如如,用用户户进进程程请请求求将将自自己己挂挂起起,或或父父进进程程请请求求将将自自己己的的某某个个子子进进程程挂挂起起,系系统统将将利利用用挂挂起起原原语语suspend()将将指指定定进进程程或或处处于于阻阻塞塞状状态态的的进进
24、程程挂挂起起。挂挂起起原原语语的的执执行行过过程程是是:首首先先检检查查被被挂挂起起进进程程的的状状态态,若若处处于于活活动动就就绪绪状状态态,便便将将其其改改为为静静止止就就绪绪;对对于于活活动动阻阻塞塞状状态态的的进进程程,则则将将之之改改为为静静止止阻阻塞塞。为为了了方方便便用用户户或或父父进进程程考考查查该该进进程程的的运运行行情情况况而而把把该该进进程程的的PCB复复制制到到某某指指定定的的内内存存区区域域。最最后后,若若被被挂挂起起的的进进程程正正在在执执行行,则转向调度程序重新调度。则转向调度程序重新调度。2.2.进程进程的挂起的挂起11/6/202225第三章 进 程 管 理.
25、激活原语的激活方式激活原语的激活方式 激活指定标识符的进程激活指定标识符的进程激活某进程及其子孙激活某进程及其子孙lProcedure active(n)lBeginl i=get internal name(n);l if i.status=“readys”l i.status=readyal elsel i.status=blocka;l if i.status=“readya”l scheduler;l else l continue;lEndl 11/6/202226第三章 进 程 管 理 当当发发生生激激活活进进程程的的事事件件时时,例例如如,父父进进程程或或用用户户进进程程请请求求
26、激激活活指指定定进进程程,若若该该进进程程驻驻留留在在外外存存而而内内存存中中已已有有足足够够的的空空间间时时,则则可可将将在在外外存存上上处处于于静静止止就就绪绪状状态态的的进进程程换换入入内内存存。这这时时,系系统统将将利利用用激激活活原原语语active()将将指指定定进进程程激激活活。激激活活原原语语先先将将进进程程从从外外存存调调入入内内存存,检检查查该该进进程程的的现现行行状状态态,若若是是静静止止就就绪绪,便便将将之之改改为为活活动动就就绪绪;若若为为静静止止阻阻塞塞便便将将之之改改为为活活动动阻阻塞塞。假假如如采采用用的的是是抢抢占占调调度度策策略略,则则每每当当有有新新进进程
27、程进进入入就就绪绪队队列列时时,应应检检查查是是否否要要进进行行重重新新调调度度,即即由由调调度度程程序序将将被被激激活活进进程程与与当当前前进进程程进进行行优优先先级级的的比比较较,如如果果被被激激活活进进程程的的优优先先级级更更低低,就就不不必必重重新新调调度度;否否则则,立立即即剥剥夺夺当当前前进进程程的的运运行行,把把处处理理机机分分配配给给刚刚被被激激活活的的进进程。程。.进程的激活进程的激活11/6/202227第三章 进 程 管 理.挂起引起的原因挂起引起的原因协调负载过重协调负载过重某些设备故障某些设备故障 调试程序调试程序具有挂起状态的进程状态图 11/6/202228第三章
28、 进 程 管 理 1.1.引起阻塞和唤醒的事件引起阻塞和唤醒的事件请求系统服务请求系统服务启动某种操作启动某种操作新数据尚未到达新数据尚未到达无新工作可作无新工作可作.3.4.4 进程的阻塞与唤醒进程的阻塞与唤醒lProcedure Block(n)lBeginl i=EP;从执行进程的指针从执行进程的指针EP获得调用者内部标识符获得调用者内部标识符l stop(i);l i.status=blocka;修改该进程的状态修改该进程的状态l i.state=WQ(r);找到相应的插入队列找到相应的插入队列l insert(WQ(r),i);把把i插入到插入到WQ队尾队尾l scheduler;转
29、调度程序转调度程序lEndl .阻塞原语阻塞原语11/6/202229第三章 进 程 管 理 正正在在执执行行的的进进程程,当当发发现现上上述述某某事事件件时时,由由于于无无法法继继续续执执行行,于于是是进进程程便便通通过过调调用用阻阻塞塞原原语语block把把自自己己阻阻塞塞。可可见见,进进程程的的阻阻塞塞是是进进程程自自身身的的一一种种主主动动行行为为。进进入入block过过程程后后,由由于于此此时时该该进进程程还还处处于于执执行行状状态态,所所以以应应先先立立即即停停止止执执行行,把把进进程程控控制制块块中中的的现现行行状状态态由由“执执行行”改改为为阻阻塞塞,并并将将PCB插插入入阻阻
30、塞塞队队列列。如如果果系系统统中中设设置置了了因因不不同同事事件件而而阻阻塞塞的的多多个个阻阻塞塞队队列列,则则应应将将本本进进程程插插入入到到具具有有相相同同事事件件的的阻阻塞塞(等等待待)队队列列。最最后后,转转调调度度程程序序进进行行重重新新调调度度,将将处处理理机机分分配配给给另另一一就就绪绪进进程程,并并进进行行切切换换,亦亦即即,保保留留被被阻阻塞塞进进程程的的处处理理机机状状态态(在在PCB中中),再再按按新新进进程程的的PCB中中的的处处理理机机状态设置状态设置CPU的环境。的环境。2.2.进程阻塞的过程进程阻塞的过程11/6/202230第三章 进 程 管 理 唤醒原语唤醒原
31、语:由于资源的释放才能利用此资源把某些因等待由于资源的释放才能利用此资源把某些因等待 此资源而被阻塞的进程唤醒此资源而被阻塞的进程唤醒lProcedure Wakeup(n)lBeginl i=get internal name(n);找到相应的给定资源进程找到相应的给定资源进程N并获取并获取N进程的内部名进程的内部名l remove(WQ(r),i);把把i进程从等待队列进程从等待队列r中去除中去除.l i.status=readys;置置i进程为就绪状态进程为就绪状态l i.state=RQ;把把i进程插入到就绪队列进程插入到就绪队列l insert(RQ,i);把把i插入到插入到RQ队尾
32、队尾l continue;lEnd 11/6/202231第三章 进 程 管 理 当当被被阻阻塞塞进进程程所所期期待待的的事事件件出出现现时时,如如I/O完完成成或或其其所所期期待待的的数数据据已已经经到到达达,则则由由有有关关进进程程(比比如如,用用完完并并释释放放了了该该I/O设设备备的的进进程程)调调用用唤唤醒醒原原语语wakeup(),将将等等待待该该事事件件的的进进程程唤唤醒醒。唤唤醒醒原原语语执执行行的的过过程程是是:首首先先把把被被阻阻塞塞的的进进程程从从等等待待该该事事件件的的阻阻塞塞队队列列中中移移出出,将将其其PCB中中的的现现行行状态由阻塞改为就绪,然后再将该状态由阻塞改
33、为就绪,然后再将该PCB插入到就绪队列中。插入到就绪队列中。3.3.进程唤醒过程进程唤醒过程11/6/202232第三章 进 程 管 理 相交进程相交进程:多个并发进程在逻辑上存在着相互关系多个并发进程在逻辑上存在着相互关系无关进程无关进程(不相交进程不相交进程):):在逻辑上无任何联系的进程在逻辑上无任何联系的进程.进程间的作用进程间的作用直接作用直接作用:进程间的相互联系是有意识的安排的进程间的相互联系是有意识的安排的.间接作用间接作用:进程间要通过某种中介发生联系进程间要通过某种中介发生联系,是无意识的是无意识的.3.5 进程间的相互作用进程间的相互作用.进程间的联系进程间的联系相交进程
34、相交进程:多个并发进程在逻辑上存在着相互关系多个并发进程在逻辑上存在着相互关系无关进程无关进程(不相交进程不相交进程):):在逻辑上无任何联系的进程在逻辑上无任何联系的进程进程间的联系进程间的联系进程的同步机制进程的同步机制-信号量及信号量及P.VP.V操作操作(解决进程同步互斥问题解决进程同步互斥问题)11/6/202233第三章 进 程 管 理 相互感知程序交互关系一个进程对其他进程的影响相互不感知(完全不了解其他进程的存在)竞争一个进程的存在对其他进程的结果无影响间接感知(双方都与第三方交互,如共享资源)通过共享进行协作一个进程的结果依赖于从其他进程获得的信息直接感知(双方互相交互,如通
35、信)通过通信进行协作一个进程的结果依赖于从其他进程获得的信息进程间的相互联系进程间的相互联系11/6/202234第三章 进 程 管 理 3.5.1 进程的互斥进程的互斥 由由于于各各进进程程要要求求共共享享资资源源,而而有有些些资资源源需需要要互互斥斥使使用用,因因此此各各进进程程间间竞竞争争使使用用这这些些资资源源,进进程程的的这这种种关关系系未未进进程程的的互互斥斥.反反映映在在资资源源的的使使用用本本身身时排它的时排它的,从而引起进程间资源的竞争从而引起进程间资源的竞争.临界资源临界资源(critical resource)(critical resource):一次只允许一个进程使用
36、的资源一次只允许一个进程使用的资源(或者排它性使用的资源或者排它性使用的资源)11/6/202235第三章 进 程 管 理 与时间有关的错误与时间有关的错误.顺序程序特征顺序程序特征 .程序的顺序执行程序的顺序执行 一条指令执行结束之后,下一条指令才开始.或者说一条指令的执行应该在它前一条指令的执行结果的基础之上才能进行。顺序性顺序性允许环境的封闭性允许环境的封闭性运行结果的确定性运行结果的确定性运行结果的可再现运行结果的可再现11/6/202236第三章 进 程 管 理 例例:同学甲同学甲同学乙同学乙if 有空椅子 then 坐下if 有空椅子 then 搬走造成的结果造成的结果1.运行结果
37、的不确定性2.不能保证运行环境的封闭性3.不能保证顺序性4.运行结果的不可再现性11/6/202237第三章 进 程 管 理.并行程序的特征并行程序的特征1.共享性2.并发性3.随机性主机ABCD时间片到A进程进程B进程进程if (x0)x=x-1;.if (x0)x=x-1;.例例1:民航售票民航售票11/6/202238第三章 进 程 管 理.临界区临界区(互斥区互斥区):):Critical SectionCritical Section 把程序当中具有共享资源并且对共享资源进行操作的把程序当中具有共享资源并且对共享资源进行操作的这段程序这段程序,或者说在进程中涉及到临界资源的程序段叫或
38、者说在进程中涉及到临界资源的程序段叫做临界区做临界区.a=a+1a=a+1print(a)print(a)a=a-1a=a-1print(a)print(a)P1P1P2P2P3P3If a0 If a0 a=a+1;a=a+1;Else Else a=a-1;a=a-1;11/6/202239第三章 进 程 管 理 程序段程序段1 1程序段程序段2 2程序段程序段3 3共享变量共享变量11/6/202240第三章 进 程 管 理 使用临界区的原则有空让进有空让进:当临界区中无进程时当临界区中无进程时,任何有权使用临界区的进程可进入任何有权使用临界区的进程可进入无空等待:不允许两个以上的进程同
39、时进入临界区不允许两个以上的进程同时进入临界区.多中选一:当没有进程在临界区当没有进程在临界区,而同时有多个进程要求进入临界区而同时有多个进程要求进入临界区,只能让其中一个进入临界区只能让其中一个进入临界区,其他进程必须等待其他进程必须等待.有限等待:任何进入临界区的进程要求在有限的时间内得到满足任何进入临界区的进程要求在有限的时间内得到满足.让权等待:处于等待状态的进程应该放弃占用处于等待状态的进程应该放弃占用CPU,CPU,以便使得其他进程以便使得其他进程 有机会得到有机会得到CPUCPU的使用权的使用权.11/6/202241第三章 进 程 管 理 3.5.2 进程互斥的两种解决方法进程
40、互斥的两种解决方法.由竞争各方平等协商由竞争各方平等协商.引人一进程管理者引人一进程管理者,由管理者来协调竞争各方对互斥资源的使用由管理者来协调竞争各方对互斥资源的使用.具体办法:硬件(当一个进程进入临界区,就屏蔽所有中断)软件(用编程解决,但常常忙等待)11/6/202242第三章 进 程 管 理 进程互斥的软件方法进程互斥的软件方法l通过平等协商方式实现进程互斥的最初方法是软件方法通过平等协商方式实现进程互斥的最初方法是软件方法.l软件方法软件方法1:While(free)While(free)free=true;free=true;free=false;free=false;临界区临界区
41、free:free:表示临界区标志表示临界区标志 true:true:有进程在临界区有进程在临界区 false:false:无进程在临界区无进程在临界区(初值初值)l其基本思路:是在进入临界区检查和设置一些标志,如果已有进程在临界其基本思路:是在进入临界区检查和设置一些标志,如果已有进程在临界 区,则在进入区通过循环检查进行等待;在退出区修改标志。区,则在进入区通过循环检查进行等待;在退出区修改标志。l问题:设置什么标志和如何检查标志。问题:设置什么标志和如何检查标志。11/6/202243第三章 进 程 管 理 l软件方法软件方法2:While(not turn);While(not tur
42、n);Turn=falseTurn=false临界区turn:turn:true true表示表示P P进入临界区进入临界区 false false表示表示Q Q进程临界区进程临界区P:While(turn);While(turn);Turn=trueTurn=true临界区Q:11/6/202244第三章 进 程 管 理 l软件方法软件方法3:Pturn=true;Pturn=true;While(qturn);While(qturn);Pturn=falsePturn=false临界区Pturn,qturn:Pturn,qturn:初值为初值为falsefalse P P进入临界区的条件进
43、入临界区的条件:pturn not qturn:pturn not qturn Q Q进入临界区的条件进入临界区的条件:not Pturn qturn:not Pturn qturnP:Qturn=true;Qturn=true;While(pturn)While(pturn)Qturn=falseQturn=false临界区Q:11/6/202245第三章 进 程 管 理 例例:进行修改进行修改 .while(flag1);while(flag1);flag0=true;flag0=true;临界区临界区;flag0=false;flag0=false;进程进程1 1.while(flag0
44、);while(flag0);flag1=true;flag1=true;临界区临界区;flag1=false;flag1=false;falg0falg0flag1flag1 .while(flag1);while(flag1);临界区临界区;flag0=false;flag0=false;.while(flag0);while(flag0);临界区临界区;flag1=false;flag1=false;再进行修改再进行修改flag1=true;flag1=true;flag0=true;flag0=true;11/6/202246第三章 进 程 管 理 .flag0=true;flag0=
45、true;while(flag1)while(flag1)beginbegin flag0=false;flag0=false;wait(5);wait(5);flag0=true;flag0=true;end end 临界区临界区;flag0=false;flag0=false;.flag1=true;flag1=true;while(flag0)while(flag0)beginbegin flag1=false;flag1=false;wait(5);wait(5);flag1=true;flag1=true;end end 临界区临界区;flag1=false;flag1=false;
46、11/6/202247第三章 进 程 管 理 l软件方法软件方法4:Dekker算法算法 Pturn,qturn:Pturn,qturn:初值为初值为falsefalse P P进入临界区的条件进入临界区的条件:pturn not qturn:pturn not qturn Q Q进入临界区的条件进入临界区的条件:not Pturn qturn:not Pturn qturnTurn:Turn:枚举类型枚举类型,初值任意初值任意11/6/202248第三章 进 程 管 理 While(true)While(true)pturn=true;pturn=true;while(qturn)while
47、(qturn)if(turn=2)if(turn=2)pturn=false;pturn=false;while(turn=2);while(turn=2);pturn=true;pturn=true;turn=2;turn=2;pturn=false;pturn=false;临界区P:While(true)While(true)qturn=true;qturn=true;while(pturn)while(pturn)if(turn=2)if(turn=2)qturn=false;qturn=false;while(turn=1);while(turn=1);qturn=true;qturn
48、=true;turn=1;turn=1;qturn=false;qturn=false;临界区Q:11/6/202249第三章 进 程 管 理 软件解决的缺点:l忙等待l实现过于复杂,需要高的编程技巧.lPeterson算法算法 pturn=true;pturn=true;turn=2;turn=2;while(qturn&turn=2);while(qturn&turn=2);Pturn=falsePturn=false临界区P:Qturn=true;Qturn=true;Turn=1;Turn=1;while(pturn&turn=1);while(pturn&turn=1);Qturn=
49、falseQturn=false临界区Q:11/6/202250第三章 进 程 管 理 硬件办法硬件办法1lboolean Ts(boolean*lock)boolean old;old=*lock;*lock=true;return(old);while Ts(*lock);while Ts(*lock);临界区lock=false;lock=false;“测试并设置测试并设置”指令指令11/6/202251第三章 进 程 管 理 硬件办法硬件办法2Void swap(int*a,int*b)int temp temp=*a;*a=*b;*b=temp;key=true;key=true;D
50、o Do swap(*lock,key);swap(*lock,key);while(key);while(key);临界区lock=false;lock=false;“交换交换”指令指令11/6/202252第三章 进 程 管 理 硬件办法硬件办法3“开关中断开关中断”指令指令进入临界区前执行:执行进入临界区前执行:执行“关中断关中断”指令指令离开临界区后执行:执行离开临界区后执行:执行“开中断开中断”指令指令11/6/202253第三章 进 程 管 理 3.5.3 进程的同步机制进程的同步机制-信号量及信号量及p.v操作操作同步机制同步机制信号量及信号量及P.V操作操作管程管程条件临界域条