第5章进程同步与互斥课件.ppt

上传人(卖家):ziliao2023 文档编号:5671703 上传时间:2023-05-01 格式:PPT 页数:66 大小:464KB
下载 相关 举报
第5章进程同步与互斥课件.ppt_第1页
第1页 / 共66页
第5章进程同步与互斥课件.ppt_第2页
第2页 / 共66页
第5章进程同步与互斥课件.ppt_第3页
第3页 / 共66页
第5章进程同步与互斥课件.ppt_第4页
第4页 / 共66页
第5章进程同步与互斥课件.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、u并发()是多道程序技术、多处理技术、分布式处并发()是多道程序技术、多处理技术、分布式处理技术的基础,也是设计的重点理技术的基础,也是设计的重点u资源的共享和争用资源的共享和争用u多个进程活动的同步多个进程活动的同步u分配给进程的处理器时间等。分配给进程的处理器时间等。u单处理器,多单处理器,多道程序:交错道程序:交错多处理器,多道程序:交错和重叠多处理器,多道程序:交错和重叠设的当前值为:设的当前值为:.若执行顺序为:若执行顺序为:先先;后后;则结果:则结果:.若执行顺序为:若执行顺序为::();:();:;:;:();:();则结果则结果 分析:产生错误的原因是不加控制地访问共享变量分析

2、:产生错误的原因是不加控制地访问共享变量 ;getcopyputfstg复制一个记录复制一个记录源记录源记录目标记录目标记录并发环境下进程间的制约关系并发环境下进程间的制约关系u不加控制地访问共享资源会出现问题不加控制地访问共享资源会出现问题,要求控制对共享资源的访问!,要求控制对共享资源的访问!进程的同步(直接制约):进程的同步(直接制约):指系统中一些进程需要相互合作,共同完成一项指系统中一些进程需要相互合作,共同完成一项任务。具体说,一个进程运行到某一点时要求任务。具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之另一伙伴进程为它提供消息,在未获得消息之前,该进程

3、处于等待状态,获得消息后被唤醒前,该进程处于等待状态,获得消息后被唤醒进入就绪态进入就绪态进程的互斥(间接制约)进程的互斥(间接制约)由于各进程要求共享资源,而有些资源需要互由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥程的这种关系为进程的互斥u相关概念:相关概念:u 互斥:指多个进程不能同时使用同一个资源;互斥:指多个进程不能同时使用同一个资源;u 死锁:指多个进程互不相让,都得不到足够的资源;死锁:指多个进程互不相让,都得不到足够的资源;u 饥饿:指一个进程一直得不到资源(其他进程可能轮流饥饿

4、:指一个进程一直得不到资源(其他进程可能轮流占用资源)占用资源)u 临界资源:系统中某些资源一次只允许一个进程使用,临界资源:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量称这样的资源为临界资源或互斥资源或共享变量u 临界区:进程中访问临界资源的一段代码。临界区:进程中访问临界资源的一段代码。临界区问题临界区问题进入区进入区退出区退出区临界区临界区剩余区剩余区u临界区临界区():进程中访问临界资源的:进程中访问临界资源的一段代码。一段代码。u进入区进入区():在进入临界区之前,检:在进入临界区之前,检查可否进入临界区的一段代码。查可否进入临界区的一段代码。如果

5、可以进入临界区,通常设置如果可以进入临界区,通常设置相应相应正在访问临界区正在访问临界区标志标志u退出区退出区():用于将:用于将正在访问临界正在访问临界区区标志清除。标志清除。u剩余区剩余区():代码中的其余部分。:代码中的其余部分。u内核在执行某些基本操作时内核在执行某些基本操作时,往往利用原语操作实现往往利用原语操作实现u原语原语u是一种广义指令是一种广义指令,相当于扩充了机器指令集相当于扩充了机器指令集u原语是由若干条指令构成、用于完成一定功能的一原语是由若干条指令构成、用于完成一定功能的一个过程个过程.u原语是原子操作原语是原子操作()u原子操作原子操作:u一个操作中的所有动作一个操

