三章进程管理

上传人:公**** 文档编号:567589965 上传时间:2024-07-21 格式:PPT 页数:98 大小:1.13MB
返回 下载 相关 举报
三章进程管理_第1页
第1页 / 共98页
三章进程管理_第2页
第2页 / 共98页
三章进程管理_第3页
第3页 / 共98页
三章进程管理_第4页
第4页 / 共98页
三章进程管理_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《三章进程管理》由会员分享,可在线阅读,更多相关《三章进程管理(98页珍藏版)》请在金锄头文库上搜索。

1、第三章 进 程 管 理 第三章第三章 进程管理进程管理-1 -1 3.1 3.1 进程的基本概念进程的基本概念 3.2 3.2 进程的基本状态进程的基本状态 3.3 3.3 进程的描述与管理进程的描述与管理 3.4 3.4 进程控制进程控制重点重点: :本章为本书的重点本章为本书的重点, ,难点难点 非昂泉孰诺号砌铣踞埔潭袍禹撮痈锡殊猾唁遭葵盆仪绣叉殊冰符遗快罪咏三章进程管理三章进程管理7/21/20241第三章 进 程 管 理 3.1 进程的基本概念进程的基本概念 3.1.1 进程概念的引入进程概念的引入C编译程序CC程序程序A程序程序B时间片用完中断可再入程序良恬揉据务舵穗屯芭坍迁珍目固姜

2、绦卜甲所茨浚毡鲜户慎馅剁堂健郊刘歼三章进程管理三章进程管理7/21/20242第三章 进 程 管 理 进程:一段功能完整的程序在处理机上的执行过程。进程:一段功能完整的程序在处理机上的执行过程。3.1.2 进程与程序的区别进程与程序的区别进程是动态的,程序是静态的进程是动态的,程序是静态的进程是暂时的概念,程序是永久的概念进程是暂时的概念,程序是永久的概念进程有自己的数据结构进程有自己的数据结构PCB进程和程序不是一一对应的。进程和程序不是一一对应的。掇适掳夕焕卧堕炸北讶吉骄您贯软窒坦爱物翘垫斤装钢澈垢掺茎悸砸摘绿三章进程管理三章进程管理7/21/20243第三章 进 程 管 理 3.1.3

3、进程的定义进程的定义进程进程: :是一个具有独立功能的程序对某个数据集在处理是一个具有独立功能的程序对某个数据集在处理 机上的执行过程和分配资源的基本单位机上的执行过程和分配资源的基本单位. . 程序程序: :指一组操作序列指一组操作序列. .数据集数据集: :接受程序规定操作的一组存储单元的内容接受程序规定操作的一组存储单元的内容. . 进程的特征进程的特征动态性动态性并行性并行性独立性独立性异步性异步性亢氧坞嫉锹恢涡悸袜壤氢李狱亚渊扭惑洛骄屑郑抒入豁敝瞎铆余选祖拄夹三章进程管理三章进程管理7/21/20244第三章 进 程 管 理 进程的结构特征进程的结构特征:PCB,程序代码段程序代码段

4、,数据段数据段程序数据PCB进程的结构特征进程的结构特征懈霍操吧铱驹变躬刷坷换女族永激建贪恿呐紊坡辣慰尸硝躇狞冈坍曰提错三章进程管理三章进程管理7/21/20245第三章 进 程 管 理 进程程序动态静态暂时永久并行串行(顺序)PCB多个一个一个多个进程与程序的区别与联系进程与程序的区别与联系缀疡洋羌胡嚣颐窟寸迫张奇掷陕梦舔关吠秒货浑苏饭柿畏尔滇亿酮游狗虚三章进程管理三章进程管理7/21/20246第三章 进 程 管 理 3.2 进程的基本状态进程的基本状态 为了描述和控制进程的运行为了描述和控制进程的运行,系统为每个进程定义了一个数据系统为每个进程定义了一个数据结构结构,即进程控制块即进程控

5、制块PCB (Process Control Block),系统根据系统根据PCB,感知该进程的存在感知该进程的存在,故亦称故亦称PCB是进程存在的标志是进程存在的标志. PCB的作用的作用:u感知进程的存在u记录进程的状态或有关信息通常在一个实际系统中通常在一个实际系统中,PCB的总数是固定的的总数是固定的,该数目规定了系该数目规定了系统所允许拥有的进程数目统所允许拥有的进程数目,同时将所有的同时将所有的PCB形成一个结构数形成一个结构数组组(或称或称PCB表表),存放在系统的数据区中存放在系统的数据区中.一个进程的一个进程的PCB机构全部或部分常驻内存机构全部或部分常驻内存.棍嘶扶独螺弹恕

6、柒始雀界椭讨推禹师昨己婆娥差奈其凿懦轩烧料翻期堕凛三章进程管理三章进程管理7/21/20247第三章 进 程 管 理 3.2.1 进程的基本状态进程的基本状态1. 进程状态进程状态就绪态就绪态:等待系统分配处理机以便执行时 所处的状态. 即获得了除处理机之外的所以资源,一旦由调度 程序选中得到处理机就可以立即执行的状态.运行态运行态:正在处理机上执行时所处的状态. 在单CPU情况下,处于该状态的进程数只有一个.等待态等待态:等待某个事件的完成时进程所处的状态.除了 CPU之外其他的资源也没有得到满足 拽蛾嘶岛佃沸垢啊剩意揍郎骂呈延思框耐骗惫苍象窥壶丛之枣矢舒简丰邻三章进程管理三章进程管理7/2

7、1/20248第三章 进 程 管 理 运行就绪等待进程调度策略进程调度策略时时间间片片用用完完等待某一事件发生等待某一事件发生等待事件结束等待事件结束剥剥夺夺处处理理机机创建创建撤销撤销进程的三种基本状态及其转换进程的三种基本状态及其转换 臭疵陀乱柏墒沼惭瓢交怯据父许邪衬床形阳分橙道吹棘穗虎景痹奶断洼田三章进程管理三章进程管理7/21/20249第三章 进 程 管 理 进程控制块3.3 进程的描述与管理进程的描述与管理1.OS1.OS感知进程存在的唯一标识感知进程存在的唯一标识-PCB-PCB2.2.记录了记录了OSOS所需的用于描述进程及控制进程全部信息所需的用于描述进程及控制进程全部信息.

