精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux內核頁表管理-那些鮮為人知的秘密

系統 Linux
通用操作系統,通常都會開啟mmu來支持虛擬內存管理,而頁表管理是在虛擬內存管理中尤為重要,本文主要以回答幾個頁表管理中關鍵性問題來解析Linux內核頁表管理,看一看頁表管理中那些鮮為人知的秘密。

[[398322]]

本文轉載自微信公眾號「Linux內核遠航者」,作者Linux內核遠航者。轉載本文請聯系Linux內核遠航者公眾號。

1.開場白

  • 環境:
  • 處理器架構:arm64
  • 內核源碼:linux-5.11
  • ubuntu版本:20.04.1
  • 代碼閱讀工具:vim+ctags+cscope

通用操作系統,通常都會開啟mmu來支持虛擬內存管理,而頁表管理是在虛擬內存管理中尤為重要,本文主要以回答幾個頁表管理中關鍵性問題來解析Linux內核頁表管理,看一看頁表管理中那些鮮為人知的秘密。

2.頁表的作用是什么?

1)地址轉換

將虛擬地址轉換為物理地址

2)權限管理

管理cpu對物理頁的訪問,如讀寫執行權限

3)隔離地址空間

隔離各個進程的地址空間,使其互不影響,提供系統的安全性

打開mmu后,對沒有頁表映射的虛擬內存訪問或者有頁表映射但是沒有訪問權限都會發生處理器異常,內核選擇殺手或者panic;通過頁表給一段內存設置用戶態不可訪問, 這樣可以做到用戶態的用戶進程不能訪問內核地址空間的內容;而由于用戶進程直接各有一套自己的頁表,所以彼此看不到對方的地址空間,更別提訪問,造成每個進程都認為自己擁有所有虛擬內存的錯覺;通過頁表給一段內存設置只讀屬性,那么就不容許修改這段內存內容,從而保護了這段內存不被改寫;對應用戶進程地址空間映射的物理內存,內核可以很方便的進行頁面遷移和頁面交換,而對使用虛擬地址的用戶進程來說是透明的;通過頁表,很容易實現內存共享,使得一份共享庫很多進程都可以映射到自己地址空間使用;通過頁表,可以小內存加載大應用程序運行,在運行時按需加載和映射...

3.頁表的存放在哪?

頁表存放在物理內存中,打開mmu之后,如果需要修改頁表,需要將頁表所在的物理地址映射到虛擬地址才能訪問頁表(如內核初始化后會將物理內存線性映射,這樣通過物理地址和虛擬地址的偏移就可以獲得頁表物理地址對應的虛擬地址)。

4. 頁表項中存放是虛是實?

頁表基地址和各級頁表項中存放的都是物理地址,而不是虛擬地址。

5. 開啟mmu后地址轉換過程?

虛擬地址轉換物理地址的過程:打開mmu后,cpu訪問的都是虛擬地址,當cpu訪問一個虛擬地址的時候,會通過cpu內部的mmu來查詢物理地址,mmu首先通過虛擬地址在tlb中查找,如果找到相應表項,直接獲得物理地址;如果tlb沒有找到,就會通過虛擬地址從頁表基地址寄存器保存的頁表基地址開始查詢多級頁表,最終查詢到找到相應表項,會將表項緩存到tlb中,然后從表項中獲得物理地址。

6. Linux內核為何使用多級頁表?

1)使用一級頁表結構優劣:

優勢:

只需要2次訪問內存(一次訪問頁表,一次訪問數據),效率高,實現簡單

劣勢:

需要連續的大塊內存存放每個進程的頁表(如32位系統每個進程需要4M頁表),浪費內存,虛擬內存越大頁表越大,內存碎片化的時候很難分配到連續大塊內存,大多數虛擬內存并沒有使用。

2)使用多級頁表結構優劣:

優勢:

1.節省內存

2.可以按需分配各級頁表

3.可以離散存儲頁表

劣勢:

需要遍歷多級頁表,需要多次訪問內存,實現復雜度高點

3)Linux內核綜合考慮:

典型的以時間換空間,可以將各級頁表放到物理內存的任何地方,無論是硬件遍歷還是內核遍歷,比一級頁表更復雜,但是為了節省內存,內核選擇多級頁表結構。

7.減小多級頁表遍歷的優化?

1)mmu中添加tlb

來緩存最近訪問的頁表表項,根據程序的時間和空間的局部性原理,tlb能有很高的命中率。

2)使用巨型頁

減少訪存次數(如使用1G或2M巨型頁),可以減少tlb miss和缺頁異常。

