九、操作系統——基本地址變換機構(詳解)

一、概覽

重點理解、記憶基本地址變換機構(用於實現邏輯地址到物理地址轉換的一組硬件機構)的原理和流程
在這裏插入圖片描述

二、基本地址變換機構

基本地址變換機構可以藉助進程的頁表將邏輯地址轉換爲物理地址。
通常會在系統中設置一個頁表寄存器(PTR),存放頁表在內存中的起始地址F和頁表長度M。進程未執行時,頁表的始址和頁表長度放在進程控制塊(PCB)中,當進程被調度時,操作系統內核會把它們放到頁表寄存器中。
注意:頁面大小是2的整數冪
設頁面大小爲L,邏輯地址A到物理地址E的變換過程如下:

①根據邏輯地址計算出頁號、頁內偏移量
②判斷頁號是否越界:頁表長度就是頁表中頁表項的個數,有多少個頁表項就有多少個頁面。如果頁號P >= 頁表長度M,則拋出越界中斷。否則,進入③
③查詢頁表,找到頁號對應的頁表項,確定頁面存放的內存塊號:根據頁號P和頁表起始地址F得到該頁號對應的頁表項在內存塊中的地址=頁號P*頁表項大小+頁表起始地址F。通過頁表項在內存塊中的地址,找到這個頁表項之後,便可以得到頁表項中的內存塊號,然後進入④
④用內存塊號和頁內偏移量得到物理地址b號內存塊號(即P號頁面)在內存中的起始地址=b*每個內存塊的大小。然後得到物理地址 = 內存塊號 * 每個內存塊的大小 + 頁面偏移量
在這裏插入圖片描述
⑤訪問目標內存單元
在這裏插入圖片描述
①計算頁號P頁內偏移量W(如果用十進制數手算,則P=A/L,W=A%L;但是在計算機實際運行時,邏輯地址結構是固定不變的,因此計算機硬件可以更快地得到二進制表示的頁號、頁內偏移量)
②比較頁號P和頁表長度M,若P>=M,則產生越界中斷,否則繼續執行。(注意:頁號是從0開始的,而頁表長度至少是1,因此P=M時也會越界
③頁表中頁號P對應的頁表項地址=頁表起始地址F+頁號P*頁表項長度,通過頁表項地址找到這個頁表項,並取出該頁表項內容b,即爲內存塊號。(注意區分頁表項長度、頁表長度、頁面大小的區別。頁表長度指的是這個頁表中總共有幾個頁表項,即總共有幾個頁;頁表項長度指的是每個頁表項佔多大的存儲空間頁面大小指的是一個頁面佔多大的存儲空間),頁面大小L
④計算E=b*L+W,用得到的物理地址E去訪存。(如果內存塊號、頁面偏移量是用二進制表示的,那麼把二者拼接起來就是最終的物理地址了)

例:若頁面大小L爲1K字節,頁號2對應的內存塊號b=8,將邏輯地址A=2500轉換爲物理地址E。
等價描述:某系統按字節尋址,邏輯地址結構中,頁內偏移量佔10位(說明一個頁面的大小爲2^10 B=1KB),頁號2對應的內存塊號b=8,將邏輯地址A=2500轉換爲物理地址E。
解:
①計算頁號、頁內偏移量
頁號P=A/L=2500/1024=2;頁內偏移量W=A%L=2500%1024=452
②根據題中條件可知,頁號2沒有越界,其存放的內存塊號b=8(容易被忽略的步驟)
物理地址E=b*L+W=8*1024+452=8644在分頁存儲管理(頁式管理)的系統中,只要確定了每個頁面的大小,邏輯地址結構就確定了。因此,頁式管理中地址是一維的。即,只要給出一個邏輯地址,系統就可以自動地算出頁號、頁內偏移量兩個部分,並不需要顯式地告訴系統這個邏輯地址中,頁內偏移量佔多少位。

三、對頁表項大小的進一步探討

每個頁表項的長度是相同的,頁號是“隱含”的
Eg:假設某系統物理內存大小爲4GB,頁面大小爲4KB,的內存總共會被分爲2^32 / 2^12 = 2^20 個內存塊,因此內存塊號的範圍應該是 0~2^20-1。因此至少要20個二進制位才能表示這麼多的內存塊號,因此至少要3個字節纔夠(每個字節8個二進制位,3個字節共24個二進制位)

在這裏插入圖片描述

在這裏插入圖片描述
各頁表項會按順序連續地存放在內存中。如果該頁表在內存中存放的起始地址爲x,則M號頁對應的頁表項是存放在內存地址爲X+3*M
一個頁面爲4KB,則每個頁框可以存放4096/3=1365個頁表項,但是這個頁框會剩餘4096%3=1B頁內碎片。因此,1365號頁表項存放的地址爲X+3*1365+1。而如果每個頁表項佔4字節,則每個頁框剛好可存放1024個頁表項。
在這裏插入圖片描述
1024號頁表項雖然是存放在下一個頁框中的,但是它的地址依然可以用X+4*1024得出

結論:理論上,頁表項長度爲3B即可表示內存塊號的範圍,但是,爲了方便頁表的查詢,常常會讓一個頁表項佔更多的字節,使得每個頁面恰好可以裝得下整數個頁表項

四、總結

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章