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.如果一個寫進程正在往文件中寫時,則禁止任何讀進程讀文件。