8. 硬件做了哪些事情?

遍歷頁表,將va轉換為pa,頁面權限管理

涉及到的硬件為:

mmu

->功能:查詢tlb或者遍歷頁表

tlb

->功能:緩存最近轉換的頁表條目

頁表基地址寄存器 如ttbr0_el1 ttbr1_el1

->功能:存放頁表基地址(物理地址)作為mmu遍歷多級頁表的起點

mmu進行多級頁表遍歷時當發現虛擬地址的最高bit為1時使用 ttbr0_el1作為遍歷起點,最高bit為0時使用 ttbr1_el1作為遍歷起點。

9. 軟件做了哪些事情?

1)應用程序

訪問虛擬內存即可如執行指令、讀寫內存, 沒有權限管理頁表

不管虛擬內存如何轉換為物理內存,對應用來說透明。

2)Linux內核

填寫頁表,將頁表基地址告訴mmu

內核初始化建立內核頁表,實現缺頁異常等機制為用戶任務按需分配并映射頁表。

當然,內核也可以遍歷頁表,如缺頁異常時遍歷進程頁表。

10. 內核中涉及到的頁表基地址?

內核:

idmap_pg_dir 恒等映射頁表(va=pa 映射2M)

init_pg_dir 粗粒度內核頁表

swapper_pg_dir 主內核頁表

用戶:

tsk->mm->pgd 用戶進程fork的時候分配私有的pgd頁,用于保存pgd表項(僅僅分配了第一級頁表)。

11. 頁表填寫/切換時機

1)內核頁表填充

內核初始化過程:

物理地址 -> 恒等映射(建立恒等映射頁表和粗粒度內核頁表) ->打開mmu -> paging_init(建立細粒度的內核頁表和內存線性映射) -> ...

恒等映射階段:

將恒等映射頁表idmap_pg_dir 地址保存到ttbr0_el1

將 粗粒度內核頁表init_pg_dir 地址保存到ttbr1_el1

paging_init階段:

將內核主頁表swapper_pg_dir 地址保存到ttbr1_el1

paging_init之后丟棄idmap_pg_dir 和init_pg_dir 頁表的使用。

2)用戶頁表填充

訪問時缺頁填充:

用戶進程訪問已經申請的虛擬內存時,發生缺頁,缺頁處理程序中為進程分配各級頁表等物理頁并建立頁表映射關系。

進程切換時切換進程頁表:

switch_mm的時候切換tsk->mm->pgd到ttbr0_el1以及asid 到ttbr1_el1,從而完成了進程地址空間切換。

12.頁表遍歷過程

下面以arm64處理器架構多級頁表遍歷作為結束(使用4級頁表,頁大小為4K):

Linux內核中 可以將頁表擴展到5級,分別是頁全局目錄(Page Global Directory, PGD), 頁4級目錄(Page 4th Directory, P4D), 頁上級目錄(Page Upper Directory, PUD),頁中間目錄(Page Middle Directory, PMD),直接頁表(Page Table, PT),而支持arm64的linux使用4級頁表結構分別是 pgd, pud, pmd, pt ,arm64手冊中將他們分別叫做L0,L1,L2,L3級轉換表,所以一下使用L0-L3表示各級頁表。

tlb miss時,mmu會進行多級頁表遍歷遍歷過程如下:

1.mmu根據虛擬地址的最高位判斷使用哪個頁表基地址寄存器作為起點:當最高位為0時,使用ttbr0_el1作為起點(訪問的是用戶空間地址);當最高位為1時,使用ttbr1_el1作為起點(訪問的是內核空間地址) mmu從相應的頁表基地址寄存器中獲得L0轉換表基地址。

2.找到L0級轉換表,然后從虛擬地址中獲得L0索引,通過L0索引找到相應的表項(arm64中稱為L0表描述符,內核中叫做PGD表項),從表項中獲得L1轉換表基地址。

3.找到L1級轉換表,然后從虛擬地址中獲得L1索引,通過L1索引找到相應的表項(arm64中稱為L1表描述符,內核中叫做PUD表項),從表項中獲得L2轉換表基地址。

4.找到L2級轉換表,然后從虛擬地址中獲得L2索引,通過L2索引找到相應的表項(arm64中稱為L2表描述符,內核中叫做PUD表項),從表項中獲得L3轉換表基地址。

5.找到L3級轉換表,然后從虛擬地址中獲得L3索引,通過L3索引找到頁表項(arm64中稱為頁描述符,內核中叫做頁表項)。

6.從頁表項中取出物理頁幀號然后加上物理地址偏移(VA[11,0])獲得最終的物理地址。

 

 

