作業系統 併發 互斥與同步

2021-08-17 22:03:53 字數 2024 閱讀 6648

在多道程式設計系統種,程序會被交替執行,進而在巨集觀上表現出一種併發的外部特徵。

為什麼需要併發?

假設乙個支援單使用者的單處理器多道程式設計系統,使用者可以從乙個應用程式切換到另乙個應用程式,每個應用程式都使用同一鍵盤輸入,使用同一鍵盤輸出。

由於每個程式都需要使用某乙個輸入輸出過程,所以將他視為乙個共享過程,載入到所有應用程式的共用全域性儲存區。

但是,這樣問題就出來了,一旦第乙個程序呼叫該過程,獲得資料儲存後立即中斷,此時程序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年...