精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人在线二区| 国产成人久久久久| se69色成人网wwwsex| 国产三级精品三级在线专区| 国产精品狼人色视频一区| 熟女少妇内射日韩亚洲| 懂色aⅴ精品一区二区三区| 亚洲欧洲国产日韩| 国产亚洲精品久久飘花| 亚洲国产精品无码久久久| 97欧美在线视频| 精品国产一区二区三区av性色| 亚洲国产成人精品无码区99| av网在线观看| 丁香网亚洲国际| 国产精品草莓在线免费观看| 亚洲综合自拍网| 亚洲国产一区二区久久| 亚洲国产乱码最新视频| 日韩精品久久久| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 天堂成人国产精品一区| 欧美精品日韩三级| 手机免费看av| 国产精东传媒成人av电影| 欧美性大战久久久| 69sex久久精品国产麻豆| 天堂中文8资源在线8| 99re成人精品视频| 亚洲一区二区久久久久久久| 一级片在线观看免费| 韩日精品视频| 久久九九精品99国产精品| 亚洲国产欧美日韩在线| 日本精品另类| 欧美日韩在线观看视频| 黑人巨茎大战欧美白妇| 成人精品一区二区三区校园激情| 成人精品视频网站| 91黄色精品| 一级黄色片在线播放| 久热精品在线| 欧美综合国产精品久久丁香| 久久久久久久久久久97| 久久久9色精品国产一区二区三区| 亚洲欧美一区二区三区情侣bbw | 三上悠亚亚洲一区| 午夜av一区二区三区| 日韩精品手机在线观看| 欧美a在线看| 日本一区二区三区dvd视频在线| 久久99精品国产一区二区三区| 亚洲成熟女性毛茸茸| 国产一区在线精品| 91情侣偷在线精品国产| 91丨九色丨丰满| 久久国产剧场电影| 国产日韩亚洲欧美| 一本色道久久综合熟妇| 麻豆一区二区三区| 国产欧美在线播放| 国产美女www爽爽爽视频| 久久66热re国产| 国产欧美日韩免费| 亚洲一区中文字幕永久在线| 青青草国产成人99久久| 国产精品亚洲美女av网站| 自拍偷拍校园春色| 日韩精品亚洲一区二区三区免费| 日韩av免费看| 夜夜躁日日躁狠狠久久av| 日韩一区精品视频| 成人免费自拍视频| 性欧美8khd高清极品| 丁香桃色午夜亚洲一区二区三区| 国产精品福利视频| 四季av日韩精品一区| 91丝袜国产在线播放| 另类欧美小说| h视频网站在线观看| 亚洲私人黄色宅男| 无码熟妇人妻av在线电影| xxx性欧美| 色狠狠综合天天综合综合| 天天综合网久久| 精品国产18久久久久久二百| 欧美大片在线观看| 亚洲精品综合在线观看| 日韩欧美高清一区二区三区| 亚洲成人a**站| 欧美特级黄色录像| 68国产成人综合久久精品| 欧美精品www在线观看| 国产www在线| 久久国产乱子精品免费女| 97中文在线观看| 青青草在线视频免费观看| 国产精品视频看| 日本阿v视频在线观看| 性欧美1819sex性高清| 欧美猛男超大videosgay| 欧美丰满熟妇bbb久久久| 亚洲精品中文字幕99999| www国产亚洲精品久久网站| 国产在线视频99| 葵司免费一区二区三区四区五区| 亚洲free性xxxx护士hd| 肉丝一区二区| 亚洲日本va在线观看| 91免费视频网站在线观看| **日韩最新| 亚洲美女www午夜| 欧美日韩偷拍视频| 久久一区二区三区四区五区| 91文字幕巨乱亚洲香蕉| 高清日韩av电影| 亚洲一区视频在线| 一级做a免费视频| 国产剧情在线观看一区| 欧美风情在线观看| 国产又粗又猛视频免费| 91视频xxxx| 免费的av在线| 国模一区二区| 日韩成人中文电影| 免费在线观看日韩| 精品一区二区三区免费毛片爱| 久久av二区| 另类视频在线| 日韩午夜激情av| 国产精品麻豆一区| 日韩成人dvd| 蜜桃999成人看片在线观看| 久久久久亚洲av成人无码电影| 欧美国产三级| 欧美精品在线第一页| 中文字幕av网站| 久久久亚洲精品一区二区三区| 2021狠狠干| 欧美成人资源| 亚洲免费电影在线观看| 一级黄色片国产| 国产污视频在线播放| 欧美变态凌虐bdsm| 精品欧美一区二区久久久久| 久久超级碰视频| 国产精品三级在线观看| 欧洲在线视频一区| 国偷自产一区二区免费视频| 亚洲第一精品夜夜躁人人躁| 澳门黄色一级片| 狠狠色狠狠色合久久伊人| 在线视频国内一区二区| 可以看的av网址| 艳女tv在线观看国产一区| 国产精品爽爽爽爽爽爽在线观看| 国产免费av在线| 91国偷自产一区二区开放时间 | 成人性生交大片| 9色视频在线观看| 粉嫩一区二区| 亚洲人免费视频| 国产成人在线观看网站| 日本在线不卡一区| 亚洲欧美影院| 日韩中文影院| 亚洲欧美日韩网| 在线免费看av片| 综合久久久久综合| 中文字幕1区2区| 亚洲美女一区| 波多野结衣一区二区三区在线观看| 黄色网址视频在线观看| 91精品久久久久久久99蜜桃| 欧美日韩中文字幕在线观看| 国产成人啪免费观看软件| 免费超爽大片黄| 久草精品在线| 成人亲热视频网站| 久久电影网站| 亚洲网在线观看| 91欧美日韩麻豆精品| 一区二区三区高清| jizz欧美性20| 九九国产精品视频| 秋霞无码一区二区| jizzjizz欧美69巨大| 91精品国产综合久久香蕉| 伊人影院在线视频| 精品视频在线播放免| 中文字幕av第一页| 玉足女爽爽91| 四虎影成人精品a片| 美女一区二区三区在线观看| 国产精品一二三在线观看| 欧美深夜视频| 91免费综合在线| 国产美女高潮在线| 日韩在线观看精品| 四虎在线观看| 日韩一区二区在线观看| 中文字幕精品三级久久久| 中文字幕亚洲一区二区av在线| 久久久久久久穴| 男男成人高潮片免费网站| 国产精品无码电影在线观看| 欧美影院三区| 超碰97网站| 日韩成人综合网站| 奇米四色中文综合久久| 制服丝袜在线播放| 国产一区二区三区免费视频| 性生活视频软件| 欧美色大人视频| 亚洲黄色三级视频| 亚洲欧美日韩在线不卡| 色婷婷av777| www.亚洲国产| 91福利视频免费观看| 日本欧洲一区二区| 各处沟厕大尺度偷拍女厕嘘嘘| 亚洲精品tv久久久久久久久久| 欧美成人综合一区| 欧美18xxxx| 福利视频一区二区三区| 国产原创一区| 国产成人中文字幕| 高清在线视频不卡| 久久99热这里只有精品国产 | 久久综合九色欧美综合狠狠| 人妻体体内射精一区二区| 蜜桃久久久久久久| 欧美日韩中文在线视频| 亚洲欧洲另类| 女人被男人躁得好爽免费视频| 成人在线一区| 日本不卡一区二区三区在线观看| 国产毛片久久久| 97久久精品午夜一区二区| 日韩欧美激情| 国产在线日韩在线| 国产成人毛片| 国产欧美日韩视频| 少妇精品视频在线观看| 国产乱肥老妇国产一区二| 亚洲精品一级二级| 欧美最猛性xxxxx(亚洲精品)| 国产精品蜜芽在线观看| 97精品久久久| 精精国产xxxx视频在线播放| 国产69精品久久久| 97人人爽人人澡人人精品| 九九热99久久久国产盗摄| 伊人222成人综合网| 欧美高清激情视频| 大香伊人久久| 91高潮精品免费porn| 超碰aⅴ人人做人人爽欧美| 91国产精品91| 欧美大片免费观看网址| 国产不卡一区二区在线播放| 美女一区网站| 国产精品福利网| 精品美女一区| 亚洲一区二区日本| 国产精品一区二区中文字幕| 精品国产一区二区三区免费 | 免费观看成人性生生活片| 国产精品99蜜臀久久不卡二区| 欧美大片1688网站| 成人淫片在线看| 中文在线免费一区三区| 国产一区视频观看| 久久99青青| 在线观看欧美亚洲| 国产一区二区中文| 国产资源在线视频| 日本特黄久久久高潮| 亚洲制服在线观看| av不卡在线播放| 摸摸摸bbb毛毛毛片| 亚洲视频一二三| 日本在线视频中文字幕| 色狠狠一区二区三区香蕉| 国产精品视频第一页| 亚洲精品一区二区三区蜜桃下载| 男女网站在线观看| 欧美成人精品影院| 国模套图日韩精品一区二区| 91精品视频网站| 日韩a级大片| 中文字幕久久综合| 一区二区三区四区五区精品视频| 日本 片 成人 在线| 成人高清av在线| 色www亚洲国产阿娇yao| 亚洲国产精品尤物yw在线观看| 69视频免费看| 欧美成人艳星乳罩| 成人亚洲性情网站www在线观看| 日韩在线观看av| 欧美日韩电影免费看| 3d动漫啪啪精品一区二区免费| 欧美在线导航| 特级西西人体www高清大胆| 日韩—二三区免费观看av| 1314成人网| 国产无遮挡一区二区三区毛片日本| 男人av资源站| 色久优优欧美色久优优| 欧美一区二区公司| www日韩欧美| 色8久久影院午夜场| 国产在线精品二区| 欧美福利视频| 奇米视频7777| 久久一区二区三区四区| 国产一级二级三级| 欧美裸体bbwbbwbbw| 久草视频在线看| 91精品国产高清久久久久久久久| 久久久久久爱| 在线视频不卡国产| 日本女人一区二区三区| 国产成人无码一区二区在线观看| 亚洲精品免费播放| 一级做a爰片久久毛片16| 亚洲一区第一页| 一区一区三区| 精品免费视频123区| 激情综合激情| 娇妻高潮浓精白浆xxⅹ| 亚洲黄色尤物视频| 国产三级精品在线观看| 爱福利视频一区| 日韩欧美激情| 一区在线电影| 蜜臀av一级做a爰片久久| 国产综合精品在线| 欧美午夜电影在线| 瑟瑟在线观看| 欧美整片在线观看| 亚洲8888| 国产xxxxx在线观看| 26uuu国产在线精品一区二区| 日韩精品在线不卡| 亚洲激情视频网站| 日韩理论视频| 免费在线成人av| 久久综合亚州| www中文在线| 欧美久久久久久久久久 | 性色av一区二区三区| 91在线一区| 蜜桃传媒一区二区三区| 91亚洲国产成人精品一区二三| 国产 日韩 欧美 在线| 日韩成人黄色av| 亚洲精品国产精品国产| 欧美高清视频一区二区三区在线观看 | 殴美一级特黄aaaaaa| 久久久噜噜噜久噜久久| 日韩深夜福利| 黄色一级二级三级| 国产精品乱码一区二三区小蝌蚪| 91国产精品一区| 欧美日韩国产成人在线观看| 亚洲精选av| 中文字幕无码精品亚洲35| 久久久久久久久久电影| 中文字幕乱码一区二区| 久久亚洲精品成人| 99久久香蕉| 国产精品wwwww| 国产精品久久久久影院亚瑟 | 精品999久久久| 欧美大胆a人体大胆做受| 日韩av高清| 国产麻豆一精品一av一免费 | 欧美性受极品xxxx喷水| 老司机精品视频在线观看6| 成人做爰66片免费看网站| 99精品欧美| 林心如三级全黄裸体| 日韩精品一区二区三区老鸭窝 | 久久久久久久久久久久久久久久久久 | 亚洲综合不卡| 美国一级黄色录像| 日韩精品一区二区三区在线| 久久sese| 四虎精品欧美一区二区免费| 91亚洲精品一区二区乱码| 亚洲天堂久久久久| 91国产美女视频| 天天操夜夜操国产精品| av网站有哪些| 日韩午夜在线影院| 欧美日韩免费观看视频| 国产精品国三级国产av| 中文字幕欧美日韩一区|