日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault)

發布時間:2023/12/18 windows 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

淺談操作系統內核的缺頁異常(Page Fault)

缺頁中斷就是要訪問的頁不在主存,需要操作系統將其調入主存后再進行訪問。在這個時候,被內存映射的文件實際上成了一個分頁交換文件。

頁缺失(英語:Page fault,又名硬錯誤、硬中斷、分頁錯誤、尋頁缺失、缺頁中斷、頁故障等),指的是當軟件試圖訪問已映射在虛擬地址空間中,但是并未被加載在物理內存中的一個分頁時,由中央處理器的內存管理單元所發出的中斷。

簡單講,就是:內核接住了這個異常,并處理了這個異常(Page Fault Handler)。

通常情況下,用于處理此中斷的程序是操作系統的一部分。如果操作系統判斷此次訪問是有效的,那么操作系統會嘗試將相關的分頁從硬盤上的虛擬內存文件中調入內存。而如果訪問是不被允許的,那么操作系統通常會結束相關的進程。

雖然其名為“頁缺失”錯誤,但實際上這并不一定是一種錯誤。而且這一機制對于利用虛擬內存來增加程序可用內存空間的操作系統(比如Microsoft Windows和各種類Unix系統)中都是常見且有必要的。

術語約定

VA:Virtual Address 虛擬地址
PA:Physical Address 物理地址
MMU:Memory Manage Unit 內存管理單元
TLB:Translation Lookaside Buffer 旁路快表緩存/地址變換高速緩存
PTE:Page Table Entry 分頁表項

概述

CPU通過地址總線可以訪問連接在地址總線上的所有外設,包括物理內存、IO設備等等,但從CPU發出的訪問地址并非是這些外設在地址總線上的物理地址,而是一個虛擬地址,由MMU將虛擬地址轉換成物理地址再從地址總線上發出,MMU上的這種虛擬地址和物理地址的轉換關系是需要創建的,并且MMU還可以設置這個物理頁是否可以進行寫操作,當沒有創建一個虛擬地址到物理地址的映射,或者創建了這樣的映射,但那個物理頁不可寫的時候,MMU將會通知CPU產生了一個缺頁異常。

只有程序運行時用到了才去內存中尋找虛擬地址對應的頁幀,找不到才可能進行分配,這就是內存的惰性(延時)分配機制。

對于一個運行中的進程來說,不是所有的虛擬地址在物理內存中都有對應的頁。虛擬地址空間根據固定大小一般是4KB進行劃分,物理內存可以設置不同的頁面大小,通常物理頁大小和虛擬頁大小是一樣的,都是 4KB。

CPU如何獲取內存中的數據?

CPU并不直接和物理內存打交道,而是把地址轉換的活外包給了MMU,MMU是一種硬件電路,其速度很快,主要工作是進行內存管理,地址轉換只是它承接的業務之一。

一起看看MMU是如何搞定地址轉換的。

一切皆是映射。(光劍)

MMU和Page Table

每個進程都會有自己的頁表Page Table,頁表存儲了進程中虛擬地址到物理地址的映射關系,所以就相當于一張地圖,MMU收到CPU的虛擬地址之后開始查詢頁表,確定是否存在映射以及讀寫權限是否正常,如圖:

對于4GB的虛擬地址且大小為4KB頁,一級頁表將有2^20個表項,頁表占有連續內存并且存儲空間大,多級頁表可以有效降低頁表的存儲空間以及內存連續性要求,但是多級頁表同時也帶來了查詢效率問題。

我們以2級頁表為例,MMU要先進行兩次頁表查詢確定物理地址,在確認了權限等問題后,MMU再將這個物理地址發送到總線,內存收到之后開始讀取對應地址的數據并返回。

MMU在2級頁表的情況下進行了2次檢索和1次讀寫,那么當頁表變為N級時,就變成了N次檢索+1次讀寫。

可見,頁表級數越多查詢的步驟越多,對于CPU來說等待時間越長,效率越低,這個問題還需要優化才行。

本段小結 敲黑板 劃重點1.頁表存在于進程的內存之中,MMU收到虛擬地址之后查詢Page Table來獲取物理地址。2.單級頁表對連續內存要求高,于是引入了多級頁表,但是多級頁表也是一把雙刃劍,在減少連續存儲要求且減少存儲空間的同時降低了查詢效率。

CPU覺得MMU干活雖然賣力氣,但是效率有點低。有沒有提升效率的辦法呢?

計算機科學中的所有問題,都可以通過添加一個中間層來解決。

我們知道 CPU 用的數據經常是一小搓,但是每次MMU都還要重復之前的步驟來檢索,害,就知道埋頭干活了,也得講究方式方法呀!

找到瓶頸之后,MMU引入了新武器,江湖人稱快表的TLB(其實,就是緩存),別看TLB容量小,但是正式上崗之后干活還真是不含糊。

當CPU給MMU傳新虛擬地址之后,MMU先去問TLB那邊有沒有,如果有就直接拿到物理地址發到總線給內存,齊活。

TLB容量比較小,難免發生Cache Miss,這時候MMU還有保底的老武器頁表 Page Table,在頁表中找到之后MMU除了把地址發到總線傳給內存,還把這條映射關系給到TLB,讓它記錄一下刷新緩存。

