1. 程式人生 > >計算機作業系統第四版第四章課後習題答案

計算機作業系統第四版第四章課後習題答案

限於筆者水平,如有不對請指教。

1. 為什麼要配置層次式儲存器?

答:對於儲存器,速度快的不便宜,便宜的速度慢。為了讓CPU的處理速度和儲存器的速度之間存在的矛盾有所緩和,配置了層次式儲存器。


2. 可採用哪幾種方式將程式裝入記憶體?他們分別適用於何種場合?
答:將程式裝入記憶體的方式有絕對裝入,可重定位裝入,動態執行時裝入。絕對裝入方式實體地址是人為指定的,所以只能用於單道程式環境中。可重定位裝入和動態執行時裝入都可以在多道程式環境,但是動態執行時裝入執行程式在執行時移動位置。


3. 何謂靜態連結?靜態連結時需要解決兩個什麼問題?
答:靜態連結就是在裝入記憶體之前把程序相關的所有目標程式都連結起來,產生裝入模組。需要地址和資料兩個問題,分別是對相對地址進行修改,變換外部呼叫符號。


4. 何謂裝入時動態連結?裝入時動態連線方式有何優點?
答:對比靜態連結,裝入時動態連結是在裝入記憶體時,邊連結邊裝入。裝入時動態連結可以讓目標模組可共享,易於修改。因為,動態連結在每次裝入記憶體時都需要重新連結,所以,對單個的目標模組很容易修改和更新,而且目標模組的共享也很容易。


5. 何謂執行時動態連結?執行時動態連結方式有何優點?
答:對比裝入時動態連結,執行時動態連結是在程式執行時才連結所需的目標模組。執行時動態連結可以讓程式執行所必須得模組之外的模組不連結,加快程式的裝入過程,節省大量的記憶體空間。


6. 在動態分割槽分配方式中,應如何將各空閒分割槽連結成空閒分割槽鏈?
答:在動態分割槽分配中,介紹了七種演算法,其中首次適應、迴圈首次適應演算法需要按照地址遞增的順序連結分割槽,最佳適應、最壞適應演算法需要按照分割槽的大小來連結分割槽,快速適應、夥伴系統、雜湊演算法需要按照分割槽的大小分類連結成不同種類的空閒分割槽鏈。


7. 為什麼要引入動態重定位?如何實現?
答:在記憶體分配過程中,不免出現許多不可利用的小的空閒空間以至於造成了記憶體的利用率不高。如果讓已經存在的程式緊湊起來,那麼,那些不可利用的小的空閒空間也就連成了更大的空閒空間以供利用,移動已經在記憶體中的程式就是動態重定位。關於如何實現,在從系統中增設一個重定位暫存器,用它來存放程式(資料)在記憶體中的起始地址,程式執行時,真正訪問的記憶體地址是相對地址與重定位暫存器中的地址相加而成的。絕對地址是在程式執行時產生,那麼對記憶體中的程式也就可以移動位置而可以用相對地址。


8. 什麼是基於順序搜尋的動態分割槽分配演算法?它可分為哪幾種?
答:我們通常將系統中的空閒分割槽連結成一個鏈,然後在分配分割槽的時候依次搜尋空閒分割槽鏈上的空閒分割槽,去尋找一個其大小能滿足要求的分割槽,定義如何搜尋的演算法就是基於順序搜尋的動態分割槽分配演算法。它分為首次適應演算法、迴圈首次適應演算法、最佳適應演算法、最壞適應演算法。


9. 在採用首次適應演算法回收記憶體時,可能出現哪幾種情況?應怎樣處理這些情況?
答:回收記憶體的時候,我們把將要回收的記憶體區的首址拿到空閒分割槽連結串列中比對找出插入點(按照空閒分割槽鏈的構建演算法),如果將要回收的記憶體和插入點的左、右或者兩者都相鄰,那就把相鄰的區合併成一個區,如果不相鄰那就單獨作為一個區插入進去,並修改相關的資料結構中的值。


10. 什麼是基於索引搜尋的動態分割槽分配演算法?它可分為哪幾種?
答:我們把空閒分割槽按照某種屬性(通常是大小)分類,把每一類都連結起來形成一個連結串列,建立一個表把每類連結串列的相關資訊寫進去以供索引,按照這個資料分配空閒分割槽的演算法叫做基於索引搜尋的動態分割槽分配演算法。它分為快速適應演算法、夥伴系統、雜湊演算法。


11. 略。(其實是筆者讀不懂題目所以……)


12. 分割槽儲存管理中常用哪些分配策略?比較他們的優缺點。
答:


13. 為什麼要引入對換?對換可分為哪幾種類型?
答:為了提高系統的吞吐量,提高記憶體的利用率和處理機的利用率。對換可分為整體對換和區域性對換(分段或頁面對換)。


