欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

linux虛擬內存管理簡要總結

系統 2084 0

http://blog.csdn.net/gxfan/article/details/3173292

linux內核地址空間與用戶地址空間的差別

本文僅限在i386平臺下討論一般情況。

1、用戶線性地址空間范圍0-3G,內核線性空間范圍3G-4G。
2、內核總是立即滿足內核空間的物理內存分配,并且分配結果對所有進程可見;而對于用戶空間的內存分配請求,linux總是先保留用戶線性地址空間的一段區域,然后修改頁表項使這段線性區域都指向一頁內容全為0的全局只讀物理頁。當進程寫入這段線性區域時,將會產生一個缺頁異常,這時系統才會為對應的線性地址分配物理頁面,并且把物理頁對應的頁表項置為可寫。為了保持和全局只讀物理頁內容一致,新分配的物理頁內容也會全置為0。
3、用戶線性空間是不可靠的,一般情況下它會隨著進程的切換而改變(在lazy TLB切換下除外);而內核線性空間對所有的進程都一樣,不會隨著進程的切換而改變

?

linux虛擬內存管理簡要總結

http://blog.csdn.net/gxfan/article/details/3122489

以下討論僅限 i386 平臺,一般考慮典型情況

  1. linux 內核對整個系統的物理內存是通過類型為 struct page 的數組 mem_map 來管理的。系統中的伙伴系統分配算法最終是通過操作這個數組來記錄物理內存的分配、回收等操作。在這里不要被系統的高端內存、低端內存等概念搞混淆了,高、低端內存的分類主要在于區分物理內存地址是否可以直接映射到 內核線性地址空間 中。

我們知道, linux 的內核地址空間大小為 1G (用戶空間 0~3G ,內核空間 3G~4G ,這種分法最常見),因此如果把這 1G 線性地址空間全部拿來 直接一一映射 物理內存的話,在內核態的所有進程(線程)能使用的物理內存總共最多只有 1G, 為了能使在內核態的所有進程能使用更多的物理內存, linux 采取了一種變通的形式:它將 1G 內核線性地址空間分為幾部分,第一部分為 1G 的前 896M ,這部分內核線性空間與物理內存的 0~896M 一一映射(相差一個為 0xc0000000 的常數),后面 128M 的線性空間拿來動態映射剩下的所有物理內存,由于動態映射的方法不一樣,后面的 128M 又分成了幾個部分,有興趣的可以查看相關資料。在這里,前面 896M 線性空間對應的物理內存就是所謂的低端物理內存,剩下的物理內存就是高端物理內存。

從上面高、低端物理內存命名的由來我們可以知道,高、低端物理內存與具體的內存分配算法無關,它們都是被 mem_map 數組控制起來,再由伙伴分配系統實施管理。

?

  1. 關于進程及其內存分配

首先要明白一個概念:進程中使用的所有地址都是虛地址,在 linux 下這個虛地址就是所謂的線性地址。 linux 中進程可運行在用戶態和內核態,(典型配置情況下)當進程運行在用戶態時,它使用的線性地址只能位于 0~3G 范圍內,當進程運行于內核態時,它使用的線性地址地址范圍為 3G~4G

為了把線性地址轉化為物理地址,每個進程都有自己私有的頁目錄和頁表。 linux 在建立進程頁目錄時,把用戶地址空間的頁目錄項( 0~767 項)清空而將內核頁目錄表( swapper_pg_dir )的第 768 項到 1023 項拷貝到進程的頁目錄表的第 768 項到 1023 項中。由于內核在初始化時也只映射了物理內存的前 896M ,我們可以知道內核也目錄表只能保證第 768 項開始的 224 項中有有效映射。 從這里我們可以知道,所有的進程都共享了其內核線性地址空間

當一個進程在內核空間發生缺頁故障的時候,這主要發生在訪問內核空間動態映射區線性地址,在其處理程序中,就要通過 0 號進程的頁目錄( swapper_pg_dir )來同步本進程的內核頁目錄,實際上就是拷貝 0 號進程的內核頁目錄到本進程中(內核頁表與進程 0 共享,故不需要復制)。如果進程 0 的該地址處的內核頁目錄也不存在,則出錯,具體代碼可以參考 vmalloc 的實現源碼。

當進程運行于用戶態時,若其需要申請內存空間,內核首先會在其用戶線性空間中分配需要的線性地址空間,再通過伙伴分配系統分配物理內存并把分配的物理內存跟用戶空間線性地址映射起來,最后再修改進程的頁目錄項及頁表項寫入這些映射關系。

linux虛擬內存管理簡要總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久国产资源 | 激情久久婷婷 | 91看片在线免费观看 | 免费日韩| 日韩欧美国产精品第一页不卡 | 国产视频资源在线观看 | 久久精品夜夜夜夜夜久久 | 国产精品爱久久久久久久小说 | 国产成人91高清精品免费 | 91在线一区二区三区 | 欧美日韩一本 | 亚洲精品无码不卡在线播放he | 日本成熟视频tube~be | 久久福利青草狠狠午夜 | www.久久久| 亚洲国产一区二区三区四区五区 | 久久伊人精品 | 亚洲欧美视频网站 | 九九九九精品视频在线播放 | 成年人看的羞羞网站 | 久久久久亚洲一区二区三区 | 激情网址在线观看 | 夜夜操天天射 | a毛片在线看免费观看 | 中文在线观看免费视频 | 久久青| 亚洲国产成人久久综合碰 | 97超级碰碰碰视频在线视频观看 | 成人国内精品久久久久影 | 国产精品福利自产拍网站 | 成人网在线观看 | 国产美女久久 | 亚洲精品国产成人无码区A片 | 欧美视频一区二免费视频 | 91免费观看视频 | 天天夜夜操操 | 欧美视频福利 | 欧美污污网站 | jiucao在线看片www | 国产一级毛片高清视频 | 蝌蚪久久窝 |