程序互斥與同步

2022-06-05 02:21:08 字數 1310 閱讀 8817

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

並行:是指兩個或者多個事件在同一時刻發生

併發:是指兩個或多個事件在同一時間間隔發生。

並行是併發的特例,併發是並行的擴充套件。

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

.程序間有競爭、協作兩種關係

競爭採用的程序互斥的策略

協作採用的程序同步的策略

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

互斥是某種資源一次只能是乙個程序使用,即我在使用時你不能使用;你在使用時我不能使用。是對程序使用資源的次序的一種協調。

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

死鎖:死鎖是由於程序因爭奪資源陷入永遠等待的狀態,即如果在乙個程序集合中的每個程序都在等待只能由該集合中的其他程序才能引發的事件,而無限期僵持的局面

飢餓:乙個可執行程序由於其他程序總是優先於它,而被無限期拖延而不能被執行的現象

死鎖程序必然處於飢餓狀態,但處於飢餓狀態的程序未必陷入死鎖。

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

臨界區:每個程序中訪問臨界資源的那段程式。每次只准許乙個程序進入臨界區,進入後不允許其他程序進入。

臨界資源:共享變數所代表的資源

解決:如果有若干程序要求進入空閒的臨界區,一次僅允許乙個程序進入。 任何時候,處於臨界區內的程序不可多於乙個。

如已有程序進入自己的臨界區,則其它所有試圖進入臨界區的程序必須等待。 

6.訊號量的物理意義是什麼?

訊號量的定義: 訊號量(semaphore),有時被稱為訊號燈,是在多執行緒環境下使用的一種設施, 它負責協調各個執行緒, 以保證它們能夠正確、合理的使用公共資源。
7.理解五個哲學家吃麵問題,並能盲寫出偽**。

semaphore fork[5];

for (i=0;i<5;i++)

cobegin

process philosopher_i()

}coend

8.乙個超市有n個顧客購物,只有乙個收銀員,試用訊號量p、v操作描述顧客程序和收銀員之間的關係。寫偽**。

int counter=0;  in=0;out=0 ; mutex=1;

counter=counter+in;

process  consumer(void){

while(true){

if(counter>0){

p(mutex);

/*臨界區*/

v(mutex);

out-=out;

counter=counter-out;

else

v(mutex);

程序互斥與同步

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

程序互斥與同步

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

程序互斥與同步

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