操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt

操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt

ID:50045028

大小:1.62 MB

页数:34页

时间:2020-03-08

操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt_第1页
操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt_第2页
操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt_第3页
操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt_第4页
操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt_第5页
资源描述:

《操作系统 教学课件 作者 宗大华 宗涛 陈吉人 8并发性:互斥和同步课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、8.5.2信箱通信第8章并发性:互斥和同步8.1互斥和同步8.1.1互斥和临界区8.1.2同步8.2实现互斥的方法讨论8.2.1实现互斥的硬件方法8.2.2实现互斥的软件方法8.3信号量与P、V操作8.3.1信号量与P、V操作定义8.3.2用P、V操作实现互斥8.3.3用P、V操作实现同步8.3.4用P、V操作实现资源分配8.3.5管程8.4互斥、同步的样例分析8.4.1读者-写者问题8.4.2哲学家就餐问题8.4.3理发师理发问题8.5高级进程通信8.5.1消息缓冲通信本章目录某用户编写进程p1用于存款,进程p2用于取款。它们都访问变量balance表示的余额:p1用于增加balanc

2、e,p2用于减少balance。p1和p2的几条汇编指令代码框架如下(其中x1、x2分别是p1和p2的临时变量):p1的代码框架:p2的代码框架:…………loadR1,balanceloadR1,balanceloadR2,x1loadR2,x2addR1,R2subR1,R2storeR1,balancestoreR1,balance…………8.1互斥和同步8.1.1互斥和临界区进程间的间接制约关系1.系统中有这样的一类资源,哪个进程先用它、哪个进程后用它没有什么关系,但不能同时使用。即在一个进程使用时,另一个进程不能使用,否则会导致错误。这种由于使用具有“排他性”资源、而对进程的执行

3、产生影响,使它们间产生了的关系,就是进程间所谓的“间接制约”关系。.例8-1:p2读balance的值(应该和p1读出的值一样)到R1,读x2的值到R2,然后计算(在寄存器R1里的)balance和(在寄存器R2里的)x2的差,并将这个差值(在寄存器R1里)回存到变量balance;p1中断时,运行现场寄存器(R1、R2)里的值被保存到PCB1中;P1的执行:…loadR1,balanceloadR2,x1addR1,R2storeR1,balance…时钟中断P2的执行:…loadR1,balanceloadR2,x2subR1,R2storeR1,balance…时钟中断.代码单独执

4、行时,都会正确地工作。关键是如果两个进程在系统中并发地运行,就可能会发生灾难性的错误。比如如果两个进程的执行有如图所示的顺序。.这时,p1在执行到指令:“loadR2,x1”后,被时钟中断。随后调度到p2执行。在这个特定的运行情景下,会发生下面的动作序列:(1)(2)(3)又由于时钟中断,使p1最终得到执行,依据PCB1恢复寄存器R1和R2后,计算(在寄存器R1里的)balance与(在寄存器R2里的)x1的和,但因为balance还是p2执行前被保存在寄存器R1里的旧值,因此计算时并没有考虑到p2已经把它改变了;(4)最后的结局是balance里面的值没有正确反映出用户存、取款的情况。

5、.进程间因资源共享(这里的资源体现为是一个公共变量)而产生间接制约关系时,它们随意的并发执行顺序不可能保证运行结果的正确。互斥:如果有一个进程在临界区内执行,欲进入临界区的其他进程只能在临界区外等待进入。2.互斥和临界区例8-1中的进程p1和p2之所以会出问题,不在于它们个体的行为,它们的个体行为都是没有问题的(p1和p2的程序编写是正确的),问题在于“共享”,在于大家都要竞争使用这种共享的资源。.计算机中,凡涉及共享变量、共享内存区、共享队列(如就绪队列)、共享文件及共享任何资源的情况时,都有可能引发类似的问题。既要允许进程共享资源,又要阻止错误的发生,唯一的办法是保证进程“互斥”地使

6、用资源,即确保当一个进程在使用一个共享资源时,其他进程不能同时去使用。..进程程序中,涉及访问共享资源的程序段,称为“临界区(CS)”,只能排他使用的资源称为“临界资源”。为了保证在临界资源上操作的正确性,需遵循下面的3个要求:.(1)(2)有空让进:如果没有进程在临界区、且有进程希望进入临界区,那么应该立即允许其中的一个进程进入临界区。(3)有限等待:进入临界区的进程,应在有限时间内完成并立即离开临界区,以便能够让其他的进程有机会进入临界区。请求进入临界区的代码段,称为“进入区”,任务是判定是否有进程在临界区里。如果有,则等待进入;否则才能允许进入临界区。.如图所示,给出了临界区互斥时

7、进程的行为。进程A在时刻T1进入临界区。稍后,在时刻T2进程B试图进入临界区。但是由于进程A已经在临界区内,因此进程B被阻挡不得进入,直到时刻T3进程A离开临界区,进程B才被允许进入临界区,并在时刻T4离开临界区。进程A:进程B:A进入临界区A离开临界区B试图进入临界区B进入临界区B离开临界区T1T2T3T4时间B被阻塞.因此,如果进程程序中有临界区,那么其设计应该包括如下的三个部分:(1)(2)(3)请求退出临界区代码段,称为“退

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。