什么方式可以采用靜態(tài)重定位 地址重定位名詞解釋?
地址重定位名詞解釋?地址重定位分為兩部分:靜態(tài)地址重定位和靜態(tài)地址重定位。靜態(tài)地址重定位是在虛擬空間程序執(zhí)行之前由匯編程序完成的地址映射工作。對于虛擬空間中的指令和數據,靜態(tài)地址重定位只完成不同初始地
地址重定位名詞解釋?
地址重定位分為兩部分:靜態(tài)地址重定位和靜態(tài)地址重定位。靜態(tài)地址重定位是在虛擬空間程序執(zhí)行之前由匯編程序完成的地址映射工作。對于虛擬空間中的指令和數據,靜態(tài)地址重定位只完成不同初始地址的連續(xù)地址轉換。它要求所有要執(zhí)行的程序在執(zhí)行之前必須完成它們之間的鏈接,否則它們將無法獲得正確的內存地址和內存空間。
靜態(tài)地址重定位的優(yōu)點是它不需要硬件支持,但缺點是它必須占用連續(xù)的內存空間,這使得數據和程序難以共享。
2. 動態(tài)地址重定位:動態(tài)地址重定位是在程序執(zhí)行過程中,CPU訪問內存之前,將程序或數據地址轉換為內存地址。動態(tài)地址重定位需要硬件支持。
地址重定位機制需要一個或多個基址寄存器BR和一個或多個程序虛擬地址寄存器VR。指令或數據的存儲器地址Ma與虛地址的計算關系為:Ma=(BR)(VR)。這里,(BR)和(VR)分別表示寄存器的內容。
重定位相關知識,為什么要重定位?
1. 什么是搬遷?由于作業(yè)加載到與其地址空間不一致的存儲空間中,因此調整相關地址部分的過程稱為重定位。
2. 重新定位的類型是什么?它可以分為靜態(tài)重定位和動態(tài)重定位兩種類型。
3. 為什么要搬遷?當我們編寫普通程序時,根本不需要關心變量(常量)的位置,因為在編譯源程序時,它的內存位置是經過計算的。
程序加載到內存時,系統(tǒng)不會重新定位它。
當我們需要使用變量(常量)時,我們可以用變量名直接訪問它。
有些程序不可避免地使用變量(常量),每個變量(常量)在內存中的位置自然不同。
由于這些變量沒有固定的地址,程序只能在運行過程中重新定位才能正常訪問相關資源。