程序的同步與互斥

2021-07-10 10:07:14 字數 2025 閱讀 4852

現代作業系統採用多道程式設計機制,多個程序可以併發執行,cpu在程序之間來回切換,共享某些資源,提高了資源的利用率,但這也使得處理併發執行的多個程序之間的衝突和相互制約關係成為了一道難題。如果對併發程序的排程不當,則可能會出現執行結果與切換時間有關的情況,令結果不可再現,影響系統的效率和正確性,嚴重時還會使系統直接崩潰。

多程序的系統中避免不了程序間的相互關係。程序間的關係主要有兩種:同步互斥

一、同步

同步關係,也成為直接制約關係。指系統中多個程序中發生的事件存在某種時序關係,需要相互合作,共同完成一項任務。這些執行緒需要在某些位置上協調他們的工作次序而等待、傳遞資訊所產生的制約關係。程序間的直接制約關係**於他們之間的合作。

乙個很典型的例子就是公共汽車上司機和售票員直接的關係,如下所示:

再例如,輸入程序a通過單緩衝向程序b提供資料。當該緩衝區空時,程序b不能獲得所需資料而阻塞,一旦程序a將資料送入緩衝區,程序b被喚醒。反之,當緩衝區滿時,程序a被阻塞,僅當程序b取走緩衝資料時,才喚醒程序a。

二、互斥

互斥關係,也稱為間接制約關係。由於各程序要求共享資源,而有些資源需要互斥使用,因此各程序間競爭使用這些資源,程序的這種關係為程序的互斥。

乙個很典型的例子就是系統的不同的程序同時要求使用印表機,如下圖所示。

三、同步和互斥的特點比較

四、臨界資源和臨界區

1)臨界資源

一次只能被乙個程序所占用的資源就是所謂的臨界資源。比如:印表機。

2)臨界區

訪問臨界資源的那段**稱為臨界區。多個程序的臨界區成為相關臨界區。

為了保證臨界資源的正確使用,可以把臨界資源的訪問過程分成四個部分:

①進入區。為了進入臨界區使用臨界資源,在進入區要檢查可否進入臨界區,如果可以進入臨界區,則應設定正在訪問臨界區的標誌,以阻止其他程序同時進入臨界區。

②臨界區。程序中訪問臨界資源的那段**,又稱臨界段。

③退出區。將正在訪問臨界區的標誌清除。

④剩餘區。**中的其餘部分。

使用臨界區時必須遵守的規則:

①空閒讓進:臨界資源空閒時一定要讓程序進入,不發生「互斥禮讓」行為。

②忙則等待:臨界資源正在使用時外面的程序等待。

③有限等待:程序等待進入臨界區的時間是有限的,不會發生「餓死」的情況。

④讓權等待:程序等待進入臨界區是應該放棄cpu的使用。

參考資料:

程序互斥與同步

1.解釋併發與並行,並說明兩者關係。併發的實質是乙個物理cpu 也可以多個物理cpu 在若干道程式之間多路復用,併發性是對有限物理資源強制行使多使用者共享以提高效率。並行性指兩個或兩個以上事件或活動在同一時刻發生。在多道程式環境下,並行性使多個程式同一時刻可在不同cpu上同時執行。併發與並行是兩個既...

程序互斥與同步

1 併發與並行是兩個既相似而又不相同的概念 併發性,又稱共行性,是指能處理多個同時性活動的能力 並行是指同時發生的兩個併發事件,具有併發的含義,而併發則不一定並行,也亦是說併發事件之間不一定要同一時刻發生。兩者區別 乙個是交替執行,乙個是同時執行.2 程序之間存在同步和互斥兩種關係 同步是因合作程序...

程序互斥與同步

1.解釋併發與並行,並說明兩者關係。並行 是指兩個或者多個事件在同一時刻發生 併發 是指兩個或多個事件在同一時間間隔發生。並行是併發的特例,併發是並行的擴充套件。2.程序間有哪幾種關係?分別要採取什麼策略?程序間有競爭 協作兩種關係 競爭採用的程序互斥的策略 協作採用的程序同步的策略 3.為什麼說程...