邏輯地址、線性地址、物理地址和虛擬地址理解.doc

邏輯地址、線性地址、物理地址和虛擬地址理解.doc

ID:55324701

大?。?61.30 KB

頁數(shù):10頁

時(shí)間:2020-05-10

邏輯地址、線性地址、物理地址和虛擬地址理解.doc_第1頁
邏輯地址、線性地址、物理地址和虛擬地址理解.doc_第2頁
邏輯地址、線性地址、物理地址和虛擬地址理解.doc_第3頁
邏輯地址、線性地址、物理地址和虛擬地址理解.doc_第4頁
邏輯地址、線性地址、物理地址和虛擬地址理解.doc_第5頁
資源描述:

《邏輯地址、線性地址、物理地址和虛擬地址理解.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、邏輯地址(LogicalAddress)是指由程式產(chǎn)生的和段相關(guān)的偏移地址部分。例如,你在進(jìn)行C語言指針編程中,能讀取指針變量本身值(&操作),實(shí)際上這個(gè)值就是邏輯地址,他是相對于你當(dāng)前進(jìn)程數(shù)據(jù)段的地址,不和絕對物理地址相干。只有在Intel實(shí)模式下,邏輯地址才和物理地址相等(因?yàn)閷?shí)模式?jīng)]有分段或分頁機(jī)制,Cpu不進(jìn)行自動地址轉(zhuǎn)換);邏輯也就是在Intel保護(hù)模式下程式執(zhí)行代碼段限長內(nèi)的偏移地址(假定代碼段、數(shù)據(jù)段如果完全相同)。應(yīng)用程式員僅需和邏輯地址打交道,而分段和分頁機(jī)制對你來說是完全透明的,僅由系統(tǒng)編程人員涉及。應(yīng)用程式員雖然自己能直接操作內(nèi)存,那也只能在操作系統(tǒng)給你

2、分配的內(nèi)存段操作。線性地址(LinearAddress)是邏輯地址到物理地址變換之間的中間層。程式代碼會產(chǎn)生邏輯地址,或說是段中的偏移地址,加上相應(yīng)段的基地址就生成了一個(gè)線性地址。如果啟用了分頁機(jī)制,那么線性地址能再經(jīng)變換以產(chǎn)生一個(gè)物理地址。若沒有啟用分頁機(jī)制,那么線性地址直接就是物理地址。Intel80386的線性地址空間容量為4G(2的32次方即32根地址總線尋址)。物理地址(PhysicalAddress)是指出目前CPU外部地址總線上的尋址物理內(nèi)存的地址信號,是地址變換的最終結(jié)果地址。如果啟用了分頁機(jī)制,那么線性地址會使用頁目錄和頁表中的項(xiàng)變換成物理地址。如果沒有啟用

3、分頁機(jī)制,那么線性地址就直接成為物理地址了。虛擬內(nèi)存(VirtualMemory)是指計(jì)算機(jī)呈現(xiàn)出要比實(shí)際擁有的內(nèi)存大得多的內(nèi)存量。因此他允許程式員編制并運(yùn)行比實(shí)際系統(tǒng)擁有的內(nèi)存大得多的程式。這使得許多大型項(xiàng)目也能夠在具有有限內(nèi)存資源的系統(tǒng)上實(shí)現(xiàn)。一個(gè)非常恰當(dāng)?shù)谋扔魇牵耗悴槐胤浅iL的軌道就能讓一列火車從上海開到北京。你只需要足夠長的鐵軌(比如說3公里)就能完成這個(gè)任務(wù)。采取的方法是把后面的鐵軌即時(shí)鋪到火車的前面,只要你的操作足夠快并能滿足需求,列車就能象在一條完整的軌道上運(yùn)行。這也就是虛擬內(nèi)存管理需要完成的任務(wù)。在Linux0.11內(nèi)核中,給每個(gè)程式(進(jìn)程)都劃分了總?cè)萘繛?

