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

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

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

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

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

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

很多人接觸Linux的內(nèi)存管理是從malloc()這個(gè)C語言庫函數(shù)開始,也是從那時(shí)開始就知道了虛擬內(nèi)存的概念。但很多人可能并不知道虛擬地址是如何轉(zhuǎn)換成物理地址的,今天帶你搞懂虛擬地址到物理地址的轉(zhuǎn)換過程,這其實(shí)也是MMU的工作原理

我們知道,在Linux中,每個(gè)進(jìn)程都有自己獨(dú)立的地址空間,且互不干擾。每個(gè)進(jìn)程的地址空間又分為用戶空間和內(nèi)核空間,但這些地址空間使用的都是虛擬地址,它們和物理地址空間關(guān)系是怎樣的呢?虛擬地址空間和物理地址空間的關(guān)系如下:

圖片

對于不同的進(jìn)程,面對的都是同一個(gè)內(nèi)核,其內(nèi)核空間的地址對應(yīng)的物理地址都是一樣的,因此進(jìn)程1和進(jìn)程2中內(nèi)核空間都映射到了相同的物理內(nèi)存PA1上。

而不同進(jìn)程的用戶空間是不一樣的,即便相同的虛擬地址,也會(huì)被映射到不同的物理地址上。如圖中兩個(gè)進(jìn)程相同用戶空間的地址0x123456分別被映射到了PA2和PA3物理地址上。

那么如何完成上述虛擬地址到物理地址的轉(zhuǎn)換呢?

完成虛擬地址到物理地址的轉(zhuǎn)換,我們需要借助一個(gè)硬件——MMU。

MMU: Memory manager unit,內(nèi)存管理單元,負(fù)責(zé)將虛擬地址(VA)轉(zhuǎn)為物理地址(PA)。

分頁機(jī)制

在Linux系統(tǒng)上,現(xiàn)在用到的內(nèi)存管理機(jī)制,大部分是分頁機(jī)制。在分頁機(jī)制出現(xiàn)之前,還出現(xiàn)過動(dòng)態(tài)分區(qū)法、分段機(jī)制。

動(dòng)態(tài)分區(qū)法是還沒用引入虛擬地址之前使用的,使用的都是物理內(nèi)存,屬于非常早期的機(jī)制。分段機(jī)制則引入了虛擬地址的概念,而分頁機(jī)制在分段機(jī)制后出現(xiàn),主要解決分段機(jī)制內(nèi)存碎片的問題。本篇以分頁機(jī)制講解虛擬地址到物理地址的轉(zhuǎn)換,下面介紹分頁機(jī)制的一些基本概念。

分頁機(jī)制的基本概念:

分頁:將內(nèi)存劃分為固定長度的單元,每個(gè)單元就是一頁

頁:對于虛擬地址空間,將地址空間劃分為固定大小單元的單元,每個(gè)單元稱為一頁

頁幀:對于物理地址空間,將地址空間分為固定大小的單元,每個(gè)單元稱為頁幀

VPN:Virtual Page Number,虛擬頁面號

PFN:Physical Frame Number,物理頁幀號

分頁管理內(nèi)存的核心問題就是虛擬地址頁到物理地址頁幀的映射關(guān)系

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

    關(guān)注

    87

    文章

    11432

    瀏覽量

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

    關(guān)注

    8

    文章

    3103

    瀏覽量

    74917
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7628

    瀏覽量

    139949
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4365

    瀏覽量

    63945
收藏 人收藏

    評論

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

    鴻蒙內(nèi)核源碼分析:物理地址的映射

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

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

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

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

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

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

    關(guān)于MMU的地址映射,32位的cpu有4G的虛擬地址空間,將它分為4096個(gè)小塊,每個(gè)小塊是1M,用描述符進(jìn)行虛擬地址物理地址之間
    發(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,所以我們在Linux上不能直接操作
    發(fā)表于 12-24 07:42

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

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

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

    一般我們不需要從用戶態(tài)得到進(jìn)程虛擬地址對應(yīng)的物理地址,因?yàn)橐话銇碚f用戶進(jìn)程是完全不關(guān)心物理地址的。
    的頭像 發(fā)表于 10-10 14:10 ?2667次閱讀
    用戶態(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)知識(shí)

    虛擬地址物理地址等眾多地址及MMU相關(guān)知識(shí)先聊聊存儲(chǔ)器STM32單片機(jī)存儲(chǔ)器關(guān)于編譯器生成的文件數(shù)據(jù)在存儲(chǔ)器上的存儲(chǔ)結(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)知識(shí)

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

    現(xiàn)代的操作系統(tǒng)將可執(zhí)行文件加載后,創(chuàng)建了進(jìn)程,進(jìn)程中每一條指令和數(shù)據(jù)都被分配了一個(gè)虛擬地址,CPU獲取到這個(gè)虛擬地址后,需要翻譯成內(nèi)存的物理地址后,才能訪問指令和數(shù)據(jù)
    的頭像 發(fā)表于 08-14 10:30 ?1542次閱讀
    <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 空間,如下所示: 虛擬地址會(huì)通過硬件MMU(內(nèi)存管理單元)映射到實(shí)際的
    的頭像 發(fā)表于 10-07 17:28 ?1160次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)為什么需要引入<b class='flag-5'>虛擬地址</b>

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

    虛擬地址物理地址轉(zhuǎn)換過程 虛擬地址物理地址都被劃分了兩部分: 虛擬地址虛擬頁面號VPN和
    的頭像 發(fā)表于 10-08 11:45 ?2319次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>虛擬地址</b>到<b class='flag-5'>物理地址</b>轉(zhuǎn)換過程

    MMU虛擬地址空間布局

    當(dāng)然虛擬地址空間劃分不只是如此。因?yàn)槟壳皯?yīng)用程序沒有那么大的內(nèi)存需求,所以ARM64處理器不支持完全的64位虛擬地址,實(shí)際支持情況如下。 (1)-虛擬地址位寬
    的頭像 發(fā)表于 11-26 16:35 ?1062次閱讀
    主站蜘蛛池模板: 日韩在线网| 性夜黄a爽爽免费视频国产 羞羞答答xxdd影院欧美 | 一二三区在线观看 | 成人免费久久精品国产片久久影院 | 手机看片精品国产福利盒子 | 欧美不卡一区 | 老色批在线播放视频网站免费 | 色多多高清在线观看视频www | 一本高清在线视频 | 娇妻被黑人蹂躏 | 国产色婷婷 | 免费视频网站在线观看 | 49pao强力在线高清基地 | www.丁香.com| 国产精品99r8在线观看 | www爽| 无人码一区二区三区视频 | 波多野结衣在线视频免费观看 | 天天视频免费入口 | 3344免费播放观看视频 | 国产小视频在线高清播放 | 永久精品免费影院在线观看网站 | 欧美色亚洲图 | 天天干天天干天天插 | 最新黄色免费网站 | 加勒比视频一区 | 国产精品三级a三级三级午夜 | 老师我好爽再深一点好大 | 免费h视频在线观看 | 四虎影院免费在线播放 | 亚洲成人激情片 | 色综合天天综久久久噜噜噜久久〔 | 成人免费看黄网站无遮挡 | 国产精品你懂的 | 国产女同视频 | 国产理论片在线观看 | 又黄又免费的网站 | 一色桃子juy774在线播放 | 亚洲一区视频 | 欧美狠狠 | 视频一区视频二区在线观看 |