linux 0.11 記憶體位址空間概念

來源:互聯網
上載者:User

Linux 0.11 核心中,在進行地址映射操作時,我們需要首先分清3 種地址以及它們之間的變換概念:
a. 程式(進程)的虛擬和邏輯地址;b. CPU 的線性地址;c. 實際實體記憶體地址。
虛擬位址(Virtual Address)是指由程式產生的由段選擇符和段內位移地址兩個部分組成的地址。
因為這兩部分組成的地址並沒有直接用來訪問實體記憶體,而是需要通過分段地址變換機制處理或映射後才
0 640K 1M
核心模組 高速緩衝區
虛擬盤主記憶體區
顯存和BIOS ROM
對應到實體記憶體地址上,因此這種地址被稱為虛擬位址。虛擬位址空間由GDT 映射的全域地址空間和由LDT
映射的局部地址空間組成。選擇符的索引部分由13 個位元位表示,加上區分GDT 和LDT 的1 個位元位,
因此Intel 80X86 CPU 共可以索引16384 個選擇符。若每個段的長度都取最大值4G,則最大虛擬位址空間
範圍是16384 * 4G = 64T。
邏輯地址(Logical Address)是指由程式產生的與段相關的位移地址部分。在Intel 保護模式下即
是指程式執行程式碼片段限長內的位移地址(假定程式碼片段、資料區段完全一樣)。應用程式員僅需與邏輯地址打
交道,而分段和分頁機制對他來說是完全透明的,僅由系統編程人員涉及。
線性地址(Linear Address)是邏輯地址到物理地址變換之間的中介層,是處理器可定址的記憶體空間
(稱為線性地址空間)中的地址。程式碼會產生邏輯地址,或者說是段中的位移地址,加上相應段的基
地址就產生了一個線性地址。如果啟用了分頁機制,那麼線性地址可以再經變換以產生一個物理地址。若
沒有啟用分頁機制,那麼線性地址直接就是物理地址。Intel 80386 的線性地址空間容量為4G。
物理地址(Physical Address)是指出現在CPU 外部地址匯流排上的定址實體記憶體的地址訊號,是地址
變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成物理地址。
如果沒有啟用分頁機制,那麼線性地址就直接成為物理地址了。
虛擬記憶體(Virtual Memory)是指電腦呈現出要比實際擁有的記憶體大得多的記憶體量。因此它允許程
序員編製並運行比實際系統擁有的記憶體大得多的程式。這使得許多大型項目也能夠在具有有限記憶體資源的
系統上實現。一個很恰當的比喻是:你不需要很長的軌道就可以讓一列火車從上海開到北京。你只需要足
夠長的鐵軌(比如說3 公裡)就可以完成這個任務。採取的方法是把後面的鐵軌立刻鋪到火車的前面,只
要你的操作足夠快並能滿足要求,列車就能象在一條完整的軌道上運行。這也就是虛擬記憶體管理需要完成
的任務。在Linux 0.11 核心中,給每個程式(進程)都劃分了總容量為64MB 的虛擬記憶體空間。因此程式
的邏輯位址範圍是0x0000000 到0x4000000。
有時我們也把邏輯地址稱為虛擬位址。因為與虛擬記憶體空間的概念類似,邏輯地址也是與實際物理內
存容量無關的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.