操作系統--精髓與設計原理(第八版)第六章復習題答案


操作系統--精髓與設計原理(第八版)第六章復習題答案

6.1 給出可重用資源和可消耗資源的例子。

  • 可重用資源是指一次僅供-一個進程安全使用且不因使用而耗盡的資源。進程得到資源單元並使用后,會釋放這些單元供其他進程再次使用。可重用資源的例子包括處理器、I/O 通道、內存和外存、設備,以及諸如文件、數據庫和信號量之類的數據結構。
  • 可消耗資源是指可被創建(生產)和銷毀(消耗)的資源。某種類型可消耗資源的數量通常沒有限制,無阻塞生產進程可以創建任意數量的這類資源。消費進程得到-一個資源時,該資源就不再存在。可消耗資源的例子有中斷、信號、消息和I/O緩沖區中的信息。

6.2 產生死鎖的三個必要條件是什么?

  • 互斥。一次只有一個進程可以使用一個資源。其他進程不能訪問已分配給其他進程的資源。
  • 占有且等待。當一個進程等待其他進程時,繼續占有已分配的資源。
  • 不可搶占。不能強行搶占進程已占有的資源。

6.3 產生死鎖的 4個條件是什么?

循環等待。存在一個閉合的進程鏈,每個進程至少占有此鏈中下一個進程所需的一個資源。

6.4 如何防止占有且等待條件?

為預防占有且等待的條件,可以要求進程一次性地請求所有 需要的資源,並阻塞這個進程直到所有請求都同時滿足。這種方法有兩個方面的低效性。首先,一個進程可能被阻塞很長時間,以等待滿足其所有的資源請求。而實際上,只要有一部分資源, 它就可以繼續執行。其次,分配給一個進程的資源可能會在相當長的一段時間不會被該進程使用,且不能被其他進程使用。另一個問題是一個進程可能事先並不知道它所需要的所有資源。

6.5 給出防止不可搶占條件的兩種方法。

  1. 占有某些資源的一個進程進一步申請資源時若被拒絕,則該進程必須釋放其最初占有的資源,必要時可再次申請這些資源和其他資源。
  2. 一個進程請求當前被另一個進程占有的一個資源時,操作系統可以搶占另一個進程,要求它釋放資源。(只有在任意兩個進程的優先級都不同時,這種方案才能預防死鎖)。

6.6 如何防止循環等待條件?

循環等待條件可通過定義資源類型的線性順序來預防。若一 個進程已分配了R類型的資源,則其接下來請求的資源只能是那些排在R類型之后的資源。為證明這種策略的正確性,我們給每種資源類型指定一個下標。 當i<j時,資源R排在資源R,前面。現在假設兩個進程A和B死鎖,原因是A獲得R並請求R,而B獲得R,並請求R,那么這個條件不可能,因為這意味着i<j且j<i。

6.7 死鎖避免、 檢測和預防之間的區別是什么?

處理死鎖通常有三種方法:預防、檢測和避免。死鎖預防通過確保不滿足死鎖的一個必要條件來避免發生死鎖。操作系統總是同意資源請求時,需要進行死鎖檢測。操作系統必須周期性地檢查死鎖,並采取行動打破死鎖。死鎖避免涉及分析新的資源請求,以確定它是否會導致死鎖,且僅當不可能發生死鎖時才同意該請求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM