操作系統 內存分配算法


10.某虛擬存儲器的用戶編程空間共32個頁面,每頁為1KB,內存為16KB

假定某時刻一個用戶頁表中已調入內存的頁面頁號和物理塊號如表所示。則邏輯地址0A5C H所對應的物理地址為 125C(H)

 1KB=210B → 頁內地址10位

 0A5C (H) → 1010 0101 1100 (B) → 低10位10 0101 1100 (B)為頁內地址;余下的高2位10 (B)為頁號

 二進制的10 = 十進制的2 → 頁號2對應物理塊號4 = 二進制的100

 物理地址為100 10 0101 1100 → 十六進制為125C (H)

 

題目已經告訴我們,每個頁的大小為1 KB,然而1KB=210B,所以頁內地址有10位。

把虛地址0A5C (H)化為二進制為1010 0101 1100 (B),其中低10位10 0101 1100 (B)為頁內地址,余下的高2位10 (B)為頁號。

二進制的10等於十進制的2,查虛頁號和物理頁號對照表,可知物理頁號為4,即二進制的100,所以物理地址為100 10 0101 1100,化為十六進制為125C (H)。

用同樣方法求得1A5C(H)的頁號為6,但此時的虛頁號和物理頁號對照表中沒有虛頁號6,所以會產生頁失效錯誤。

1A5C(H) → 1 10 10 0101 1100 (B) → 低10位10 0101 1100 (B)為頁內地址;余下的高2位110 (B)為頁號

二進制的110 = 十進制的6  

求得1A5C(H)的頁號為6,但此時的虛頁號和物理頁號對照表中沒有虛頁號6,所以會產生頁失效錯誤。

 

11.頁式存儲系統的邏輯地址是由頁號和頁內地址兩部分組成。頁面的大小為4K,地址變換過程如下圖,圖中邏輯地址用十進制表示。

圖中有效地址經過變換后,十進制物理地址a應為 33220       

 解:考查頁式存儲管理中的地址變換知識。在頁式存儲管理中,有效地址除頁的大小,取整為頁號,取余為頁內地址。

本題頁面的大小為4K,有效地址8644除4096,取整為2,取余為452。

查頁表得物理塊號8,因此a的有效地址為8×4096+452= 33220。

 

邏輯地址8644 包括頁面號和頁內地址(偏移量),頁面號轉換成物理塊號,大小也是4K,頁內地址不變,最后的物理地址就是物理塊號;

8644=4096(4K)×2(第2頁)+452(偏移量)

物理地址:4096×8 +452 =33220

 

4K=4×1024=4096;(1K=1024)

8644/4096=2,對應2頁,物理塊號為8

8644%4096=452;

物理地址=8×4096+452= 33220。

 

12.頁式存儲系統的邏輯地址是由頁號和頁內地址兩部分組成,地址變換過程如下圖所示。

假定頁面的大小為8KB,圖中所示的十進制邏輯地址9612,經過地址變換后,形成的物理地址a應為十進制25996

 

解法1:

 8KB=8192=8*1024=213,所以頁內地址有13位。

 9612/8196=1, 對應1頁,物理塊號為3

 9612%8192=1420

 物理地址=3×8192+1420=25996。

解法2:

 邏輯地址十進制9612轉換為二進制為:1 0 0101 1000 1100,最高
 一位為頁號,低13位為頁內偏移量,所以邏輯地址9612的頁號為1,由圖可知其物理塊號為3,轉換為二進制是11

 最后把物理塊號和頁內偏移地址拼合得:11 0 0101 1000 1100,即為十進制的25996。

 物理地址=頁面大小X物理塊號+頁內地址

14.在UNIX系統中,假定磁盤塊大小是1 KB, 每個盤塊號占4B, 文件索引節點中的磁盤地址明細表如圖6-25所示,

  請將下列文件的字節偏移量轉換為物理地址(寫出計算過程)。

  (1) 8000   (2) 13000   (3) 350000

 

(1)8000/1024=7(/表示整除),8000%1024=832(%表示取模)。

使用直接地址,其物理地址是:101# 塊內832字節。

(2)13000/1024=12,13000%1024=712。

邏輯塊數12超出直接地址范圍(10),但是小於266(=10+256),利用一次間接。從428# 塊中得到相應的物理塊號為954。所以其物理地址是:954# 塊內712字節。

