linux內存虛擬地址映射物理地址
Linux 內核給每個進程都提供了一個獨立的虛擬地址空間,并且這個地址空間是連續(xù)的。虛擬地址空間的內部又被分為內核空間和用戶空間兩部分。不同字長(也就是單個 CPU 指令可以處理數(shù)據(jù)的最大長度)的處理器,地址空間的范圍也不同。
其中,所有進程的內核空間,關聯(lián)的都是相同的物理內存。進程切換到內核態(tài)后,才可以訪問內核空間內存。我們下面說到的分段只針對用戶空間。
有兩種方式管理虛擬地址與物理地址之間的關系。
1、段式管理(Segment):由段選擇子和段內偏移量找到物理地址。
用戶空間從低地址到高地址分別是五種不同的內存段。
代碼段(只讀段),包括代碼和常量等。
數(shù)據(jù)段,包括全局變量等。
堆,包括動態(tài)分配的內存,從低地址開始向上增長。
文件映射段,包括動態(tài)庫、共享內存等,從高地址開始向下增長。(本圖沒有畫出)
棧,包括局部變量和函數(shù)調用的上下文等。棧的大小是固定的,一般是 8 MB。
分段容易出現(xiàn)碎片,內存交換效率低(不容易換出到磁盤)的問題。為了解決這兩個問題,就出現(xiàn)了內存分頁。
2、頁式管理(Paging):虛擬地址分為兩部分,頁號和頁內偏移。
MMU 規(guī)定了一個內存映射的最小單位,也就是頁,通常是 4 KB 大小。為了解決頁表項過多的問題,有多級頁表和大頁兩種方式。
并不是給進程的所有的虛擬內存都會分配物理內存,只有那些實際使用的虛擬內存才分配物理內存。這叫程序的局部性原理。根據(jù)此原理,為了提高訪問速度,MMU(Memory Manage Unit)里配有一個硬件:TLB(Translation Lookaside Buffer)。用于緩存進程常用頁表。
內存分段和內存分頁并不是對立的,他們組合起來使用,通常稱為段頁式內存管理。
程序所使用的地址,稱為邏輯地址;
通過段式內存管理映射的地址,稱為虛擬地址(線性地址);
通過頁式內存管理將線性地址映射成物理地址。

請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
-
10月23日火熱報名中>> 2025是德科技創(chuàng)新技術峰會
-
10月23日立即報名>> Works With 開發(fā)者大會深圳站
-
10月24日立即參評>> 【評選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評選
-
即日-11.25立即下載>>> 費斯托白皮書《柔性:汽車生產未來的關鍵》
-
11月27日立即報名>> 【工程師系列】汽車電子技術在線大會
-
12月18日立即報名>> 【線下會議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產業(yè)大會
-
10 大模型的盡頭是開源
- 1 特斯拉工人被故障機器人打成重傷,索賠3.6億
- 2 【行業(yè)深度研究】退居幕后四年后,張一鳴終于把算法公司變成AI公司?
- 3 人形機器人廠商,正在批量復刻宇樹G1
- 4 AI 時代,阿里云想當“安卓” ,那誰是“蘋果”?
- 5 華為公布昇騰芯片三年計劃,自研HBM曝光
- 6 硬剛英偉達!華為發(fā)布全球最強算力超節(jié)點和集群
- 7 機器人9月大事件|3家國產機器人沖刺IPO,行業(yè)交付與融資再創(chuàng)新高!
- 8 谷歌“香蕉”爆火啟示:國產垂類AI的危機還是轉機?
- 9 00后華裔女生靠兩部AI電影狂賺7.8億人民幣,AI正式進軍好萊塢
- 10 美光:AI Capex瘋投不止,終于要拉起存儲超級周期了?