linux虚拟内存 ppt,Linux虚拟内存管理基础v2研究报告.ppt
Linux虛擬內存管理基礎v2研究報告.ppt
Linux虛擬內存管理基礎篇
4
用戶地址空間與內核地址空間
Linux將每個進程的4GB的獨立地址空間又劃分為用戶地址空間(0~ 0xBFFFFFFF)和 內核地址空間(0xC0000000 ~ 0xFFFFFFFF)兩部分。
操作系統內核代碼和數據存放在內核地址空間;每個進程自己私有的代碼和數據存放在用戶地址空間
雖然Linux的內核代碼和數據被映射到了每個進程的地址空間中(所有進程看到的內容是相同的),但在實際的物理內存中,只有內核代碼和數據的一份拷貝。
5
用戶地址空間與內核地址空間
用戶態與核心態
一般現代CPU都有幾種不同的指令執行級別
在高執行級別下,代碼可以執行特權指令,訪問任意的物理地址,這種CPU執行級別就對應著內核態
用戶態指相應的低級別執行狀態,代碼的掌控范圍會受到限制,只能執行CPU指令集的一個子集
舉例:intel x86 CPU有四種不同的執行級別0-3,Linux只使用了其中的0級和3級分別來表示內核態和用戶態
0xc0000000以上的內核地址空間只能在內核態下訪問,00xbfffffff的用戶地址空間在兩種狀態下都可以訪問
應用程序可以通過Linux系統調用由用戶態進入內核態
7
邏輯地址與物理地址
邏輯地址:程序在運行過程中用來訪問存儲器的地址。程序員在編程時,只需知道邏輯地址,不需考慮該地址與實際物理硬件上的存儲單元如何對應。編譯器在編譯源程序時,也只需考慮邏輯地址。
物理地址:表示物理存儲器中一個存儲單元的實際位置,地址總線上產生的就是物理地址。(總線地址)
在實地址模式下,邏輯地址等于物理地址。在虛擬地址模式下,邏輯地址不等于物理地址,必須經過查表才能轉換為物理地址,因此也叫虛擬地址。
線性地址:2維邏輯地址變為1維地址后,叫線性地址
物理地址
查表 轉換
邏輯地址
虛擬頁
物理頁
0
3
1
null
2
1
3
null
虛擬頁
物理頁
0
2
1
null
2
1
3
null
虛擬頁
物理頁
0
null
1
null
2
1
3
null
物理頁
taken
進程id
0
N
null
1
Y
os
2
Y
2
3
Y
1
進程 1 的頁表
進程id
虛擬頁
硬盤文件名
偏移量
進程 2 的頁表
進程 3 的頁表
內頁表
外頁表
CR3寄存器
CPU負責查表(虛擬地址->物理地址),查表失敗時觸發缺頁異常(14號);
OS負責填充各個表的內容,并提供缺頁中斷的中斷服務器程序。
9
X86處理器對VM的支持
MMU單元:(1)自動查表,將當期指令中的邏輯地址轉化為物理地址; (2)觸發缺頁異常。
32bitCPU支持2級頁表:頁目錄表,頁表。10+10+12
64bitCPU支持4級頁表:9+9+9+9+12
專用寄存器CR3中存放了當前有效的頁目錄表的物理地址。
專用寄存器CR2用于存放觸發缺頁異常的線性地址。
轉換旁視緩沖區TLB:將常用的邏輯/物理轉換關系緩存到CPU。當頁表被修改,或有效頁表切換時需調用專用指令刷新TLB。
flush_tlb_all, flush_tlb_mm, flush_tlb_range, flush_tlb_page
10
32bit Intel x86的頁表
在32位CPU上,地址空間為2^32,一個內存頁大小為2^12,則共有2^20個頁,頁編號范圍0~2^20-1,因此頁表中的一行至少要用3個字節(存儲頁編號是必須的),但實際上頁表中一行占4個字節。
80386CPU中一個頁表項的定義如下:
Present標志、Accessed標志、Dirty標志、Read/Write標志、User/Supervisor標志、……
如果present標志為0,分頁單元就把這個線性地址存放在處理器的CR2寄存器中,并產生一個14號缺頁異常
11
頁表項或頁目錄項中的標志
Present標志:所指內容是否存在
Accessded標志:所指內容被訪問之后自動置1
Dirty標志:所指內容被修改后自動置1
Read/Write標志:所指內容的讀寫權限
User/Supervisor標志:所指內容的訪問特權要求
PCD/PWT:是否運行被緩存至Cache
PageSize:頁大小:4K,4M,2M
Global標志:防止頁從TLB中刷新出去
12
兩級頁表
為了節省內存,32位CPU采用了兩級頁表
第一級為頁目錄,每個表項存儲了第二級頁表的物理地址。
第二級頁表的每個表項存儲了一個虛擬頁所對應物理頁的物理地址。
32位的虛擬地址被分成3個域
目錄(directory)最高的10位
頁表(Table)中間的10位
頁內偏移量(offset)最低的12位
程序
總結
以上是生活随笔為你收集整理的linux虚拟内存 ppt,Linux虚拟内存管理基础v2研究报告.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: evelom卸妆膏风评那么好?真的有那么
- 下一篇: linux c 如何编译静态库,Linu