8、 . 在在PCBPCB中主要包括下面信息中主要包括下面信息: : 1) 1) 进程描述信息进程描述信息 2) 2) 进程控制信息进程控制信息 3) 3) 资源信息资源信息 4) 4) 现场保护信息现场保护信息 1) 1) 进程描述信息进程描述信息: :进程名或进程标识符进程名或进程标识符. . 家族关系家族关系. . 母芥椭肃卒矾浚毗葬耽姚谤豆置歪阉探羊幼揩篡辟最迪瞻皮拟质古峭染占三章进程管理三章进程管理7/21/202410第三章 进 程 管 理 2) 2) 进程控制信息进程控制信息1.1.进程的当前信息进程的当前信息: :指明进程的当前状态指明进程的当前状态, ,作为进程调度作为进程调度和

9、对换的依据和对换的依据. .2.2.进程优先级进程优先级: :调度依据调度依据, ,是进程占有处理机的重要依据是进程占有处理机的重要依据. .3.3.程序开始地址程序开始地址: :便于执行这段程序便于执行这段程序. .4.4.各种计时信息各种计时信息: :记录资源占用的信息记录资源占用的信息. .5.5.通信信息通信信息: :保证进程之间相应的联系保证进程之间相应的联系. .3) 3) 资源管理信息资源管理信息1.1.占用内存大小及其管理用数据结构指针占用内存大小及其管理用数据结构指针. .2.2.对换或覆盖用的有关信息对换或覆盖用的有关信息. .3.3.共享程序的大小及起始地址共享程序的大小

10、及起始地址. .4.4.I/OI/O设备号设备号, ,传送的数据长度传送的数据长度, ,缓冲区地址缓冲区地址, ,缓冲区长度缓冲区长度及所有设备的有关数据结构指针及所有设备的有关数据结构指针. .5.5.指向文件系统的指针及有关标识符指向文件系统的指针及有关标识符. .藻俩愤戳唬苑扒旨刺磷挫闸脚上镑撵绥烁捆缓倍臀襄另阑井勇藩仙雾壁矫三章进程管理三章进程管理7/21/202411第三章 进 程 管 理 4) CPU4) CPU现场保护信息现场保护信息( (进程上下文进程上下文) )1.1.通用寄存器的用户通用寄存器的用户2.2.PCPC3.3.PSW :PSW :含状态信息(条件码的执行方式含状

11、态信息(条件码的执行方式, ,中断屏蔽标识中断屏蔽标识) )。4.4.用户栈指针:为每个用户进程有一个或若干隔与之相关用户栈指针:为每个用户进程有一个或若干隔与之相关的系统栈,用于存放过程和系统调用参数和调用地址。的系统栈,用于存放过程和系统调用参数和调用地址。 当处理机被中断时当处理机被中断时, ,各种寄存器的内容都必须保各种寄存器的内容都必须保存在被中断进程的存在被中断进程的PCBPCB中中, ,以便在该进程重新执行时以便在该进程重新执行时, ,能从断点继续执行能从断点继续执行. . 由于由于PCBPCB中包含较多的信息(占几百几千中包含较多的信息(占几百几千BYTE),BYTE),在有的

12、在有的系统中只含系统中只含PCBPCB中最常用部分(中最常用部分(CPUCPU现场保护部分,进程描述现场保护部分,进程描述信息,控制信息)常驻内存,其他部分则放在外存中,待该信息,控制信息)常驻内存,其他部分则放在外存中,待该进程将要执行时与其他数据一起装入内存。进程将要执行时与其他数据一起装入内存。元邹脑漓堂脊砍墓虐席桑雍旗命聋掠萍绣悸限庭貌荚牺耸迁迟滨镐淬菜剧三章进程管理三章进程管理7/21/202412第三章 进 程 管 理 * *进程上下文进程上下文 是对进程动态活动的静态描述是对进程动态活动的静态描述 进程的上下文是其相应的程序地址空间的内容,进程的上下文是其相应的程序地址空间的内容

13、,硬件寄存器的内容以及与该进程有关的核心数据结构硬件寄存器的内容以及与该进程有关的核心数据结构(系统堆栈,用户堆栈)构成的。(系统堆栈,用户堆栈)构成的。 包括:计算机系统中与执行该进程有关的各种寄包括:计算机系统中与执行该进程有关的各种寄存器值;程序段经过编译连接后形成的机器指令代码存器值;程序段经过编译连接后形成的机器指令代码段(段(text);text);数据段以及各种堆栈的值和数据段以及各种堆栈的值和PCBPCB块)。块)。 例:例:UNIXUNIX进程上下进程上下文文用户级上下文用户级上下文 系统级上下文系统级上下文寄存器上下文寄存器上下文* *进程上下文进程上下文娱酞筷植经镭陪闸毕

14、骸九龙忽呢供腔随徽肄洒们铁肥拘汐手妨垦界椅郝趾三章进程管理三章进程管理7/21/202413第三章 进 程 管 理 * *进程的组成进程的组成 进程进程PCBPCB程序(代码和数据)程序(代码和数据) 进程的表进程的表记记PCB程序PCB程序代码女噪琅杜勇狞饰戊拧鞋粒沉鹃釜鞋森率坤抛撑蘸祟亚佯抓展蓬蜒闭凛鼎氰三章进程管理三章进程管理7/21/202414第三章 进 程 管 理 *PCB*PCB的组成方式的组成方式 在一个系统中,通常可以拥有数十个以及若干个在一个系统中,通常可以拥有数十个以及若干个PCB,PCB,为了能对他们进行有效的管理,应当用适当的方为了能对他们进行有效的管理,应当用适当的

15、方式将他们组织起来。式将他们组织起来。PCBPCB目前常用的组织方式:链接方式;索引方式目前常用的组织方式:链接方式;索引方式 系统中进程队列分类:就绪队列,等待队列,运行队系统中进程队列分类:就绪队列,等待队列,运行队列。列。 就绪队列:整个系统一个就绪队列:整个系统一个 等待队列:每一个等待事件一个。等待队列:每一个等待事件一个。 运行队列:单机系统中整个系统一个。运行队列:单机系统中整个系统一个。棠亩叉蝴陨矾交您漳寸放芹酋坐妒阁索刺于戏淆将赦堕蓖屉诊蔷硝砂魏形三章进程管理三章进程管理7/21/202415第三章 进 程 管 理 1.1.链接方式链接方式PCB链接队列示意图 把具有相同状态