6、作中的所有动作,要么全做要么全做,要么全不做要么全不做.u原子操作是一个不可分割的操作原子操作是一个不可分割的操作u使用临界区应遵循的准则使用临界区应遵循的准则u有空让进:当无进程在临界区时,任何有权使用临界有空让进:当无进程在临界区时,任何有权使用临界区的进程可进入区的进程可进入u无空等待:不允许两个以上的进程同时进入临界区无空等待:不允许两个以上的进程同时进入临界区u多中择一:当没有进程在临界区,而同时有多个进程多中择一:当没有进程在临界区,而同时有多个进程要求进入临界区,只能让其中之一进入临界区,其他要求进入临界区,只能让其中之一进入临界区,其他进程必须等待进程必须等待u有限等待:任何进

7、入临界区的要求应在有限的时间内有限等待:任何进入临界区的要求应在有限的时间内得到满足得到满足u让权等待:处于等待状态的进程应放弃占用让权等待:处于等待状态的进程应放弃占用u平等竞争:任何进程无权停止其它进程的运行进程之平等竞争:任何进程无权停止其它进程的运行进程之间相对运行速度无硬性规定间相对运行速度无硬性规定u实现互斥的方法实现互斥的方法u软件方法软件方法u硬件方式:利用专门机器指令硬件方式:利用专门机器指令u特点特点u无需硬件、和程序设计语言的支持无需硬件、和程序设计语言的支持u处理开销大处理开销大,容易出错容易出错u学习的意义学习的意义u更好地理解并发处理的复杂性更好地理解并发处理的复杂

8、性u适用范围适用范围u单处理器系统单处理器系统u共享主存的多处理系统共享主存的多处理系统u前提假设前提假设:存储器级的访问是互斥的存储器级的访问是互斥的u报告了(荷兰数学家)设计的算法报告了(荷兰数学家)设计的算法u尝试:单标志尝试:单标志u有两个进程有两个进程,,设立一个共享全局整型变量,设立一个共享全局整型变量:描述允许进入:描述允许进入临界区的进程标识临界区的进程标识u在进入区循环检查是否允许本进程进入:为在进入区循环检查是否允许本进程进入:为 时,进程可进入时,进程可进入;u在退出区修改允许进入进程标识:进程退出时,改为进程的在退出区修改允许进入进程标识:进程退出时,改为进程的标识;标

9、识;u 优点:保持了互斥的特性优点:保持了互斥的特性u 缺点:缺点:u严格轮流使用临界区,限制推进速度,由执行较慢的进程决严格轮流使用临界区,限制推进速度,由执行较慢的进程决定定u容易造成资源利用不充分:在出让临界区之后,使用临界区容易造成资源利用不充分:在出让临界区之后,使用临界区之前,不可能再次使用临界区;之前,不可能再次使用临界区;u如果一个进程失败了,另一个进程将被永久阻塞如果一个进程失败了,另一个进程将被永久阻塞u忙等待忙等待():为了等待一事件的发生为了等待一事件的发生,重复执行一段循环代码重复执行一段循环代码 白白消耗时间白白消耗时间u设立一个标志数组设立一个标志数组:描述进程是

10、否在临界区,初值均为,:描述进程是否在临界区,初值均为,它是进程到达临界区的钥匙它是进程到达临界区的钥匙u先检查,后修改:在进入区中,检查另一个进程是否在临界先检查,后修改:在进入区中,检查另一个进程是否在临界区,不在临界区时修改本进程在临界区的标志;区,不在临界区时修改本进程在临界区的标志;u在退出区修改本进程在临界区的标志;在退出区修改本进程在临界区的标志;u优点:不用交替进入,可连续使用;优点:不用交替进入,可连续使用;u缺点:缺点:u不能保证互斥!不能保证互斥!和和 可能同时进入临界区。在可能同时进入临界区。在 和和 都不在临界区时,假设按下面序列执行时,会同都不在临界区时,假设按下面

