臨界區段

臨界區段是指一連串由一個以上的process所執行的指令,因為某種原因,在執行完畢前不可被取回執行權。記憶體配置就是這樣的一個例子。

程式設計師在談及開發可搶先式多工處理系統中的軟體時,經常會提到‘臨界區段’這個名詞。所謂的臨界區段是指一連串由一個以上的process所執行的指令,因為某種原因,在執行完畢前不可被取回執行權。記憶體配置就是這樣的一個例子。
如同大多數作業系統一般,Windows使用已有30年歷史的演算法則來管理可使用的記憶體區塊(並非這些演算法則已不合時宜,而是30年前所發展出來的演算法則已不滿足所需要的功能了).其中一種特殊的演算法將可使用的記憶體區塊以聯結表(linkedlist)的形式來加以管理,每個區塊有個描述元(descriptor)來定義其大小和位置。當使用者向系統要求記憶體時,Windows必須從可使用記憶體的聯結表中解除區塊的聯結。
在解除聯結的程式中途,表的數據結構可能會有不妥當的指針(pointer)或錯誤的標誌位設定。如果系統在這個時刻進行重新排序,其他process可能碰巧會發出新的記憶體配置的要求。由於第一個process尚未完成,新的process在企圖處理不正確的表數據結構時可能會弄錯,而可能會將整個系統死鎖。為了防止這個情況,處理串列的程式碼必須在這段指令的進入和離開點之間維持為臨界區段,一且process進人臨界區段,系統便保證在它離開之前,其他process不得進入。這並不表示在某個臨界區段執行時,系統必須忽略其他process。舉例來說,若在一個冗長的臨界區段執行忽略硬體中斷,這就不是一個好的系統設計。
每次只允許一個process執行--個臨界區段的技術有時也稱為相互排斥(mutualexclu-sion),而幾個process使用進入臨界區段來爭奪某種受保護的資源(如記憶體)的現象則稱為競爭(contention)。Windows虛擬機器管理器在支持設備驅動程式的臨界區段管理上已有很長的歷史。可搶先排序法意味著Windows95必須支持API層次的臨界區段管理。

相關詞條

熱門詞條

聯絡我們