无锡企业网站制作策划,html网页制作完整代码,大浪做网站,广告投放怎么做前面讲过预防死锁是通过破坏死锁的四个必要条件#xff0c;所以就有四个预防死锁的方法吗#xff1f;错#xff01;只有三种#xff0c;因为互斥条件是必须的#xff0c;不仅不能改变#xff0c;还应该加以保证。因此只能破坏后三个条件。
一、破坏请求和保持条件
方法…前面讲过预防死锁是通过破坏死锁的四个必要条件所以就有四个预防死锁的方法吗错只有三种因为互斥条件是必须的不仅不能改变还应该加以保证。因此只能破坏后三个条件。
一、破坏请求和保持条件
方法一 —— 破坏“请求”条件预先静态分配法 每个进程执行之前必须一次性地申请其在整个运行期间所需的全部资源全部申请到了才能运行。这样它在整个运行过程中便不会再提出资源请求从而破坏了“请求”条件。
缺点 ① 资源利用率很低有些资源可能在最后才会用到它却一直占用了那么久 ② 进程可能出现饥饿现象可能由于个别资源别其他进程占用而导致某进程迟迟不能开始
• 方法二 —— 破坏“保持”条件 每个进程提出申请资源前必须释放已占有的一切资源 二、破坏非抢占条件
方法一 —— 走不通就放弃自己的已有资源造福别人 进程 Pi 申请 Rj 类资源时检查 Rj 中有无可用资源有则分配给 Pi 否则将 Pi 占有的资源全部释放而进入等待状态Pi等待其原占有的所有资源和申请的资源
• 方法二 —— 走不通先去抢别人的前提是别人也走不通抢不到就放弃自己的 当进程 Pi 申请 Rj 类型的资源时检查 Rj 中有无可用资源有则分配给 Pi 否则检查已获得 Rj 类资源的进程 Pk 若 Pk 处于等待资源状态则抢占 Pk 的 Rj 类资源并分配给 Pi若 Pk 不处于等待资源状态则置 Pi 于等待资源状态此时Pi原已占有的资源可能被抢占
这两种方法的缺点 ① 有的资源是不可抢占资源比如打印机被抢占后可能导致前一阶段的工作失效 ② 延长了周转时间降低了系统吞吐量增加了系统开销因为某些进程的执行可能会被无限推迟 三、破坏循环等待条件有序资源使用法
给系统中的所有资源类型进行排序编号 • 每个进程只能按递增顺序申请资源即进程申请了序号为 8 的资源后下次只能申请序号为 9 或以上资源 • 如果进程需要同一资源类型的多个实例也就是序号相同的资源则必须对它们一起进行申请 • 如果进程后面又想申请序号低的资源比如5那就必须把现在拥有的序号为5及其以上的资源全部释放
为什么这种规则可以破坏循环等待条件 核心 每个进程只能按递增顺序申请资源 因此每个时刻总有一个进程占据了较高序号的资源那么它后面继续申请的资源一定是空闲的这就保证了进程是可以一直向前推进的举个例子 优点 与前两种策略相比其资源利用率和系统吞吐量都有明显的改善
缺点 ① 序号必须相对稳定这就限制了新设备的增加 ② 如果作业使用各类资源的顺序与系统规定的递增顺序不符合的话就会造成资源的浪费 ③ 按规定次序申请资源的方法会限制用户简单、自主地编程 参考自【OS笔记 28】处理死锁的四种方法——预防死锁破坏四个必要条件之一_Crayon小鱼干的博客-CSDN博客_预防死锁的四种方法