11、序列执行时,会同时进入:时进入:“;”。即在检查对方之后。即在检查对方之后和切换自己和切换自己 之前有一段时间,结果都检查通过。之前有一段时间,结果都检查通过。这里的问题出在检查和修改操作不能连续进行。这里的问题出在检查和修改操作不能连续进行。u一个进程在临界区内失败一个进程在临界区内失败,另一进程永远被阻塞另一进程永远被阻塞u优点:类似于算法,与算法的区别在于先修改、后优点:类似于算法,与算法的区别在于先修改、后检查。可防止两个进程同时进入临界区,实现互斥检查。可防止两个进程同时进入临界区,实现互斥。u缺点:和可能都进入不了临界区。在和都不在临界缺点:和可能都进入不了临界区。在和都不在临界区

12、时,假设按下面序列执行,则都进不了临界区:区时,假设按下面序列执行,则都进不了临界区:“”。即在切换自己的之后和检查对方。即在切换自己的之后和检查对方之前有一段时间,结果都切换,都检查不通过。之前有一段时间,结果都切换,都检查不通过。u思路:使每个进程更礼让一些:每思路:使每个进程更礼让一些:每个进程设置自己的,表明自己想进个进程设置自己的,表明自己想进入自己的临界区,但也准备重置,入自己的临界区,但也准备重置,以尊重另一个进程。以尊重另一个进程。u优点:保证互斥优点:保证互斥u缺点:缺点:u出现活锁:一组进程都想进入它们出现活锁:一组进程都想进入它们的临界区,但没有一个能成功进入的临界区,但

13、没有一个能成功进入(不是死锁,因为两个进程相对速(不是死锁,因为两个进程相对速度的任何改变都会打破这种情形)度的任何改变都会打破这种情形)u可能成功进入,也可能有使得任何可能成功进入,也可能有使得任何进程都不能进入临界区的执行顺序进程都不能进入临界区的执行顺序。将将置为置为将将置为置为检查检查检查检查将将置为置为将将置为置为将将置为置为将将置为置为.此序列无限延伸,此序列无限延伸,任何一个进程都不能进入任何一个进程都不能进入自己的临界区自己的临界区u避免避免“无原则无原则”的礼让的礼让u规定在都想进入时的进入顺序规定在都想进入时的进入顺序u表示每个进程关于互斥的位置,解决同时进入时的冲突表示每

14、个进程关于互斥的位置,解决同时进入时的冲突问题问题u:描述可进入的进程(同时修改标志时):描述可进入的进程(同时修改标志时)u在进入区先修改后检查,并检查并发修改的先后:在进入区先修改后检查,并检查并发修改的先后:u检查对方,如果不在临界区则自己进入空闲则入检查对方,如果不在临界区则自己进入空闲则入u否则再检查:保存的是较晚的一次赋值,则较晚的进程否则再检查:保存的是较晚的一次赋值,则较晚的进程等待,较早的进程进入先到先入,后到等待等待,较早的进程进入先到先入,后到等待flagi=TRUE;turn=j;while(flagj&turn=j);critical sectionflagi=FAL

15、SE;remainder sectionu算法解决了互斥问题算法解决了互斥问题,但比较复杂,证明,但比较复杂,证明起来也比较困难。起来也比较困难。u提出一种简单的方案提出一种简单的方案。u.中断禁用中断禁用(关中断关中断,)u单处理器系统单处理器系统,并发进程交替执行而不重叠并发进程交替执行而不重叠u一个进程一直运行,直到调用了一个服务或被中断一个进程一直运行,直到调用了一个服务或被中断u如果进程访问临界资源时如果进程访问临界资源时(执行临界区代码执行临界区代码)不被中不被中断断,就可以利用它来保证互斥地访问就可以利用它来保证互斥地访问u途径途径:使用关中断原语、开中断原语使用关中断原语、开中

16、断原语u过程过程:关中断原语关中断原语;u临界区临界区u开中断原语开中断原语u其余部分其余部分u存在问题存在问题u代价高:限制了处理器交替执行各进程的能力代价高:限制了处理器交替执行各进程的能力u不能用于多处理器结构:关中断不能保证互斥不能用于多处理器结构:关中断不能保证互斥u.专门的机器指令专门的机器指令u设计一些机器指令,用于保证两个动作的原设计一些机器指令,用于保证两个动作的原子性子性,如在一个指令周期中实现测试和修改,如在一个指令周期中实现测试和修改u()指令指令u指令指令u指令定义指令定义(逻辑逻辑)u()()u u ()()u u ;u ;u u u ;u u 使用实现互斥使用实现

