逄-第三章进程死锁、线程06.pptVIP

  • 1
  • 0
  • 约6.7千字
  • 约 48页
  • 2019-08-03 发布于江苏
  • 举报
3.8 死锁 死锁(deadlock) 各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源,从而造成所有进程都想得到资源而又都得不到资源,多并发进程不能继续向前推进的状态. 例:设一座小桥每次只允许一辆车通过,若桥两边同时至少有两辆车相向而行,则出现“死锁” 死锁的起因 产生死锁的必要条件 1)互斥条件:一个资源一次只能被一个进程使用。 2)不可抢占条件:进程已经占用的资源,在未使用完毕前,不会被其他进程强制剥夺,只能由自己释放。 3)部分分配条件:一个进程已占有分给它的资源,但仍要求其他资源。 4)环路条件:系统中存在一个由若干进程形成的环形请求链。 产生死锁的必要条件 注意:以上四个条件是必要条件而不是充分条件。即满足上述四个条件不一定死锁,而产生死锁一定要满足这四个条件。 3.8.2 死锁的排除方法 1)预防:采用某种策略限制并发进程对资源的请求(只要时4个必要条件中的某一个不满足,则死锁就可排除)。 2)避免:在动态分配资源时,根据资源使用情况提前做出预测,小心地避免死锁发生。 3)检测和恢复:系统设专门机构,当死锁发生时,能够检测到死锁发生的位置和原因,并通过外力破坏死锁发生的必要条件。 死锁的预防 1)破坏互斥条件:即允许资源共享使用。 缺点:由资源的性质决定,有些资源不允许同时访问,例如打印机。 2)破坏不可抢占条件: 缺点: ①这种强迫进程释放资源的方法只适用于CPU和主存这类资源,不适合读卡机、打印机等。 ②即使对于主存这类可抢占资源,也要为抢占付出代价。 死锁的预防 3)破坏部分分配条件:预先静态分配法 特点: 仅当系统能满足“作业”运行时所需要的全部资源时,才把“作业”调入内存运行,在“作业”运行前将其所需全部资源一次性分配给该“作业” ,在“作业”运行过程中不会提出新的资源请求。 缺点: 死锁的避免 系统安全状态: 指系统能按某种顺序(如P1P2……Pn)来为每个进程分配其所需要资源,直至最大需求,使每个进程都可顺序完成。若系统不存在这样一个安全序列,则称系统处于不安全状态。 --系统进入不安全状态后可能进入死锁 --只要系统处于安全状态,系统便可避免进入死锁状态。 --避免死锁的实质:如何使系统不进入不安全状态。 死锁的避免 对进程发出的每一个申请资源命令加以动态检查,若发现分配资源后系统进入不安全状态则不予分配;若发现分配资源后系统仍处于安全状态则分配 注意:不安全状态不一定导致死锁 死锁的避免 优点:提高资源利用率 缺点:增加系统开销 银行家算法问题 银行家算法问题 练习:一个系统具有150个存储单元,在T时刻按下表 分配给3个进程 进程 最大需求 目前分配 P1 70 25 P2 60 40 P3 60 45 对下列请求应用银行家算法分析判断是否安全?如果 安全,请给出一个可能的安全序列,否则说明原因。 1)P4到达,最大需求60,当前请求分配25 2)P4到达,最大需求50,当前请求分配35 银行家算法问题 解: ①算出系统剩余资源数为150-25-40-45=40 ②算出各个进程的剩余需求 进程 最大需求 目前分配 剩余需求 P1 70 25 45 P2 60 40 20 P3 60 45 15 ③对于问题1):P4当前请求分配25个,若分配,则系统剩余15个,至少可以找到一个安全序列p3,p2,p1,p4 ④对于问题2) P4当前请求分配35个,若分配,则系统剩余5个,找不到安全序列 1)检测方法 化简资源分配图。 2)恢复方法 关于死锁的一些结论 参与死锁的进程最少是两个 (两个以上进程才会出现死锁) 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子集 3.9 线程 进程:程序的一次动态执行过程和资源分配的基本单位。 多线程系统中进程与线程的关系 3.9.2 线程的适用范围 ①最不适用的是很少做进程调度和切换的系统,由于任务的单一性,设置线程反而会占用更多的内存空间和寄存器。 ②最适合使用线程的系统是多处理机系统。 ③单系统中,在用户程序可按功能划分为不同的小段时,也可使用线程。 3.

文档评论(0)

1亿VIP精品文档

相关文档