關于位址轉換
在計算機作業系統中,位址轉換是存儲管理的一個主要功能。所謂位址轉換就是将使用者的邏輯位址轉換成記憶體的實體位址,完成位址重定位。需要指出的是,位址轉換是作業系統的位址變換機構自行完成的,無需使用者幹預,這樣我們使用作業系統時,才友善而可靠。
在這一章裡,介紹的存儲管理有分區管理(包括固定分區和可變分區)、分頁管理、分段管理和段頁式管理,其中分頁管理的位址轉換是重點和難點。下面,我們結合三個例題對位址轉換作詳細地分析。
【例1】考慮一個由8個頁面,每頁有1024個位元組組成的邏輯空間,把它裝入到有32個實體塊的存儲器中,問:
(1)邏輯位址需要多少二進制位表示?
(2)實體位址需要多少二進制位表示?
分析在分頁存儲管理中,邏輯位址結構如下圖所示。

它由兩個部分組成:前一部分表示該位址所在頁面的頁号p;後一部分表示頁内位址(頁内位移)d。頁号的位址位數決定了頁的多少,假設頁号有20位,則位址空間中最多可容納的頁面數為220,即1MB個頁面。頁内位址位數确定了每頁的大小,若頁内位址為12位,則每頁大小為212,即2KB。
同理,實體位址中塊号的位址位數決定了塊的數量。由于頁式存儲管理記憶體空間塊的大小與頁面大小相同,是以實體位址中塊内位址與邏輯位址中的頁内位址位數相同。
解因為頁面數為8=23,故需要3位二進制數表示。每頁有1024個位元組,1024=210,于是頁内位址需要10位二進制數表示。32個實體塊,需要5位二進制數表示(32=25)。
(1)頁的邏輯位址由頁号和頁内位址組成,是以需要3+10=13位二進制數表示。
(2)頁的實體位址由塊号和頁内位址的拼接,是以需要5+10=15位二進制數表示。
【例2】若在一分頁存儲管理系統中,某作業的頁表如下所示。已知頁面大小為1024位元組,試将邏輯位址1011,2148,4000,5012轉化為相應的實體位址。
頁号 | 塊号 |
1 2 3 | 2 3 1 6 |
分析頁式存儲管理的位址結構是一維的,即邏輯位址(或實體位址)隻用一個數值即可表示。若給定邏輯位址A,頁面的大小為L,則頁号p和頁内位址d可按照下式求得:
p=int [A/L]d=A mod L
其中,int是取整函數(取數值的整數部分),mod是取餘函數(取數值的餘數部分)。
下圖顯示了頁式管理系統的位址轉換機構。
頁表的作用是實作從頁号到實體塊号的位址映射。以邏輯位址的頁号檢索頁表,得到該頁的實體塊号;同時将頁内位址d直接送入實體位址寄存器的塊内位址字段中。這樣實體塊号和塊内位址拼接成了實際通路記憶體的位址,進而完成了從邏輯位址到實體位址的轉換。
是以實體位址的計算公式為:
實體位址=塊的大小(即頁的大小L)´塊号f+頁内位址d
解本題中,為了描述友善,設頁号為p,頁内位移為d,則:
(1)對于邏輯位址1011,p=int(1011/1024)=0,d=1011 mod 1024=1011。查頁表第0頁在第2塊,是以實體位址為1024´2+1011=3059。
(2)對于邏輯位址2148,p=int(2148/1024)=2,d=2148 mod 1024=100。查頁表第2頁在第1塊,是以實體位址為1024+100=1124。
(3)對于邏輯位址4000,p=int(4000/1024)=3,d=4000 mod 1024=928。查頁表第3頁在第6塊,是以實體位址為1024´6+928=7072。
(4)對于邏輯位址5012,p=int(5012/1024)=4,d=5012 mod 1024=916。因頁号超過頁表長度,該邏輯位址非法。
【例3】某虛拟存儲器的使用者程式設計空間共32個頁面,每頁為1KB,記憶體為16KB。假定某時刻一使用者頁表中已調入記憶體的頁面的頁号和實體塊号的對照表如下:
頁号 | 實體塊号 |
5 | |
1 | 10 |
2 | 4 |
3 | 7 |
則邏輯位址0A5C(H)所對應的實體位址是什麼?
分析頁式存儲管理的邏輯位址分為兩部分:頁号和頁内位址。
由已知條件“使用者程式設計空間共32個頁面”,可知頁号部分占5位;由“每頁為1KB”,1K=210,可知内頁位址占10位。由“記憶體為16KB”,可知有16塊,塊号為4位。
邏輯位址0A5C(H)所對應的二進制表示形式是:000 1010 0101 1100,根據上面的分析,下劃線部分為頁内位址,編碼“000 10”為頁号,表示該邏輯位址對應的頁号為2。查頁表,得到實體塊号是4(十進制),即實體塊位址為:01 00 ,拼接塊内位址10 0101 1100,得01 0010 0101 1100,即125C(H)。
解邏輯位址0A5C(H)所對應的實體位址是125C(H)。