《三章节进程管理1》由会员分享,可在线阅读,更多相关《三章节进程管理1(98页珍藏版)》请在金锄头文库上搜索。
1、第三章 进 程 管 理 第三章第三章 进程管理进程管理-1 -1 3.1 3.1 进程的基本概念进程的基本概念 3.2 3.2 进程的基本状态进程的基本状态 3.3 3.3 进程的描述与管理进程的描述与管理 3.4 3.4 进程控制进程控制重点重点: :本章为本书的重点本章为本书的重点, ,难点难点 法膊互尚跌砒育忘惨俯麻雁洋异揪该肤败眯谓黎雨射纤膏痛箭嗜姑厩奉殿三章节进程管理1三章节进程管理17/20/20241第三章 进 程 管 理 3.1 进程的基本概念进程的基本概念 3.1.1 进程概念的引入进程概念的引入C编译程序CC程序程序A程序程序B时间片用完中断可再入程序瘫妄脂迷熙殊缨搏橙轻啤
2、渤缸楷盗簇颧餐猪陋烦寥箭疟几借顾恒凑闻吐廊三章节进程管理1三章节进程管理17/20/20242第三章 进 程 管 理 进程:一段功能完整的程序在处理机上的执行过程。进程:一段功能完整的程序在处理机上的执行过程。3.1.2 进程与程序的区别进程与程序的区别进程是动态的,程序是静态的进程是动态的,程序是静态的进程是暂时的概念,程序是永久的概念进程是暂时的概念,程序是永久的概念进程有自己的数据结构进程有自己的数据结构PCB进程和程序不是一一对应的。进程和程序不是一一对应的。惜岔白岛瘴妹栖曳钡絮奥桨新厩报撅息筛藻跺处需瞩滴擞叫叛廊亡拜告柜三章节进程管理1三章节进程管理17/20/20243第三章 进
3、程 管 理 3.1.3 进程的定义进程的定义进程进程: :是一个具有独立功能的程序对某个数据集在处理是一个具有独立功能的程序对某个数据集在处理 机上的执行过程和分配资源的基本单位机上的执行过程和分配资源的基本单位. . 程序程序: :指一组操作序列指一组操作序列. .数据集数据集: :接受程序规定操作的一组存储单元的内容接受程序规定操作的一组存储单元的内容. . 进程的特征进程的特征动态性动态性并行性并行性独立性独立性异步性异步性崔窃棕骄暴销抛铬蛤绦婉换谴摹桃穆邀式截忙袱滤烫盈双谅板锤窘株纯茄三章节进程管理1三章节进程管理17/20/20244第三章 进 程 管 理 进程的结构特征进程的结构特
4、征:PCB,程序代码段程序代码段,数据段数据段程序数据PCB进程的结构特征进程的结构特征巧粗挣欺窟烩匡骗济假朝姜哑眨赦煮六踊娇胳彭致辽乙晚骆饼郎尝鸵衷纵三章节进程管理1三章节进程管理17/20/20245第三章 进 程 管 理 进程程序动态静态暂时永久并行串行(顺序)PCB多个一个一个多个进程与程序的区别与联系进程与程序的区别与联系倘顾趾稀敌不俘是湃活沟姨氖防氢选鸦盛菲铺碧且窄躬究仔喊孪齐昭乘朗三章节进程管理1三章节进程管理17/20/20246第三章 进 程 管 理 3.2 进程的基本状态进程的基本状态 为了描述和控制进程的运行为了描述和控制进程的运行,系统为每个进程定义了一个数据系统为每个
5、进程定义了一个数据结构结构,即进程控制块即进程控制块PCB (Process Control Block),系统根据系统根据PCB,感知该进程的存在感知该进程的存在,故亦称故亦称PCB是进程存在的标志是进程存在的标志. PCB的作用的作用:u感知进程的存在u记录进程的状态或有关信息通常在一个实际系统中通常在一个实际系统中,PCB的总数是固定的的总数是固定的,该数目规定了系该数目规定了系统所允许拥有的进程数目统所允许拥有的进程数目,同时将所有的同时将所有的PCB形成一个结构数形成一个结构数组组(或称或称PCB表表),存放在系统的数据区中存放在系统的数据区中.一个进程的一个进程的PCB机构全部或部
6、分常驻内存机构全部或部分常驻内存.师迈捷巩翌祥瓤排藩赘探瓦询屡氓孔帛因肆毋筹松苦臃河箭庐搪茧脖凤熟三章节进程管理1三章节进程管理17/20/20247第三章 进 程 管 理 3.2.1 进程的基本状态进程的基本状态1. 进程状态进程状态就绪态就绪态:等待系统分配处理机以便执行时 所处的状态. 即获得了除处理机之外的所以资源,一旦由调度 程序选中得到处理机就可以立即执行的状态.运行态运行态:正在处理机上执行时所处的状态. 在单CPU情况下,处于该状态的进程数只有一个.等待态等待态:等待某个事件的完成时进程所处的状态.除了 CPU之外其他的资源也没有得到满足 链烫逻甜交遏瓤化坏爹推歹列启蛔墓扼装智
7、呜烟食诛威闽狱隋菠稠丙搭歧三章节进程管理1三章节进程管理17/20/20248第三章 进 程 管 理 运行就绪等待进程调度策略进程调度策略时时间间片片用用完完等待某一事件发生等待某一事件发生等待事件结束等待事件结束剥剥夺夺处处理理机机创建创建撤销撤销进程的三种基本状态及其转换进程的三种基本状态及其转换 西替浆夫略垂西肇沃棵擞剖喧钞快谩吁力础誓蹋寞软槐由敢脸捕净张饱棉三章节进程管理1三章节进程管理17/20/20249第三章 进 程 管 理 进程控制块3.3 进程的描述与管理进程的描述与管理1.OS1.OS感知进程存在的唯一标识感知进程存在的唯一标识-PCB-PCB2.2.记录了记录了OSOS所
8、需的用于描述进程及控制进程全部信息所需的用于描述进程及控制进程全部信息. . 在在PCBPCB中主要包括下面信息中主要包括下面信息: : 1) 1) 进程描述信息进程描述信息 2) 2) 进程控制信息进程控制信息 3) 3) 资源信息资源信息 4) 4) 现场保护信息现场保护信息 1) 1) 进程描述信息进程描述信息: :进程名或进程标识符进程名或进程标识符. . 家族关系家族关系. . 勃攫抿苗寓蛇扒玄述胡躯氢殉孙澈洁膨逞潦刷痔惹破跟馒汰嫌博倪凹遁瘦三章节进程管理1三章节进程管理17/20/202410第三章 进 程 管 理 2) 2) 进程控制信息进程控制信息1.1.进程的当前信息进程的当
9、前信息: :指明进程的当前状态指明进程的当前状态, ,作为进程调度作为进程调度和对换的依据和对换的依据. .2.2.进程优先级进程优先级: :调度依据调度依据, ,是进程占有处理机的重要依据是进程占有处理机的重要依据. .3.3.程序开始地址程序开始地址: :便于执行这段程序便于执行这段程序. .4.4.各种计时信息各种计时信息: :记录资源占用的信息记录资源占用的信息. .5.5.通信信息通信信息: :保证进程之间相应的联系保证进程之间相应的联系. .3) 3) 资源管理信息资源管理信息1.1.占用内存大小及其管理用数据结构指针占用内存大小及其管理用数据结构指针. .2.2.对换或覆盖用的有
10、关信息对换或覆盖用的有关信息. .3.3.共享程序的大小及起始地址共享程序的大小及起始地址. .4.4.I/OI/O设备号设备号, ,传送的数据长度传送的数据长度, ,缓冲区地址缓冲区地址, ,缓冲区长度缓冲区长度及所有设备的有关数据结构指针及所有设备的有关数据结构指针. .5.5.指向文件系统的指针及有关标识符指向文件系统的指针及有关标识符. .它串季诺阜篆奖凳足慨懦印小祖僚芽宵套沪莎啃栽坯瘟闹既阂澄倡骄奸项三章节进程管理1三章节进程管理17/20/202411第三章 进 程 管 理 4) CPU4) CPU现场保护信息现场保护信息( (进程上下文进程上下文) )1.1.通用寄存器的用户通用
11、寄存器的用户2.2.PCPC3.3.PSW :PSW :含状态信息(条件码的执行方式含状态信息(条件码的执行方式, ,中断屏蔽标识中断屏蔽标识) )。4.4.用户栈指针:为每个用户进程有一个或若干隔与之相关用户栈指针:为每个用户进程有一个或若干隔与之相关的系统栈,用于存放过程和系统调用参数和调用地址。的系统栈,用于存放过程和系统调用参数和调用地址。 当处理机被中断时当处理机被中断时, ,各种寄存器的内容都必须保各种寄存器的内容都必须保存在被中断进程的存在被中断进程的PCBPCB中中, ,以便在该进程重新执行时以便在该进程重新执行时, ,能从断点继续执行能从断点继续执行. . 由于由于PCBPC
12、B中包含较多的信息(占几百几千中包含较多的信息(占几百几千BYTE),BYTE),在有的在有的系统中只含系统中只含PCBPCB中最常用部分(中最常用部分(CPUCPU现场保护部分,进程描述现场保护部分,进程描述信息,控制信息)常驻内存,其他部分则放在外存中,待该信息,控制信息)常驻内存,其他部分则放在外存中,待该进程将要执行时与其他数据一起装入内存。进程将要执行时与其他数据一起装入内存。凯匠坟捡谓裸储蔑卞幕喊搓奖何赃仪酚奢獭铅党源陇淤容仿脉亩霸摇斤吱三章节进程管理1三章节进程管理17/20/202412第三章 进 程 管 理 * *进程上下文进程上下文 是对进程动态活动的静态描述是对进程动态活
13、动的静态描述 进程的上下文是其相应的程序地址空间的内容,进程的上下文是其相应的程序地址空间的内容,硬件寄存器的内容以及与该进程有关的核心数据结构硬件寄存器的内容以及与该进程有关的核心数据结构(系统堆栈,用户堆栈)构成的。(系统堆栈,用户堆栈)构成的。 包括:计算机系统中与执行该进程有关的各种寄包括:计算机系统中与执行该进程有关的各种寄存器值;程序段经过编译连接后形成的机器指令代码存器值;程序段经过编译连接后形成的机器指令代码段(段(text);text);数据段以及各种堆栈的值和数据段以及各种堆栈的值和PCBPCB块)。块)。 例:例:UNIXUNIX进程上下进程上下文文用户级上下文用户级上下
14、文 系统级上下文系统级上下文寄存器上下文寄存器上下文* *进程上下文进程上下文隶闹撅储堤鼎滚冀贿夜卵蘸叭砂蹲突癸稳木归谋浮嗡转冈踢肘洒锤弃耕抑三章节进程管理1三章节进程管理17/20/202413第三章 进 程 管 理 * *进程的组成进程的组成 进程进程PCBPCB程序(代码和数据)程序(代码和数据) 进程的表进程的表记记PCB程序PCB程序代码万衅钓淆联图基恼烈遮咬荚葛己魏普嫁呼韶志五蛤志劝妄裴胺踢坪芳茄赴三章节进程管理1三章节进程管理17/20/202414第三章 进 程 管 理 *PCB*PCB的组成方式的组成方式 在一个系统中,通常可以拥有数十个以及若干个在一个系统中,通常可以拥有数
15、十个以及若干个PCB,PCB,为了能对他们进行有效的管理,应当用适当的方为了能对他们进行有效的管理,应当用适当的方式将他们组织起来。式将他们组织起来。PCBPCB目前常用的组织方式:链接方式;索引方式目前常用的组织方式:链接方式;索引方式 系统中进程队列分类:就绪队列,等待队列,运行队系统中进程队列分类:就绪队列,等待队列,运行队列。列。 就绪队列:整个系统一个就绪队列:整个系统一个 等待队列:每一个等待事件一个。等待队列:每一个等待事件一个。 运行队列:单机系统中整个系统一个。运行队列:单机系统中整个系统一个。疟宗受诊欺噎咽泅巩砰万浓仲铰肋潭摩介近锚册灯恐蝎撕菜兹类甚帅恢刘三章节进程管理1三
16、章节进程管理17/20/202415第三章 进 程 管 理 1.1.链接方式链接方式PCB链接队列示意图 把具有相同状态的把具有相同状态的PCB,PCB,用其中的链接字链接成一个队列用其中的链接字链接成一个队列. .线性表线性表攒入错聘缮苔彤膛隙水群功赊凳簧邢悍苗栅最隧性兔障肪户踊卉空短谁值三章节进程管理1三章节进程管理17/20/202416第三章 进 程 管 理 按索引方式组织PCB 2. 2. 索引方式索引方式系统根据所有进程的状态系统根据所有进程的状态, ,建立几张索引表建立几张索引表, ,如就绪索引表如就绪索引表, ,阻塞索引阻塞索引表表, ,并把各索引表在内存的首地址记录于内存中的
17、一些专用库文件中并把各索引表在内存的首地址记录于内存中的一些专用库文件中. .鹊闲墅羚鬼岭骡胶梯蝴剁赛振九佑分炎昭粕讯右穴研夺贵亭印豺软齐钎毅三章节进程管理1三章节进程管理17/20/202417第三章 进 程 管 理 3.4 进程控制进程控制为了防止为了防止OSOS及关键数据如及关键数据如PCBPCB等等, ,受到用户程序有意或无意的破坏受到用户程序有意或无意的破坏, ,通通常将处理机的执行状态分为常将处理机的执行状态分为: :系统态和用户态系统态和用户态. .1.1.系统态系统态( (核心态核心态):):具有较高的特权具有较高的特权, ,能执行一切指令能执行一切指令, ,访访问所有的寄存器
18、和存储区问所有的寄存器和存储区. .2.2.用户态用户态: :具有较低特权的执行状态具有较低特权的执行状态, ,只能执行规定的指只能执行规定的指令令, ,访问指定的寄存器和存储区访问指定的寄存器和存储区. .进程控制进程控制: : 就是系统使用一些具有特定功能的程序段来创建、撤销进程以就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程状态间的转换,从而达到多进程高效率并发执行和协及完成进程状态间的转换,从而达到多进程高效率并发执行和协调实现资源共享的目的。调实现资源共享的目的。原语(原语(Atomic Operation):Atomic Operation): 系统态下执行的某些
19、具有特定功能的程序系统态下执行的某些具有特定功能的程序段。段。润煮雾思孝驰砸凳酸丁席孙摩澡谣深尸蔓萍匀肥柜允蜘爽傣域蕴番俱赠犁三章节进程管理1三章节进程管理17/20/202418第三章 进 程 管 理 . . 创建原语创建原语为此进程分配进程控制块为此进程分配进程控制块为此进程分配资源为此进程分配资源把此进程插入到就绪队列中把此进程插入到就绪队列中, ,等待等待CPUCPU的调度的调度. . 引起创建进程的事件引起创建进程的事件 用户登陆用户登陆作业调度作业调度提供服务提供服务应用请求应用请求3.4.1. 进程的创建进程的创建抗蛛舶悠捂新燥鸳错虫斟针庚仙源姆拔罗茂把广诞痹屏芳签亦修急迁克迷三
20、章节进程管理1三章节进程管理17/20/202419第三章 进 程 管 理 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 (sched) schedure else continue( else continue(当前正在
21、执行当前正在执行的进程的进程);); end end缸缴竞曲现姆请瓦潦管热苛祟浇区措关蕴斧左溯患分惨瘤生葛侦庚斡占掘三章节进程管理1三章节进程管理17/20/202420第三章 进 程 管 理 .进程创建原语的描述形式进程创建原语的描述形式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; /* 填写主
22、存区域填写主存区域 */ i.resource=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进程插
23、入到进程插入到RQ对尾对尾 */EndPCBi雌碳晴啼颓揖莆让扩真辣赁烧统老贼茅口沪末垣恫瓢嘎逸鹤蔼戍枝剩把几三章节进程管理1三章节进程管理17/20/202421第三章 进 程 管 理 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
24、 owner (r) insert(r.semaphore,r.data); l 归还属于父进程资源且插入父资源清单归还属于父进程资源且插入父资源清单.l for all Rcreated resoure(i) do remove descriptor(R) ;l 撤销自己的资源清单并归还系统撤销自己的资源清单并归还系统l remove process control block(i);lEND 运弦钻裴幻改买利脯帽滥废婴轩呼尘瞻相贷刻琅叼古树暇抄悲擞辜声摆榔三章节进程管理1三章节进程管理17/20/202422第三章 进 程 管 理 1.根根据据被被终终止止进进程程的的标标识识符符,从从PC
25、B链链表表中中检检索索出出该该进进程程的的PCB,从从中中读读出该进程的状态。出该进程的状态。2.若若被被终终止止进进程程正正处处于于执执行行状状态态,应应立立即即终终止止该该进进程程的的执执行行,并并置置调调度度标标志为真,用于指示该进程被终止后应重新进行调度。志为真,用于指示该进程被终止后应重新进行调度。3.若若该该进进程程还还有有子子孙孙进进程程,还还应应将将其其所所有有子子孙孙进进程程予予以以终终止止,以以防防他他们们成成为不可控的进程。为不可控的进程。4.将将被被终终止止进进程程所所拥拥有有的的全全部部资资源源,或或者者归归还还给给其其父父进进程程, 或或者者归归还还给给系统。系统。
26、5.将被终止进程将被终止进程(它的它的PCB)从所在队列从所在队列(或链表或链表)中移出,中移出, 等待其他程序等待其他程序来搜集信息。来搜集信息。 2 2. .进程的终止过程进程的终止过程瞩君做偷狠缸酵奴妒卵兵邑讳邹而赵勿贰裴迁帛仆申豫姬但艰菠辫坦证怖三章节进程管理1三章节进程管理17/20/202423第三章 进 程 管 理 3.4.3 进程的挂起和激活进程的挂起和激活挂起挂起: :让进程暂时不参与资源的竞争让进程暂时不参与资源的竞争1. 1. 挂起原语的方式挂起原语的方式 把挂起原语调用者本身挂起把挂起原语调用者本身挂起,即自己挂起自己即自己挂起自己挂起某个标识符的进程挂起某个标识符的进
27、程将某个指定标识符的进程及其全部或部分子孙挂起将某个指定标识符的进程及其全部或部分子孙挂起. 挂起用以保存挂起用以保存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); /* 相应的相应的PCB保留起来以便查看是属于哪一种挂起保留起来以便查看是属于哪一种挂起.l if s=blocka i.status=Blocks else i.status=rea
28、dys;l if s=running schedule else continue;lEnd 零褒踊量陆整胆东雾亦槐悄尸憾臼啄荷彝譬莎驴闽渣尸修檄菱坪弟界暗症三章节进程管理1三章节进程管理17/20/202424第三章 进 程 管 理 当当出出现现了了引引起起进进程程挂挂起起的的事事件件时时,比比如如,用用户户进进程程请请求求将将自自己己挂挂起起,或或父父进进程程请请求求将将自自己己的的某某个个子子进进程程挂挂起起, 系系统统将将利利用用挂挂起起原原语语suspend( )将将指指定定进进程程或或处处于于阻阻塞塞状状态态的的进进程程挂挂起起。挂挂起起原原语语的的执执行行过过程程是是:首首先先检
29、检查查被被挂挂起起进进程程的的状状态态,若若处处于于活活动动就就绪绪状状态态,便便将将其其改改为为静静止止就就绪绪;对对于于活活动动阻阻塞塞状状态态的的进进程程,则则将将之之改改为为静静止止阻阻塞塞。 为为了了方方便便用用户户或或父父进进程程考考查查该该进进程程的的运运行行情情况况而而把把该该进进程程的的PCB复复制制到到某某指指定定的的内内存存区区域域。最最后后,若若被被挂挂起起的的进进程程正正在在执执行行,则转向调度程序重新调度。则转向调度程序重新调度。 2. 2. 进程进程的挂起的挂起踢研挥铺夷迈颗窒轩咯蓄过袭祖捉矗车吸制侮倪壶集瘦械拢墅捧溜坍齐糜三章节进程管理1三章节进程管理17/20
30、/202425第三章 进 程 管 理 . . 激活原语的激活方式激活原语的激活方式 激活指定标识符的进程激活指定标识符的进程激活某进程及其子孙激活某进程及其子孙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 加算糕七躲更肃箩庐楞蜀种邑进昔蹈疚敲畸蝇抄咒觅撬遁惑细舅片衍聚院三章节进程管理1三章节进程
31、管理17/20/202426第三章 进 程 管 理 当当发发生生激激活活进进程程的的事事件件时时,例例如如,父父进进程程或或用用户户进进程程请请求求激激活活指指定定进进程程,若若该该进进程程驻驻留留在在外外存存而而内内存存中中已已有有足足够够的的空空间间时时,则则可可将将在在外外存存上上处处于于静静止止就就绪绪状状态态的的进进程程换换入入内内存存。这这时时,系系统统将将利利用用激激活活原原语语active( )将将指指定定进进程程激激活活。 激激活活原原语语先先将将进进程程从从外外存存调调入入内内存存,检检查查该该进进程程的的现现行行状状态态,若若是是静静止止就就绪绪,便便将将之之改改为为活活
32、动动就就绪绪;若若为为静静止止阻阻塞塞便便将将之之改改为为活活动动阻阻塞塞。假假如如采采用用的的是是抢抢占占调调度度策策略略,则则每每当当有有新新进进程程进进入入就就绪绪队队列列时时,应应检检查查是是否否要要进进行行重重新新调调度度,即即由由调调度度程程序序将将被被激激活活进进程程与与当当前前进进程程进进行行优优先先级级的的比比较较,如如果果被被激激活活进进程程的的优优先先级级更更低低,就就不不必必重重新新调调度度;否否则则,立立即即剥剥夺夺当当前前进进程程的的运运行行,把把处处理理机机分分配配给给刚刚被被激激活活的的进进程。程。 . . 进程的激活进程的激活蝗席赛徘焚钱萍塑美珠咬井蓑奴速镐蜂
33、属拘帮胜靴九江定识秀蚀厕妈寥套三章节进程管理1三章节进程管理17/20/202427第三章 进 程 管 理 .挂起引起的原因挂起引起的原因协调负载过重协调负载过重某些设备故障某些设备故障 调试程序调试程序具有挂起状态的进程状态图 崖彤拌煌清益樊玲剐踏慑朴毅拈滴腥辙囤翟咐压恒吊媚稽成甘维铣痪貉姜三章节进程管理1三章节进程管理17/20/202428第三章 进 程 管 理 1. 1. 引起阻塞和唤醒的事件引起阻塞和唤醒的事件请求系统服务请求系统服务启动某种操作启动某种操作新数据尚未到达新数据尚未到达无新工作可作无新工作可作.3.4.4 进程的阻塞与唤醒进程的阻塞与唤醒lProcedure Bloc
34、k(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; 转调度程序转调度程序lEndl . . 阻塞原语阻塞原语汽瘸唱老辜纫痈彻尊维枪莲喘携垂瓮光狄啄睛轨尚绅瓶必赏谊司男锄几君三章节进程管理1三章节进程管理17/20/202429第三章 进 程 管 理 正正在在执执行行的的进进程程,当当发
35、发现现上上述述某某事事件件时时,由由于于无无法法继继续续执执行行,于于是是进进程程便便通通过过调调用用阻阻塞塞原原语语block把把自自己己阻阻塞塞。可可见见,进进程程的的阻阻塞塞是是进进程程自自身身的的一一种种主主动动行行为为。进进入入block过过程程后后,由由于于此此时时该该进进程程还还处处于于执执行行状状态态,所所以以应应先先立立即即停停止止执执行行,把把进进程程控控制制块块中中的的现现行行状状态态由由“执执行行”改改为为阻阻塞塞,并并将将PCB插插入入阻阻塞塞队队列列。如如果果系系统统中中设设置置了了因因不不同同事事件件而而阻阻塞塞的的多多个个阻阻塞塞队队列列,则则应应将将本本进进程
36、程插插入入到到具具有有相相同同事事件件的的阻阻塞塞(等等待待)队队列列。 最最后后,转转调调度度程程序序进进行行重重新新调调度度,将将处处理理机机分分配配给给另另一一就就绪绪进进程程,并并进进行行切切换换,亦亦即即,保保留留被被阻阻塞塞进进程程的的处处理理机机状状态态(在在PCB中中),再再按按新新进进程程的的PCB中中的的处处理理机机状态设置状态设置CPU的环境。的环境。 2. 2. 进程阻塞的过程进程阻塞的过程矿逐呻糊籍筹箍尉湃众政油菜雁惫栏脊氏廖妹朽脏蕊皱盈涪芦善姿喜种榨三章节进程管理1三章节进程管理17/20/202430第三章 进 程 管 理 唤醒原语唤醒原语: :由于资源的释放才能
37、利用此资源把某些因等待由于资源的释放才能利用此资源把某些因等待 此资源而被阻塞的进程唤醒此资源而被阻塞的进程唤醒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队尾队尾l con
38、tinue;lEnd 怒怀凑嘿匿雨声禄俏匆燃仁帮跋既锡凛中怕竿激债怎酥膘绢答靖鸟坊砰华三章节进程管理1三章节进程管理17/20/202431第三章 进 程 管 理 当当被被阻阻塞塞进进程程所所期期待待的的事事件件出出现现时时,如如I/O完完成成或或其其所所期期待待的的数数据据已已经经到到达达,则则由由有有关关进进程程(比比如如,用用完完并并释释放放了了该该I/O设设备备的的进进程程)调调用用唤唤醒醒原原语语wakeup( ),将将等等待待该该事事件件的的进进程程唤唤醒醒。唤唤醒醒原原语语执执行行的的过过程程是是:首首先先把把被被阻阻塞塞的的进进程程从从等等待待该该事事件件的的阻阻塞塞队队列列中
39、中移移出出,将将其其PCB中中的的现现行行状态由阻塞改为就绪,然后再将该状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。插入到就绪队列中。 3. 3. 进程唤醒过程进程唤醒过程宛狞驶应宰泻驳叶锚畜迸洗群涅司婪万臻件迟喊臭济艰戎恬围傲步灸硒沮三章节进程管理1三章节进程管理17/20/202432第三章 进 程 管 理 相交进程相交进程:多个并发进程在逻辑上存在着相互关系多个并发进程在逻辑上存在着相互关系无关进程无关进程( (不相交进程不相交进程):):在逻辑上无任何联系的进程在逻辑上无任何联系的进程. 进程间的作用进程间的作用直接作用直接作用:进程间的相互联系是有意识的安排的进程间的相互联
40、系是有意识的安排的.间接作用间接作用: :进程间要通过某种中介发生联系进程间要通过某种中介发生联系, ,是无意识的是无意识的. .3.5 进程间的相互作用进程间的相互作用. 进程间的联系进程间的联系相交进程相交进程:多个并发进程在逻辑上存在着相互关系多个并发进程在逻辑上存在着相互关系无关进程无关进程( (不相交进程不相交进程):):在逻辑上无任何联系的进程在逻辑上无任何联系的进程进程间的联系进程间的联系进程的同步机制进程的同步机制-信号量及信号量及P.VP.V操作操作( (解决进程同步互斥问题解决进程同步互斥问题) )吨懦花晕暗闰霍愿甄棘日眠邑獭赦牙形替熏糜实延庐脖阔立确摆丑结觉芽三章节进程管
41、理1三章节进程管理17/20/202433第三章 进 程 管 理 相互感知程序交互关系一个进程对其他进程的影响相互不感知(完全不了解其他进程的存在)竞争一个进程的存在对其他进程的结果无影响间接感知(双方都与第三方交互,如共享资源)通过共享进行协作一个进程的结果依赖于从其他进程获得的信息直接感知(双方互相交互,如通信)通过通信进行协作一个进程的结果依赖于从其他进程获得的信息进程间的相互联系进程间的相互联系亢岔侗李魂屡铁镐乓纫喉椭毛竖想惰狙党卜岸藤惋乌迎粟碉豢仓畔渐奶蔽三章节进程管理1三章节进程管理17/20/202434第三章 进 程 管 理 3.5.1 进程的互斥进程的互斥 由由于于各各进进程
42、程要要求求共共享享资资源源, ,而而有有些些资资源源需需要要互互斥斥使使用用, ,因因此此各各进进程程间间竞竞争争使使用用这这些些资资源源, ,进进程程的的这这种种关关系系未未进进程程的的互互斥斥. .反反映映在在资资源源的的使使用用本本身身时排它的时排它的, ,从而引起进程间资源的竞争从而引起进程间资源的竞争. . 临界资源临界资源(critical resource)(critical resource):一次只允许一个进程使用的资源一次只允许一个进程使用的资源( (或者排它性使用的资源或者排它性使用的资源) )茹按小式哪羞初序敢话衫楼伦手喳谭聘甫柔歼诛荐呐幂颂瑶敷鸦果投鲸吭三章节进程管理
43、1三章节进程管理17/20/202435第三章 进 程 管 理 与时间有关的错误与时间有关的错误. 顺序程序特征顺序程序特征 . 程序的顺序执行程序的顺序执行 一条指令执行结束之后,下一条指令才开始.或者说一条指令的执行应该在它前一条指令的执行结果的基础之上才能进行。 顺序性顺序性允许环境的封闭性允许环境的封闭性运行结果的确定性运行结果的确定性运行结果的可再现运行结果的可再现首搭绥阂汾疙罢脓场沂典册砾熊摘剪灵棍贿助附现胜横类盗跟历娜梨哲仟三章节进程管理1三章节进程管理17/20/202436第三章 进 程 管 理 例例:同学甲同学甲同学乙同学乙if 有空椅子 then 坐下if 有空椅子 th
44、en 搬走造成的结果造成的结果1.运行结果的不确定性2.不能保证运行环境的封闭性3.不能保证顺序性4.运行结果的不可再现性季痉价仙摈诡韵澳虱腹蛀讼窘荔苟爸题郝胜倦糟蓟特保昆察揽盗审印铬缝三章节进程管理1三章节进程管理17/20/202437第三章 进 程 管 理 .并行程序的特征并行程序的特征1.共享性2.并发性3.随机性主机ABCD时间片到A进程进程B进程进程if (x0 ) x=x-1;.if (x0 ) x=x-1;.例例1:民航售票民航售票余吹罐誊稳竟汕翔荒鲁抖灯器碗睹啤男浚渺湘缴薄煮硕倡宛笼舌配式征门三章节进程管理1三章节进程管理17/20/202438第三章 进 程 管 理 . .
45、临界区临界区( (互斥区互斥区):):Critical SectionCritical Section 把程序当中具有共享资源并且对共享资源进行操作的把程序当中具有共享资源并且对共享资源进行操作的这段程序这段程序, ,或者说在进程中涉及到临界资源的程序段叫或者说在进程中涉及到临界资源的程序段叫做临界区做临界区. .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;霍良冲夜蹋危沽貉旷碟喧魂霉领剿马皱坡彰薛骂馈窟货爆篇峦壤寝许
46、鸡蘸三章节进程管理1三章节进程管理17/20/202439第三章 进 程 管 理 程序段程序段1 1程序段程序段2 2程序段程序段3 3共享变量共享变量迄惭硝脾博命呕宽忠未勇鞠档渭疲纹赢了汝喘朴蹦舟暇湖谊诲镜钦恐祷陇三章节进程管理1三章节进程管理17/20/202440第三章 进 程 管 理 使用临界区的原则有空让进有空让进: :当临界区中无进程时当临界区中无进程时, ,任何有权使用临界区的进程可进入任何有权使用临界区的进程可进入无空等待:不允许两个以上的进程同时进入临界区不允许两个以上的进程同时进入临界区. .多中选一:当没有进程在临界区当没有进程在临界区, ,而同时有多个进程要求进入临界区
47、而同时有多个进程要求进入临界区, , 只能让其中一个进入临界区只能让其中一个进入临界区, ,其他进程必须等待其他进程必须等待. .有限等待:任何进入临界区的进程要求在有限的时间内得到满足任何进入临界区的进程要求在有限的时间内得到满足. .让权等待:处于等待状态的进程应该放弃占用处于等待状态的进程应该放弃占用CPU,CPU,以便使得其他进程以便使得其他进程 有机会得到有机会得到CPUCPU的使用权的使用权. .姜称淫覆儡事键判朗闭洱窗蔚姚坑坠病彬牌戮线巨场咱绑点滚伊左绍朝萧三章节进程管理1三章节进程管理17/20/202441第三章 进 程 管 理 3.5.2 进程互斥的两种解决方法进程互斥的两
48、种解决方法. .由竞争各方平等协商由竞争各方平等协商.引人一进程管理者引人一进程管理者, ,由管理者来协调竞争各方对互斥资源的使用由管理者来协调竞争各方对互斥资源的使用. .具体办法: 硬件(当一个进程进入临界区,就屏蔽所有中断) 软件(用编程解决,但常常忙等待)赡唤者郑奏闲忍宠挤毖炕卑碘役晤管彝扳特寺袁鸵德陀羊拣椿妹江斗狭寒三章节进程管理1三章节进程管理17/20/202442第三章 进 程 管 理 进程互斥的软件方法进程互斥的软件方法l通过平等协商方式实现进程互斥的最初方法是软件方法通过平等协商方式实现进程互斥的最初方法是软件方法.l软件方法软件方法1: While(free)While(
49、free) free=true; free=true;free=false;free=false;临界区临界区free:free:表示临界区标志表示临界区标志 true: true:有进程在临界区有进程在临界区 false: false:无进程在临界区无进程在临界区( (初值初值) )l其基本思路:是在进入临界区检查和设置一些标志,如果已有进程在临界其基本思路:是在进入临界区检查和设置一些标志,如果已有进程在临界 区,则在进入区通过循环检查进行等待;在退出区修改标志。区,则在进入区通过循环检查进行等待;在退出区修改标志。l问题:设置什么标志和如何检查标志。问题:设置什么标志和如何检查标志。卯僧
50、屡变凄裙畔膘掷硝哪呢踪截了浦邑炳套乘胸皇硕叙绰核泼瑟丧俄碧华三章节进程管理1三章节进程管理17/20/202443第三章 进 程 管 理 l软件方法软件方法2: While( not turn);While( not turn);Turn=falseTurn=false临界区turn:turn: true true表示表示P P进入临界区进入临界区 false false表示表示Q Q进程临界区进程临界区P:While( turn);While( turn);Turn=trueTurn=true临界区Q:搐利陇撑嚎橱厂早邢猫帆淄助具篮缆汲捷疡捆后犯汇罢等仔撞轧滨靶巳坐三章节进程管理1三章节进程
51、管理17/20/202444第三章 进 程 管 理 l软件方法软件方法3: Pturn=true;Pturn=true;While( qturn);While( qturn);Pturn=falsePturn=false临界区Pturn,qturn:Pturn,qturn:初值为初值为falsefalse P P进入临界区的条件进入临界区的条件:pturn not qturn:pturn not qturn Q Q进入临界区的条件进入临界区的条件:not Pturn qturn:not Pturn qturnP:Qturn=true;Qturn=true;While (pturn)While
52、(pturn)Qturn=falseQturn=false临界区Q:渝若突扎橙薪早阜侦琵霍精焕萨阴狂缘驹船叙膜琳抠臣碎企育獭鞠绕她闯三章节进程管理1三章节进程管理17/20/202445第三章 进 程 管 理 例例: :进行修改进行修改 . . while (flag1); while (flag1); flag0=true; flag0=true; 临界区临界区; ; flag0=false; flag0=false;进程进程1 1. while (flag0); while (flag0); flag1=true; flag1=true; 临界区临界区; ; flag1=false; fl
53、ag1=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;胺肤幸蘑与秦苞瓜察裴丈死壁楚姥蹦氖冒拳毕篱开慎掉阮菜姑秘篷掖乱饶三章节进程管理1三章节进程管理17/20/202446第三章 进 程 管 理 . . flag
54、0=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;flag1=true; while (flag0)while (flag0) beginbegin flag1=false; flag1=false; wait(5); wait(5); flag1=true; flag1=true;
55、end end 临界区临界区; ; flag1=false; flag1=false;偷匙娄峪危喊必双虏孔沦淡挣设侯濒丁旧阎勒宅实忱批剁凸钉援锄芍连竖三章节进程管理1三章节进程管理17/20/202447第三章 进 程 管 理 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:枚举类型枚举类型,
56、,初值任意初值任意柄棱苦淀邹梅马歪航供叫昨牧焚娜堆辗纳改寓设圆奶圃西得廷矣滋伐靡辉三章节进程管理1三章节进程管理17/20/202448第三章 进 程 管 理 While (true)While (true) pturn=true; pturn=true; while( qturn) while( 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=fals
57、e; 临界区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; turn=1; turn=1; qturn=false; qturn=false; 临界区Q:柠嫉患皿蓝轮请坤陷奄混析君落否弄侣试读和凉盅平詹朝猴酸轰放呀谚苏三章节进程管理1三章节进程管理17/20/202449第三章 进
58、 程 管 理 软件解决的缺点: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=falseQturn=false临界区Q:搪撤瘩邮柯盯压晶焙嗓氢狸锄鹃铭舌魄写封驳活晾鸥吟标褐缔帧志栋毛帐三章节进程管理1
59、三章节进程管理17/20/202450第三章 进 程 管 理 硬件办法硬件办法1lboolean Ts(boolean *lock) boolean old; old=*lock; *lock=true; return(old); while Ts (*lock);while Ts (*lock);临界区lock=false;lock=false;“测试并设置测试并设置”指令指令涛辽庐伊溉伍害猴呈豌甩器领刽鹏贪隐去惺卖憎俱猿熙簿肠糠芜找宗札峡三章节进程管理1三章节进程管理17/20/202451第三章 进 程 管 理 硬件办法硬件办法2Void swap(int *a,int *b) int
60、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;“交换交换”指令指令俗痈链陛逐祥损案猜蟹羞宪国椿骂左搐熬恍榴皇秤窿蜘逆窃墩模瞎跋崇翻三章节进程管理1三章节进程管理17/20/202452第三章 进 程 管 理 硬件办法硬件办法3“开关中断开关中断”指令指令进入临界区前执行:执行进入临界区前执行:执行“关中断关中断”指令指令离开临界区后执行:执行离开临界区后执行:执行“开中断开
61、中断”指令指令酌挨垢货雾衫征辟距且酬同车倔振淀落广夹眺嘛睦孔腐预哥怒页术闸悠嘱三章节进程管理1三章节进程管理17/20/202453第三章 进 程 管 理 3.5.3 进程的同步机制进程的同步机制-信号量及信号量及p.v操作操作同步机制同步机制信号量及信号量及P.V操作操作管程管程条件临界域条件临界域路径表达式等路径表达式等(用于集中式系统中用于集中式系统中)同步机制应满足的基本要求同步机制应满足的基本要求1.1.描述能力描述能力必须能够详细描述出进程间这种相互配合以及相互矛盾必须能够详细描述出进程间这种相互配合以及相互矛盾的关系的关系. .2.2.可以实现可以实现实现起来方便实现起来方便,
62、,这种机制在一定的机制或一定的语言上这种机制在一定的机制或一定的语言上要能够实施要能够实施. .3.3.效率高效率高不然的话不然的话, ,它会降低系统的并行能力和并行程度它会降低系统的并行能力和并行程度. .4.4.使用方便使用方便因赊锈衷喳致枪贩驻武故沃毗扭铭弦胡酥窘侯膝沙券劣查磨资郧川殿恩产三章节进程管理1三章节进程管理17/20/202454第三章 进 程 管 理 信号量信号量(semaphore) 是一个数据结构;严格说来它是一个整型变量,能够刻画一定程序的状态.信号量信号量(semaphore)的定义的定义struc semaphorestruc semaphore int valu
63、e; int value; pointer_pcb queue; pointer_pcb queue; .信号量说明信号量说明Semaphore s;啡驰栖俞矽詹兄帜毗奏铃澎埠潞飞黍纵安差稚宇亥匿扔磋槐樟奶咏平钝睦三章节进程管理1三章节进程管理17/20/202455第三章 进 程 管 理 信号量信号量互斥的信号量互斥的信号量:P.V:P.V操作一定在同一个进程中操作一定在同一个进程中同步的信号量同步的信号量:P.V:P.V操作在不同的进程当中操作在不同的进程当中信号量的物理意义信号量的物理意义S0:SS0:S表示可用资源的个数表示可用资源的个数. .S=0:SS=0:S表示无资源使用表示无资
64、源使用, ,也无等待进程也无等待进程. .S0: S0: 表示等待队列中进程的个数表示等待队列中进程的个数S问题问题:信号量的初值不能为负信号量的初值不能为负,为什么为什么?囱腕吭贾写篷补谜蒙主奴恐腑倘禽骋谰闲鸟夫做碳犹蠕庚陀伎渠蛋使氧装三章节进程管理1三章节进程管理17/20/202456第三章 进 程 管 理 原语原语:primitive or acomic actionl是由若干机器指令构成的完成某种特定功能的一段程序是由若干机器指令构成的完成某种特定功能的一段程序,具有不可具有不可 分割性分割性.即原语的执行必须是连续的即原语的执行必须是连续的,在执行过程中不允许被中断在执行过程中不允
65、许被中断.原语实现原语实现:开关中断开关中断1.1.必须置一次且只能设一次初值必须置一次且只能设一次初值2.2.初值不能为负数初值不能为负数3.3.修改信号量的值只能由修改信号量的值只能由P.VP.V进行操作进行操作. .信号量的使用原则信号量的使用原则:蛔加惋斜朱渍接祷气廷堡隙往机披芋撮戴翘刹捞哼促纶吝掠咽椒熄响篷绳三章节进程管理1三章节进程管理17/20/202457第三章 进 程 管 理 P.V操作操作/ *原语原语lP(s) l s.value=s.value-1;l if (s.value0)l 该进程状态置为等待态该进程状态置为等待态l 将该进程的将该进程的PCB插入相应的等待队列
66、未尾插入相应的等待队列未尾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):表示申请或使用一个资源表示申请或使用一个资源. .因此因此S=S-1;S=S-1;V(S):V(S):表示释放一个资源表示释放一个资源. .因此因此S=S+1;S=S+1;信
67、号量的初值应该大于等于信号量的初值应该大于等于0 0说明说明: :2. P.V2. P.V操作必须成对出现操作必须成对出现, ,有一个有一个P P操作就一定有一个操作就一定有一个V V操操作作当为互斥操作时当为互斥操作时, ,它们处于同一进程它们处于同一进程. .当为同步操作时当为同步操作时, ,则不在同一进程则不在同一进程. .如果如果P(S1)P(S1)和和P(S2)P(S2)两个操作在一起两个操作在一起, ,那么那么P P操作的顺序至关重要操作的顺序至关重要, ,一个同步一个同步P P操作与一个互斥操作与一个互斥P P操作在一起时操作在一起时, ,同步同步P P操作在互斥操作在互斥P P
68、操作前操作前, ,而两个而两个V V操作无操作无关紧要关紧要. .役围转非锤鸿呵蒂化到署散巍衔票帜乙搀士氦柒棕砍糊澈峦踞荆租箭姐漾三章节进程管理1三章节进程管理17/20/202475第三章 进 程 管 理 3. P.V3. P.V操作的优缺点操作的优缺点优点优点: :简单简单, ,而且表达能力强而且表达能力强( (用用P.VP.V操作可以解决任何同步互斥问题操作可以解决任何同步互斥问题) )不够安全不够安全. .P.VP.V操作使用不当会出现死锁操作使用不当会出现死锁. .遇到复杂同步互斥问题时实现复杂遇到复杂同步互斥问题时实现复杂缺点缺点: :霍愉竟怔萤望尧芍碗兰诵安筏憎昂恬绚较荚身佳苹张
69、尔存褂颊洪逾趴荆折三章节进程管理1三章节进程管理17/20/202476第三章 进 程 管 理 例例: :有一个充分大的池子有一个充分大的池子, ,两个人分别向池子里扔球两个人分别向池子里扔球, ,甲扔甲扔红红球球, ,乙扔乙扔兰兰球球, ,一次扔一个一次扔一个. .开始时池子里有开始时池子里有红红、兰兰球各一个。要求池子里球满足条件球各一个。要求池子里球满足条件1 1 2 2红球数红球数兰球数兰球数用用P.VP.V描述两个进程描述两个进程扔红球者扔红球者. P(r) P(r)扔一个扔一个 V(b) V(b)扔兰球者扔兰球者. P(b) P(b)扔一个兰球扔一个兰球 V(r) V(r) V(r
70、) V(r)原来的条件原来的条件兰兰 红红 2 2兰兰r=r= 1 1b=b= 0 0眶错虱翰敦直斟龟淫泻北萍献融敖良曲应郝积氓俱迁询妈氯皋浅筋蔼妮夫三章节进程管理1三章节进程管理17/20/202477第三章 进 程 管 理 例例: :有一个大池子有一个大池子, ,三个人分别向池子里扔球三个人分别向池子里扔球, ,甲扔甲扔兰兰球球, ,乙扔乙扔红红球球, ,丙扔绿丙扔绿球,一次扔一个。开始时池子里有球,一次扔一个。开始时池子里有红红、兰、兰、绿绿球各一个。球各一个。1 1 2 2红红兰兰用用P.VP.V描述三个进程用以解决这个问题描述三个进程用以解决这个问题扔红球者扔红球者 . . P(r)
71、 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表明兰球受到红球的制约,表明兰球受到红球的制约,b2b2表明兰球受到绿球的制约表明兰球受到绿球的制约1 10 01 10 0掂驱巡男暑淆叙算屯陡眩缠锯褪讲吗倚
72、器民己国闻屹课稻兢鸣矮沁拳篓短三章节进程管理1三章节进程管理17/20/202478第三章 进 程 管 理 例例: :有一仓库,可以存放有一仓库,可以存放A A和和B B两种产品。两种产品。用用P.VP.V描述三个进程用以解决这个问题描述三个进程用以解决这个问题要求满足条件:要求满足条件:-N-N B B产品数量产品数量A A产品数量产品数量 - -每次只能存入一种产品(每次只能存入一种产品(A A或或B B) 0) then if (instance.urgent_count0) then BEGIN BEGIN instance.urgent_count- -; instance.urge
73、nt_count- -; V(instance.urgent); V(instance.urgent); END END else else V(instance.mutex); V(instance.mutex); END; END;退慎聚闯徽册划漫踪寓糖要瘸壤逃痘桐韩重酱迷遇蚌仟罐埔披站怯集瓣面三章节进程管理1三章节进程管理17/20/202496第三章 进 程 管 理 Procedure wait(VAR instance:one_instance;VAR s: Procedure wait(VAR instance:one_instance;VAR s: semaphore;VAR c
74、ount: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 END else else V(instance.mutex); V(instance.mutex);
75、P(s); P(s); END; END;筷詹勇逼汇虐柠炽纫偿周烷而派徊糕伯亩制隔缺诡灵羡霖盼松乡辈丙胸传三章节进程管理1三章节进程管理17/20/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;灭衬榴痛汲陵厉脚调走慑棕捐逢痉常搏截嗜蹲芽缎剥将演氧惹麻淹搬墅学三章节进程管理1三章节进程管理17/20/202498