中南大学数学院计算机操作系统第四章课件进程通信.pptVIP

中南大学数学院计算机操作系统第四章课件进程通信.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* Solaris中的信号处理 Solaris中的信号处理是进程级别的,但每个线程可以有自己的信号屏蔽掩码。 线程可以独立于同一进程中执行的其他线程来选择自己要屏蔽的信号,因而在进程执行的不同时刻可以有不同的线程来接收不同的信号。 接口pthread_sigmask()用来建立每个线程的信号屏蔽掩码。进程中的所有线程共享所有信号的处理及处理例程,那么具有默认处理的SIGINT信号(作为例子)的产生将会使整个进程退出。作为异常的结果产生的同步信号(SIGFPE、SIGILL等)将被发送到产生异常的线程本身。 异步信号是所有没有被定义为异常的其他信号,它们将被传递到系统找到的第一个不屏蔽该信号的线程。 信号在数据结构中表示为二进制位,例如设置第16位,SIGURS1(这实际上是位15,位的编号是从0开始的)。 * 4.7 死锁 4.7.1 产生死锁的原因 图4-10 过河的相持 * 当两个进程各占了对方所要的一个资源,就会形成死锁 进程B等待资源R1 资源R1 进程B 进程A 资源R2 进程A占用资源R1 进程A等待资源R2 进程B占用资源R2 图4-11两个进程的死锁 * 系统资源可分为两类,一类是可重复使用的永久性资源,另一类是会被消耗的临时性资源。可重复用的资源在使用后不会减少资源。进程在释放了可重用资源后,该资源又可被其他进程再次使用。可重用的资源有处理机、主存、暂存、I/O通道、打印机以及文件、数据库等。 可重用的资源又可分为可剥夺的资源和不可剥夺的资源。最典型的可剥夺的资源是处理机。最普通的不可剥夺的资源是打印机,当系统把这类资源分配给进程后,只能在使用完毕后由进程自愿释放,系统不能强行收回。 涉及到可重用资源的死锁例子是:一个进程占用了打印机,又要申请磁带机,另一个进程占用了磁带机,又要申请打印机,这样每个进程都占用并保持了一个资源,并等待对方所占用的资源时就发生了死锁。 * 4.7.2 产生死锁的条件 同时具备下列三个静态的必要条件时,才有可能产生死锁。 (1) 互斥执行 每次只能允许一个进程占有和使用一个资源,其他申请该资源的进程被阻塞。 (2) 保持并等待 当进程等待分配给它新的资源时,保持占有已分配的资源。 (3) 不可剥夺 不能强迫移去进程占有的未使用完的资源。 上述这三个条件是产生死锁的必要条件,但即使存在全部这三个条件也不一定会发生死锁。要产生死锁必须存在第四个动态条件: (4) 循环等待 存在一个闭合的进程──资源链,以致每一个进程至少占有链中下一个进程所需要的一个资源。 * 4.7.3 死锁的预防 1.互斥执行 一般说,第一个条件是不能排除的,如果存取一个资源需要互斥执行,那么操作系统就要支持互斥执行。某些资源,例如文件,可以允许多个用户同时读,但对写只能互斥地进行。就是在这个情况,如果一个以上的进程需要进行写操作,就可能发生死锁。 2.保持和等待 保持和等待条件是能预防的,只要进程一次申请它所需要的所有的资源,在所有的需要同时满足以前,阻塞自己。 * 有几种方法可预防这个条件。一个方法是,如占有某些资源的进程不能获得进一步的资源,该进程必须释放原先所占有的资源;如果需要,以后再申请这些资源。 另外的方法是,如果一个进程需要申请当前正被其他进程占用的资源,操作系统就要求后者释放它所占用的这类资源。这种预防死锁的方法只能用在后申请资源的进程优先级较高的情况下。 只有当资源的状态容易保存和便于以后恢复的情况下,这种方法才是实际可行的。处理机就是这类资源的例子,如剥夺像打印机那样的资源,就会使输出变得杂乱无章、毫无意义。但借助spooling技术可将独享设备改为虚拟的共享设备,就能破坏本条件,预防死锁。 3.不可剥夺 * 4.循环等待 采用有序资源使用法可以防止循环等待条件。如果一个进程已经分配了类型R的资源,那么以后它只能申请在资源顺序表中排在R后面的资源类型。 1 2 3 4 5 数 / 模 转 换 器 磁 带 机 打 印 机 光 刻 机 绘 图 仪 * 五个哲学家吃通心面 P1: 思考 semWait(f1) 取 f1 semWait (f2) 取 f2 吃通心面 放下f1,f2 semSignal(f1) semSignal(f2) p1 f1 f2 p2 f3 f4 f5 p3 p4 p5 P5: 思考 semWait (f5) 取 f5 semWait (f1) 取 f1 吃通心面 放下f5,f1 semSignal (f5) semSignal (f1) ……. * 五个哲学家吃通心面 P1: 思考 semWait(

文档评论(0)

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

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

1亿VIP精品文档

相关文档