(3)350000/1024=341,350000%1024=816。

邏輯塊數341超出一次間接地址范圍(266),但是小於65802(=10+256+2562),利用二次間接。

341-(10+256)=75,75/256=0,75%256=75

從9156#塊中找到物理塊331,再從331塊中找到下標為75的項,進而得到物理塊號333。所以其物理地址是:333# 塊內816字節

 

1.某段表的內容見右表, 一邏輯地址為(2, 154), 它對應的物理地址為480K + 154

段號為2, 對應的首地址為480K,段長度為20K,大於154,所以邏輯地址(2, 154)對應的物理地址為480K + 154。

          

2.在一頁式存儲管理系統中,頁表內容見右表。若頁大小4KB,則地址轉換機構將邏輯地址0轉換成的物理地址為(塊號從0計算) 8182      

  按頁表內容可知,邏輯地址0對應塊號2,頁大小為4KB,故轉換成的物理地址為2×4K =8K= 8192。

3.下圖給出了頁式和段式兩種地址變換示意(假定段式變換對每段不進行段長越界檢查,即段表中無段長信息)。

(1)指出這兩種變換各屬於何種存儲管理。  (2)計算出這兩種變換所對應的物理地址。

(1)由圖所示邏輯地址結構知:頁或段的最大個數為25 = 32。如果左圖是段式管理,則段始址12加上偏移量586,遠超第1段的段始址15,超過第4段的段始址20,所以左圖是頁式變換,右圖滿足段式變換。對於頁式管理,由邏輯地址的位移量位數知,一頁的大小為2KB。

(2)對圖中的頁式地址變換,其物理地址為12×2048 + 586 = 25162; 對圖中的段式地址變換,物理地址為4000+586 = 4586。

  

4.在一個段式存儲管理系統中,其段表見下表A。試求表B中的邏輯地址對應的物理地址。

1)由段表知,第0段內存始址為210, 段長為500,故邏輯地址(0, 430)是合法地址,對應的物理地址為210 + 430 = 640。

2)由段表知,第1段內存始址為2350,段長為20, 故邏輯地址(1, 10) 是合法地址,對應的物理地址為2350+ 10 = 2360.

3)由段表知,第2段內存始址為100, 段長為90,   邏輯地址(2, 500)的段內位移500超過了段長,故為非法地址

4)由段表知,第3段內存始址為1350,段長為590,故邏輯地址(3, 400)是合法地址,對應的物理地址為1350 + 400= 1750。

5)由段表知,第4段內存始址為1938,段長為95,   邏輯地址(4, 112)的段內位移112超過了段長,故為非法地址。

6)由段表知,不存在第5段,故邏輯地址(5, 32)為非法地址。

5.頁式存儲管理允許用戶的編程空間為32個頁面(每頁1KB),主存為16KB.如有一用戶程序為10頁長,某時刻該用戶程序頁表見表。

若分別遇到三個邏輯地址0AC5H、1AC5H、3AC5H處的操作,計算說明存儲管理系統將如何處理。

  

         頁面大小為1KB, 所以低10位為頁內偏移地址; 用戶編程空間為32個頁面,即邏輯地址高5位為虛頁號: 主存為16個頁面,即物理地址高4位為物理塊號。

邏輯地址0AC5H轉換二進制000 1010 1100 0101B,虛頁號2(00010B),映射至物理塊號4,系統訪問物理地址12C5H(01 0010 1100 0101B)。

邏輯地址1AC5H轉換二進制001 1010 1100 0101B, 虛頁號為6(00110B),不在頁面映射表中,產生缺頁中斷,系統進行缺頁中斷處理。

邏輯地址3AC5H轉換二進制011 1010 1100 0101B,頁號為14,而該用戶程序只有10頁,故系統產生越界中斷

         注意: 在將十六進制地址轉換為二進制地址時,可能會習慣性地寫為16位,這是容易犯錯的細節。例如,題中的邏輯地址為15 位,物理地址為14位。邏輯地址0AC5H的二進制表示為000 1010 1100 0101B,對應物理地址12C5H 的二進制表示為01 0010 1100 0101B.這一點應該引起注意。

 

