■检测算法 简单地调查尚待完成的各个进程所有可能的分配序列 ① 令Work和Finish分别表示长度为m和n的向量,初始化 Work:=Available;对于i=1, 2,…, n 如果Allocationi≠0,则Finish[i]:=false;否则Finish[i]:=true。 ② 寻找一个下标i,它应满足条件: Finish[i]=false且Requesti ≤Work 若找不到这样的i,则转到④。 ③ 修改数据值: Work:=Work+Allocationi Finish[i]=true,转向②。 ④ 若存在某些i(1≤i≤n),Finish[i]=false,则系统处于死锁状态。此外,若Finish[i]=false,则进程pi处于死锁环中。 ■检测算法 ■何时调用检测算法取决于两个因素: ①死锁出现的频繁程度; ②有多少个进程受到死锁的影响。 3.从死锁中恢复 ⑴通过抢占资源实现恢复 临时性地把资源从当前占有它的进程那里拿过来,分给另外某些进程,直至死锁环路被打破。 3.从死锁中恢复 ⑵通过回退执行实现恢复 由系统管理员做出安排,定期对系统中各个进程进行检查,并将检查点的有关信息(如进程状态、资源状态等)写入文件。 当检测到死锁时,就让某个占有
原创力文档

文档评论(0)