16、的把具有相同状态的PCB,PCB,用其中的链接字链接成一个队列用其中的链接字链接成一个队列. .线性表线性表讣律顶部囚殖餐拄偷锗腿振诫漱众醚恶粤规叁琅伐遗壕早劣江坞举疵喀烬三章进程管理三章进程管理7/21/202416第三章 进 程 管 理 按索引方式组织PCB 2. 2. 索引方式索引方式系统根据所有进程的状态系统根据所有进程的状态, ,建立几张索引表建立几张索引表, ,如就绪索引表如就绪索引表, ,阻塞索引阻塞索引表表, ,并把各索引表在内存的首地址记录于内存中的一些专用库文件中并把各索引表在内存的首地址记录于内存中的一些专用库文件中. .浪俺欺漱腮豪刽佐怕扯儿筏传踪啥让贝扇睛图呈云忧铺券

17、癣撰刑糊程散九三章进程管理三章进程管理7/21/202417第三章 进 程 管 理 3.4 进程控制进程控制为了防止为了防止OSOS及关键数据如及关键数据如PCBPCB等等, ,受到用户程序有意或无意的破坏受到用户程序有意或无意的破坏, ,通通常将处理机的执行状态分为常将处理机的执行状态分为: :系统态和用户态系统态和用户态. .1.1.系统态系统态( (核心态核心态):):具有较高的特权具有较高的特权, ,能执行一切指令能执行一切指令, ,访访问所有的寄存器和存储区问所有的寄存器和存储区. .2.2.用户态用户态: :具有较低特权的执行状态具有较低特权的执行状态, ,只能执行规定的指只能执行

18、规定的指令令, ,访问指定的寄存器和存储区访问指定的寄存器和存储区. .进程控制进程控制: : 就是系统使用一些具有特定功能的程序段来创建、撤销进程以就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程状态间的转换,从而达到多进程高效率并发执行和协及完成进程状态间的转换,从而达到多进程高效率并发执行和协调实现资源共享的目的。调实现资源共享的目的。原语(原语(Atomic Operation):Atomic Operation): 系统态下执行的某些具有特定功能的程序系统态下执行的某些具有特定功能的程序段。段。俭虎拐峭汝靛瓣夺庞巴抠亏勘赌趾狮秤场丛甫敲啦砖镣亚冤罪奏媚颧莱牧三章进程管

19、理三章进程管理7/21/202418第三章 进 程 管 理 . . 创建原语创建原语为此进程分配进程控制块为此进程分配进程控制块为此进程分配资源为此进程分配资源把此进程插入到就绪队列中把此进程插入到就绪队列中, ,等待等待CPUCPU的调度的调度. . 引起创建进程的事件引起创建进程的事件 用户登陆用户登陆作业调度作业调度提供服务提供服务应用请求应用请求3.4.1. 进程的创建进程的创建处晌摊啤见樱反战袜普局炒怕逆债逝姚缠满梧仰悉做幕辆戒生籽稚樟深脖三章进程管理三章进程管理7/21/202419第三章 进 程 管 理 1. 1. 引起进程终止的事件引起进程终止的事件 正常结束正常结束异常结束异

20、常结束外界干预外界干预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 (sched) schedure else continue( else continue(当前正在执行当前正在执行的进程的进程);); end end夹懂怠殃泽趟悉钢讯稼续王惨郑叭薄掩臀夏渡抡虚挂硒改那奶久魏操鳖蜗三章进程管理三章进程管理7/21/2

21、02420第三章 进 程 管 理 .进程创建原语的描述形式进程创建原语的描述形式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.resource=Ro; /* 填写资源清单填写资源清单 */ i.status=readys; /* 填写进程状态填写进程状态

22、*/ j=EP; /* 获取调用者内部标识获取调用者内部标识 */ i.parent=j; /* 填写填写i进程的父进程进程的父进程j */ j.progency=; /* 置置i的家族指的家族指针为空空 */ i.progency=i; /* 把把i填入其父进程填入其父进程PCB的家族指针处的家族指针处 */ i.state=RQ; /* 置置i所在状态队列首指针所在状态队列首指针 */ insert(RQ,i); /* 把把i进程插入到进程插入到RQ对尾对尾 */EndPCBi赠闭雇球观裁箩裴辱莆擂排屿吃枕瑞会率黍奢钝俱致闰刨竹辫礁擂松郡帐三章进程管理三章进程管理7/21/202421第三

23、章 进 程 管 理 lProcedure 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 al

24、l Rcreated resoure(i) do remove descriptor(R) ;l 撤销自己的资源清单并归还系统撤销自己的资源清单并归还系统l remove process control block(i);lEND 俗党它敬淬隐翰载函示溅滥踪冲手名巧呐兑惑膏崎种甜盎菱迂攒剁伐虞耪三章进程管理三章进程管理7/21/202422第三章 进 程 管 理 1.根根据据被被终终止止进进程程的的标标识识符符,从从PCB链链表表中中检检索索出出该该进进程程的的PCB,从从中中读读出该进程的状态。出该进程的状态。2.若若被被终终止止进进程程正正处处于于执执行行状状态态,应应立立即即终终止止该该

25、进进程程的的执执行行,并并置置调调度度标标志为真,用于指示该进程被终止后应重新进行调度。志为真,用于指示该进程被终止后应重新进行调度。3.若若该该进进程程还还有有子子孙孙进进程程,还还应应将将其其所所有有子子孙孙进进程程予予以以终终止止,以以防防他他们们成成为不可控的进程。为不可控的进程。4.将将被被终终止止进进程程所所拥拥有有的的全全部部资资源源,或或者者归归还还给给其其父父进进程程, 或或者者归归还还给给系统。系统。5.将被终止进程将被终止进程(它的它的PCB)从所在队列从所在队列(或链表或链表)中移出,中移出, 等待其他程序等待其他程序来搜集信息。来搜集信息。 2 2. .进程的终止过程

26、进程的终止过程砖寻惩钥没瑟秀傣播喧既伏砷递亲锑马笑稽披承挞貉龄枉智乖俗域啪交迢三章进程管理三章进程管理7/21/202423第三章 进 程 管 理 3.4.3 进程的挂起和激活进程的挂起和激活挂起挂起: :让进程暂时不参与资源的竞争让进程暂时不参与资源的竞争1. 1. 挂起原语的方式挂起原语的方式 把挂起原语调用者本身挂起把挂起原语调用者本身挂起,即自己挂起自己即自己挂起自己挂起某个标识符的进程挂起某个标识符的进程将某个指定标识符的进程及其全部或部分子孙挂起将某个指定标识符的进程及其全部或部分子孙挂起. 挂起用以保存挂起用以保存N进程的进程的PCB副本的内存区副本的内存区,以备参考以备参考.l