6.在頁式管理系統中,主存64KB,分成16塊,塊號0,1,2,.,15. 某進程有4頁,頁號為0,1,2,3,被分別裝入主存的第9, 0, 1, 14塊。

(1)該進程總長度多大?  (2)寫出該進程每頁在主存中的始址。

(3)若給出邏輯地址(0,0),(1,72), (2, 1023),(3, 99),計算出相應的內存地址(括號內的第一個數為十進制頁號,第二個數為十進制頁內地址)。

(1)頁面的大小為(64/16)KB =4KB,該進程共有4頁,所以該進程的總長度為4 x 4KB = 16KB。

(2)頁面大小為4KB,故低12位為頁內偏移地址; 主存分為16塊,故內存物理地址高4位為主存塊號。

  頁號為0的頁面被裝入主存的第9塊,故該地址在內存中的始址為1001 0000 0000 0000B,即9000H。

  頁號為1的頁面被裝入主存的第0塊,故該地址在內存中的始址為0000 0000 0000 0000B, 即0000H。

  頁號為2的頁面被裝入主存的第1塊,故該地址在內存中的始址為0001 0000 0000 0000B, 即1000H。

  頁號為3的頁面被裝入主存的第14塊,故該地址在內存中的始址為1110 0000 0000 0000B, 即E000H。

(3)邏輯地址為(0, 0),   故內存地址為(9, 0) =1001 0000 0000 0000B,即9000H。

  邏輯地址為(1, 72),  故內存地址為(0, 72) = 0000 0000 0100 1000B,即0048H。

  邏輯地址為(2, 1023),故內存地址為(1, 1023)= 0001 0011 1111 1111即13FFH。

  邏輯地址為(3, 99),  故內存地址為(14, 99) = 1100 0000 0110 0011.即0E063H。

 

7.某操作系統存儲器采用頁式存儲管理,頁面大小64B,一進程的代碼段長度702B,頁表見表A,該進程在快表中的頁表見表B.

現進程有如下訪問序列:其邏輯地址為八進制的0105, 0217, 0567, 01120, 02500。問給定的這些地址能否進行轉換?

要注意題目中的邏輯地址使用哪種進制的數給出,若是十進制,則通過整數除法和求余得到頁號和頁內偏移,

若用其他進制給出,則轉換成二進制,然后按照地址結構划分為頁號部分和頁內偏移部分,再把頁號和頁內偏移計算出來。

頁面大小為64B=26,故頁內位移為6位, 進程代碼段長度為702B,故需要11個頁面,編號為0~10。

(1)八進制邏輯地址0105的二進制0 0100 0101B.邏輯頁號1,此頁號可在快表查到,得頁幀號為F1:頁內位移為5,物理地址為(F1,5)。

(2)八進制邏輯地址0217的二進制0 1000 1111B.邏輯頁號2,此頁號可在快表查到,得頁幀號為F2: 頁內位移為15,物理地址為(F2, 15)。

(3)八進制邏輯地址0567的二進制1 0111 0111B.邏輯頁號5,此頁號不在快表中,在內存頁表中可以查找到,得頁幀號為F5:頁內位移55,故物理地址(F5, 55)。

(4)八進制邏輯地址01120的二進制0010 0101 0000.邏輯頁號9,此頁號不在快表中,在內存頁表中可以查找到,得頁幀號為F9: 頁內位移為16, 故物理地址為(F9, 16)。

(5)八進制邏輯地址02500的二進制0101 0100 0000B。邏輯頁號21,此頁號已超過頁表的最大頁號10, 產生越界中斷。

注意:根據題中條件無法得知邏輯地址位數,所以在其二進制表示中,其位數並不一致,只是根據八進制表示進行轉換。若已知邏輯地址空間大小或位數,則二進制表示必須保持一致。

8.某虛擬存儲器的用戶編程空間共32個頁面,每頁為1KB,內存為16KB。假定某時刻一用戶頁表中已調入內存的頁面的頁號和物理塊號的對照表如下:  則邏輯地址0A5D (H)所對應的物理地址是什么?

0A5D (H) =0000 1010 0101 1101   2號頁對應4號塊,

所以物理地址是0001 0010 0101 1101即125D (H)。

 

頁號

物理塊號

0

5

1

10

2

4

3

7

 


免責聲明!

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



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