程序互斥與同步

2022-06-05 01:03:11 字數 1792 閱讀 8955

1.解釋併發與並行,並說明兩者關係。

併發的實質是乙個物理cpu(也可以多個物理cpu) 在若干道程式之間多路復用,併發性是對有限物理資源強制行使多使用者共享以提高效率。

並行性指兩個或兩個以上事件或活動在同一時刻發生。在多道程式環境下,並行性使多個程式同一時刻可在不同cpu上同時執行。

併發與並行是兩個既相似而又不相同的概念:併發性,又稱共行性,是指能處理多個同時性活動的能力;並行是指同時發生的兩個併發事件,

具有併發的含義,而併發則不一定並行,也亦是說併發事件之間不一定要同一時刻發生。

2.程序間有哪幾種關係?分別要採取什麼策略?

程序之間存在直接制約關係(即同步問題)和間接制約關係(即互斥問題);同步問題是存在邏輯關係的程序之間相互等待所產生的制約關係,

互斥問題是相互邏輯關係的程序競爭使用資源所發生的制約關係。

3.為什麼說程序的互斥也是一種同步?

在作業系統中,當某一程序正在訪問某一儲存區域時,就不允許其他程序進行讀寫或者修改該儲存區的內容,否則就會發生後果無法估計的錯誤。程序之間的這種相互制約的關係成為程序互斥。

併發程序在一些關鍵點上可能需要互相等待與互通訊息,這種相互制約的等待與互通訊息稱為程序同步。

實際上程序互斥也是一種同步,他協調多個程序互斥進入同乙個臨界資源對應的臨界區。

4.解釋死鎖與「飢餓」,並說明兩者關係。

死鎖

產生死鎖的原因主要有兩個,一是競爭資源,系統提供的資源數量有限,不能滿足每個程序的需求;二是多道程式執行時,程序推進順序不合理。由此可見,發生死鎖時死鎖程序的個數至少是兩個。我們可以舉乙個最簡單的例子來了解一下死鎖:

假如雙方都擁有部分資源(p1擁有a,p2擁有b,且a,b均只有乙個),但這時p1還需要b,p2還需要a,於是p1與p2都會處在無限等待狀態,發生了死鎖。

飢餓

產生飢餓的主要原因是:在乙個動態系統中,對於每類系統資源,作業系統需要確定乙個分配策略,當多個程序同時申請某類資源時,由分配策略確定資源分配給程序的次序。有時資源分配策略可能是不公平的,即不能保證等待時間上界的存在。在這種情況下,即使系統沒有發生死鎖,某些程序也可能會長時間等待.當等待時間給程序推進和響應帶來明顯影響時,稱發生了程序飢餓,當飢餓到一定程度的程序所賦予的任務即使完成也不再具有實際意義時稱該程序被餓死。舉個例子,當有多個程序需要列印檔案時,如果系統分配印表機的策略是最短檔案優先,那麼長檔案的列印任務將由於短檔案的源源不斷到來而被無限期推遲,導致最終的飢餓甚至餓死。

死鎖和飢餓的異同

相同點:二者都是由於競爭資源而引起的。

不同點:

從程序狀態考慮,死鎖程序都處於等待狀態,忙等待(處於執行或就緒狀態)的程序並非處於等待狀態,但卻可能被餓死;

死鎖程序等待永遠不會被釋放的資源,餓死程序等待會被釋放但卻不會分配給自己的資源,表現為等待時限沒有上界(排隊等待或忙式等待);

死鎖一定發生了迴圈等待,而餓死則不然。這也表明通過資源分配圖可以檢測死鎖存在與否,但卻不能檢測是否有程序餓死;

死鎖一定涉及多個程序,而飢餓或被餓死的程序可能只有乙個。

在飢餓的情形下,系統中有至少乙個程序能正常執行,只是飢餓程序得不到執行機會。而死鎖則可能會最終使整個系統陷入死鎖並崩潰。

5.什麼叫做臨界區?如何解決程序對臨界資源的訪問衝突?

臨界區:每個程序中訪問臨界資源的那段程式叫做臨界區。程序對臨界區的訪問必須互斥,每次只允許乙個程序進去臨界區,其他程序等待。

臨界資源:指每次只允許乙個程序訪問的資源,分硬體臨界資源、軟體臨界資源。

程序互斥與同步

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

程序互斥與同步

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

程序互斥與同步

一 程序互斥 首先我們要知道,為了保證程式執行最終結果的正確性,必須對併發執行的各程序進行制約,以控制它們的執行速度和對資源的競爭。需要回到乙個問題,需要對程式哪些部分進行制約才能保證其執行結果的正確性?如 程序pa 和pb共享記憶體 ms,程序pa 和pb 各執行兩條語句時,可能按以下順序執行 當...