1. 程式人生 > >第五章—併發性:互斥和同步【計算機作業系統】

第五章—併發性:互斥和同步【計算機作業系統】

5.1 列出與併發相關的四種設計問題

程序間的互動,共享資源之間的競爭,多個程序的同步問題,對程序的處理器時間分配問題

5.2 列出併發的三種上下文

多個應用程式,結構化應用程式,作業系統結構

5.3 執行併發程序的最基本要求是什麼?

加強互斥的能力

5.4 列出程序間的三種互相知道的程度,並簡單地給出各自的定義。

程序間互相不知道對方:這是一些獨立的程序,他們不會一起工作。

程序間間接知道對方:這些程序並不需要知道對方的程序ID號,但他們共享訪問某些物件,如一個I/O緩衝區。

程序間直接知道對方:這些程序可以通過程序ID號互相通訊,用於合作完成某些活動。

5.5 競爭程序和合作程序程序間有什麼區別。

競爭程序需要同時訪問相同的資源,像磁碟,檔案或印表機。合作程序要麼共享訪問一個共有的資源,像一個記憶體訪問區,要麼就與其他程序相互通訊,在一些應用程式或活動上進行合作。

5.6 列出與競爭程序相關的三種控制問題,並簡單地給出各自的定義。

互斥:競爭程序僅可以訪問一個臨界資源(一次僅有一個程序可以訪問臨界資源),併發機制必須滿足一次只有一個程序可以訪問臨界資源這個規則。

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

飢餓:一組程序的一個可能會無限期地拒絕進入到一個需要資源,因為其他

成員組成壟斷這個資源。

5.7 列出對互斥的要求。

1.必須強制實施互斥:在具有關於相同資源或共享物件的臨界區的所有程序中,一次只允許一個程序進入臨界區。

2.一個在臨界區停止的程序必須不干涉其他程序。

3.絕不允許出現一個需要訪問臨界區的程序被無限延遲的情況,即不會餓死或飢餓。

4.當沒有程序在臨界區中時,任何需要進入臨界區的程序必須能夠立即進入。

5.對相關程序的速度和處理器的數目沒有任何要求和限制。

6.一個程序駐留在臨界區中的時間是有限的。

5.8 在訊號量上可以執行什麼操作。

1.一個訊號量可以初始化成非負數。

2.wait操作使訊號量減1,如果值為負數,那麼程序執行wait就會受阻。3signal操作使訊號量增加1,如果小於或等於0,則被wait操作阻塞的程序被解除阻塞。

5.9 二元訊號量與一般訊號量有什麼區別。

二元訊號量只能取0或1,而一般訊號量可以取任何整數。

5.10 強訊號量與弱訊號量有什麼區別。

強訊號量要求在訊號量上等待的程序按照先進先出的規則從佇列中移出。弱訊號量沒有此規則。

5.11 .什麼是管程。

管程是由一個或多個過程,一個初始化序列和區域性資料組成的軟體模組。

5.12 對於訊息,有阻塞和無阻塞有什麼區別?

    傳送者和接收者任一方阻塞則訊息傳遞需要等待,都無阻塞則不需等待。

5.13 通常與讀者-寫者問題相關聯的有哪些條件?

1.任意多的讀程序可以同時讀這個檔案

2.一次只有一個寫程序可以往檔案中寫

3.如果一個寫程序正在往檔案中寫時,則禁止任何讀程序讀檔案。