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