第4章(进程同步与死锁).ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章(进程同步与死锁)

计算机系统原理 华南农业大学珠江学院 第4章 进程同步与死锁 讲授教师 屈 晓 学习目标 1、理解进程同步 2、掌握信号量的机制 3、进程同步的应用 4、理解管程及其作用 5、理解进程的通信 6、理解死锁的产生 7、理解死锁的预防 8、理解死锁的避免 9、了解死锁的检测与解除 并发进程 并发性: 是指两个或者多个事件在同一时间间隔内发生。 在多道程序环境下,并发性是宏观上的。 并发进程: 由于操作系统具有并发与共享等特性,系统中某一个进程的工作没有全部完成之前,另一个进程就可以占用CPU,开始工作,通常将这些可以同时工作的进程称为“并发进程”。 并发进程的特性: (1)、异步性 (2)、竞争性 (3)、相互制约性 (4)、与速度有关。 与时间有关的错误 并发运行的进程之间,可能没有任何联系,可能存在一定的关系,比如两个进程对同一个资源进行操作,这种情况下可能会产生与时间有关的错误。 示例4-1:进程1和进程2共享一个公共变量count. ……. a:temp1 = count; temp1 = temp1 + 1; b:count = temp1; ……… ……. c:temp1 = count; temp1 = temp1 + 1; count = temp1; d: print count; ……… 进程1 进程2 示例4-2 示例4-3 如何避免“与时间有关的错误”发生? 进程同步 进程同步2-1 1、概念: 进程同步是OS管理共享资源和避免并发进程产生与时间有关的错误的一种手段。包含两部分: (1)、进程的互斥: (2)、进程的同步: (1)、进程的互斥: 指并发进程在竞争共享资源进,若进程正在使用共享资源,则其他想使用该资源的进程必须等待,直到使用者归还该资源后才可使用,即共享资源互斥使用。 (2)、进程的同步: 指一个进程的执行依赖其他进程的执行情况,即一个进程在没有收到其他进程的消息时必须等待,直到另一进程送来消息后才继续执行。 进程同步2-2 互斥:是因为共享资源而产生的制约关系。 同步:因相互合作而产生的制约关系。 临界区2-1 当并发进程对共享资源进行激烈的竞争时,有些资源必须保护,防止两个或以上的进程同时存取或改变他们。 如:打印机等设备和变量,队列等数据。 临界资源: 某段时间内只允许一个进程使用的资源。 临界区: 把进程中涉及临界资源的那一部分操作,称为关于该临界资源的临界区(critical section,cs)。 临界区域2-2 几个进程若共享同一临界资源,它们必须互斥的使用这个资源,否则将会造成信息混乱和操作出错。 如何保证如何各进程间互斥地执行临界区? 应遵循如下的准则: (1)、有空让进(临界资源的有效利用率) (2)、无空等待(互斥的含义) (3)、多中选一(保证只有一个进程使用临界资源) (4)、有限等待(避免“死等”) (5)、让权等待(避免“忙等”,当进程不能进入临界区,应立即释放处理机) 同步机构 对于进程的互斥和同步,OS必须有某种有效的控制手段,对互斥,要保证在临界区内不能交替执行,而谁先进入临界区都可以;对同步,则要保证合作进程必须相互配合共同推进,严格按照一定的先后顺序。 在操作系统中,实现互斥和同步的机构统称为“同步机构”。 同步机构的实现: (1)、互斥锁 (硬件方法) (2)、信号量上的P-V操作 (软件方法) 互斥锁2-1 (1)、互斥锁: 互斥锁是借助硬件指令Test and Set(TS)来实现。 两种状态:锁定(lock)、非锁定(unlock) 每个对象都对应一个“互斥锁”标记,用来保证在任一时刻只能有一个进程访问该对象。 思考:用代码如何实现? void lock(锁变量W){ test: if (w==1) goto test; else w = 1; } void unlock(锁变量w){ w = 0; } 互斥锁2-2 互斥锁的缺点: (1)、不满足“让权等待”的原则。 (2)、CPU资源浪费,效率低。 (3)、难以实现复杂的互斥和同步。 示例4-2:用互斥锁实现例4-1两并发 进程访问同一个变量count. ……. lock(w); a:temp1 = count; temp1 = temp1 + 1; b:count = temp1; unlock(w); ……… ……. lock(w); c:temp1 = count; temp1 = temp1 + 1; count = temp1; d: print count; unlock(w); ……… 进程1 进程2 信号量3-1 (2)、信号量和P-V操

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档