处理机调度与死锁之银行家算法笔记

银行家算法所用到的数据结构:

       以各类资源为矩阵的首行,以各类进程为矩阵的首列。i表示i行,j表示j列,

       进程需要的最大资源数目为矩阵   MAX[i,j];

       分配给各进程的资源数 目为矩阵       Allocation[i,j];

       各类进程需要的资源数目为矩阵    Need[i,j];

        可用的资源数       Available[j]  ;


      首先执行银行家算法,假设进程REQUESTi[j] 表示进程i请求j类资源。

       将REQUESTi[j]

       如果满足就试探的将资源分配给进程i.

              此时 Available[j]=Available[j]-REQUESTi[j]

                      Allocation[i,j]=Available[i,j]+REQUEST[j];

   第二步,执行安全性算法。

    设置一个工作向量Work[j]=Avaliable[j];  设置一个标识Finsh[i]=false;

      寻找一个进程满足如下条件。

                          Need[i,j]

         满足执行第三步:

          第三步: 将Finsh[i]=true;  Work[j]=Work[j]+Availbale[i,j];

        第四步: 没有合适的安全性序列,系统不进行分配。                      

   


先预分配资源,再执行安全性算法,若能找到一个安全性序列,则予以分配,否则系统不安全,易产生死锁,不进行分配。

       


你可能感兴趣的:(操作系统笔记)