女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

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

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

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

圖片

對(duì)于不同的進(jìn)程,面對(duì)的都是同一個(gè)內(nèi)核,其內(nèi)核空間的地址對(duì)應(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)。

分頁(yè)機(jī)制

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

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

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

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

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

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

VPN:Virtual Page Number,虛擬頁(yè)面號(hào)

PFN:Physical Frame Number,物理頁(yè)幀號(hào)

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

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

    關(guān)注

    87

    文章

    11456

    瀏覽量

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

    關(guān)注

    8

    文章

    3108

    瀏覽量

    74979
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

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

    關(guān)注

    3

    文章

    4367

    瀏覽量

    64156
收藏 人收藏

    評(píng)論

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

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

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

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

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

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

    簡(jiǎ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ù)模式下很悲催地址信號(hào)在路上被MMU攔截了,MMU把
    發(fā)表于 11-03 16:20

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

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

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

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

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

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

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

    內(nèi)存空間上。CPU只知道虛擬地址,向虛擬地址要數(shù)據(jù),但在其保護(hù)模式下很悲催地址信號(hào)在路上被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)存的物理地址后,才能訪問(wèn)指令和數(shù)據(jù)
    的頭像 發(fā)表于 08-14 10:30 ?1577次閱讀
    <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ì)通過(guò)硬件MMU(內(nèi)存管理單元)映射到實(shí)際的
    的頭像 發(fā)表于 10-07 17:28 ?1206次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)為什么需要引入<b class='flag-5'>虛擬地址</b>

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

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

    MMU虛擬地址空間布局

    當(dāng)然虛擬地址空間劃分不只是如此。因?yàn)槟壳皯?yīng)用程序沒(méi)有那么大的內(nèi)存需求,所以ARM64處理器不支持完全的64位虛擬地址,實(shí)際支持情況如下。 (1)-虛擬地址位寬
    的頭像 發(fā)表于 11-26 16:35 ?1099次閱讀