4、4MB的虛擬內(nèi)存空間。因此程式的邏輯地址范圍是0x0000000到0x4000000。有時(shí)我們也把邏輯地址稱為虛擬地址。因?yàn)楹吞摂M內(nèi)存空間的概念類似,邏輯地址也是和實(shí)際物理內(nèi)存容量無關(guān)的。邏輯地址和物理地址的“差距”是0xC0000000,是由于虛擬地址->線性地址->物理地址映射正好差這個(gè)值。這個(gè)值是由操作系統(tǒng)指定的。機(jī)理邏輯地址(或稱為虛擬地址)到線性地址是由CPU的段機(jī)制自動轉(zhuǎn)換的。如果沒有開啟分頁管理,則線性地址就是物理地址。如果開啟了分頁管理,那么系統(tǒng)程式需要參和線性地址到物理地址的轉(zhuǎn)換過程。具體是通過設(shè)置頁目錄表和頁表項(xiàng)進(jìn)行的。?一、概念物理地址(physical

5、address)用于內(nèi)存芯片級的單元尋址,與處理器和CPU連接的地址總線相對應(yīng)?!@個(gè)概念應(yīng)該是這幾個(gè)概念中最好理解的一個(gè),但是值得一提的是,雖然可以直接把物理地址理解成插在機(jī)器上那根內(nèi)存本身,把內(nèi)存看成一個(gè)從0字節(jié)一直到最大空量逐字節(jié)的編號的大數(shù)組,然后把這個(gè)數(shù)組叫做物理地址,但是事實(shí)上,這只是一個(gè)硬件提供給軟件的抽像,內(nèi)存的尋址方式并不是這樣。所以,說它是“與地址總線相對應(yīng)”,是更貼切一些,不過拋開對物理內(nèi)存尋址方式的考慮,直接把物理地址與物理的內(nèi)存一一對應(yīng),也是可以接受的。也許錯(cuò)誤的理解更利于形而上的抽像。虛擬內(nèi)存(virtualmemory)這是對整個(gè)內(nèi)存(不要與機(jī)

6、器上插那條對上號)的抽像描述。它是相對于物理內(nèi)存來講的,可以直接理解成“不直實(shí)的”,“假的”內(nèi)存,例如,一個(gè)0x08000000內(nèi)存地址,它并不對就物理地址上那個(gè)大數(shù)組中0x08000000-1那個(gè)地址元素;之所以是這樣,是因?yàn)楝F(xiàn)代操作系統(tǒng)都提供了一種內(nèi)存管理的抽像,即虛擬內(nèi)存(virtualmemory)。進(jìn)程使用虛擬內(nèi)存中的地址,由操作系統(tǒng)協(xié)助相關(guān)硬件,把它“轉(zhuǎn)換”成真正的物理地址。這個(gè)“轉(zhuǎn)換”,是所有問題討論的關(guān)鍵。有了這樣的抽像,一個(gè)程序,就可以使用比真實(shí)物理地址大得多的地址空間。(拆東墻,補(bǔ)西墻,銀行也是這樣子做的),甚至多個(gè)進(jìn)程可以使用相同的地址。不奇怪,因?yàn)檗D(zhuǎn)換

7、后的物理地址并非相同的。——可以把連接后的程序反編譯看一下,發(fā)現(xiàn)連接器已經(jīng)為程序分配了一個(gè)地址,例如,要調(diào)用某個(gè)函數(shù)A,代碼不是callA,而是call0x0811111111,也就是說,函數(shù)A的地址已經(jīng)被定下來了。沒有這樣的“轉(zhuǎn)換”,沒有虛擬地址的概念,這樣做是根本行不通的。打住了,這個(gè)問題再說下去,就收不住了。邏輯地址(logicaladdress)Intel為了兼容,將遠(yuǎn)古時(shí)代的段式內(nèi)存管理方式保留了下來。邏輯地址指的是機(jī)器語言指令中,用來指定一個(gè)操作數(shù)或者是一條指令的地址。以上例,我們說的連接器

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。