頁命中、缺頁
(1)頁命中

? a) 處理器要對虛擬地址VA進行訪問。
? b) MMU的TLB沒有命中,通過TWU遍歷主存頁表中的PTEA(PTE地址)。
? c) 主存向MMU返回PTE。
? d) MMU通過PTE映射物理地址,并把它傳給高速緩存或主存。
? e) 高速緩存或主存返回物理地址對應的數據給處理器。
(2)缺頁

? a) 處理器要對虛擬地址VA進行訪問。
? b) MMU的TLB沒有命中,通過TWU遍歷主存頁表中的PTEA(PTE地址)。
? c) 主存向MMU返回PTE。
? d) PTE中有效位是0,MMU觸發一次異常,CPU相應缺頁異常,運行相應的處理程序。
? e) 缺頁異常處理程序選出物理內存中的犧牲頁,若這個頁面已經被修改,將其換出到EMMC。
? f) 缺頁異常處理程序從EMMC中加載新的頁面,并更新內存中頁表的PTE。
? g)缺頁異常處理程序返回到原來的進程,再次執行導致缺頁的指令。CPU將引起缺頁異常的虛擬地址重新發給MMU。由于虛擬頁面現在緩存在主存中,主存會將所請求的地址對應的內容返回給cache和處理器。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
相關推薦
哪位仁兄知道:MMU的一級頁表為什么必須是16K對齊,最好有計算公式~~~謝謝!!!
發表于 02-14 23:46
剛開始學,好多東西都云里霧里的TT為什么在bootloader里要進行頁表初始化然后開啟MMU,然后在進入內核后還要創建頁表開啟MMU?這兩個有什么不一樣么?s3c2410,bootl
發表于 05-06 17:25
、4KB和1KB大小地址空間的映射。要實現從虛擬地址到物理地址的映射,必然會遇到一個問題,如何找到這個頁表。對于表的查找,要知道這個表的基地址和偏移地址,在具有MMU功能的處理器中,集成了一個被稱為CP15
發表于 08-29 11:10
的設置MMU,可以把16個虛頁隱射到8個頁框中的任何一個,但是這個方法并沒有有效的解決虛擬地址空間比物理地址空間大的問題。從上圖中我們可以看到,我們只有8個頁框(物理地址),但我們有1
發表于 07-03 08:19
ARM裸機1期加強版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */創建頁表 SDRAM 64M 虛
發表于 04-18 07:45
( translate table )是實現 MMU 功能不可缺少的一步。頁表是位于系統的內存中,頁表的每一項對應于一個虛擬地址到物理地址的映射。每一項的長度即是一個字的長度(在 AR
發表于 10-23 15:29
眾所周知,MMU的頁表是由軟件建立在外部內存中的。實際上有兩條硬件路徑需要訪問這個頁表:1 MMU硬件進行page table walk時,
發表于 10-24 15:45
對于一個有MMU的CPU而言,MMU開啟后,CPU是這樣尋址的:CPU任何時候,一切時候,發出的地址都是虛擬地址,這個虛擬地址發給MMU后,MMU通過
發表于 02-02 14:08
?1.1w次閱讀
前面講到過寫時復制缺頁異常(COW),一般用于父子進程之間共享頁,而我們會常見一種缺頁異常是匿名映射缺頁異常,今天我們就來討論下這種缺頁異常
發表于 09-09 10:55
?3130次閱讀
既然MMU開啟后,硬件會自動的將虛擬地址轉換成物理地址,那么還需要我們軟件做什么事情呢?即創建一個頁表翻譯都需要做哪些事情呢?或者說啟用一個MMU需要軟件做什么事情呢?
發表于 04-26 14:37
?5132次閱讀
本文講解Linux內核虛擬內存管理中的mmu_gather操作,看看它是如何保證刷tlb和釋放物理頁的順序的,又是如何將更多的頁面聚集起來統一釋放的。
發表于 05-20 14:37
?2091次閱讀
MMU怎么知道這個頁表在內存中的具體地址呢? 通常CPU會提供一個頁表基址寄存器給操作系統使用,用于給MMU指示
發表于 10-08 11:52
?1496次閱讀
當CPU訪問虛擬地址0的時候,MMU會去查上面頁表的第0行,發現第0行沒有命中,于是無論以何種形式(R讀,W寫,X執行)訪問,MMU都會給CPU發出page fault,CPU自動跳到
發表于 11-09 12:30
?1299次閱讀
1-CPU發出的虛擬地址 CPU發出的虛擬地址由兩部分組成:VPN和offset,VPN(virtual page number)是頁表中的條目number,而offset是指頁內偏移。 最終轉換后
發表于 11-26 15:40
?781次閱讀
空間,也有相應的頁表負責虛擬地址到物理地址之間的轉換。MMU查詢的過程中,用戶進程的一級頁表的基址存放在TTBR0。操作系統的內核空間公用一塊地址空間,
發表于 11-26 16:28
?1072次閱讀
評論