首页 > 编程知识 正文

死锁检测和死锁避免,死锁定理是用于处理死锁的()方法

时间:2023-05-03 16:53:04 阅读:176858 作者:2495

2.19.2死锁的条件必需条件互斥:一次只能有一个进程使用一个资源占用和等待。 进程在等待其他资源时,不能继续占用现有资源。 进程不能强制占用其他进程占用的进程的充分条件循环等待:存在封闭的进程链。 解决死锁预防2.19.3死锁,其中每个进程至少占用此链中下一个进程所需的一个资源:防止死锁的四个条件之一避免死锁:检测和释放死锁以防止循环等待2.20 的1防止独占:无法防止占用而等待:一次请求进程所需的所有资源(需要估计所需资源(防止不可抢占) )。如果占用某个资源的进程请求资源,则为、 需要简单保存已占用资源或操作系统要求另一进程释放资源)的资源状态的结构)直接方法)防止循环等待的发生)定义请求资源的顺序。 所有进程对资源的请求都必须按照资源编号的增加顺序严格提出(低效) 2.21避免死锁避免避免避免不安全状态与死锁预防相比,允许动态检查3个必要条件。 检查进程在运行期间请求资源的结果是否安全,如果发生死锁,则阻止。 否则分配死锁避免死锁的两种方法避免资源分配拒绝。 如果一个进程因增加的资源请求而发生死锁,则拒绝此请求;拒绝启动进程。 当进程请求导致死锁时,拒绝启动该进程的2.21.1银行家算法是一种资源拒绝分配策略,由Dijkstra于1965年提出

当思想用户请求资源集合时,系统确定分配之后是否安全,准予分配,否则阻塞用户过程

安全状态至少有一个资源分配安全序列,根据该序列分配资源可以结束执行而不会发生死锁,相应地,没有安全序列是不安全状态

安全状态的判定Claim矩阵(后面简称为c矩阵) :在声明各进程所希望的资源数的分配矩阵)之后简称为a矩阵) :已经分配给各进程的资源数C-A矩阵) :各进程

确定当前a向量是否满足C-A中的任意一行,将a矩阵中的相应行添加到a向量中,然后继续3。 否则,安全地重复1C-A为0可以得到安全的序列图。

得到的安全序列是P2、P1、P3、P4安全序列不是唯一的,当a向量满足C-A的多个行时尝试多个序列未必会导致安全状态死锁。 在安全状态下,如果不按安全顺序分配,则会出现死锁//不是所有不安全状态都会出现死锁//全局数据结构struct state {int resource [ m ]; int available [ m ]; int claim [ n ][m ]; int alloc [ n ][m ]; //资源分配算法主体if(alloc[I,*] request [*] claim [ i,* ] ) error;/* totalrequestclaim */else if (request [ * ] available [ * ] ) suspend process; else {/* simulate alloc */definenewstateby : alloc [ I,* ]=alloc [ i,* ] request [ * ]; 可用[ * ]=可用[ * ]-request [ * ]; }if(safe ) Newstate ) ) carry out allocation; else {restore original state; suspend process; //银行家算法是测试安全性的布尔安全(States ) {int currentavail[m]; 进程rest [ number of processes ]; currentavail=available; rest={所有进程}; possible=true; while(possible ) findaprocesspkinrestsuchthatclaim [ k,* ] - alloc [k,* ]=currentavail; if(found ) (/*simulateexecutionofPK )/current avail=currentavailalloc [ k,*]; rest=rest - {Pk}; }else possible=false; }return(rest==null ); } 2.21.2评估死锁避免的好处死锁预防中抢占和回滚少于死锁预防限制的坏处是,首先必须获得每个进程声明请求的资源。 也就是说,必须要求Claim矩阵进程的执行顺序。 否则,不能以安全顺序分配的资源的数量必须固定地占用资源的过程在2.22死锁检测和2.22.1算法步骤标记a矩阵中的全零行初始化w向量=A向量C-A矩阵中下标I的过程如果找不到的话就结束算法,如果找到了那样的行就标记进程I,将a行列中的相应行追加到w矢量中。 返回3 )仅在3结束时,存在未标记的进程,存在死锁。 未标记的进程全部处于死锁状态2.22.1资源配置图检测方法资源配置图的简化找出满足所有要求的节点Pi,删除其所有要求边和配置边,重复1直到不能作为孤立节点进行简化

如果示例可以完全简化,则没有死锁

如果不能完全简化,则存在死锁(

2.22.2取消死锁释放死锁进程,直到无死锁回滚。 回滚到以前定义的一些检查点,然后重新抢占所有进程。 如果抢占持续到死锁消失为止,会取消哪个进程? 我应该断开哪个进程的资源?

选择原则:输出少、剩余时间长、优先级低、到目前为止的cpu消耗时间少者

2.22.3 .三种战略的比较

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。