作業系統原理 虛擬位址

2021-07-27 08:49:31 字數 1934 閱讀 7718

儲存系統是有層次的,從快到慢依次是:cpu暫存器、靜態sram、動態dram、磁碟。如下圖:

如 inter core i7 儲存結構如下:

i7的儲存架構支援48-bit虛擬位址,52-bit實體地址. page size啟動時可配置 4kb or 4mb, linux使用4kb,4-level page table hierarchy。

在cpu保護模式下,程序使用虛擬位址,這也給每個程序乙個大的、一致的私有的位址空間。虛擬位址也簡化了程式的鏈結與載入,**段、資料段、共享庫總是從相同的虛擬位址開始,執行程式時,execve()呼叫會使核心分配virtual pages給程序,按page從磁碟拷貝**段資料段到記憶體。

位址翻譯分段與分頁相結合,linux更加關注的是分頁機制。linux分段機制使用的很有限,risc架構的cpu就不支援分段機制,並且分段機制也沒有分頁機制更靈活。

邏輯位址-->[segmentation]-->線性位址(虛擬位址)-->[paging]-->實體地址

linux分段機制使用的很有限,邏輯位址與線性位址是一致的。

linux下分段機制使用的很有限,僅僅有四種段:使用者**段、使用者資料段、核心**段、核心資料段。相應的段描述符由巨集__user_cs__user_ds__kernel_cs,和__kernel_ds分別定義,且所有段都從0x00000000開始。

linux使用分頁機制,每個程序都有自己的頁表,任務切換就會有頁表切換,x86下通過修改控制暫存器cr3完成,cr3控制暫存器是pdbr(page-directory base address register),載入程序頁表通過拷貝mm_stuct->pgdcr3暫存器完成。

頁表可以把虛擬位址頁對映為實體地址頁,x86 32位系統的機制大致如下(mit xv6):

為了加快速度,位址翻譯有專門的硬體mmu(memory management unit),mmu中包含了乙個小的pte(page table entry)快取tlb(translation lookaside buffer), 大致工作原理如下圖:

舉個多級頁表的例子,inter i7頁表翻譯,採用了4級頁表,如下圖:

從作業系統的實現看:

還有很多有意思的細節可以看後面的參考資料。

operating systems: three easy pieces

xv6, a ****** unix-like teaching operating system

professional linux kernel architecture

understanding the linux® virtual memory manager

computer systems organization

Tomcat虛擬位址

當不想把jsp程式 網頁等編寫的程式檔案部署在tomcat的根目錄下時,虛擬目錄是最好的選擇。虛擬目錄實際上是在伺服器上做乙個對映,把某個名稱命名的目錄指向另外乙個事實上存在的目錄,這樣可以增強安全性,訪問者並不清楚伺服器是否確實有無目錄,當伺服器某個盤中的空間不夠時,可以把程式部署到另乙個盤中做虛...

虛擬位址空間

當處理器讀或寫入記憶體位置時,它會使用虛擬位址。作為讀或寫操作的一部分,處理器將虛擬位址轉換為實體地址。通過虛擬位址訪問記憶體有以下優勢 程序可用的虛擬位址範圍稱為該程序的 虛擬位址空間 每個使用者模式程序都有其各自的專用虛擬位址空間。對於 32 位程序,虛擬位址空間通常為 2 gb,範圍從 0x0...

虛擬位址空間

14 共 14 對本文的評價是有幫助 評價此主題 程序可用的虛擬位址範圍稱為該程序的 虛擬位址空間 每個使用者模式程序都有其各自的專用虛擬位址空間。對於 32 位程序,虛擬位址空間通常為 2 gb,範圍從 0x00000000 至 0x7fffffff。對於 64 位程序,虛擬位址空間為 8 tb,...