機制 位址轉換

2021-10-17 13:48:10 字數 1487 閱讀 9249

利用位址轉換換(address translation),硬體對每次記憶體訪問進行處理(即指令獲取、資料讀取或寫入),將指令中的虛擬(virtual)位址轉換為資料實際儲存的物理(physical)位址。

在每次記憶體引用時,硬體都會進行位址轉換,將應用程式的記憶體引用重定位到記憶體中實際的位置。

使用者的位址空間必須連續地放在物理記憶體中。

位址空間小於物理記憶體的大小。

每個位址空間的大小完全一樣。

記憶體管理單元(memory management unit,mmu):

每個 cpu 需要兩個硬體暫存器:基址(base)暫存器界限(bound)暫存器,有時稱為限制(limit)暫存器。

基址加界限機制(base and bound),又稱為動態重定位(dynamic relocation):

採用這種方式,在編寫和編譯程式時假設位址空間從零開始。但是,當程式真正執行時,作業系統會決定其在物理記憶體中的實際載入位址,並將起始位址記錄在基址暫存器中。 phy

sica

ladd

ress

=vir

tual

addr

ess+

base

physical\ address = virtual\ address + base

physic

alad

dres

s=vi

rtua

ladd

ress

+bas

e程序中使用的記憶體引用都是虛擬位址(virtual

address),硬體接下來將虛擬位址加上基址暫存器中的內容,得到實體地址(physical address),再發給記憶體系統。

由於這種重定位是在執行時發生的,而且我們甚至可以在程序開始執行後改變其位址空間,這種技術一般被稱為動態重定位(dynamic relocation)

界限暫存器提供了訪問保護,如果程序需要訪問超過這個界限或者為負數的虛擬位址,cpu 將觸發異常,程序最終可能被終止。它確保了程序產生的所有位址都在程序的位址「界限」中。

空閒列表(free list):

是乙個列表,記錄當前沒有使用的物理記憶體的範圍。

硬體支援和作業系統管理結合在一起,實現了乙個簡單的虛擬記憶體。

nand flash位址機制

k9f2g08u0a是三星公司生產的總容量為256m的nandflash,常用於手持裝置等消費電子產品。還是那句話,搞底層就得會看datasheet,我們就從它的datasheet看起。現在就看一下重點的,nandflash的儲存單元的組織結構,k9f2g08u0a的儲存單元的組織結構如下 結合上面...

啟用PAE機制下虛擬位址到實體地址的轉換

最近突然想起用softice手工計算一下虛擬位址到實體地址的轉換,理論的東西如段表 頁表等已經很熟悉了,但真正實際操作就碰到了大問題,特別是分頁機制,根本不是從cr3到頁目錄表到頁表再到實體地址這麼簡單,後來讀了一下 intel 64 and ia 32 architectures software...

ip位址轉換數字函式 iton IP位址轉換函式

在ascii字串 192.168.0.99 與網路位元組序的二進位制值間轉換位址。涉及函式的標頭檔案為 include 一 只適用於ipv4協議的函式 int inet aton const char string,struct in addr addr 函式成功,返回值1,否則返回零。將strin...