責任編輯:武曉燕 來源: Linux內核遠航者
相關推薦

2015-08-18 10:57:52

機房制冷數據中心

2015-06-09 11:12:31

Swift語言Swift特性

2024-04-30 08:32:18

CSS元素網格

2023-12-06 08:46:20

CSSFlex內幕

2020-03-27 22:33:30

JavaScript運算符逗號

2017-11-08 14:55:16

Linux命令sudo

2010-01-07 10:05:51

IT顧問特質

2024-09-26 16:28:42

Pythonif代碼

2017-12-12 12:35:07

云安全云服務安全

2017-12-22 11:05:28

云技術混合云信息化

2025-01-26 10:35:42

Go語言類型

2009-02-09 10:09:38

2014-04-22 16:38:12

GitHubGitHub 使用技巧

2012-11-22 13:02:53

2015-03-04 09:30:34

數據庫

2011-05-03 13:13:52

編程PHPJava

2013-07-15 09:14:00

2013-11-19 11:59:49

Linux命令Shell腳本

2012-07-12 15:04:56

Windows 7操作系統

2012-05-07 14:13:02

Evernote創業故事
點贊
收藏

51CTO技術棧公眾號

免费高清在线观看免费| 精品国产免费一区二区三区| 三级黄色在线观看| jizz国产精品| 91福利精品第一导航| 宅男一区二区三区| 好吊视频一二三区| 蜜桃视频一区二区三区 | 444亚洲人体| 成人精品免费在线观看| 欧美wwwww| 日韩大陆欧美高清视频区| 色91精品久久久久久久久| jizzjizz中国精品麻豆| 国产精品久久久久久久浪潮网站| 国产精品久久精品视| 中文字幕第99页| 亚洲影院免费| 欧美极品美女视频网站在线观看免费| 谁有免费的黄色网址| 红杏aⅴ成人免费视频| 欧美精品在线视频| 十八禁视频网站在线观看| 国产精品69xx| 亚洲视频中文字幕| 日韩高清av| 五月婷婷丁香网| 国产激情91久久精品导航 | 国产**成人网毛片九色| 国产精品美女主播在线观看纯欲| 久久精品人妻一区二区三区| 99精品在线| 伊人久久五月天| 老牛影视av老牛影视av| 美女视频亚洲色图| 亚洲国产成人精品一区二区| 超碰91在线播放| 日本a人精品| 欧美性高清videossexo| 免费观看成人网| 不卡av播放| 欧美日韩国产一区二区| 霍思燕三级露全乳照| 少妇视频在线| 亚洲精品国产一区二区精华液| 一区二区视频国产| 中文字幕日本在线| 中文字幕av一区二区三区| 另类小说综合网| 同心难改在线观看| gogogo免费视频观看亚洲一| 国产chinese精品一区二区| 99视频在线观看免费| 久久福利视频一区二区| 91精品久久久久久久久久| 中日精品一色哟哟| 卡一卡二国产精品| 成人免费高清完整版在线观看| 国产精品无码粉嫩小泬| 日韩福利视频网| 国产精品嫩草视频| 亚洲一级av毛片| 久久99精品国产麻豆婷婷洗澡| 国产日韩专区在线| 99国产成人精品| 国产福利91精品| 国产日韩二区| 欧美在线观看在线观看| 久久精品无码一区二区三区| 神马欧美一区二区| 高h视频在线观看| 亚洲一区在线观看视频| 欧美 日韩 国产在线观看| 九色porny丨首页入口在线| 日韩欧美一区二区在线| 日韩一级理论片| 日本精品裸体写真集在线观看| 欧美性xxxxxx少妇| 欧美视频亚洲图片| 久久久久观看| 在线播放国产精品| www青青草原| 99在线精品免费视频九九视 | 国产婷婷色一区二区在线观看| 肉丝袜脚交视频一区二区| 国产在线精品播放| 天天爱天天干天天操| 久久精品亚洲麻豆av一区二区| 亚洲欧美日韩国产成人综合一二三区| 国产精品久久麻豆| 大伊人狠狠躁夜夜躁av一区| 色悠悠久久综合网| 超碰精品在线| 一夜七次郎国产精品亚洲| 欧美成人精品欧美一级私黄| 久久国产日本精品| 91久久在线观看| 三级视频在线播放| 亚洲色图在线看| 妺妺窝人体色www在线小说| 国产成人福利夜色影视| 亚洲成人av片| 懂色av粉嫩av蜜臀av一区二区三区| 欧美日韩免费| 国产精品久久久久久久久久三级 | 久久久蜜桃精品| 老司机av福利| 亚洲精品一级二级| 精品国产一区二区三区av性色| 成人午夜剧场视频网站| 欧美激情五月| 日本一区二区在线免费播放| 亚洲国产www| 中文字幕一区免费在线观看| 日韩黄色片视频| 日韩精品视频一区二区三区| 在线中文字幕日韩| 国产成人免费观看视频 | 人妻熟人中文字幕一区二区| 亚洲精品日韩久久| 亚洲一区中文字幕在线观看| 都市激情一区| 日韩欧美在线免费| 无码人妻精品一区二区三区99不卡| 91偷拍一区二区三区精品| 日本精品久久久| 污污网站在线免费观看| 一区二区三区四区在线| 午夜视频在线网站| 日本一区二区三区视频| 日本视频久久久| 神马午夜一区二区| 亚洲 欧美综合在线网络| 免费看的av网站| 仙踪林久久久久久久999| 国产日韩精品一区二区| 懂色一区二区三区| 欧洲精品视频在线观看| 国产男男chinese网站| 中文欧美日韩| 精品国产综合久久| 99在线视频影院| 精品国产三级电影在线观看| 强乱中文字幕av一区乱码| 国产米奇在线777精品观看| 亚洲蜜桃av| 亚洲一区二区av| 久久精品欧美视频| 97人妻精品一区二区三区视频 | 日韩精品视频在线观看视频| 视频一区在线| 久久理论片午夜琪琪电影网| 成人精品在线播放| 午夜电影久久久| 亚洲第九十七页| 妖精视频成人观看www| 久草热久草热线频97精品| 黑森林国产精品av| 精品亚洲一区二区三区四区五区| 久久国产视频一区| 国产免费成人在线视频| 在线能看的av网站| 91精品在线观看国产| 91免费看网站| 超碰在线视屏| 国产亚洲精品日韩| 91成年人视频| 亚洲综合色自拍一区| youjizz.com国产| 亚洲一区免费| 亚洲三区在线| 精品欧美视频| 992tv成人免费影院| 国产福利在线观看| 欧美一区二区三区的| 日本少妇bbwbbw精品| www国产精品av| 亚洲免费黄色网| 亚洲欧美亚洲| 欧美日韩精品久久| 国产精品成人3p一区二区三区| 欧美日本亚洲视频| 亚洲av成人精品日韩在线播放| 在线观看日韩电影| 麻豆视频在线免费看| 91丨国产丨九色丨pron| 免费看污污网站| 欧美日韩蜜桃| 亚洲电影免费| 国产成人夜色高潮福利影视| 国产精品成人久久久久| 99在线播放| 亚洲性xxxx| xxxx国产精品| 欧美性感一区二区三区| 国产第一页在线播放| 欧美激情一区二区三区全黄| 久久久久中文字幕亚洲精品| 日本视频在线一区| 国产又粗又猛又爽又黄的网站| 一本色道久久综合狠狠躁的番外| 91系列在线播放| av日韩亚洲| 欧美激情按摩在线| 搞黄视频在线观看| 亚洲激情在线观看| 国产精品国产av| 色香蕉久久蜜桃| 精国产品一区二区三区a片| 久久精品无码一区二区三区| 久草免费资源站| 国产在线不卡一区| 北条麻妃视频在线| 国产精品毛片在线看| 日韩精品久久一区二区| 久久福利综合| 亚洲 日韩 国产第一区| 亚洲人成精品久久久 | 性久久久久久久久| 婷婷激情四射网| 亚洲国产精品黑人久久久| 成年人网站免费在线观看| 国产91对白在线观看九色| 思思久久精品视频| 蜜臀av性久久久久蜜臀aⅴ| jizzjizzxxxx| 国产欧美大片| 国产伦精品一区二区三区四区视频_| 伊人久久大香线| 99精品视频网站| 91亚洲国产成人久久精品| 欧洲久久久久久| 伊甸园亚洲一区| 精品视频导航| 日韩精品欧美大片| 久久99精品久久久水蜜桃| 欧美人妖在线观看| 精品免费视频123区| 开心激情综合| 久久超碰亚洲| 蜜桃国内精品久久久久软件9| 国产在线资源一区| 麻豆精品av| 欧美精品久久| 奇米影视亚洲| 一区二区三区四区视频在线| 99久久婷婷| 久久久成人精品一区二区三区| 欧美大片aaaa| 国产又粗又长又爽视频| 中文字幕免费精品| 久久亚洲a v| 9色精品在线| 日本精品一区在线观看| 久久免费黄色| 欧美激情精品久久久久久小说| 日韩在线播放一区二区| 亚洲一区二区三区四区五区xx| 日韩av网站在线观看| 国产v亚洲v天堂无码久久久| 免费在线成人网| 中文字幕1234区| 国产成人精品免费一区二区| 亚洲精品乱码久久久久久蜜桃图片| 97精品国产露脸对白| 亚洲天堂久久新| 国产精品女主播在线观看| 日本少妇aaa| 亚洲亚洲人成综合网络| 国产又黄又猛又粗又爽| 欧美性猛片xxxx免费看久爱| 99热精品在线播放| 亚洲第一福利网| 狠狠色伊人亚洲综合网站l | 黄色软件视频在线观看| 日本国产高清不卡| 国产精品亚洲欧美日韩一区在线| 国产v亚洲v天堂无码| 九九在线高清精品视频| 老汉色影院首页| 亚洲欧美成人| 日韩精品视频网址| 91亚洲大成网污www| 国产探花视频在线| 亚洲午夜久久久久久久久电影院| 欧美特黄aaaaaa| 欧美老肥妇做.爰bbww| 国精产品一品二品国精品69xx| 亚洲跨种族黑人xxx| 调教视频免费在线观看| 午夜精品美女自拍福到在线| 国外成人福利视频| 国产一区国产精品| 97国产成人高清在线观看| 国产不卡一区二区视频| 麻豆成人av在线| 欧美 变态 另类 人妖| 亚洲日本在线视频观看| 免费黄色网址在线| 日韩午夜三级在线| 福利在线播放| 国产91成人在在线播放| 先锋影音一区二区| 青青草久久网络| 亚洲激情社区| 亚洲成人福利视频| 中文字幕成人网| 亚洲婷婷综合网| 精品国产乱码久久久久久1区2区 | 国产在线中文字幕| 久久久视频精品| 日韩精品久久久久久久软件91| 视频一区二区在线观看| 国产欧美一级| 大桥未久恸哭の女教师| 亚洲欧洲制服丝袜| 免费看av在线| 亚洲欧美成人一区二区在线电影| 男男gaygays亚洲| 亚洲bt天天射| 一本一本久久a久久综合精品| 国产精品欧美激情在线观看| 成人99免费视频| 久久亚洲AV无码| 日韩一区二区三| 福利在线视频网站| 91精品免费久久久久久久久| 欧美一区三区| 成人午夜激情av| 国产农村妇女毛片精品久久麻豆| 国产精品国产三级国产专区52 | av在线三区| 国产成人精品免高潮在线观看| 日韩精品欧美大片| 国产精品欧美激情在线观看| 91丨porny丨首页| 国产成人免费看| 日韩精品久久久久久久玫瑰园 | 欧美丝袜美女中出在线| 神马午夜一区二区| 91国语精品自产拍在线观看性色| 成人看片黄a免费看视频| www.18av.com| 成人午夜碰碰视频| 精品在线视频观看| 亚洲精品av在线| 小视频免费在线观看| 美乳视频一区二区| 天堂久久久久va久久久久| 午夜在线观看一区| 欧美在线免费观看亚洲| 在线播放日本| 91老司机在线| 国内精品福利| 精品夜夜澡人妻无码av| 91成人免费网站| 亚洲天天影视| 91网免费观看| 亚洲乱码视频| 亚洲精品成人无码| 欧美日韩一二三| 在线免费av导航| 精品日韩美女| 欧美a一区二区| 一区视频免费观看| 亚洲成人av资源网| 浪潮色综合久久天堂| 最新精品视频| 成人白浆超碰人人人人| 激情五月婷婷网| 操日韩av在线电影| 国产美女撒尿一区二区| 久久婷婷国产精品| 中文字幕高清一区| 蜜桃视频污在线观看| 国产精品电影观看| 欧美精选一区| 91网站免费入口| 欧美一区二区三区免费视频| 黄色漫画在线免费看| 一区二区不卡在线观看| 丁香婷婷综合色啪| 久久午夜鲁丝片| 欧美激情在线视频二区| 欧美日韩有码| 中文字幕一区二区三区人妻在线视频| 欧美视频免费在线| 精品自拍一区| 久久精品国产精品国产精品污 | 欧美综合激情| 国产高清一区日本| 天天射天天干天天| 欧美高清视频免费观看| 国产乱码精品一区二区亚洲| 一级黄色高清视频| 色哟哟一区二区在线观看 | 亚洲成av人片一区二区梦乃 | 亚洲欧美在线aaa| 嫩草精品影院| 国产精品久久亚洲7777|