??? 了解了存儲管理的基礎知識和原理,但是對于具體的一些情況還是知之甚少,于是又在網上翻了翻資料,發現下面這幾道課后問答題很是能夠加深對存儲管理這塊內容的理解,特意轉載過來。
?
轉載地址:
?
?
第六章 存儲管理課后習題答案
?
1、考慮下述存儲管理方式中,進程空間和邏輯空間的編址情況:
(1)界地址存儲管理方式,進程空間的首地址;
(2)頁式存儲管理,進程空間的首地址;
(3)段式存儲管理,進程空間各段的首地址;
(4)段頁式存儲管理,進程空間各段的起始地址.
?
答:(1)界地址存儲管理方式,進程空間的首地址從0開始編址;
? (2)頁式存儲管理,進程空間的首地址從0開始編址,而邏輯空間劃分為若干個頁面,
每個頁面的起始地址是邏輯頁號乘以頁面大小;
? (3)段式存儲管理,進程空間各段的首地址從0開始編址;
? (4)段頁式存儲管理,進程空間各段的起始地址從0開始編址.
?
?
2、對于如下存儲管理方式來說,進程地址空間各是幾維的?
(1)頁式;(2)段式;(3)段頁式
?
答:(1)頁式的進程地址空間是一維的
???(2)段式的進程地址空間是二維的
???(3)段頁式的進程地址空間是二維的
?
?
3、在頁式存儲管理中,頁的劃分對用戶是否可見?在段式樣存儲管理中,段的劃分對用戶是否可見?在段頁式存儲管理中,段的劃分對用戶是否可見?段內頁的劃分對用戶是否可見?
?
答:(1)在頁式存儲管理中,分頁對于用戶是透明的,一個進程由若干個頁構成,所有頁的長度相同;
?? (2)在段式存儲管理中,分段對于用戶是可見的,一個進程由若干個段構成,各個段的長度可以不同,一個段恰好對應一個程序單位。
?? (3)在段頁式存儲管理中,段的劃分對用戶是可見的,段內頁的劃分對用戶是透明的,一個段由若干個頁構成,所有頁的長度相同。
?
?
4、為什么空閑頁面鏈適合管理內存空間,而不適合管理外存空間?
?
答:空閑頁面鏈是將所有的空閑頁面連成一個鏈,分配時可取鏈頭的頁面,去配時可將被釋放的頁面連入鏈頭。此種方法適用于內存頁面的分配,但對于外存頁面的分配因分配和去配均需執行一次I/O傳輸,速度較慢。特別是當要申請多個頁面時,需要進行多次I/O傳輸,分配效率太低。
?
?
5、在某些虛擬頁式存儲管理系統中,內存永遠保持一個空閑頁面,這樣做有什么好處?
?
答:在內存沒有空閑頁架的情況下,需要按照置換算法淘汰一個內存頁架,然后讀入所缺頁面,缺頁進程一般需要等待兩次I/O傳輸時間。若內存總保持一個空閑頁架,當發生頁故障時,所缺頁面可以被立即調入內存,缺頁進程只需等待一次I/O傳輸時間。讀入后立即淘汰一個內存頁面,此時可能也需執行一次I/O傳輸,但對缺頁進程來說不需等待,因而提高了響應速度。
?
?
6、為何引入多級頁表?多級頁表是否影響速度?
?
答:隨著內存空間和進程空間的快速增長,頁表越來越大,單級頁表的存放遇到困難,為此常將頁表分為多級存放,即引入多級頁表。多級頁表會降低地址映射的速度,但通過快表可以將效率保持在合理的范疇內。
?
?
7、與傳統頁表相比,倒置頁表有什么優勢?
?
答:傳統頁表是面向進程虛擬空間的,即對應進程的每個邏輯頁面設置一個表項,當進程的地址空間很大時,頁表需占用很多的存儲空間,造成浪費.與經典頁表不同,反置頁表是面向內存物理頁架的,即對應內存的每個物理架設置一個表項,表項的序號就是物理頁架號f,表項的內容則為進程標識pid與邏輯頁號p的有序對.系統只需設置一個反置頁表,為所有進程所共用.
?
?
8、允許進程空間邏輯頁號不連續帶來的好處是什么?
?
答:可以給同一進程內的多個線程預留足夠的棧空間,而又不浪費實際內存頁架。
?
?
9、比較段式存儲管理與頁式存儲管理的優點和缺點.
?
答:頁式存儲管理優缺點:(1)靜態等長存儲分配簡單,有效地解決了內存碎片問題;(2)共享和保護不夠方便。
??? 段式存儲管理優缺點:(1)動態異長存儲分配復雜,存在碎片問題;(2)共享與保護方便;(3)可以實現動態鏈接和動態擴展。
?
?
10、舉例說明段長動態增長的實際意義.
?
答:允許段長動態增長對于那些需要不斷增加或改變新數據或子程序的段來說很有好處。例如,分配給進程的棧空間大小,通常預先無法準確估計,若分配過少可能不夠用,分配過多則造成浪費。在棧可以動態增長的情況下,系統開始可以為進程分配一個基本長度的棧空間,這個長度浪費很小。若進程運行時發生棧溢出,通過中斷可以進行動態擴展。
?
?
11、在段式存儲管理中,段的長度可否大于內存的長度?在段頁式存儲管理中呢?
?
答:在段式存儲管理中,段的長度不能大于內存的長度,因為一個獨立的段占用一段連續的內存空間,內存分配是以段為單位進行的,如果一個段的長度大于內存的長度,那么該段將無法調入內存。在段頁式存儲管理中,段的長度可以大于內存的長度。因為內存分配的單位是頁,一個段內邏輯上連續的頁面,可以分配到不連續的內存頁面中,不要求一個段的所有邏輯頁都進入內存。
?
?
12、共享段表的用途何在?
?
答:共享段表的用途主要有如下兩個:(1)用來尋找共享段:根據進程首次訪問某段的名稱在共享段表中查找,可以得知該段是否已在內存;(2)確保一個共享段只有一組描述信息:共享段的地址、長度等信息在共享段表中僅記錄一次,防止在多個進程段表中重復登記所帶來的維護困難。共享段表用來實現段的共享和保護,該表中記錄所有共享段。多個進程共享同一段時,這些進程段表中的相應表目指向共享段表中的同一個表目。
?
?
13、具有兩級頁表的頁式存儲管理與段頁式存儲管理有何差別?
?
答:具有兩級頁表的頁式存儲管理的地址空間依然是一維的,頁的劃分對于進程來說是透明的。而段頁式存儲管理的地址空間是二維的,段的劃分用戶能感覺到。
?
?
15、段的動態連接給共享帶來什么問題?如何解決?
?
答:動態連接提高了系統的效率,但也帶來一些問題,主要是對于段共享的影響。代碼段共享的必要條件是該段在運行過程中不修改自身,即要求是“純代碼”(pure code),而動態連接需要修改連接字,這與共享的要求相矛盾。解決這個問題的一種方法是將代碼段分為“純段”和“雜段”兩個部分,即將連接字等可修改的內容存放在“雜段”中,而將其它內容放在“純段”中。“雜段”不共享,“純段”可共享。
?
?
16、在虛擬段頁式存儲管理中,考慮段的共享與段長度的動態變化,連接中斷如何處理?
?
答:由段名查本進程的段名—段號對照表及共享段表,經判斷可分為如下三種情形:
(1) 所有進程都未連接過(共享段表、段名-段號對照表均無): 查文件目錄找到該段; 為該段建立頁表,將該段由文件全部讀入swap空間,部分讀入內存,填寫頁表;為該段分配段號,填寫段名-段號對照表;如該段可共享,填寫共享段表,共享記數置1;填寫段表;根據段號及段內地址形成無障礙指示位的一般間接地址。
(2) 其它進程連接過但本進程未連接過(共享段表有,段名-段號對照表無): 為該段分配段號;填寫段名-段號對照表,填寫段表(指向共享段表),共享段表中共享記數加1;根據段號及段內地址形成無障礙指示位的一般間接地址。
(3) 本進程已連接過(共享段表無,段名-段號對照表有): 根據段號及段內地址形成無障礙指示位的一般間接地址。這里,段內地址由兩部分構成,即邏輯頁號和頁內地址。
?
-The End-