在計算機作業系統中,位址轉換是儲存管理的乙個主要功能。所謂位址轉換就是將使用者的邏輯位址轉換成記憶體的實體地址,完成位址重定位。需要指出的是,位址轉換是作業系統的位址變換機構自行完成的,無需使用者干預,這樣我們使用作業系統時,才方便而可靠。
在這一章裡,介紹的儲存管理有分割槽管理(包括固定分割槽和可變分割槽)、分頁管理、分段管理和段頁式管理,其中分頁管理的位址轉換是重點和難點。下面,我們結合三個例題對位址轉換作詳細地分析。
【例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
轉化為相應的實體地址。 頁號
塊號012
3
2316
分析頁式儲存管理的位址結構是一維的,即邏輯位址(或實體地址)只用乙個數值即可表示。若給定邏輯位址
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
。假定某時刻一使用者頁表中已調入記憶體的頁面的頁號和物理塊號的對照表如下: 頁號
物理塊號
0
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
)。
關於網路位址轉換
一直被乙個問題困擾 在租屋裡使用天威的寬頻上網,被告知是共享乙個公網ip,也就是說不管區域網裡有幾台電腦在上網,對外來說他們的ip是相同的。這就比較奇怪了,路由怎麼能正確的把公網上的ip包準確的投遞給正確的電腦呢?有同事提示說路由把不同的電腦對映到了不同的埠上。但還是有問題,tcp包頭的埠號 ip的...
關於線性位址到實體地址的轉換緩衝
為了能將線性位址快速地轉換到實體地址,tlb translation lookaside buffer 緩衝了當前經常被使用的線性位址對應的實體地址。多個cpu的tlb不需要進行同步,因為 不同cpu上執行的是不用的程序,也就是說他們相同的線性位址對應的實體地址是不同的,所以不需要進行同步。當cpu...
ip位址轉換數字函式 iton IP位址轉換函式
在ascii字串 192.168.0.99 與網路位元組序的二進位制值間轉換位址。涉及函式的標頭檔案為 include 一 只適用於ipv4協議的函式 int inet aton const char string,struct in addr addr 函式成功,返回值1,否則返回零。將strin...