精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MMU如何知道頁表在內存中的具體地址

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 11:52 ? 次閱讀

MMU怎么知道這個頁表在內存中的具體地址呢?

通常CPU會提供一個頁表基址寄存器操作系統使用,用于給MMU指示頁表的基地址。不同處理器架構對應的寄存器也不一樣:

x86:CR3(Control Register 3)

ARM-v8:系統寄存器TTBR(Translation Table Base egister)

RISC-V:SATP(Supervisor Address Translation and Protection)

圖片

頁表基址寄存器存儲了第一級頁表的基地址,通過訪問該寄存器,就能知道頁表在那個位置。

多級頁表轉換過程

實際使用中,都是用多級頁表來存儲虛擬地址和物理地址的映射關系,

以二級頁表為例(假設是32位系統),其虛擬地址轉換為物理地址的過程如圖所示:

圖片

PGD:Pgea Global Directory,全局頁目錄,存儲了下一級頁表的基地址

PTE:Page Table Entrys,頁表入口,PTE才是真正存儲了物理地址的頁表

VA到PA的轉換過程:

MMU通過訪問頁表基址寄存器,得到一級頁表PGD的基地址,再結合虛擬地址中的PGD index找到了下一級頁表PTE的基地址;得到了PTE的基址,再結合虛擬地址中的PTE index找到PFN,然后再和VA相加得到物理地址。

這里需要注意,使用多少級的頁表、以及虛擬地址、物理地址的格式、PTE的格式等等,與32系統還是64位系統有關,也與處理器的架構有關,需要根據不同系統、不同處理器架構分析。

但是MMU工作原理都是一樣的,不管是二級頁表、三級頁表還是四級頁表,都是通過第一級頁表找到第二級頁表,通過第二級頁表找到第三級頁表。最終找到物理地址。只要明白了MMU的工作原理,分析其他的頁表也是大同小異。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5253

    瀏覽量

    119212
  • Linux
    +關注

    關注

    87

    文章

    11123

    瀏覽量

    207921
  • 內存
    +關注

    關注

    8

    文章

    2903

    瀏覽量

    73546
  • MMU
    MMU
    +關注

    關注

    0

    文章

    91

    瀏覽量

    18169
收藏 人收藏

    評論

    相關推薦

    關于MMU的問題

    剛開始學,好多東西都云里霧里的TT為什么在bootloader里要進行初始化然后開啟MMU,然后在進入內核后還要創建開啟
    發表于 05-06 17:25

    帶你走進嵌入式ARM MMU神秘的內部世界

    表項,2bit可以區分4種表項,具體每種表項的結構如下: 簡而言之L1
    發表于 08-22 11:22

    ARM MMU 理解(基于ARM 920T)

    、4KB和1KB大小地址空間的映射。要實現從虛擬地址到物理地址的映射,必然會遇到一個問題,如何找到這個。對于
    發表于 08-29 11:10

    MMU的產生及MMU工作過程詳解

    送到內存地址總線上,而是送到內存管理單元——MMU(主角終于出現了)。他由一個或一組芯片組成,一般存在與協處理器,其功能是把虛擬地址映射為
    發表于 07-03 08:19

    ARM11 S3C6410的地址

    存放二級的基址; 二級基址+ VA[19:12] = 二級描述符的入口
    發表于 08-17 00:53

    裸機加強版MMU章節創建,地址映射相同

    ARM裸機1期加強版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */創建
    發表于 04-18 07:45

    CC2541燒寫加密設置的具體地址在哪里?

    structure具體地址是在哪里呢?我在0x7FF0和0xFFF0地址都試過填寫加密位,讀取的加密狀態都為0(DBGLOCK設置為0);2.Flash一共128(0~127),但是FLASH_PAGES-1:0最多只有12
    發表于 09-23 08:53

    ARM的內存管理(MMU)是如何實現的?

    ( translate table )是實現 MMU 功能不可缺少的一步。是位于系統的內存
    發表于 10-23 15:29

    鴻蒙內核源碼分析(內存映射篇):虛擬地址與物理地址之間是如何映射的

    和常量數據,全局變量數據以及運行時動態申請內存所分配的實際物理內存存放位置。MMU采用(page table)來實現虛實
    發表于 11-19 10:52

    MMU表工作機制的簡單評析

    對于一個有MMU的CPU而言,MMU開啟后,CPU是這樣尋址的:CPU任何時候,一切時候,發出的地址都是虛擬地址,這個虛擬地址發給
    的頭像 發表于 02-02 14:08 ?1.1w次閱讀
    對<b class='flag-5'>MMU</b>和<b class='flag-5'>頁</b>表工作機制的簡單評析

    為什么要用MMU?為什么要用虛擬地址

    既然MMU開啟后,硬件會自動的將虛擬地址轉換成物理地址,那么還需要我們軟件做什么事情呢?即創建一個翻譯都需要做哪些事情呢?或者說啟用一個
    的頭像 發表于 04-26 14:37 ?4573次閱讀

    MMU原理:CPU是如何訪問到內存的?

    當CPU訪問虛擬地址0的時候,MMU會去查上面的第0行,發現第0行沒有命中,于是無論以何種形式(R讀,W寫,X執行)訪問,MMU都會給C
    發表于 11-09 12:30 ?938次閱讀
    <b class='flag-5'>MMU</b>原理:CPU是如何訪問到<b class='flag-5'>內存</b>的?

    MMU內存管理單元的宏觀理解

    最近一直在學習內存管理,也知道MMU是管理內存的映射的邏輯IP,還知道里面有個TLB。 今天剛剛好看到了幾篇前輩的文章,很是不錯,于是這里來
    的頭像 發表于 11-26 15:21 ?453次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>內存</b>管理單元的宏觀理解

    MMU命中、缺頁介紹

    命中、缺頁 (1)命中 ? a) 處理器要對虛擬地址VA進行訪問。 ? b) MMU的TLB沒有命中,通過TWU遍歷主存
    的頭像 發表于 11-26 16:19 ?826次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>中</b>的<b class='flag-5'>頁</b>命中、缺頁介紹

    MMU多級映射過程

    空間,也有相應的負責虛擬地址到物理地址之間的轉換。MMU查詢的過程,用戶進程的一級
    的頭像 發表于 11-26 16:28 ?801次閱讀
    <b class='flag-5'>MMU</b>多級<b class='flag-5'>頁</b><b class='flag-5'>表</b>映射過程