17、互斥 ;()()()什么都不做什么都不做 临界区临界区;剩余区剩余区 ();()(),()指令定义:指令定义:(,);do key=1;while(key!=0)Swap(lock,key);/*临界区临界区*/lock=0;剩余区剩余区while(1);u优点优点u适用于单处理器或共享主存的多处理器系统适用于单处理器或共享主存的多处理器系统,进程数目进程数目任意任意u简单且易于证明简单且易于证明u可以使用多个变量支持多个临界区,只需为每个临界可以使用多个变量支持多个临界区,只需为每个临界区设立一个布尔变量区设立一个布尔变量u缺点缺点u忙等待:当一个进程正在等待进入一个临界区时,继忙等待:当一

18、个进程正在等待进入一个临界区时,继续消耗处理器时间。续消耗处理器时间。u可能饿死:任意选择等待的进程,有的可能一直选不可能饿死:任意选择等待的进程,有的可能一直选不上上u可能死锁:高优先级进程等待处于阻塞状态的低优先可能死锁:高优先级进程等待处于阻塞状态的低优先级进程的资源(如:进程执行或指令并进入临界区,级进程的资源(如:进程执行或指令并进入临界区,然后被阻塞,并把给具有更高优先级的然后被阻塞,并把给具有更高优先级的,若试图使用与若试图使用与相同的资源,由于互斥机制,它被拒绝访问,因此进相同的资源,由于互斥机制,它被拒绝访问,因此进入忙等待循环,又因优先级高于,所以总得不到调度入忙等待循环,

19、又因优先级高于,所以总得不到调度执行也无法执行。)执行也无法执行。)u信号量机制信号量机制u可从进程管理者的角度来处理互斥的问题可从进程管理者的角度来处理互斥的问题u信号量就是提供的管理公有资源的有效手段。信号量就是提供的管理公有资源的有效手段。u是解决并发进程问题的第一个重要进展是解决并发进程问题的第一个重要进展(,)信号量定义:是一个数据结构,定义如下:信号量定义:是一个数据结构,定义如下:;信号量声明:信号量声明:;u信号量的值含义信号量的值含义u初始化指定一个非负整数值,表示空闲资源总初始化指定一个非负整数值,表示空闲资源总数(又称为数(又称为“资源信号量资源信号量”):u若为非负值:

20、表示当前的空闲资源数(若为非负值:表示当前的空闲资源数(:可可用的资源数用的资源数)u若为负值:其绝对值表示当前等待临界区的进若为负值:其绝对值表示当前等待临界区的进程数程数(为等待的进程数为等待的进程数)u每个信号量每个信号量 除一个整数值除一个整数值(计数)外,还有(计数)外,还有一个进程等待队列一个进程等待队列,其中是阻塞在该信号量的,其中是阻塞在该信号量的各个进程的标识各个进程的标识表示申请一个资源表示申请一个资源表示没有空闲资源表示没有空闲资源 调用进程进入等待队列调用进程进入等待队列;阻塞调用进程阻塞调用进程;;表示释放一个资源;表示释放一个资源;表示有进程处于阻塞状态;表示有进程

21、处于阻塞状态;从等待队列中取出一个进程从等待队列中取出一个进程;进程进入就绪队列进程进入就绪队列;();申请一个资源申请一个资源 ()没有空闲资源没有空闲资源 ;进程进入等待队列进程进入等待队列;阻塞调用进程阻塞调用进程;();表示释放一个资源;表示释放一个资源;()表示有进程处于阻塞状态;表示有进程处于阻塞状态;;从等待队列中取出一个进程从等待队列中取出一个进程;该进程进入就绪队列该进程进入就绪队列;u操作系统对信号量只能通过初始化和两个标准的操作系统对信号量只能通过初始化和两个标准的原语来访问。原语来访问。u对信号量的操作只有三种原子操作对信号量的操作只有三种原子操作:u初始化初始化:通常

22、将信号量的值初始化为非负整数通常将信号量的值初始化为非负整数u操作操作(操作)操作)u使信号量的值减使信号量的值减(申请一个单位的资源申请一个单位的资源()u如果使信号量的值变成负数如果使信号量的值变成负数,则执行操作的进程被则执行操作的进程被阻塞阻塞(当当 时时,资源已分配完毕资源已分配完毕,进程自己阻塞在的进程自己阻塞在的队列上让权等待队列上让权等待)u操作操作(操作)操作)u使信号量的值加使信号量的值加(释放一个单位资源释放一个单位资源()u如果信号量的值不是正数如果信号量的值不是正数,则使一个因执行操作被则使一个因执行操作被阻塞的进程解除阻塞阻塞的进程解除阻塞(若若 ,则唤醒一个等待进

23、程则唤醒一个等待进程)用、原语解决个进程互斥共享一个临界资源的用、原语解决个进程互斥共享一个临界资源的编程模型编程模型 进程数;进程数;;()()();()()(),(),.,();请仔细分析信号量的变化过程,它是如何保证互斥的?请仔细分析信号量的变化过程,它是如何保证互斥的?u在互斥问题中,对信号量必须设置一次初值,初值必须为在互斥问题中,对信号量必须设置一次初值,初值必须为u、原语操作应该分别紧靠临界区的头部和尾部,从而提高、原语操作应该分别紧靠临界区的头部和尾部,从而提高进程的并发度进程的并发度u的取值为:的取值为:,()u、操作必须成对出现,而且它们同处于同一个进程中、操作必须成对出现

24、,而且它们同处于同一个进程中u某条河上只有一个独木桥,以便行人过河。现在河的两边某条河上只有一个独木桥,以便行人过河。现在河的两边都有人要过桥,若把过桥者看做一个进程,规定:都有人要过桥,若把过桥者看做一个进程,规定:每次只每次只有一个人通过。为了保证过桥安全,请用、操作分别实现有一个人通过。为了保证过桥安全,请用、操作分别实现正确的管理。正确的管理。进程数;进程数;;()()();()()()()();();.();();();u观察者和报告者是两个并发观察者和报告者是两个并发执行的进程。观察者不断观执行的进程。观察者不断观察并对通过的卡车计数,报察并对通过的卡车计数,报告者定时地将观察者的

25、计数告者定时地将观察者的计数随时打印。请用、原语进行随时打印。请用、原语进行正确描述。正确描述。u ;u;u u u u 观察到一辆车;观察到一辆车;u ();u ;u ()u;u;();();缓冲区缓冲区计算计算打印打印放入放入条件空条件空取出结果取出结果条件条件 非空非空u例.进程 和 合作完成计算和打印任务:();取出中的数据取出中的数据 置空标记,打印置空标记,打印 ();:();计算;计算;计算结果计算结果 ();例:例:司机司机售票员售票员司机启动车辆的动作必须于售票员关车门的动作取得同步,售票司机启动车辆的动作必须于售票员关车门的动作取得同步,售票员开车门的动作也必须与司机停车取

26、得同步。员开车门的动作也必须与司机停车取得同步。u设信号量设信号量:u:是否允许司机启动汽车,初值为:是否允许司机启动汽车,初值为u:是否允许售票员开门,初值为:是否允许售票员开门,初值为()()();启动汽车启动汽车;正常行车;正常行车;到站停车;到站停车;();()()关车门关车门;();售票售票();开车门;开车门;上下乘客;上下乘客;;();();u 生产者消费者问题生产者消费者问题u 读写者问题读写者问题u哲学家问题哲学家问题u()有一群生产者进程在生产消息()有一群生产者进程在生产消息,并将消息提供给消费并将消息提供给消费者进程去消费。为使生产者进程和消费者进程能并发执行者进程去消

27、费。为使生产者进程和消费者进程能并发执行,在它们之间设置了一个具有个缓冲区的缓冲池在它们之间设置了一个具有个缓冲区的缓冲池,生产者进生产者进程可将它所生产的消息放入一个缓冲区中程可将它所生产的消息放入一个缓冲区中,消费者进程可消费者进程可从一个缓冲区中取得一个消息消费。从一个缓冲区中取得一个消息消费。u()尽管所有的生产者进程和消费者进程都以异步方式运()尽管所有的生产者进程和消费者进程都以异步方式运行行,但它们之间必须保持同步但它们之间必须保持同步,即不允许消费进程者到一个即不允许消费进程者到一个空缓冲区去取消息空缓冲区去取消息,也不允许生产者进程向一个已装有消也不允许生产者进程向一个已装有

28、消息且尚未被取走消息的缓冲区中投放消息。息且尚未被取走消息的缓冲区中投放消息。u()任何时刻只能有一个进程可对共享缓冲区进行操作()任何时刻只能有一个进程可对共享缓冲区进行操作 生产者消费者问题生产者消费者问题()共享缓冲区共享缓冲区生产指针生产指针消费指针消费指针Producer 1Producer 2.Producer MConsumer 1Consumer 2.Consumer N满满空空指针移动方向指针移动方向u设信号量:设信号量:u:是:是“满满”缓冲区数量,初值为缓冲区数量,初值为u:是:是“空空”缓冲区数量,初值为。缓冲区数量,初值为。u:用于访问缓冲区时的互斥,初值是:用于访问

29、缓冲区时的互斥,初值是 ProducerP(empty);P(mutex);/进入区进入区 one unit-buffer;V(mutex);V(full);/退出区退出区ConsumerP(full);P(mutex);/进入区进入区 one unit buf;V(mutex);V(full);P(full);P(mutex);/进入区进入区 one unit-buf;V(mutex);V(empty);/退出区退出区分析:当分析:当,时,执行顺序:时,执行顺序:();();阻塞,等待阻塞,等待 发出的信号发出的信号();();阻塞,等待发出的信号阻塞,等待发出的信号思考:还有其他的执行序列

30、可以产生死锁吗?思考:还有其他的执行序列可以产生死锁吗?发生发生死锁死锁消费者:消费者:()();();();();();();生产者生产者:();();();();();();();123N-20N-1inout使用方向使用方向供应方向供应方向 缓冲区被看作一个循环缓冲区缓冲区被看作一个循环缓冲区 指针值必须表达为按缓冲区的大小取模指针值必须表达为按缓冲区的大小取模 ;;例:图书馆问题例:图书馆问题 图书馆有个座位,有一张登记表,要求:图书馆有个座位,有一张登记表,要求:阅读者进入时登记,取得座位号;阅读者进入时登记,取得座位号;出来时,注销;登记表同时只能由一个人使用;出来时,注销;登记表

31、同时只能由一个人使用;用、原语描述一个读者的使用过程。用、原语描述一个读者的使用过程。()();阅读阅读;()()();();登记;登记;();()();注销;注销;();();信号量:表示可用座位数,初值为;信号量:表示可用座位数,初值为;信号量:表示登记表是否正在使用,初值为;信号量:表示登记表是否正在使用,初值为;u有个进程,和合作解决文件打印问题:有个进程,和合作解决文件打印问题:u将文件记录从磁盘读入主存的缓冲区,每执行一次读将文件记录从磁盘读入主存的缓冲区,每执行一次读一个记录一个记录;u将缓冲区的内容复制到缓冲区,每执行一次复制一个将缓冲区的内容复制到缓冲区,每执行一次复制一个记

32、录;记录;u将缓冲区的内容打印出来,每执行一次打印一个记录将缓冲区的内容打印出来,每执行一次打印一个记录。缓冲区的大小等于一个记录大小。缓冲区的大小等于一个记录大小。u要求:请用,操作来保证文件的正确打印。要求:请用,操作来保证文件的正确打印。缓冲区1缓冲区2PA从磁盘读入PB复制PC打印设置个信号量:设置个信号量:,.及分别表示缓冲区及缓冲区是否为空,初值为。及分别表示缓冲区及缓冲区是否为空,初值为。,分别表示缓冲区及缓冲区是否有记录可供处理,分别表示缓冲区及缓冲区是否有记录可供处理,其初值为。其初值为。()()从磁盘读一个记录;从磁盘读一个记录;();将记录存入缓冲区;将记录存入缓冲区;(

33、);()()()从缓冲区中取出记录;从缓冲区中取出记录;();();将记录存入缓冲区;将记录存入缓冲区;();()()();从缓冲区取一个记录;从缓冲区取一个记录;();打印记录打印记录;()();();();u问题描述问题描述u有一个许多进程共享的数据区有一个许多进程共享的数据区;有一些只读取这个数据区有一些只读取这个数据区的进程的进程()和一些只往数据区中写数据的进程和一些只往数据区中写数据的进程();此外还必此外还必须满足下列条件须满足下列条件:u任意多的读进程可以同时读这个数据区任意多的读进程可以同时读这个数据区u一次只有一个写进程可以往数据区写一次只有一个写进程可以往数据区写u如果一

34、个写进程正在往数据区中写如果一个写进程正在往数据区中写,禁止任何读进程读数禁止任何读进程读数据区据区u要求:要求:“读写读写”互斥;互斥;“写写写写”互斥;互斥;“读读读读”允许允许u:用于互斥,只要一个写进程正在访问共享数据区,其他的用于互斥,只要一个写进程正在访问共享数据区,其他的写进程和读进程都不能访问它。写进程和读进程都不能访问它。u:用于记录读进程的数目:用于记录读进程的数目u信号量用于确保被正确更新。(互斥)信号量用于确保被正确更新。(互斥)问题描述:(由首先提出并解决)问题描述:(由首先提出并解决)个哲学家围绕一张圆桌而坐个哲学家围绕一张圆桌而坐;桌子上放着支筷子,每两个哲学家之

35、间放一支;桌子上放着支筷子,每两个哲学家之间放一支;哲学家的动作包括思考和进餐哲学家的动作包括思考和进餐;进餐时需要同时拿起他左边和右边的两支筷子进餐时需要同时拿起他左边和右边的两支筷子;思考时则同时将两支筷子放回原处思考时则同时将两支筷子放回原处;问题:如何保证哲学家们的动作有序进行?如:问题:如何保证哲学家们的动作有序进行?如:不出现相邻者同时要求进餐;不出现相邻者同时要求进餐;不出现有人永远拿不到筷子;不出现有人永远拿不到筷子;思考;取;取();进食;放;放();;u最多允许个哲学家同时坐在桌子周围最多允许个哲学家同时坐在桌子周围u仅当一个哲学家左右两边的筷子都可用时,才仅当一个哲学家左

36、右两边的筷子都可用时,才允许他拿筷子(允许他拿筷子()u给所有哲学家编号,奇数号的哲学家必须首先给所有哲学家编号,奇数号的哲学家必须首先拿左边的筷子,偶数号的哲学家则反之拿左边的筷子,偶数号的哲学家则反之u为了避免死锁,把哲学家分为三种状态,思考为了避免死锁,把哲学家分为三种状态,思考,饥饿,进食,并且一次拿到两只筷子,否则,饥饿,进食,并且一次拿到两只筷子,否则不拿不拿;()()();();();()();();()();用、原语实现东西向单行道上车辆的正确行驶:用、原语实现东西向单行道上车辆的正确行驶:当有车自东向西方向(或自西向东方向)行驶,另当有车自东向西方向(或自西向东方向)行驶,另

37、一方向上的车辆须等待;一方向上的车辆须等待;同一方向上的车可以连续通过,同一方向上的车可以连续通过,当某一方向上已经没有车辆在单行道上行驶时,另当某一方向上已经没有车辆在单行道上行驶时,另一方向上的车辆即可以进入单行道。一方向上的车辆即可以进入单行道。请完善这个程序:请完善这个程序:(可参考读写者问题)可参考读写者问题),:,:,,::;();通过单行道;通过单行道;;();Process west_east()begin _;westcount:=westcount+1;If westcount=1 then_;_;通过单行道;通过单行道;_;westcount:=westcount-1;If westcount=0 then_;V(westeast);End;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第5章进程同步与互斥课件.ppt)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|