首頁  >  文章  >  運維  >  地址重定位指的是什麼

地址重定位指的是什麼

angryTom
angryTom原創
2019-07-24 15:01:269871瀏覽

地址重定位指的是什麼

推薦教學:windows運維

##簡介

  記憶體位址的集合稱為記憶體空間或實體位址空間。記憶體中,每個儲存單元都與對應的記憶體位址的編號相對應,顯然,記憶體空間是一維線性的。

  怎麼把幾個虛存的一維線性空間或多維線性空間轉換到記憶體的唯一的一維物理線性空間?這涉及到兩個問題:一個是虛擬空間的劃分問題,另一個就是把虛擬空間中已經連結和劃分好的內容裝入內存,並將虛擬地址映射為內存地址的問題,稱之為地址重定位或地址映射。

  

位址重定位 分為兩種:靜態位址重定位和動態位址重定位。

靜態定位

  靜態位址重定位是在虛擬空間程式執行之前,由組裝程式完成的位址對映工作。對於虛擬空間內的指令和資料來說,靜態位址重定位只完成了一個首位址不同的連續位址變換。它要求所有待執行的程式必須在程式執行之前完成它們之間的鏈接,否則將無法得到正確的記憶體位址和記憶體空間。

  

靜態位址重定位的優點是不需要硬體支持,但是缺點是必須佔有連續的記憶體空間,這就難以做到資料和程式的共享。

動態定位

  動態位址重定位是程式在執行過程中,在CPU存取記憶體之前,將要存取的程序或資料位址轉換為記憶體位址。動態位址重定位需要硬體的支援。

  位址重定位機構需要一個或多個基底位址暫存器BR與一個或多個程式虛擬位址暫存器VR,指令或資料的記憶體位址MA與虛擬位址的計算關係如下:MA=(BR) (VR),這裡的(BR),(VR)分別表示暫存器中的內容。

  

動態重定位的優點有:記憶體可以不連續分配、提供實現虛存的基礎、有利於程式共享。

以上是地址重定位指的是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn