亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學習啦 > 學習電腦 > 操作系統(tǒng) > 操作系統(tǒng)基礎知識 >

      操作系統(tǒng)銀行家算法原理與實現(xiàn)

      時間: 加城1195 分享

        操作系統(tǒng)中死鎖會導致我們進程的堵塞從而電腦死機等情況出現(xiàn),我們是可以通過銀行家算法避免的,具體怎么實現(xiàn)呢。下面由學習啦小編為大家整理了操作系統(tǒng)的死鎖銀行家算法的相關知識,希望對大家有幫助!

        操作系統(tǒng)死鎖銀行家算法詳解

        死鎖既然不好,我們就可以利用銀行家算法避免死鎖。

        1.安全性算法

        系統(tǒng)所執(zhí)行的安全性算法可描述如下:

        (1) 設置兩個向量:

       ?、?工作向量Work,它表示系統(tǒng)可提供給進程繼續(xù)運行所需的各類資源數(shù)目,它含有m個元素,在執(zhí)行安全算法開始時,Work:=Available。

       ?、?Finish,它表示系統(tǒng)是否有足夠的資源分配給進程,使之運行完成。開始時先做Finish[i]:=false;當有足夠資源分配給進程時,再令Finish[i]:=true。

        (2) 從進程集合中找到一個能滿足下述條件的進程:

       ?、?Finish[i]=false;

        ② Need[i,j]≤Work[j];若找到,執(zhí)行步驟(3),否則,執(zhí)行步驟(4)。

        (3) 當進程Pi獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應執(zhí)行:

        Work[j]:= Work[j]+Allocation[i,j];

        Finish[i]:=true;

        go to step (2);

        (4) 如果所有進程的Finish[i]=true都滿足,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。

        2.銀行家算法中的數(shù)據(jù)結構

        (1) 可利用資源向量Available。這是一個含有m個元素的數(shù)組,其中的每一個元素代表一類可利用的資源數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源的數(shù)目,其數(shù)值隨該類資源的分配和回收而動態(tài)地改變。如果Available[j]=K,則表示系統(tǒng)中現(xiàn)有Rj類資源K個。

        (2) 最大需求矩陣Max。這是一個n×m的矩陣,它定義了系統(tǒng)中n個進程中的每一個進程對m類資源的最大需求。如果Max[i,j]=K,則表示進程i需要Rj類資源的最大數(shù)目為K。

        (3) 分配矩陣Allocation。這也是一個n×m的矩陣,它定義了系統(tǒng)中每一類資源當前已分配給每一進程的資源數(shù)。如果Allocation[i,j]=K,則表示進程i當前已分得R j類資源的數(shù)目為K。

        (4) 需求矩陣Need。這也是一個n×m的矩陣,用以表示每一個進程尚需的各類資源數(shù)。如果Need[i,j]=K,則表示進程i還需要R j類資源K個,方能完成其任務。

        上述三個矩陣間存在下述關系:

        Need[i, j]=Max[i, j]-Allocation[i, j]

        3.銀行家算法

        設Request i是進程Pi的請求向量,如果Request i[j]=K,表示進程P i需要K個R j類型的資源。當P i發(fā)出資源請求后,系統(tǒng)按下述步驟進行檢查:

        (1) 如果Request i[j]≤Need[i,j],便轉(zhuǎn)向步驟(2);否則認為出錯,因為它所需要的資源數(shù)已超過它所宣布的最大值。

        (2) 如果Request i[j]≤Available[j],便轉(zhuǎn)向步驟(3);否則,表示尚無足夠資源,Pi須等待。

        (3) 系統(tǒng)試探著把資源分配給進程P i,并修改下面數(shù)據(jù)結構中的數(shù)值:

        Available[j]:= Available[j]-Request i[j];

        Allocation[i,j]:= Allocation[i,j]+Request i[j];

        Need[i,j]:= Need[i,j]-Request i[j];

        (4) 系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分配給進程Pi,以完成本次分配;否則,將本次的試探分配作廢,恢復原來的資源分配狀態(tài),讓進程Pi等待。

      3974743