14. 對檔案區管理的目標和對對換空間管理的目標有何不同?
答:對檔案區的管理,主要是注重儲存器利用率,其次才是存取的速度,故採取的是離散儲存方式。但是對於對換區,我們主要是注重檔案的存取速度,其次才是儲存器的利用率,故採用的是連續分配的方式。


15. 為實現對換,系統應具備哪幾方面的功能?
答:為了實現對換,系統必須實現的是:對對換空間的管理,程序的換入和程序的換出。


16. 在以程序為單位進行對換時,每次是否都將整個程序換出?為什麼?
答:在選擇換出程式之後,在對程序進行換出時,只能換出那些非共享的程式和資料段,而對於那些共享的資料段,只要有其他程序還需要,就不能換出。實質上,共享的程式和資料段不屬於哪個程序。


17. 基於離散分配時所用的基本單位不同,可將離散分配分為哪幾種?
答:分為分頁儲存管理方式,分段儲存管理方式,段頁式儲存管理方式。


18. 什麼是頁面?什麼是物理塊?頁面的大小應如何確定?
答:將程序的邏輯地址空間分成若干等分,同時相應的把記憶體也分成若干等分,前者產生的分組叫做頁面,後者產生的分組稱為物理塊或頁框。頁面的大小應選擇適中,應該是2的冪,通常為1K~8K,根據分配演算法靈活變化。


19. 什麼是頁表?頁表的作用是什麼?
答:分頁系統採用的是離散分配方式,所以,程序的各個頁允許離散的儲存在記憶體的任意物理塊中,所以就建立一張對映表反應他們的對應關係,這張表就叫頁表。頁表反應的是程序的邏輯地址和記憶體的實體地址的對映。通過查詢頁表可以知道程序的邏輯地址的相應頁在記憶體中放在何處。


20. 為實現分頁儲存管理,需要哪些硬體支援?
答:需要頁表暫存器、實體地址暫存器和聯想暫存器(快表)。頁表暫存器和實體地址暫存器是地址變換機構所需的基本暫存器,聯想暫存器是優化了地址轉換過程後需要新增的一個暫存器。


21. 在分頁系統中是如何實現地址變換的?
答:首先,程序執行時從程序的PCB中把頁表始址和頁表長度放入頁表暫存器中,當程序要訪問某個邏輯地址中的資料的時候,分頁地址變換機構會自動的將有效地址(邏輯地址)分為頁號和頁內地址。講頁號和頁表暫存器中的頁表長度相比,如果頁號比較大則說明訪問越界,丟擲中斷。否則利用頁號、頁表始址和頁表項長度計算出相應的頁表中的位置(因為頁表在記憶體中,所以需要計算對應的地址,而不是想象中的直接匹配頁號,相當於“起點+單位數*單位長度”),從而得到物理塊號。把物理塊號和頁內地址同時送入實體地址暫存器中,相結合得到實體地址。


22. 具有快表時是如何實現地址變換的?
答:首先,以前轉換過程中查詢過的頁表項會被記錄在快表之中。在每次需要訪問邏輯地址中的資料的時候,都會根據頁號先到快表中檢視有沒有對應的匹配項,如果有就直接得到相應的物理塊號而不需要進過利用始址、頁號和頁表項長度計算後去記憶體中查表。得到物理塊號後依然是送到實體地址暫存器中和頁內地址結合形成最後的實體地址。


23. 較詳細的說明引入分段儲存管理是為了滿足使用者的哪幾方面的需要?
答:方便程式設計、資訊共享、資訊保護、動態增長和動態連結。


24. 在具有快表的段頁式儲存管理方式中,如何實現地址變換?
答:與分頁系統中方式一樣,只是多了一個維度就是檢索段號以後才可以得到頁表,再用段內頁號和頁表進行匹配,得到物理塊號,最後和頁內地址結合得到實體地址。


25. 為什麼說分段系統比分頁系統更易於實現資訊的共享和保護?
答:資訊的共享和保護都是以資訊的邏輯單位為基礎的,所以,經常是以一個段為基本單位進行保護和共享的。但是在分頁系統中,可能一個資訊的邏輯單位有很多頁,且一頁中可能含有不同程式段的資料或程式。
26. 分頁和分段儲存管理有何區別?
答:頁是資訊的物理單位,而段是資訊的邏輯單位。頁的大小固定而且由系統決定,段的大小不固定,通常由編譯程式劃分。分頁使用者程式地址空間是一維的,分段使用者程式地址空間是二維的。


27. 試全面比較連續分配和離散分配方式。
答:連續分配方式不需要額外的硬體支援,且實現演算法相對簡單。但是在很多情況下會造成記憶體利用率低,系統吞吐量小和CPU利用率低等情況,雖然可以通過緊湊等方式有所調節,但是緊湊也會造成很大的系統開銷。離散分配方式需要額外的硬體支援,且實現的演算法相對比較複雜,但是出於使用者或作業系統的角度,離散分配方式在系統性能上或實現功能上明顯比連續分配更靈活。比如資訊的保護和共享等等方面,離散比連續更加容易實現。