用戶程序的地址空間
內(nèi)存也稱主存,是指CPU能直接存取指令和數(shù)據(jù)的存儲器,是現(xiàn)代計(jì)算機(jī)系統(tǒng)進(jìn)行操作的中心。
外存也稱輔存,是指一些外部的存儲設(shè)備,例如硬盤、軟盤和磁帶等存儲器。用戶的程序和數(shù)據(jù),通過I/O系統(tǒng)接口,從外部設(shè)備中讀到內(nèi)存中才能運(yùn)行。
典型存儲器層次結(jié)構(gòu)
按照速度、容量和成本劃分,存儲器系統(tǒng)構(gòu)成一個(gè)層次結(jié)構(gòu),如下圖所示。
重定位的概念
邏輯地址:用戶程序的目標(biāo)模塊都以0為基地址順序編址的,這種地址稱為邏輯地址,也稱為相對地址。
物理地址:內(nèi)存中各物理存儲單元的地址是從統(tǒng)一的基地址開始順序編址的,這種地址稱為物理地址,也稱為絕對地址。
邏輯地址空間:由程序中邏輯地址組成的地址范圍叫做邏輯地址空間,或簡稱為地址空間。
物理地址空間:由內(nèi)存中一系列存儲單元所限定的地址范圍稱作物理地址空間,或簡稱為物理空間,內(nèi)存空間。
重定位:程序和數(shù)據(jù)裝入內(nèi)存時(shí),需對目標(biāo)程序中的地址進(jìn)行修改。這種把邏輯地址轉(zhuǎn)變?yōu)閮?nèi)存物理地址的過程稱作重定位。
對程序進(jìn)行重定位的技術(shù)按重定位的時(shí)機(jī)可分為靜態(tài)重定位和動態(tài)重定位兩種。
靜態(tài)重定位
靜態(tài)重定位是在目標(biāo)程序裝入內(nèi)存時(shí),由裝入程序?qū)δ繕?biāo)程序中的指令和數(shù)據(jù)的地址進(jìn)行修改,即把程序的邏輯地址都改成實(shí)際的內(nèi)存地址。靜態(tài)重定位的時(shí)機(jī)是在程序裝入時(shí)一次完成,在程序運(yùn)行期間不再進(jìn)行重定位。
動態(tài)重定位
動態(tài)重定位是在程序執(zhí)行期間,每次訪問內(nèi)存之前進(jìn)行重定位。動態(tài)重定位靠硬件地址轉(zhuǎn)換機(jī)構(gòu)實(shí)現(xiàn)。