在多道程式設計系統種,程序會被交替執行,進而在巨集觀上表現出一種併發的外部特徵。
為什麼需要併發?
假設乙個支援單使用者的單處理器多道程式設計系統,使用者可以從乙個應用程式切換到另乙個應用程式,每個應用程式都使用同一鍵盤輸入,使用同一鍵盤輸出。
由於每個程式都需要使用某乙個輸入輸出過程,所以將他視為乙個共享過程,載入到所有應用程式的共用全域性儲存區。
但是,這樣問題就出來了,一旦第乙個程序呼叫該過程,獲得資料儲存後立即中斷,此時程序2被啟用,呼叫該過程,獲得資料就會覆蓋掉之前的資料,程序1再次回來執行時,資料以及被修改,顯示出來的是程序2的資料。
如果不對該共享過程加以保護,就會出現這種資料不一致的情況。
唯一的方法是:控制訪問該變數的**。
定義一條規則:一次只允許乙個程序進入該共享空間。
競爭條件發生在多個程序或執行緒讀寫資料時,其最終結果取決於多個程序的執行指令順序。
舉例說明:
假設兩個程序p1,p2共享全域性變數a。在p1執行的某一時刻,他將a的值更新為1,在p2執行的某一時刻,將a的值更新為2.
因此,兩個任務競爭更新不同的變數,競爭的失敗者決定了變數a的最終值。
根據程序之間互相之間知道對方存在的程度,對程序間的互動方式進行分類。
程序間的 資源競爭當併發程序競爭使用同一資源時,之間會發生衝突。我們把這些情況描述為:兩個或更多程序在它們的執行過程中需要訪問乙個資源,每個程序並不知道其他程序的存在,且每個程序也不受其他程序的影響。
競爭程序之間沒有任何資訊交換,但乙個程序的執行可能會影響到競爭程序的行為。特別是當兩個程序都期望訪問同乙個資源時,如果作業系統把這個資源分配給乙個程序,那麼另乙個程序就必須等待,一種極端情況是:被阻塞的程序永遠不能訪問這個資源,因此該程序永遠不能成功執行結束。
競爭程序面臨三個控制問題:
臨界資源:在執行過程中,每個程序都會給該i/o裝置發命令,接受狀態資訊,傳送資料和接收資料。這類資源稱為臨界資源。
臨界區:使用臨界資源的那部分程式稱為程式的臨界區。
程序間通過共享合作
程序間在互相並不確切知道對方的情況下進行互動。例如:多個程序可能訪問乙個共享變數,程序可能使用並修改共享變數而不涉及其他程序,但卻知道其他程序也可能訪問同乙個資料。因此這些程序必須合作,以確保它們共享的資料得到正確管理。控制機制必須確保共享資料的完整性。
程序間通過通訊合作(程序間的通訊)
當今從通過通訊進行合作時,各個程序都與其他程序進行連線。通訊提供同步和協調各種活動的方法。
多道程式系統中程序是併發執行的,這些程序之間存在著不同的制約關係,為了協調程序之間的相互制約關係,就需要實現程序的同步。互斥是同步的一種特殊情況。同步:乙個程序到達了某些點後,除非另乙個程序已完成了某些操作,否則就不得不停下來等待這些結束,這就是程序的同步。
同步機制遵循規則:
空閒讓進:當無程序處於臨界區時,表明臨界資源處於空閒狀態 ,應允許乙個請求進入臨界區的程序立即進入自己的臨界區,以有效的利用臨界資源。
忙則等待:當已有程序進入臨界區時,表明臨界資源正在被訪問,因而其他試圖進入臨界區的程序必須等待,以保證對臨界資源的互斥和訪問。
有限等待:對要求訪問臨界資源的程序,應保證在有限時間內能進入自己的臨界區,以免陷入「死等」狀態。
讓權等待:當今從不能進入自己的臨界區時,應立即釋放處理機,以免程序陷入「忙等」狀態。
必須強制實施互斥:在與相同資源或共享物件的臨界區有關的所有程序中,一次只允許乙個程序進入臨界區。乙個在非臨界區停止的程序不能干涉其他程序。
絕不允許出現需要訪問臨界區的程序被無限延遲的情況,即不會死鎖或飢餓。
沒有程序在臨界區時,任何需要進入臨界區的程序必須能夠立即進入。
對相關程序的執行速度和處理器的數量沒有任何要求和限制。
乙個程序駐留在臨界區的時間必須是有限的。
作業系統 同步與互斥問題
1.生產者 消費者問題 define n 100 有界緩衝區大小 typedef int semaphore 定義訊號量 semaphore mutex 1 臨界區互斥訊號量 semaphore empty n 空閒緩衝區 semaphore full 0 緩衝區初始化為空 void produce...
作業系統實驗 同步互斥
實習1 程序同步 實習要求 在windows 2000 環境下,建立乙個包含n 個執行緒的控制台程序。用這n 個執行緒來表示n 個讀者或寫者。每個執行緒按相應測試資料檔案的要求,進行讀寫操作。請用訊號量機制分別 實現讀者優先和寫者優先的讀者 寫者問題。讀者 寫者問題的讀寫操作限制 1 寫 寫互斥 2...
程序互斥與同步計算機作業系統 作業系統同步互斥大題
作業系統程序同步互斥問題 pv操作加訊號量來實現程序的同步互斥 解題步驟 首先要分析題目中近程的同步關係和互斥關係 同步關係用前v後p實現 互斥關係,一般都是對於乙個緩衝區或者本質上是緩衝區的變數進行訪問,這時候就要用pv操作將對於這個訊號量的訪問夾在中間 解題精髓就這兩句 下面以408 2009年...