在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux虛擬地址到物理地址轉(zhuǎn)換過程

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

虛擬地址到物理地址轉(zhuǎn)換過程

虛擬地址和物理地址都被劃分了兩部分:

圖片

虛擬地址由虛擬頁面號VPN和虛擬地址偏移VA offset兩部分組成。同樣,物理地址由物理頁幀號PFN和物理地址偏移PA offset兩部分組成。

虛擬地址轉(zhuǎn)換成物理地址時,需要將VPN轉(zhuǎn)成PFN。PA offset通常就是VA offset。

所以物理地址 = PFN + VA offset

這里的核心就是VPN到PFN的映射,而VPN到PFN的映射關(guān)系是通過頁表記錄。就是說,頁表存儲了VPN和PFN的映射關(guān)系,MMU根據(jù)VPN,在頁表中找到PFN,再把PFN和VA offset相加,就得到了物理地址,從而將虛擬地址轉(zhuǎn)為物理地址。

這里要區(qū)分一下,頁表存儲了VA到PA的映射關(guān)系,所以說找到頁表就找到了物理地址。但是這個頁表是軟件提供的,MMU只負(fù)責(zé)將虛擬地址翻譯成物理地址,翻譯的依據(jù)就是頁表,MMU本身不負(fù)責(zé)創(chuàng)建頁表。所以說,在開啟MMU之前,系統(tǒng)就要提前建立好虛擬地址到物理地址的映射關(guān)系,然后保存到頁表中,這樣開啟MMU時,MMU才能正確找到對應(yīng)的物理地址。

頁表在哪

頁表都存儲在物理內(nèi)存中, MMU將虛擬地址轉(zhuǎn)換為物理地址,需要訪問物理內(nèi)存中對應(yīng)的頁表。

實(shí)際上,頁表通常就是用一個數(shù)組來表示。

這里可能會一些疑問:

疑問:放到物理內(nèi)存,每次轉(zhuǎn)換都要訪問內(nèi)存,速度不慢嗎?

答:慢。怎么解決呢?如果有cache是不是就很快了?是的,這塊cache就叫TLB。

疑問:都放到物理內(nèi)存,占用物理內(nèi)存空間不大嗎?

答:大,怎么解決?多級頁表+缺頁異常!多級頁表可以減少內(nèi)存占用,而通常只需將一級頁表存儲到物理內(nèi)存,查找的時候,找不到二級頁表,觸發(fā)一個缺頁異常,這時再分配頁表,從而節(jié)省內(nèi)存。

