操作系统 一篇搞懂【死锁】大题 全文爆干8000字------期末复习

适合人群:
1.基本上理解主要概念:什么是死锁?
2.有一些编程经验。懂if …else… while/for.
2.期末复习人群。
简单来说就是 没搞懂, 属于一瓶子不满的人。

考试重点:数据结构, 安全状态检测 ,试探性分配。
1.考死锁的检测死锁的安全状态。写前两个,
2.考死锁的避免,写三个。

死锁的检测

数据结构:(说白了就是定义)
  可用的资源数 available;
 最大需求矩阵 Max
 需求矩阵 need
 分配矩阵 Allocation

方案:

安全检测:
     1.设置俩个变量
         工作变量:Work=Available,表示系统中有多个可用的资源。
         完成变量:Finish 表式系统周继红有足够的资源提供给进程
     
     2.从进程集合中 找出满足以下条件的进程
      Finish[i]==0 &&Need i <work 如果找到则执行3,否则执行4
     
     3.当进程pi获的资源之后,顺利执行,直至完成并且释放资源,故应执行:
        work=work+Allocation i;
        Fisish[i]=1;
        go to step 2;
    
    4. 如果所有的进程Finish[i]=1;那么系统处于安全状态,
       如果不是那么进程处于不安全状态。
    
   
死锁避免方案:
  设Requesti 是进程pi的请求向量,
  Requesti[j]=k;表示进程pi需要k个rj的类型资源。

 1.如过requesti<needi 并且requesti<avaliable,系统试探性的把要求的资源分配给pi进程并修改下面的数值:
    
     Avaliable=Avaliale-Requesti;
     Allocaition = Allociation+Requesti;
     needi = needi-Requesti;
 
 2.系统执行安全性算法,如果安全才将资源分配给pi进程,已完成分配
    否则,将试探性分配作废,恢复原来的资源分配状态,让进程pi等待。
    
     Avaliable=Avaliale+Requesti;
     Allocaition = Allociation-Requesti;
     needi = needi+Requesti;
 

猜你喜欢

转载自blog.csdn.net/leader_song/article/details/121663224