- 1、本文档共106页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华南理工大学操作系统课件第三章并发控制
计算机操作系统 第3章 并发控制——互斥与同步 本章知识点: 3.1 并发原理 3.2 互斥——软件解决方法 3.3 互斥——硬件解决方法 3.4 信号量 3.5 管程 3.6 消息传递 3.7 读者/写者问题 3.8 系统举例(略) 3.1 并发原理 操作系统设计的核心是进程管理: 在单处理机系统中,并发执行方式: 微观串行,宏观并行。 在多处理机系统中,并发执行方式 宏观并行,也有微观并行。 分布式环境,多进程管理 并发的存在,要求操作系统 必须能跟踪大量活跃进程, 必须为每一活跃进程分配资源, 必须保护每一进程的数据和物理资源不被其他进程侵犯,并且进程执行的结果与其他并发进程执行时的相对速度无关(P73 例 echo)。 回顾:程序结果的不可再现性 程序A 程序B N=N+1; print(N); N=0; 设某时刻N=n; 3.1 并发原理 并发系统中的各个进程,由于资源共享、进程合作,而产生进程之间的相互制约; 3.1.1 进程间的相互作用 3.1.2 进程间的相互竞争 3.1.3 进程间的相互合作 3.1.4 互斥 3.1.1 进程间的相互作用 进程之间常常相互作用,存在某种彼此依赖或相互制约的关系。例如并发进程在竞争使用同一资源时将产生冲突。 可将进程间的相互作用划分为: 进程互不觉察: 由OS分配资源 进程间接觉察: 共享方式合作 进程直接觉察: 直接通信,协同工作 3.1.2 进程间的相互竞争 并发进程在竞争使用同一资源时将产生冲突。 进程间的竞争面临3个控制问题: 互斥 死锁 饥饿 竞争的控制不可避免地涉及到操作系统,因为是操作系统分配资源, 另外,进程自身也必须能以某种方式表达互斥的要求,例如在使用某一资源之前先将其加锁 。 互斥 临界资源Critical Resource: 每次仅允许一个进程使用的资源。如打印机,共享变量 临界区Critical Section : 每个进程中访问临界资源的那段代码。 互斥Mutual Exclusion: 不允许两个以上的共享该资源的并发进程,同时进入临界区,称为互斥。 进程进入临界区之前,必须提出申请,经允许后方可进入,进入后加锁,使其他进程无法进入,退出临界区时解锁。 互斥的两个后果 死锁(deadlock) 是指多个进程互不相让,都得不到足够资源。 饥饿(starvation)是指某些进程一直得不到资源,或得到资源的概率很小。 3.1.3 进程间的相互合作 1.通过共享合作 这些进程并不是通过名字察觉到对方,而是通过共享访问间接察觉。 进程间通过共享方式进行合作。 除互斥、死锁和饥饿外,保证数据的一致性也是一个潜在的控制问题。 3.1.3 进程间的相互合作 2.通过通信合作 进程通信是指进程之间,可直接以较高的效率,传递较多数据的信息交换方式。 这种方式中采用的是通信机构,在进程通信时往往以消息形式传递信息。 因为在消息传递中不存在共享,所以这种形式的合作不需要互斥,但是还存在死锁和饥饿问题。 3.1.4 互斥问题的解决原则 互斥原则 P67 任何两个进程不能同时处于临界区 通用性原则 不应对CPU的速度和数目进行任何假设 有效性原则 临界区外的进程不应阻塞其他进程 合理性原则 不得使进程在临界区外无限制的等待 当进程无法进入临界区时,应放弃CPU资源 3.2 互斥——软件解决方法 软件方法对并发进程不提供任何支持, 不需要硬件、操作系统、程序设计语言的支持。 软件方法易引起较高的进程负荷,和较多的错误,但有利于同学们深刻理解并发的复杂性。 其基本思路:在进入区,检查和设置一些标志,如果已有进程在临界区,则在进入区通过循环检查进行等待; 在退出区,修改标志,允许其他进程进入。 主要问题:设置什么标志如何检查标志 类PASCAL描述语句与C对比 begin … end repeat ... Forever repeat ... until P while P do begin …end function name1(...):type procedure name2(...) var i,j:integer; var x:arra
文档评论(0)