• 優先級倒置

    編輯
    本詞條由“匿名用戶” 建檔。

    優先權倒置

    編輯

    計算機科學中,優先權倒置是調度中的一種情況,即一個高優先級的任務被一個低優先級的任務間接取代,有效地倒置了任務的分配優先權。這違反了優先級模型,該模型指出高優先級任務只能被高優先級任務阻止運行。當低優先級任務出現資源爭奪,然后被中優先級任務搶占時,就會發生倒置。

    方程

    編輯

    考慮兩個任務H {displaystyle H}和L {displaystyle L},分別為高優先級和低優先級。高優先級和低優先級的任務,其中任何一個都可以獨占訪問共享資源R { {displaystyle R}。如果H {{displaystyle H}在L {{displaystyle L}獲得R {{displaystyle R}之后試圖獲得它,那么H {{displaystyle H}就會被阻止,直到L {{displaystyle L}放棄該資源。在一個設計良好的系統中,共享一個獨占資源(在本例中是R {displaystyle R})通常需要L {displaystyle L}及時放棄R {displaystyle R},這樣H {displaystyle H}(一個優先級更高的任務)就不會阻塞太長時間。盡管有良好的設計,但在L {displaystyle L}期間,有可能有第三個中等優先級的任務M {displaystyle M}使用R {displaystyle M}運行。

    后果

    編輯

    在某些情況下,優先級倒置可以在不造成直接傷害的情況下發生--高優先級任務的延遲執行不被注意,最終低優先級任務釋放了共享資源。然而,也有很多情況下,優先級倒置會導致嚴重的問題。如果一個高優先級的任務沒有得到資源,它可能會導致系統故障或觸發預定的糾正措施,如看門狗定時器重置整個系統。1997年火星探路者登陸器遇到的麻煩是實時系統中優先級倒置引起的問題的一個典型例子。

    優先級倒置也會降低系統的感知性能。低優先級的任務通常具有低優先級,因為及時完成它們并不重要(例如,它們可能是一個批處理作業或其他非交互式活動)。同樣,高優先級的任務具有高優先級,因為它更有可能受到嚴格的時間限制--它可能是向交互式用戶提供數據,或者是一個受實時響應保證的行動。因為優先級倒置的結果是低優先級任務的執行阻礙了高優先級任務的執行,它可能導致系統響應能力的降低,甚至違反響應時間保證。

    一個類似的問題,稱為截止日期交換,發生在最早的截止日期優先調度(EDF)。

    解決方案

    編輯

    這個問題的存在在20世紀70年代就被知道了,Lampson和Redell發表了最早的論文之一,指出了優先級倒置問題。UNIX內核等系統已經用splx()原語解決了這個問題。沒有萬無一失的方法來預測這種情況。然而,有一些現有的解決方案,其中最常見的是。

    禁用所有中斷以保護關鍵部分 當禁用中斷被用來防止優先級倒置時,只有兩個優先級:可搶占和禁用中斷。如果沒有第三個優先級,倒置是不可能的。由于只有一塊鎖數據(中斷使能位),錯誤的鎖是不可能的,所以死鎖不會發生。

    優先級倒置

    由于關鍵區域總是運行到完成,掛起也不會發生。請注意,這只有在所有中斷被禁用的情況下才有效。如果只有一個特定的硬件設備/的中斷被禁用,優先級倒置就會由硬件/的中斷優先級重新引入。在UNIX的早期版本中,有一系列名為splx(0)的中斷......splx(7)的中斷原語禁用了給定優先級之前的所有中斷。優先級倒置的問題可以通過正確選擇曾經進入關鍵部分的任何中斷的最高優先級來解決,而不必鎖定所有中斷。一個簡單的變體,即單一共享標志鎖,被用于多CPU系統中。這個方案在共享內存中提供了一個單一的標志,被所有的CPU用來鎖定所有處理器間的關鍵部分的繁忙等待。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/189982/

    (5)
    詞條目錄
    1. 優先權倒置
    2. 方程
    3. 后果
    4. 解決方案

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久