作業系統臨界區分為幾個部分原理是什麼

  作業系統臨界資源是指一次只能被一個程序所佔用的資源,那麼具體執行過程是怎樣的呢?下面由小編為大家整理了作業系統臨界資源的相關知識,希望對大家有幫助。

  對於臨界區的訪問過程分為四個部分:

  1.進入區:檢視臨界區是否可訪問,如果可以訪問,則轉到步驟二,否則程序會被阻塞

  2.臨界區:在臨界區做操作

  3.退出區:清除臨界區被佔用的標誌

  4.剩餘區:程序與臨界區不相關部分的程式碼

  互斥的要求:

  必須強制實施互斥,即一次只允許一個程序進入臨界區。一個在非臨界區停止的程式不能干涉其他程式。有限等待,即決不允許需要訪問臨界區的程序被無限延遲的情況,即死鎖或餓死,有空讓進,臨界區空閒時,請求程式可進,對相關程序的執行速度和處理器的速度沒有任何要求和限制。一個程序駐留在臨界區的時間必須是有限的。

  互斥的實現:

  軟體的方法:由併發執行程序擔任這個責任

  機器指令:減少開銷,但不能通用

  2.補充資料:作業系統實現臨界區互斥的基本方法

  硬體實現方法

  中斷禁用

  單處理器中併發程序不能重疊只能交替,一個程序一直執行到呼叫系統服務或被中斷。保證互斥只需保證一個程序不被中斷

  缺點:一長時間中斷禁止,中斷效率會降低。二不能用於多處理結構中

  專用機器指令

  用於保證訪問的原子性。1、比較和交換指令***compare and swap***、2、Exchange指令

  機器指令方法的特點:

  1、適合在單處理器或共享記憶體的多處理器上的任何數目的程序

  2、非常簡單且易於證明

  3、可用於支援多個臨界區,可用自己的變數定義

  缺點

  1、忙等待,程序等待進入臨界區,仍然會繼續消耗CPU的時間

  2、可能飢餓,當需要等待程式進入時,某些可能被無限拒絕

  3、可能死鎖,低優先順序的程序佔用高優先順序的程序所需的資源

  訊號量實現方法

  解決併發問題基本原理

  兩個或多個程序可以通過簡單的訊號進行合作,一個程序可以被迫在某一個位置停止,直到它接到某一個特定的訊號。複雜的合作需求都可以通過適當的訊號結構完成。只需要一個特殊的變數***整數型***:稱為訊號量

  訊號量的三個操作

  1、訊號量s可以初始化成非負數

  用於互斥:s=1

  用於同步:s>=0

  2、semWait***s***程序請求分配一個資源,操作使訊號量減1,若為負。程序阻塞。否則繼續執行

  3、semSignal***s***程序釋放一個資源,操作使訊號量加1,若小於或等於0.則阻塞的程序被解除阻塞

  訊號量的使用規則

  1、semWait和seSignal必須成對出現

  互斥時,位於同一程序,臨界區的前後

  同步時,交錯出現在兩個合作程序內

  2、多個seWait次序不能顛倒,否則可能導致死鎖

  3、用於同步的semWait應出現在用於互斥的semSignal之前

  4、多個semSigal次序可以任意

  5、在程序對訊號量減1之前無法提前知道該訊號量是否會被阻塞

  6、當程序對一個訊號量加1後。另一個程序會被喚醒,兩個程序繼續併發執行

  7、在向訊號量發出訊號後,不需要知道是否有另一個程序在正在等待,被解除阻塞的程序數量或者沒有或者是1

  管程實現方法

  訊號量為實施互斥和程序間合作提供了強大靈活的工具,但存在難點。即semWait和semSignal操作可能分佈在整個程式中,很難看出整體效果,因此提出管程***Monitor***,一個程式設計語言結構,可以鎖定任何物件,提供與訊號量相同的功能,更易於控制

  使用訊號的管程

  定義:管程由一個或多個程序、一個初始化序列和區域性資料組成的軟體模組

  特點:

  1、區域性資料變數只能被管程的過程訪問,任何外部過程都不能訪問

  2、一個程序通過呼叫管程的一個過程進入管程

  3、在任何時候、只能有一個程序在管程中執行,呼叫管程的其他任何程式都被阻塞

  管程的幾個要素

  1、管程中的共享變數在外部不可見,只能通過管程內所說明的過程間接訪問

  2管程必須互斥進入:管程中的資料變數每次只能被一個程序訪問,保證資料完整性

  3、管程通常用來管理資源,應當沒有程序等待隊伍、相應的等待及喚醒

  4、Q進去管程等待時,釋放管程互斥權,P進入管程,喚醒Q

  P等待Q繼續,直到Q退出或等待

  P等待Q繼續,直到P退出或等待

  規定喚醒為程序中最後一個操作

  利