作業系統之併發性 互斥和同步1

2021-08-18 01:14:32 字數 2327 閱讀 7308

併發是所有問題的基礎,也是操系統設計的基礎。併發包括很多設計問題,如程序間通訊、資源共享與競爭、多個程序活動的同步以及分配給程序的處理器時間等(p140)

多處理器環境,分布式處理器環境,

1.單處理器的多道程式設計:程序交替執行,表現出一種併發的外部特徵。即使不能真正並行處理,並且在程序間切換也需要一定開銷,交替執行在處理效率和程式結構上還是帶來了好處。

2.多處理器系統環境:不僅可以交替執行程序,還可以重疊執行。

併發發生場景

併發會在以下三種不同的上下文中出現:多個應用程式,結構化應用程式,作業系統結構。

併發產生的基本需求

支援併發程序的基本需求是加強互斥能力。也就是說,當乙個程序被授予互斥能力時,那麼在其活動期間,它具有排斥所有其他程序的能力。

互斥解決方案:訊號量,管程,訊息傳遞

多道程式設計系統的乙個基本特性:程序的相對執行速度不可**,取決於其他程序活動、作業系統中斷方式以及作業系統的排程策略。

多道程式設計系統特性引發相關問題

1.全域性資源的共享充滿危險(不同的讀寫執行順序非常關鍵)

2.作業系統很難對資源進行最優化分配(容易發生死鎖)

3.定位程式設計錯誤困難(結果不確定性與不可再現)

相關例子

共享變數的問題例子:問題的本質在於共享全域性變數。多個程序訪問這個全域性變數,如果乙個程序修改了它,然後被中斷,另乙個程序可能在第乙個程序使用它的值之前又修改了這個變數。

兩類問題

1.在單處理器系統的情況下,出現問題的原因是中斷可能會在程序中的任何地方停止指令的執行;

2.在多處理器系統的情況下,不僅同樣的條件可以引發問題,而且當兩個程序同事執行並且都試圖訪問同乙個全域性變數時,也會引發問題。

解決思路控制對共享變數的訪問。上面的例子說明,如果需要保護共享的全域性變數(及其他共享的全域性資源),唯一的辦法是控制訪問該變數的**。如果我們定義了一條規則,一次只允許乙個程序進入 echo,並且只有在 echo 過程允許結束後,他才對另乙個程序是可用的,那麼剛才討論的那類問題就不會發生了。

競爭條件發生在多個程序或執行緒讀寫資料時,其最終的結果依賴於多個程序的指令執行順序。

作業系統關注的問題

三種方式

1.程序間的資源競爭

當併發程序競爭使用同一組員時,他們之間會發生衝突。競爭程序間沒有任何資訊交換,但是乙個程序的執行可能會影響到競爭程序的行為。

競爭程序面臨的三個控制問題

a)互斥的要求:競爭程序僅可以訪問乙個臨界資源(一次僅有乙個程序可以訪問臨界資源),併發機制必須滿足一次只有乙個程序可以訪問臨界資源這個規則。假設兩個或更多的程序需要訪問乙個不可共享的資源,我們把這類資源稱為臨界資源,使用臨界資源的那一部分程式稱為程式的臨界區

b)死鎖 :如果競爭程序需要唯一的訪問多於乙個資源,並且當乙個程序控制著乙個程序,且在等待另乙個程序,死鎖可能發生。

c)飢餓:一組程序的乙個可能會無限期地拒絕進入到乙個需要資源,因為其他成員組成壟斷這個資源。

2.程序間通過共享合作

多個程序可能訪問乙個共享變數、共享檔案或資料庫,程序可能使用並修改共享變數而並不涉及其他程序,但卻知道其他程序也可能訪問同乙個資料。因此,這些程序必須合作,以確保它們共享的資料得到正確的管理。

由於資料儲存在資源中,因此再次涉及有關互斥、死鎖和飢餓等控制問題。唯一的卻別是可以以兩種不同的模式(讀和寫)訪問資料項,並且只有寫操作必須保持互斥。

對於資料一致性的要求,在通過共享進行合作的情況下,臨界區的概念是非常重要的。

3.程序間通過通訊合作

當程序通過通訊進行合作時,各個程序都與其他程序進行連線,通訊提供了同步和協調各種活動的方法。

實現互斥的互斥要求

為滿足互斥條件的幾種方法

作業系統 併發 互斥與同步

在多道程式設計系統種,程序會被交替執行,進而在巨集觀上表現出一種併發的外部特徵。為什麼需要併發?假設乙個支援單使用者的單處理器多道程式設計系統,使用者可以從乙個應用程式切換到另乙個應用程式,每個應用程式都使用同一鍵盤輸入,使用同一鍵盤輸出。由於每個程式都需要使用某乙個輸入輸出過程,所以將他視為乙個共...

併發性 互斥和同步 死鎖和飢餓

二 併發的原理 在單處理器多道程式設計系統中,程序被交替執行,表現出一種併發執行的外部特徵。即使不能實現真正的並行處理,並且在程序間來回切換也需要一定的開銷,交替執行在處理效率和程式結構上還是帶來了重要的好處。在多處理器系統中,不僅可以交替執行程序,而且可以重疊執行程序。三 程序的互動 我們可以根據...

第五章 併發性 互斥和同步

一 併發 1 定義 併發 在作業系統中,是指乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個處理機上執行,但任乙個時刻點上只有乙個程式在處理機上執行。2 特點 作業系統併發程式執行的特點 併發環境下,由於程式的封閉性被打破,出現了新的特點 程式與計算不再一一對應,乙個程...