TLB容量不滿的時候就直接把新記錄存儲了,當滿了的時候就開啟了淘汰大法把舊記錄清除掉,來保存新記錄,彷佛完美解決了問題。

TLB的容量畢竟有限,為此必須依靠Page Table一起完成TLB Miss情況的查詢,并且更新到TLB建立新映射關系。

缺頁異常Page Fault大揭秘

設想,CPU給MMU的虛擬地址,在TLB和 Page Table都沒有找到對應的物理頁幀,該怎么辦呢?

沒錯,這就是缺頁異常Page Fault,它是一個由硬件中斷觸發的可以由軟件邏輯糾正的錯誤。

假如目標內存頁在物理內存中沒有對應的頁幀或者存在但無對應權限,CPU 就無法獲取數據,這種情況下CPU就會報告一個缺頁錯誤。

由于CPU沒有數據就無法進行計算,CPU罷工了用戶進程也就出現了缺頁中斷,進程會從用戶態切換到內核態,并將缺頁中斷交給內核的 Page Fault Handler 處理。

缺頁異常并不可怕,只要CPU要的虛擬地址經過MMU的一番尋址之后沒有找到或者找到后無權限,就會出現缺頁異常,因此觸發異常后的處理流程將是重點內容。

缺頁錯誤的分類處理

缺頁中斷會交給PageFaultHandler處理,其根據缺頁中斷的不同類型會進行不同的處理:

  • Hard Page Fault 也被稱為Major Page Fault,翻譯為硬缺頁錯誤/主要缺頁錯誤,這時物理內存中沒有對應的頁幀,需要CPU打開磁盤設備讀取到物理內存中,再讓MMU建立VA和PA的映射。
  • Soft Page Fault 也被稱為Minor Page Fault,翻譯為軟缺頁錯誤/次要缺頁錯誤,這時物理內存中是存在對應頁幀的,只不過可能是其他進程調入的,發出缺頁異常的進程不知道而已,此時MMU只需要建立映射即可,無需從磁盤讀取寫入內存,一般出現在多進程共享內存區域。
  • Invalid Page Fault 翻譯為無效缺頁錯誤,比如進程訪問的內存地址越界訪問,又比如對空指針解引用內核就會報segment fault錯誤中斷進程直接掛掉。

總結

以上是生活随笔為你收集整理的一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品国产精品国自产在线 | www四虎精品视频免费网站 | 国内精品免费 | 一级理论片 | 国产九色91回来了 | 国产在线中文 | 草草影院一区二区三区 | 午夜激情导航 | 777免费视频 | 涩涩视频免费观看 | 理论黄色片 | 国产成人一区二区 | 男人都懂的网址 | 97色在线 | 大尺度做爰呻吟62集 | 黄色网在线免费观看 | 中国女人内谢69xxxx免费视频 | 伊人网在线视频观看 | 久久久久久国产精品一区 | 日韩美女视频在线观看 | 蜜臀尤物一区二区三区直播 | 欧美成人影音 | 一区二区三区四区五区视频 | 欧美一区二区免费在线观看 | 可以直接看的毛片 | 天堂视频在线免费观看 | 亚洲午夜毛片 | 91网址在线 | 全黄一级男人和女人 | 天天爽夜夜爽夜夜爽 | 三级三级久久三级久久18 | 一区视频在线播放 | 大象传媒成人在线观看 | 欧美精品成人久久 | 精品一二区| 黄色不打码视频 | 精品少妇3p| 白白色在线播放 | 亚洲无色 | 亚洲免费毛片 | 欧美一a一片一级一片 | 噜噜噜久久久 | 国产人妻精品一区二区三 | 逼特逼视频在线观看 | 黄色一级生活片 | 国产精品视频免费看 | 无码精品人妻一区二区 | 尤物视频免费观看 | 欧美成在线观看 | 午夜精品久久久久久久96蜜桃 | 精品成人免费一区二区在线播放 | 成人在线观看网址 | 久久99热这里只有精品 | 按摩ⅹxxx性hd中国 | 色婷婷国产 | 亚洲精品久久久久久国产精华液 | 国产67194 | 日韩骚片| 欧美视频在线一区 | 鲁丝片一区二区三区 | 狠狠综合久久 | 欧美18一19性内谢 | 亚洲一区二区免费电影 | 日日干夜夜拍 | 成人午夜激情视频 | 视频区小说区 | 欧美丰满熟妇bbb久久久 | 91久久国产综合久久91 | 欧美激情在线观看 | 日本黄色录像片 | 欧美性猛交xxxx黑人交 | 中文字幕免费看 | 青春草在线视频观看 | 日本孰妇毛茸茸xxxx | 鲁啊鲁在线视频 | 美女狂揉羞羞的视频 | 亚洲精品乱码久久 | 免费色网站 | 国产做受视频 | 成人免费视频播放 | 性――交――性――乱 | 精品人妻无码一区二区三区 | 天堂a在线 | 天天天色综合 | 日韩精品在线免费 | 精品视频一区二区三区在线观看 | 伊人春色视频 | 久久精品视频5 | 久久久久久久亚洲av无码 | 成人交性视频免费看 | 婷婷色婷婷| 中文字幕制服丝袜 | 清纯唯美激情 | 波多野结衣视频网址 | 欧美日韩操 | 日日射天天干 | 美女无遮挡网站 | 巨大乳の揉んで乳榨り奶水 | 免费高清欧美大片在线观看 |