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)。
頁号 | 實體塊号 |
5 | |
1 | 10 |
2 | 4 |
3 | 7 |
