亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

linux虛擬內存管理簡要總結

系統 2283 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條評論
主站蜘蛛池模板: 午夜性福 | 四虎永久在线精品国产 | 日一级片 | 奇米视频在线观看 | www.免费黄色 | 夜色私人影院永久入口 | 国产精品一区牛牛影视 | 午夜国产在线 | 香蕉视频免费看 | 久久9966精品国产免费 | 99久久精品国产高清一区二区 | 日本毛片在线看 | 亚洲女人逼 | 久久www免费人成高清 | 久久免费激情视频 | 国产免费变态视频网址网站 | 黄视频在线观看www 黄视频在线观看网站 | 久久久一级 | 日本黄色绿像 | 一级毛毛片 | 老子午夜伦影理论片 | 中文字幕亚洲综合久久菠萝蜜 | 国产a v高清一区二区三区 | 欧美伦理一区二区三区 | 四虎国产精品永久地址49 | 国产综合久久一区二区三区 | jizz成熟丰满中国妇女 | 亚洲日韩中文字幕一区 | 免费一级成人毛片 | 福利视频中文在线观看 | 97影院理论午夜论不卡 | 国产美女久久久久久久久久久 | 亚洲国产成人综合 | www.青草视频| 欧美人成一本免费观看视频 | 日韩欧美一区二区精品久久 | 在线视频 国产交换 | 真人毛片免费拍拍拍aa视频 | 欧美精品v欧洲精品 | 99热这里只有精品在线 | 成人精品一区二区www |