第三讲 并发性.pptVIP

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5-1死锁原理 一组竞争资源或互相通信的进程间相互的永久阻塞 一组进程等待事件 而只有进程集合中的其他阻塞的进程才可以触发这一事件 没有有效的解决办法 两个或多进程之间对资源的需求引起的冲突 5-1死锁原理 5-1死锁原理 5-1可重用资源 一次只能供一个进程安全的使用,并且不会由于使用而耗尽的资源 进程得到资源,后来又释放资源,共其他进程再次使用 例如: 处理器,IO通道,主存,辅存 文件,数据库,信号量等数据结构 如果 进程占有一项资源,有申请另一个,可能会导致死锁 5-1死锁的例子 5-1死锁的例子 可分配的空间200kB,下面的请求序列 在第二个请求是发生死锁 P1 … … Request 80KB … Request 60KB …. P2 … Request 70KB … Request 80KB … 5-2可消费的资源 创建并且可以销毁的资源 如,中断,信号,消息和IO缓冲区中的信息 如果receive阻塞,则可能发生死锁 很少见的事件组合也可能导致死锁 5-3资源分配图 有向图 阐述系统资源和进程的状态情况 5-3资源分配图 5-4死锁的条件 互斥 一次只有一个进程可以使用资源 占有且等待 占有已分配资源 等待分配其他资源 非抢占 不能强行抢占进程中已占有的资源 循环等待 存在一个封闭的进程链 资源至少占有链中下一个进程所需要的资源 阶段总结 6-1死锁的预防 设计一种系统来排除发生死锁的可能性 间接方法 防止前三个必要条件 直接方法 防止循环等待 6-1互斥 资源要求互斥 操作系统必须支持,不可能禁止 6-2占有且等待 同时请求所有的资源,但是 被阻塞时间长,低效 可能占有不用的资源,导致其他程序等待 可能事先并不知道需要那些资源 模块化设计,和多线程结构中的实际问题 6-3非抢占 占有资源的进程进一步请求被拒绝,则释放已占有资源 占有资源的进程进一步请求时,操作系统迫使另一个进程释放此资源。 要求两个进程具有不同优先级 只有在很容易保存/恢复上下文时,这种方式才实用 6-4循环等待 定义资源的线性顺序来预防 低效 7-1哲学家就餐问题 7-1使用信号量解决方法 7-1使用信号量解决方法 8Unix的并发机制 管道 消息 共享内存 信号量(semaphore) 信号(signal) 9-0Linux内核并发机制 原子操作 不会被打断 自旋锁 普通 _irq _irqsave _bh 信号量 二元信号量 计数信号量 读者-写者信号量 9-1Linux的原子操作 9-1Linux的原子操作 9-2Linux spinlock 9-3Linux下的信号量 本章总结 并发性 并发的原理 信号量 消息传递 读者-写者问题 死锁原理 死锁预防 哲学家就餐问题 UNIX的并发机制 Linux 内核并发机制 资源的共享,引发了并发的问题i,而并发分为两个问题,同步与互斥。由此又会引出两个问题:死锁与饥饿。信号量与消息传递是常见的同步操作。 生产者/消费者模型,读者/写者问题是常见的同步互斥问题。哲学家就餐问题是典型的死锁与饥饿的问题模型。最后介绍了Unix/Linux支持的并发机制 * 1、1969年由Ken Thompson在AT T贝尔实验室实现,运行在一台DEC PDP-7计算机上,后来Ken Thompson和Dennis Ritchie使用C语言对整个系统进行了再 加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。经C语言改版后分发给科研机构和大学。 2、 70年代末,到Unix V6版本时,ATT认识到Unix的价值,成立了Unix系 统实验室,宣布对unix产品拥有所有权 3、加州大学伯克利分校计算机系统研究小组(CSRG)对Unix进行研究出BSD Unix(ARPNET最新利用BSD实现TCP/IP) 4、ATT和CSRG的官司 5、ATT吸收BSD Unix的优点,推出Unix System V版本,从此以后,BSD(Berkeley Software Distribution) 6、 Unix和Unix System V形成了当今Unix的两大主流,现代的Unix版本大部分都是这两个版本的衍生产品。   Unix操作系统的历史漫长而曲折,它的第一个版本是1969年由Ken Thompson在AT T贝尔实验室实现的,运行在一台DEC PDP-7计算机上。这个系统非常粗糙,与现代Unix相差很远,它只具有操 作系统最基本的一些特性。后来Ken Thompson和Dennis Ritchie使用C语言对整个系统进行了再 加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。从那以后,Unix系统开始了令人瞩目的发展。   由于此时ATT还没有把Unix作为它的正

您可能关注的文档

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档