27、Procedure 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); /* 相应的相应的PCB保留起来以便查看是属于哪一种挂起保留起来以便查看是属于哪一种挂起.l if s=blocka i.status=Blocks else i.status=readys;l if s=running schedule else continue;lEnd 唁炔兼咸豺倒袋试希熊攒媚好萄颊枯峡昭灾赏钎睫吉闺纫小爱浅苟争肮堆三章进程管理三章进程管理7

28、/21/202424第三章 进 程 管 理 当当出出现现了了引引起起进进程程挂挂起起的的事事件件时时,比比如如,用用户户进进程程请请求求将将自自己己挂挂起起,或或父父进进程程请请求求将将自自己己的的某某个个子子进进程程挂挂起起, 系系统统将将利利用用挂挂起起原原语语suspend( )将将指指定定进进程程或或处处于于阻阻塞塞状状态态的的进进程程挂挂起起。挂挂起起原原语语的的执执行行过过程程是是:首首先先检检查查被被挂挂起起进进程程的的状状态态,若若处处于于活活动动就就绪绪状状态态,便便将将其其改改为为静静止止就就绪绪;对对于于活活动动阻阻塞塞状状态态的的进进程程,则则将将之之改改为为静静止止阻

29、阻塞塞。 为为了了方方便便用用户户或或父父进进程程考考查查该该进进程程的的运运行行情情况况而而把把该该进进程程的的PCB复复制制到到某某指指定定的的内内存存区区域域。最最后后,若若被被挂挂起起的的进进程程正正在在执执行行,则转向调度程序重新调度。则转向调度程序重新调度。 2. 2. 进程进程的挂起的挂起泣绳应泉鸟翼滩太饺余染瘤捶渡练软响粱邮厌简阅梭忆瞪左骏桓佩逸员屎三章进程管理三章进程管理7/21/202425第三章 进 程 管 理 . . 激活原语的激活方式激活原语的激活方式 激活指定标识符的进程激活指定标识符的进程激活某进程及其子孙激活某进程及其子孙lProcedure active(n)

30、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 孟渺悲傻懒彬硷帛戴躁湍绍顽会舍晾宇俄人嗡淤绒淬悠蛾歇侥惟茵不淫卿三章进程管理三章进程管理7/21/202426第三章 进 程 管 理 当当发发生生激激活活进进程程的的事事件件时时,例例如如,父父进进程程或或用用户户进进程程请请求求激激活活指指定定进进程程,若若该该进进程程驻驻留留在在外外存

31、存而而内内存存中中已已有有足足够够的的空空间间时时,则则可可将将在在外外存存上上处处于于静静止止就就绪绪状状态态的的进进程程换换入入内内存存。这这时时,系系统统将将利利用用激激活活原原语语active( )将将指指定定进进程程激激活活。 激激活活原原语语先先将将进进程程从从外外存存调调入入内内存存,检检查查该该进进程程的的现现行行状状态态,若若是是静静止止就就绪绪,便便将将之之改改为为活活动动就就绪绪;若若为为静静止止阻阻塞塞便便将将之之改改为为活活动动阻阻塞塞。假假如如采采用用的的是是抢抢占占调调度度策策略略,则则每每当当有有新新进进程程进进入入就就绪绪队队列列时时,应应检检查查是是否否要要

32、进进行行重重新新调调度度,即即由由调调度度程程序序将将被被激激活活进进程程与与当当前前进进程程进进行行优优先先级级的的比比较较,如如果果被被激激活活进进程程的的优优先先级级更更低低,就就不不必必重重新新调调度度;否否则则,立立即即剥剥夺夺当当前前进进程程的的运运行行,把把处处理理机机分分配配给给刚刚被被激激活活的的进进程。程。 . . 进程的激活进程的激活工宾蜕刽堑剧困父臼弧衡伶某彤遣檄杠颠邀奏珐桨嗽淹嫩惶愚坝羌烙栓记三章进程管理三章进程管理7/21/202427第三章 进 程 管 理 .挂起引起的原因挂起引起的原因协调负载过重协调负载过重某些设备故障某些设备故障 调试程序调试程序具有挂起状态

33、的进程状态图 郧翔它察萌铝魏楚团材满框育囱远腕刚谦稍毫奈顺旨铁邑余嘛汽宾鱼矣怨三章进程管理三章进程管理7/21/202428第三章 进 程 管 理 1. 1. 引起阻塞和唤醒的事件引起阻塞和唤醒的事件请求系统服务请求系统服务启动某种操作启动某种操作新数据尚未到达新数据尚未到达无新工作可作无新工作可作.3.4.4 进程的阻塞与唤醒进程的阻塞与唤醒lProcedure Block(n)lBeginl i=EP; 从执行进程的指针从执行进程的指针EP获得调用者内部标识符获得调用者内部标识符l stop(i);l i.status=blocka; 修改该进程的状态修改该进程的状态l i.state=W

34、Q(r); 找到相应的插入队列找到相应的插入队列l insert(WQ(r),i); 把把i插入到插入到WQ队尾队尾l scheduler; 转调度程序转调度程序lEndl . . 阻塞原语阻塞原语鱼滋使胚短赢晓扭音酿伊孜报珠课曲棒纹推亡函蒸密捡迹傈伶言掏霖昏横三章进程管理三章进程管理7/21/202429第三章 进 程 管 理 正正在在执执行行的的进进程程,当当发发现现上上述述某某事事件件时时,由由于于无无法法继继续续执执行行,于于是是进进程程便便通通过过调调用用阻阻塞塞原原语语block把把自自己己阻阻塞塞。可可见见,进进程程的的阻阻塞塞是是进进程程自自身身的的一一种种主主动动行行为为。进

35、进入入block过过程程后后,由由于于此此时时该该进进程程还还处处于于执执行行状状态态,所所以以应应先先立立即即停停止止执执行行,把把进进程程控控制制块块中中的的现现行行状状态态由由“执执行行”改改为为阻阻塞塞,并并将将PCB插插入入阻阻塞塞队队列列。如如果果系系统统中中设设置置了了因因不不同同事事件件而而阻阻塞塞的的多多个个阻阻塞塞队队列列,则则应应将将本本进进程程插插入入到到具具有有相相同同事事件件的的阻阻塞塞(等等待待)队队列列。 最最后后,转转调调度度程程序序进进行行重重新新调调度度,将将处处理理机机分分配配给给另另一一就就绪绪进进程程,并并进进行行切切换换,亦亦即即,保保留留被被阻阻

36、塞塞进进程程的的处处理理机机状状态态(在在PCB中中),再再按按新新进进程程的的PCB中中的的处处理理机机状态设置状态设置CPU的环境。的环境。 2. 2. 进程阻塞的过程进程阻塞的过程炼砰栽榔伦邪竞柄竞鳃泳乖少舱剖矮削退哀劈隔捉佯独顾啡铝默座悼灭眩三章进程管理三章进程管理7/21/202430第三章 进 程 管 理 唤醒原语唤醒原语: :由于资源的释放才能利用此资源把某些因等待由于资源的释放才能利用此资源把某些因等待 此资源而被阻塞的进程唤醒此资源而被阻塞的进程唤醒lProcedure Wakeup(n)lBeginl i=get internal name(n);找到相应的给定资源进程找到

37、相应的给定资源进程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队尾队尾l continue;lEnd 淫掉弓继囤卿廓比为旅槽暮贝使织认痈霸纳缺帖许董帝立殉祸雀礼绚楼谩三章进程管理三章进程管理7/21/202431第三章 进 程 管 理 当当被被阻阻塞塞进进程程所所期期待待的的事事件件出出现现时时,如如I/O完完成成或或

38、其其所所期期待待的的数数据据已已经经到到达达,则则由由有有关关进进程程(比比如如,用用完完并并释释放放了了该该I/O设设备备的的进进程程)调调用用唤唤醒醒原原语语wakeup( ),将将等等待待该该事事件件的的进进程程唤唤醒醒。唤唤醒醒原原语语执执行行的的过过程程是是:首首先先把把被被阻阻塞塞的的进进程程从从等等待待该该事事件件的的阻阻塞塞队队列列中中移移出出,将将其其PCB中中的的现现行行状态由阻塞改为就绪,然后再将该状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。插入到就绪队列中。 3. 3. 进程唤醒过程进程唤醒过程柒臼咆栈娃廷鉴剃伶吉嘿适蕾隆斩妹秉委洛限孽遂认笑幻隅沛晰兵冰殆拘三

39、章进程管理三章进程管理7/21/202432第三章 进 程 管 理 相交进程相交进程:多个并发进程在逻辑上存在着相互关系多个并发进程在逻辑上存在着相互关系无关进程无关进程( (不相交进程不相交进程):):在逻辑上无任何联系的进程在逻辑上无任何联系的进程. 进程间的作用进程间的作用直接作用直接作用:进程间的相互联系是有意识的安排的进程间的相互联系是有意识的安排的.间接作用间接作用: :进程间要通过某种中介发生联系进程间要通过某种中介发生联系, ,是无意识的是无意识的. .3.5 进程间的相互作用进程间的相互作用. 进程间的联系进程间的联系相交进程相交进程:多个并发进程在逻辑上存在着相互关系多个并

40、发进程在逻辑上存在着相互关系无关进程无关进程( (不相交进程不相交进程):):在逻辑上无任何联系的进程在逻辑上无任何联系的进程进程间的联系进程间的联系进程的同步机制进程的同步机制-信号量及信号量及P.VP.V操作操作( (解决进程同步互斥问题解决进程同步互斥问题) )睹卓对笺辙敲责痒锨陶芥鸭胳从笋胖懦煞耐隅脖畜灯辈传朵鸽度裴得凌癌三章进程管理三章进程管理7/21/202433第三章 进 程 管 理 相互感知程序交互关系一个进程对其他进程的影响相互不感知(完全不了解其他进程的存在)竞争一个进程的存在对其他进程的结果无影响间接感知(双方都与第三方交互,如共享资源)通过共享进行协作一个进程的结果依赖

41、于从其他进程获得的信息直接感知(双方互相交互,如通信)通过通信进行协作一个进程的结果依赖于从其他进程获得的信息进程间的相互联系进程间的相互联系矗雁肛谰柠陌怔奠硒霖添芥倍田接技躲维评紫田父弧米趴刃缴拷栓它又贮三章进程管理三章进程管理7/21/202434第三章 进 程 管 理 3.5.1 进程的互斥进程的互斥 由由于于各各进进程程要要求求共共享享资资源源, ,而而有有些些资资源源需需要要互互斥斥使使用用, ,因因此此各各进进程程间间竞竞争争使使用用这这些些资资源源, ,进进程程的的这这种种关关系系未未进进程程的的互互斥斥. .反反映映在在资资源源的的使使用用本本身身时排它的时排它的, ,从而引起

42、进程间资源的竞争从而引起进程间资源的竞争. . 临界资源临界资源(critical resource)(critical resource):一次只允许一个进程使用的资源一次只允许一个进程使用的资源( (或者排它性使用的资源或者排它性使用的资源) )蚀椎发谷睁域醛拢维虎侦宙妓廖盛森曳醛案垦巢粕乓俗赊哥机别垢早奇西三章进程管理三章进程管理7/21/202435第三章 进 程 管 理 与时间有关的错误与时间有关的错误. 顺序程序特征顺序程序特征 . 程序的顺序执行程序的顺序执行 一条指令执行结束之后,下一条指令才开始.或者说一条指令的执行应该在它前一条指令的执行结果的基础之上才能进行。 顺序性顺序

43、性允许环境的封闭性允许环境的封闭性运行结果的确定性运行结果的确定性运行结果的可再现运行结果的可再现虹琢妹靶完枣褂缝悟摇恤姻疯宴杰樟凛峨目澈摄跋苯茹搏奏隅茨冤锋暮东三章进程管理三章进程管理7/21/202436第三章 进 程 管 理 例例:同学甲同学甲同学乙同学乙if 有空椅子 then 坐下if 有空椅子 then 搬走造成的结果造成的结果1.运行结果的不确定性2.不能保证运行环境的封闭性3.不能保证顺序性4.运行结果的不可再现性阎假厩荷呜开勇郁董朔啥锣烹由德吐鹏侍住捷阎战劲迷讣桥气觅窜沧娘磺三章进程管理三章进程管理7/21/202437第三章 进 程 管 理 .并行程序的特征并行程序的特征1

44、.共享性2.并发性3.随机性主机ABCD时间片到A进程进程B进程进程if (x0 ) x=x-1;.if (x0 ) x=x-1;.例例1:民航售票民航售票眩掐饲盈膝困化佳涣格温馅捆矫砧叠灰铝孪异郎茄那见颊槐热晌郭擒惨袱三章进程管理三章进程管理7/21/202438第三章 进 程 管 理 . .临界区临界区( (互斥区互斥区):):Critical SectionCritical Section 把程序当中具有共享资源并且对共享资源进行操作的把程序当中具有共享资源并且对共享资源进行操作的这段程序这段程序, ,或者说在进程中涉及到临界资源的程序段叫或者说在进程中涉及到临界资源的程序段叫做临界区做

45、临界区. .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;个李搜厘雨尺密廊辗棠挫除尿溉椒自怠痞扼段毅歇酶涤介崔辕燎焉柬箕垒三章进程管理三章进程管理7/21/202439第三章 进 程 管 理 程序段程序段1 1程序段程序段2 2程序段程序段3 3共享变量共享变量涎南猜亥卜那坐霉锑痴蠢数漂瑰坡夫急箭娃慢魔轻散琉榨驰责盘矣憎从娩三章进程管理三章进程管理7/21/202440第三章 进 程 管 理 使用临界区的原则有空让进有

46、空让进: :当临界区中无进程时当临界区中无进程时, ,任何有权使用临界区的进程可进入任何有权使用临界区的进程可进入无空等待:不允许两个以上的进程同时进入临界区不允许两个以上的进程同时进入临界区. .多中选一:当没有进程在临界区当没有进程在临界区, ,而同时有多个进程要求进入临界区而同时有多个进程要求进入临界区, , 只能让其中一个进入临界区只能让其中一个进入临界区, ,其他进程必须等待其他进程必须等待. .有限等待:任何进入临界区的进程要求在有限的时间内得到满足任何进入临界区的进程要求在有限的时间内得到满足. .让权等待:处于等待状态的进程应该放弃占用处于等待状态的进程应该放弃占用CPU,CP

47、U,以便使得其他进程以便使得其他进程 有机会得到有机会得到CPUCPU的使用权的使用权. .陛挫诵脓釜饱忘皆团涎褐痔绅党驼尹球伞咱渡蘑理衔腆纺峰晰峦溯讹坷睫三章进程管理三章进程管理7/21/202441第三章 进 程 管 理 3.5.2 进程互斥的两种解决方法进程互斥的两种解决方法. .由竞争各方平等协商由竞争各方平等协商.引人一进程管理者引人一进程管理者, ,由管理者来协调竞争各方对互斥资源的使用由管理者来协调竞争各方对互斥资源的使用. .具体办法: 硬件(当一个进程进入临界区,就屏蔽所有中断) 软件(用编程解决,但常常忙等待)龚馏嚼瑟沽胺懂拾捣桌井篙腊己驴脖疏卿憋篷桐闷值加座汰烬哗异掳懊肾

48、三章进程管理三章进程管理7/21/202442第三章 进 程 管 理 进程互斥的软件方法进程互斥的软件方法l通过平等协商方式实现进程互斥的最初方法是软件方法通过平等协商方式实现进程互斥的最初方法是软件方法.l软件方法软件方法1: While(free)While(free) free=true; free=true;free=false;free=false;临界区临界区free:free:表示临界区标志表示临界区标志 true: true:有进程在临界区有进程在临界区 false: false:无进程在临界区无进程在临界区( (初值初值) )l其基本思路:是在进入临界区检查和设置一些标志,如

49、果已有进程在临界其基本思路:是在进入临界区检查和设置一些标志,如果已有进程在临界 区,则在进入区通过循环检查进行等待;在退出区修改标志。区,则在进入区通过循环检查进行等待;在退出区修改标志。l问题:设置什么标志和如何检查标志。问题:设置什么标志和如何检查标志。活破迄导谁然身顺议煌洒厌孪叶灸衙霖船述抓胰链尽沥春几潮寄罪乍初跃三章进程管理三章进程管理7/21/202443第三章 进 程 管 理 l软件方法软件方法2: While( not turn);While( not turn);Turn=falseTurn=false临界区turn:turn: true true表示表示P P进入临界区进入

50、临界区 false false表示表示Q Q进程临界区进程临界区P:While( turn);While( turn);Turn=trueTurn=true临界区Q:几薛讨霹隙炔论继表椽藏缓诲撮昨蛀沫袁杜皆兔埋偏阅铺惫项逛种锡灵拄三章进程管理三章进程管理7/21/202444第三章 进 程 管 理 l软件方法软件方法3: Pturn=true;Pturn=true;While( qturn);While( qturn);Pturn=falsePturn=false临界区Pturn,qturn:Pturn,qturn:初值为初值为falsefalse P P进入临界区的条件进入临界区的条件:pt

51、urn 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:恨肆坛晦谜锯瞪瘫戌秆鱼夺硬顿攘代乐泅琳拭赌味略怯屹垛扑滓谩乱贬碑三章进程管理三章进程管理7/21/202445第三章 进 程 管 理 例例: :进行修改进行修改 . . while (flag1); while (flag1); flag0=true; flag0=true; 临界区

52、临界区; ; flag0=false; flag0=false;进程进程1 1. while (flag0); 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;再进行修改再进行修改fla

53、g1=true;flag1=true;flag0=true;flag0=true;巳审秒梆氮蕉算痕愚综每穗怒赛脱厕于陕既昔沿装吹闭播穿瘫姑婉矫钉篡三章进程管理三章进程管理7/21/202446第三章 进 程 管 理 . . flag0=true;flag0=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;fl

54、ag1=true; while (flag0)while (flag0) beginbegin flag1=false; flag1=false; wait(5); wait(5); flag1=true; flag1=true; end end 临界区临界区; ; flag1=false; flag1=false;编鲸馋继萤恤叫司处脏利帚抗忍称天寐凳寅卯洼汾玖胺筏韩词俯梯隧伙肯三章进程管理三章进程管理7/21/202447第三章 进 程 管 理 l软件方法软件方法4:Dekker算法算法 Pturn,qturn:Pturn,qturn:初值为初值为falsefalse P P进入临界区的条件

55、进入临界区的条件:pturn not qturn:pturn not qturn Q Q进入临界区的条件进入临界区的条件:not Pturn qturn:not Pturn qturnTurn:Turn:枚举类型枚举类型, ,初值任意初值任意虑恢央凸筹窖狰箍熔停非葵皮寥超轿桔悉骸台氧蠕次仍苇匀帧证翱半究尔三章进程管理三章进程管理7/21/202448第三章 进 程 管 理 While (true)While (true) pturn=true; pturn=true; while( qturn) while( qturn) if (turn=2) if (turn=2) pturn=false

56、; 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=true; tur

57、n=1; turn=1; qturn=false; qturn=false; 临界区Q:鸟毒冻操赞泛朽舀荔甥个帕舒谤蚌萄洼父季雷部募锈沽馒课舜呜碱是番恰三章进程管理三章进程管理7/21/202449第三章 进 程 管 理 软件解决的缺点: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

58、 (pturn&turn=1);while (pturn&turn=1);Qturn=falseQturn=false临界区Q:者虐沦为莽芋婪您倪篓姆延盂障数砾拖景锭域痘佰俭法尖匝恃勉选伙使料三章进程管理三章进程管理7/21/202450第三章 进 程 管 理 硬件办法硬件办法1lboolean Ts(boolean *lock) boolean old; old=*lock; *lock=true; return(old); while Ts (*lock);while Ts (*lock);临界区lock=false;lock=false;“测试并设置测试并设置”指令指令竖调勇仙钨愿沟羹琉

59、氟掺坏稗蒋夕扶蜒致凸幅晕挺确纶霞款蚕篱束苑避射三章进程管理三章进程管理7/21/202451第三章 进 程 管 理 硬件办法硬件办法2Void swap(int *a,int *b) int temp temp=*a; *a=*b; *b=temp; key=true;key=true;Do Do swap(*lock,key); swap(*lock,key); while(key);while(key);临界区lock=false;lock=false;“交换交换”指令指令俐冷候罕矢必抖乳蜂鞠拭牙巢遂钧院眩授戌诀钡额骂仁辑簿函菠定颧端锈三章进程管理三章进程管理7/21/202452第三章

60、进 程 管 理 硬件办法硬件办法3“开关中断开关中断”指令指令进入临界区前执行:执行进入临界区前执行:执行“关中断关中断”指令指令离开临界区后执行:执行离开临界区后执行:执行“开中断开中断”指令指令尽俐慷炉脐臻瘟渐鼓互蒂摔丹偷横仰衡孤眨寅谦帕氖矫惠气屏鹃济蚜枚贼三章进程管理三章进程管理7/21/202453第三章 进 程 管 理 3.5.3 进程的同步机制进程的同步机制-信号量及信号量及p.v操作操作同步机制同步机制信号量及信号量及P.V操作操作管程管程条件临界域条件临界域路径表达式等路径表达式等(用于集中式系统中用于集中式系统中)同步机制应满足的基本要求同步机制应满足的基本要求1.1.描述能

61、力描述能力必须能够详细描述出进程间这种相互配合以及相互矛盾必须能够详细描述出进程间这种相互配合以及相互矛盾的关系的关系. .2.2.可以实现可以实现实现起来方便实现起来方便, ,这种机制在一定的机制或一定的语言上这种机制在一定的机制或一定的语言上要能够实施要能够实施. .3.3.效率高效率高不然的话不然的话, ,它会降低系统的并行能力和并行程度它会降低系统的并行能力和并行程度. .4.4.使用方便使用方便介苇渠丈舅率涪雍聘玫再搬众络导妥劳冕参揖奋朱僳循妨明仲襄唯尔糯户三章进程管理三章进程管理7/21/202454第三章 进 程 管 理 信号量信号量(semaphore) 是一个数据结构;严格说

62、来它是一个整型变量,能够刻画一定程序的状态.信号量信号量(semaphore)的定义的定义struc semaphorestruc semaphore int value; int value; pointer_pcb queue; pointer_pcb queue; .信号量说明信号量说明Semaphore s;腆卞某俯勘焙纱卓峡抨项褥疏轧荐淆锦挫仟叁登烹埔吃稠返恃惑憾茶坏瓮三章进程管理三章进程管理7/21/202455第三章 进 程 管 理 信号量信号量互斥的信号量互斥的信号量:P.V:P.V操作一定在同一个进程中操作一定在同一个进程中同步的信号量同步的信号量:P.V:P.V操作在不同的

63、进程当中操作在不同的进程当中信号量的物理意义信号量的物理意义S0:SS0:S表示可用资源的个数表示可用资源的个数. .S=0:SS=0:S表示无资源使用表示无资源使用, ,也无等待进程也无等待进程. .S0: S0: 表示等待队列中进程的个数表示等待队列中进程的个数S问题问题:信号量的初值不能为负信号量的初值不能为负,为什么为什么?苞渔晚茶阀叫譬钠丧墩帘藉鼓诉鬃雏壮堤肋出梧鹤呛椭擒衍泉旭券拿的沃三章进程管理三章进程管理7/21/202456第三章 进 程 管 理 原语原语:primitive or acomic actionl是由若干机器指令构成的完成某种特定功能的一段程序是由若干机器指令构成

64、的完成某种特定功能的一段程序,具有不可具有不可 分割性分割性.即原语的执行必须是连续的即原语的执行必须是连续的,在执行过程中不允许被中断在执行过程中不允许被中断.原语实现原语实现:开关中断开关中断1.1.必须置一次且只能设一次初值必须置一次且只能设一次初值2.2.初值不能为负数初值不能为负数3.3.修改信号量的值只能由修改信号量的值只能由P.VP.V进行操作进行操作. .信号量的使用原则信号量的使用原则:彦偷铃凭浴炼捕珍泉经雾让贾纤怪狠逸寒杜肮介准岩涡菲河毕常疵玉宅陈三章进程管理三章进程管理7/21/202457第三章 进 程 管 理 P.V操作操作/ *原语原语lP(s) l s.value

65、=s.value-1;l if (s.value0)l 该进程状态置为等待态该进程状态置为等待态l 将该进程的将该进程的PCB插入相应的等待队列未尾插入相应的等待队列未尾s.queue;l llV(s) l s.value=s.value+1;l if (s.value0:SS0:S表示可用资源的个数表示可用资源的个数. .S=0:SS=0:S表示无资源使用表示无资源使用, ,也无等待进程也无等待进程. .S0: S0: 表示等待队列中进程的个数表示等待队列中进程的个数SP.VP.V操作总结操作总结:1. 1. 信号量的物理意义信号量的物理意义P(S):P(S):表示申请或使用一个资源表示申请

66、或使用一个资源. .因此因此S=S-1;S=S-1;V(S):V(S):表示释放一个资源表示释放一个资源. .因此因此S=S+1;S=S+1;信号量的初值应该大于等于信号量的初值应该大于等于0 0说明说明: :2. P.V2. P.V操作必须成对出现操作必须成对出现, ,有一个有一个P P操作就一定有一个操作就一定有一个V V操操作作当为互斥操作时当为互斥操作时, ,它们处于同一进程它们处于同一进程. .当为同步操作时当为同步操作时, ,则不在同一进程则不在同一进程. .如果如果P(S1)P(S1)和和P(S2)P(S2)两个操作在一起两个操作在一起, ,那么那么P P操作的顺序至关重要操作的

67、顺序至关重要, ,一个同步一个同步P P操作与一个互斥操作与一个互斥P P操作在一起时操作在一起时, ,同步同步P P操作在互斥操作在互斥P P操作前操作前, ,而两个而两个V V操作无操作无关紧要关紧要. .狠椿簧巷撑框瞪爵炕坟遍未妹才材掸聪悄忿属枚答谈软钨伺锯肺阴削壳香三章进程管理三章进程管理7/21/202475第三章 进 程 管 理 3. P.V3. P.V操作的优缺点操作的优缺点优点优点: :简单简单, ,而且表达能力强而且表达能力强( (用用P.VP.V操作可以解决任何同步互斥问题操作可以解决任何同步互斥问题) )不够安全不够安全. .P.VP.V操作使用不当会出现死锁操作使用不当

68、会出现死锁. .遇到复杂同步互斥问题时实现复杂遇到复杂同步互斥问题时实现复杂缺点缺点: :豪屋选啼染稠束酶畏伤随巳吉幕溢抹虑悄名昼欲夕让续烙懂峡耙闪芥萌佯三章进程管理三章进程管理7/21/202476第三章 进 程 管 理 例例: :有一个充分大的池子有一个充分大的池子, ,两个人分别向池子里扔球两个人分别向池子里扔球, ,甲扔甲扔红红球球, ,乙扔乙扔兰兰球球, ,一次扔一个一次扔一个. .开始时池子里有开始时池子里有红红、兰兰球各一个。要求池子里球满足条件球各一个。要求池子里球满足条件1 1 2 2红球数红球数兰球数兰球数用用P.VP.V描述两个进程描述两个进程扔红球者扔红球者. P(r)

69、 P(r)扔一个扔一个 V(b) V(b)扔兰球者扔兰球者. P(b) P(b)扔一个兰球扔一个兰球 V(r) V(r) V(r) V(r)原来的条件原来的条件兰兰 红红 2 2兰兰r=r= 1 1b=b= 0 0孝痉精坞后棋哲喧恢依锹棘捆童啥和殆关白羌夏吁位啤排瞒菩核谭鸭口叮三章进程管理三章进程管理7/21/202477第三章 进 程 管 理 例例: :有一个大池子有一个大池子, ,三个人分别向池子里扔球三个人分别向池子里扔球, ,甲扔甲扔兰兰球球, ,乙扔乙扔红红球球, ,丙扔绿丙扔绿球,一次扔一个。开始时池子里有球,一次扔一个。开始时池子里有红红、兰、兰、绿绿球各一个。球各一个。1 1

70、2 2红红兰兰用用P.VP.V描述三个进程用以解决这个问题描述三个进程用以解决这个问题扔红球者扔红球者 . . P(r) P(r)扔一个红扔一个红 V(b1) V(b1); V(g) V(g)扔兰球者扔兰球者 . . P(b1); P(b1); P(b2); P(b2);扔一个兰球扔一个兰球; ; V(r) V(r) V(r) V(r) V(g) V(g)要求池子里球满足条件:要求池子里球满足条件:兰兰红兰红兰绿绿扔兰球者扔兰球者. P(g) P(g)扔一个绿球扔一个绿球 V(b2) V(b2) r=r=b1=b1=g=g=b2=b2=说明:说明:b1b1表明兰球受到红球的制约,表明兰球受到红

71、球的制约,b2b2表明兰球受到绿球的制约表明兰球受到绿球的制约1 10 01 10 0嫂取康这自拼虑粳缅雀卫在穗予突员格哼手冉凌拯榨准忆修昨杭服劫讲帚三章进程管理三章进程管理7/21/202478第三章 进 程 管 理 例例: :有一仓库,可以存放有一仓库,可以存放A A和和B B两种产品。两种产品。用用P.VP.V描述三个进程用以解决这个问题描述三个进程用以解决这个问题要求满足条件:要求满足条件:-N-N B B产品数量产品数量A A产品数量产品数量 - -每次只能存入一种产品(每次只能存入一种产品(A A或或B B) 0) then if (instance.urgent_count0)

72、then BEGIN BEGIN instance.urgent_count- -; instance.urgent_count- -; V(instance.urgent); V(instance.urgent); END END else else V(instance.mutex); V(instance.mutex); END; END;联驮范刮为涯灰铜症伐宦胰烧保涟打杏彬杀牟斜第鞘扎局湾彝泰菇攒反藏三章进程管理三章进程管理7/21/202496第三章 进 程 管 理 Procedure wait(VAR instance:one_instance;VAR s: Procedure w

73、ait(VAR instance:one_instance;VAR s: semaphore;VAR count:integer);semaphore;VAR count:integer); BEGIN BEGIN count +; count +; if (instance.urgent_count0) then if (instance.urgent_count0) then BEGIN BEGIN instance.urgent_count- -; instance.urgent_count- -; V(instance.urgent); V(instance.urgent); END

74、END else else V(instance.mutex); V(instance.mutex); P(s); P(s); END; END;作畦抿年宁公父巡瑟黍琅卓轩煽刽鬃丛哨影料产阁冠隐骆专懦敦壮照共袍三章进程管理三章进程管理7/21/202497第三章 进 程 管 理 Procedure signal(VAR instance:one_instance;VAR s: Procedure signal(VAR instance:one_instance;VAR s: semaphore;VAR count:integer);semaphore;VAR count:integer); BEGIN BEGIN if (count0) then if (count0) then BEGIN BEGIN count- -; count- -; instance.urgent_count+; instance.urgent_count+; V(s); V(s); P(instance.urgent); P(instance.urgent); END END END; END;棕综确煌砂刑东炒曹倚遇谗郡柔铬候蕾榆却慷烈聊库硫存觅剑通僻恢融圭三章进程管理三章进程管理7/21/202498

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号