併發是所有問題的基礎,也是操系統設計的基礎。併發包括很多設計問題,如程序間通訊、資源共享與競爭、多個程序活動的同步以及分配給程序的處理器時間等(p140)
多處理器環境,分布式處理器環境,
1.單處理器的多道程式設計:程序交替執行,表現出一種併發的外部特徵。即使不能真正並行處理,並且在程序間切換也需要一定開銷,交替執行在處理效率和程式結構上還是帶來了好處。
2.多處理器系統環境:不僅可以交替執行程序,還可以重疊執行。
併發發生場景
併發會在以下三種不同的上下文中出現:多個應用程式,結構化應用程式,作業系統結構。
併發產生的基本需求
支援併發程序的基本需求是加強互斥能力。也就是說,當乙個程序被授予互斥能力時,那麼在其活動期間,它具有排斥所有其他程序的能力。
互斥解決方案:訊號量,管程,訊息傳遞
多道程式設計系統的乙個基本特性:程序的相對執行速度不可**,取決於其他程序活動、作業系統中斷方式以及作業系統的排程策略。
多道程式設計系統特性引發相關問題:
1.全域性資源的共享充滿危險(不同的讀寫執行順序非常關鍵)
2.作業系統很難對資源進行最優化分配(容易發生死鎖)
3.定位程式設計錯誤困難(結果不確定性與不可再現)
相關例子
共享變數的問題例子:問題的本質在於共享全域性變數。多個程序訪問這個全域性變數,如果乙個程序修改了它,然後被中斷,另乙個程序可能在第乙個程序使用它的值之前又修改了這個變數。兩類問題:
1.在單處理器系統的情況下,出現問題的原因是中斷可能會在程序中的任何地方停止指令的執行;
2.在多處理器系統的情況下,不僅同樣的條件可以引發問題,而且當兩個程序同事執行並且都試圖訪問同乙個全域性變數時,也會引發問題。
解決思路:控制對共享變數的訪問。上面的例子說明,如果需要保護共享的全域性變數(及其他共享的全域性資源),唯一的辦法是控制訪問該變數的**。如果我們定義了一條規則,一次只允許乙個程序進入 echo,並且只有在 echo 過程允許結束後,他才對另乙個程序是可用的,那麼剛才討論的那類問題就不會發生了。
競爭條件發生在多個程序或執行緒讀寫資料時,其最終的結果依賴於多個程序的指令執行順序。
作業系統關注的問題
三種方式:
1.程序間的資源競爭
當併發程序競爭使用同一組員時,他們之間會發生衝突。競爭程序間沒有任何資訊交換,但是乙個程序的執行可能會影響到競爭程序的行為。
競爭程序面臨的三個控制問題:
a)互斥的要求:競爭程序僅可以訪問乙個臨界資源(一次僅有乙個程序可以訪問臨界資源),併發機制必須滿足一次只有乙個程序可以訪問臨界資源這個規則。假設兩個或更多的程序需要訪問乙個不可共享的資源,我們把這類資源稱為臨界資源,使用臨界資源的那一部分程式稱為程式的臨界區。
b)死鎖 :如果競爭程序需要唯一的訪問多於乙個資源,並且當乙個程序控制著乙個程序,且在等待另乙個程序,死鎖可能發生。
c)飢餓:一組程序的乙個可能會無限期地拒絕進入到乙個需要資源,因為其他成員組成壟斷這個資源。
2.程序間通過共享合作
多個程序可能訪問乙個共享變數、共享檔案或資料庫,程序可能使用並修改共享變數而並不涉及其他程序,但卻知道其他程序也可能訪問同乙個資料。因此,這些程序必須合作,以確保它們共享的資料得到正確的管理。
由於資料儲存在資源中,因此再次涉及有關互斥、死鎖和飢餓等控制問題。唯一的卻別是可以以兩種不同的模式(讀和寫)訪問資料項,並且只有寫操作必須保持互斥。
對於資料一致性的要求,在通過共享進行合作的情況下,臨界區的概念是非常重要的。
3.程序間通過通訊合作
當程序通過通訊進行合作時,各個程序都與其他程序進行連線,通訊提供了同步和協調各種活動的方法。
實現互斥的互斥要求
為滿足互斥條件的幾種方法
作業系統 併發 互斥與同步
在多道程式設計系統種,程序會被交替執行,進而在巨集觀上表現出一種併發的外部特徵。為什麼需要併發?假設乙個支援單使用者的單處理器多道程式設計系統,使用者可以從乙個應用程式切換到另乙個應用程式,每個應用程式都使用同一鍵盤輸入,使用同一鍵盤輸出。由於每個程式都需要使用某乙個輸入輸出過程,所以將他視為乙個共...
併發性 互斥和同步 死鎖和飢餓
二 併發的原理 在單處理器多道程式設計系統中,程序被交替執行,表現出一種併發執行的外部特徵。即使不能實現真正的並行處理,並且在程序間來回切換也需要一定的開銷,交替執行在處理效率和程式結構上還是帶來了重要的好處。在多處理器系統中,不僅可以交替執行程序,而且可以重疊執行程序。三 程序的互動 我們可以根據...
第五章 併發性 互斥和同步
一 併發 1 定義 併發 在作業系統中,是指乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個處理機上執行,但任乙個時刻點上只有乙個程式在處理機上執行。2 特點 作業系統併發程式執行的特點 併發環境下,由於程式的封閉性被打破,出現了新的特點 程式與計算不再一一對應,乙個程...