關(guān)于頁表放到物理內(nèi)存的問題,涉及到cache和其他的一些知識,內(nèi)容很多且比較復(fù)雜,暫時不深究,知道頁表是放在內(nèi)存中的即可。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11465

    瀏覽量

    212817
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3109

    瀏覽量

    75001
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    18641
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    操作系統(tǒng)中的邏輯地址物理地址

    本文是關(guān)于操作系統(tǒng)中邏輯地址物理地址之間的區(qū)別。計(jì)算機(jī)操作系統(tǒng)中的內(nèi)存使用兩種不同類型的地址物理地址是內(nèi)存的實(shí)際地址,如RAM,
    發(fā)表于 09-14 14:26 ?4538次閱讀

    請問ARM虛擬地址 物理地址 加載地址 運(yùn)行地址的聯(lián)系是什么?

    簡單的理解:ARM的加載地址即程序在Flash的存儲位置。運(yùn)行地址即內(nèi)存中運(yùn)行時的位置。虛擬地址物理地址在MMU中映射,那么這四者之間的聯(lián)系是什么?
    發(fā)表于 04-25 03:16

    為什么MMU的地址映射中物理地址會跳變?

    關(guān)于MMU的地址映射,32位的cpu有4G的虛擬地址空間,將它分為4096個小塊,每個小塊是1M,用描述符進(jìn)行虛擬地址物理地址之間關(guān)系的建立。問題在上圖中,進(jìn)行0xA0000000
    發(fā)表于 08-22 05:45

    linux虛擬地址如何轉(zhuǎn)物理地址

    linux虛擬地址轉(zhuǎn)物理地址
    發(fā)表于 05-13 09:31

    【HarmonyOS】虛擬地址<->物理地址是如何映射的

    到不同的實(shí)際物理內(nèi)存空間上。CPU只知道虛擬地址,向虛擬地址要數(shù)據(jù),但在其保護(hù)模式下很悲催地址信號在路上被MMU攔截了,MMU把虛擬地址換成
    發(fā)表于 11-03 16:20

    物理地址虛擬地址轉(zhuǎn)換步驟

    上是不行的,在Linux上,如果想要操作硬件,需要先把物理地址轉(zhuǎn)換虛擬地址,因?yàn)?b class='flag-5'>Linux使能了MMU,所以我們在
    發(fā)表于 12-24 07:42

    linux kernel實(shí)現(xiàn)物理地址虛擬地址空間的切換方法

    1、arm linux 臨時頁表的建立linux kernel的主要特點(diǎn)之一就是運(yùn)行在虛擬地址空間上,但是怎么才能實(shí)現(xiàn)物理地址
    發(fā)表于 05-13 10:21

    RT-Thread smart內(nèi)存虛擬地址物理地址轉(zhuǎn)換是一個什么樣的流程

    ,rt_system_heap_init(RT_HW_HEAP_BEGIN,RT_HW_HEAP_END);RT_HW_HEAP_BEGIN RT_HW_HEAP_END 兩個是物理地址。所以我實(shí)在理解不了虛擬地址
    發(fā)表于 10-19 10:41

    用戶態(tài)得到虛擬地址對應(yīng)的物理地址

    一般我們不需要從用戶態(tài)得到進(jìn)程虛擬地址對應(yīng)的物理地址,因?yàn)橐话銇碚f用戶進(jìn)程是完全不關(guān)心物理地址的。
    的頭像 發(fā)表于 10-10 14:10 ?2705次閱讀
    用戶態(tài)得到<b class='flag-5'>虛擬地址</b>對應(yīng)的<b class='flag-5'>物理地址</b>

    鴻蒙內(nèi)核中虛擬地址物理地址之間是如何映射的

    內(nèi)存空間上。CPU只知道虛擬地址,向虛擬地址要數(shù)據(jù),但在其保護(hù)模式下很悲催地址信號在路上被MMU攔截了,MMU把虛擬地址換成了物理地址,從而
    發(fā)表于 11-19 14:45 ?9次下載
    鴻蒙內(nèi)核中<b class='flag-5'>虛擬地址</b>與<b class='flag-5'>物理地址</b>之間是如何映射的

    虛擬地址物理地址等眾多地址及MMU相關(guān)知識

    虛擬地址物理地址等眾多地址及MMU相關(guān)知識先聊聊存儲器STM32單片機(jī)存儲器關(guān)于編譯器生成的文件數(shù)據(jù)在存儲器上的存儲結(jié)構(gòu)物理地址虛擬地址
    發(fā)表于 12-08 12:36 ?12次下載
    <b class='flag-5'>虛擬地址</b><b class='flag-5'>物理地址</b>等眾多<b class='flag-5'>地址</b>及MMU相關(guān)知識

    虛擬地址翻譯物理地址的流程有哪些呢?

    現(xiàn)代的操作系統(tǒng)將可執(zhí)行文件加載后,創(chuàng)建了進(jìn)程,進(jìn)程中每一條指令和數(shù)據(jù)都被分配了一個虛擬地址,CPU獲取到這個虛擬地址后,需要翻譯成內(nèi)存的物理地址后,才能訪問指令和數(shù)據(jù)
    的頭像 發(fā)表于 08-14 10:30 ?1589次閱讀
    <b class='flag-5'>虛擬地址</b>翻譯<b class='flag-5'>物理地址</b>的流程有哪些呢?

    Linux系統(tǒng)為什么需要引入虛擬地址

    ,這 4GB 的內(nèi)存空間按照 3:1 的比例進(jìn)行分配,其中用戶進(jìn)程享有 3G 的空間,而內(nèi)核獨(dú)自享有剩下的1G 空間,如下所示: 虛擬地址會通過硬件MMU(內(nèi)存管理單元)映射到實(shí)際的物理地址空間中,建立虛擬地址
    的頭像 發(fā)表于 10-07 17:28 ?1224次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)為什么需要引入<b class='flag-5'>虛擬地址</b>

    Linux虛擬地址空間和物理地址空間的關(guān)系

    很多人接觸Linux的內(nèi)存管理是從malloc()這個C語言庫函數(shù)開始,也是從那時開始就知道了虛擬內(nèi)存的概念。但很多人可能并不知道虛擬地址是如何轉(zhuǎn)換
    的頭像 發(fā)表于 10-08 11:40 ?1582次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>虛擬地址</b>空間和<b class='flag-5'>物理地址</b>空間的關(guān)系

    linux系統(tǒng)查看物理地址

    Linux系統(tǒng)中,訪問和查看物理地址是一個非常重要的任務(wù),因?yàn)樗峁┝藢τ布O(shè)備的直接訪問。本文將詳細(xì)介紹如何在Linux系統(tǒng)中查看物理地址,包括不同的方法和工具,以及如何解釋和使用
    的頭像 發(fā)表于 11-16 16:47 ?4168次閱讀
    主站蜘蛛池模板: 俄罗斯欧美色黄激情 | 国产午夜精品一区二区理论影院 | 中文字幕一二三四区2021 | 欧美电影一区二区 | 在线观看精品国产福利片100 | 久久在精品线影院精品国产 | 桃桃酱无缝丝袜在线播放 | 欧美黑人粗硬大在线看 | 欧美三级视频在线 | 国产香蕉视频在线观看 | 欧美干色 | 成人在线一区二区 | 色激情五月 | 欧美aaaaa性bbbbb小妇 | 国产手机在线 | 欧美一级www片免费观看 | 五月婷婷在线视频观看 | 亚洲第一网站 | 亚洲最大的黄色网址 | 天天干天天操天天碰 | 国产精品国产三级国快看 | 日本3级视频 | 最色网在线观看 | 中文字幕亚洲一区二区三区 | 亚洲mm8成为人影院 亚洲qingse中文在线 | 最近高清在线国语 | 五月天婷婷网址 | 天天草天天干 | 亚洲国产精品久久网午夜 | 人人做人人看 | 尻老逼 | 日本三级hd高清电影 | 黄色片链接 | 福利片网站 | 亚洲一区欧美一区 | 久久久久99精品成人片三人毛片 | 午夜免费啪视频观看网站 | 久久男人的天堂色偷偷 | 亚洲成a人片在线看 | 日本黄色大片在线播放视频免费观看 | 在线视频亚洲色图 |