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

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

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

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

MMU內(nèi)存管理單元的工作原理和作用

嵌入式開發(fā)愛好者 ? 來源:嵌入式開發(fā)愛好者 ? 2023-08-03 10:03 ? 次閱讀

先來看一張圖

6c148260-314e-11ee-9e74-dac502259ad0.jpg

第一:MMU內(nèi)存管理

MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實(shí)現(xiàn)虛擬內(nèi)存管理。

其主要功能是將虛擬地址轉(zhuǎn)換為物理地址,同時(shí)提供訪問權(quán)限的控制和緩存管理等功能。MMU是現(xiàn)代計(jì)算機(jī)操作系統(tǒng)中重要的組成部分,可以提高系統(tǒng)的穩(wěn)定性和安全性。

在內(nèi)存管理方面,MMU可以通過頁(yè)面表(Page Table)實(shí)現(xiàn)虛擬內(nèi)存管理。頁(yè)面表是一種數(shù)據(jù)結(jié)構(gòu),記錄了每個(gè)虛擬頁(yè)面和其對(duì)應(yīng)的物理頁(yè)面之間的映射關(guān)系。

當(dāng)CPU發(fā)出一個(gè)虛擬地址時(shí),MMU會(huì)通過頁(yè)面表查找并將其轉(zhuǎn)換為對(duì)應(yīng)的物理地址。

此外,MMU還可以通過頁(yè)面表實(shí)現(xiàn)內(nèi)存保護(hù)和共享等功能,從而提高系統(tǒng)的安全性和效率。

總之,MMU是內(nèi)存管理中一個(gè)重要的硬件組件,可以實(shí)現(xiàn)虛擬內(nèi)存管理、內(nèi)存保護(hù)、共享和緩存等功能,為現(xiàn)代計(jì)算機(jī)操作系統(tǒng)的穩(wěn)定性和安全性提供支持。

第二:舉個(gè)例子

假設(shè)我們有一個(gè)程序,它需要訪問兩個(gè)內(nèi)存區(qū)域:一個(gè)是只讀的代碼區(qū)域,一個(gè)是可讀寫的數(shù)據(jù)區(qū)域。

我們現(xiàn)在想要在一個(gè)沒有 MMU 的系統(tǒng)上運(yùn)行這個(gè)程序。如果沒有 MMU,代碼區(qū)域和數(shù)據(jù)區(qū)域就只能被映射到兩個(gè)固定的物理地址上。這就意味著,如果程序嘗試訪問一個(gè)不正確的地址,可能會(huì)導(dǎo)致系統(tǒng)崩潰。

現(xiàn)在,如果我們?cè)谝粋€(gè)具有 MMU 的系統(tǒng)上運(yùn)行這個(gè)程序,情況會(huì)有所不同。MMU 可以將程序嘗試訪問的地址映射到不同的物理地址,這樣可以使得代碼區(qū)域和數(shù)據(jù)區(qū)域在物理內(nèi)存中不再是固定的位置。

這意味著,如果程序嘗試訪問不正確的地址,MMU 可以通過重新映射來保護(hù)系統(tǒng)不崩潰。

MMU 還可以將多個(gè)虛擬地址映射到同一個(gè)物理地址上,這就是所謂的頁(yè)共享(page sharing),可以減少物理內(nèi)存的使用。

如果沒有MMU,程序訪問內(nèi)存時(shí)只能使用物理地址,而物理地址是直接映射到內(nèi)存芯片上的地址,程序可以隨意訪問任何一個(gè)物理地址。

這種情況下,程序如果訪問了錯(cuò)誤的地址或試圖訪問未被授權(quán)的地址,就會(huì)產(chǎn)生訪問錯(cuò)誤或非法訪問,可能導(dǎo)致系統(tǒng)崩潰、數(shù)據(jù)丟失等問題。

而有了MMU,程序訪問的是虛擬地址,由MMU負(fù)責(zé)將虛擬地址映射到物理地址上,這樣程序就無法直接訪問物理地址。

同時(shí),MMU可以根據(jù)內(nèi)存訪問權(quán)限來限制程序?qū)?nèi)存的訪問,確保系統(tǒng)的安全性和穩(wěn)定性。

因此,沒有MMU時(shí),程序可能會(huì)訪問到其他地址,而有了MMU,程序只能訪問被允許訪問的地址,可以有效地避免非法訪問的問題。

6c232950-314e-11ee-9e74-dac502259ad0.png

第三:為什么相同的虛擬地址空間在物理地址不會(huì)發(fā)生沖突呢?

相同的虛擬地址空間在不同的進(jìn)程中可能會(huì)映射到不同的物理地址,這個(gè)映射的過程是由MMU完成的。在操作系統(tǒng)中,每個(gè)進(jìn)程都有獨(dú)立的虛擬地址空間,且這些虛擬地址空間互不干擾。

MMU會(huì)將每個(gè)進(jìn)程的虛擬地址映射到對(duì)應(yīng)的物理地址上,使得不同進(jìn)程間的內(nèi)存訪問不會(huì)相互干擾。同時(shí),MMU也會(huì)提供一些安全機(jī)制,如頁(yè)面保護(hù)等,來防止進(jìn)程越界訪問內(nèi)存或訪問其他進(jìn)程的內(nèi)存。

因此,MMU起到了保護(hù)進(jìn)程間內(nèi)存互不干擾的作用,也是現(xiàn)代操作系統(tǒng)的重要組成部分。

第四:頁(yè)表是什么?

頁(yè)表是一種用于存儲(chǔ)虛擬內(nèi)存地址與物理內(nèi)存地址映射關(guān)系的數(shù)據(jù)結(jié)構(gòu)。在使用虛擬內(nèi)存的系統(tǒng)中,每個(gè)進(jìn)程都有自己的虛擬地址空間,而這些虛擬地址空間被分割成許多頁(yè)(通常大小為4KB或更大),而不是一整塊連續(xù)的內(nèi)存。

因此,當(dāng)進(jìn)程需要訪問某個(gè)虛擬地址時(shí),需要將其翻譯成對(duì)應(yīng)的物理地址。這個(gè)翻譯過程就是通過頁(yè)表來完成的。

頁(yè)表的基本原理是將虛擬地址劃分成一個(gè)頁(yè)號(hào)和一個(gè)偏移量。

頁(yè)號(hào)用于在頁(yè)表中查找對(duì)應(yīng)的物理頁(yè)幀號(hào),而偏移量則用于計(jì)算該虛擬地址在物理頁(yè)幀中的偏移量。通過這種方式,就可以將虛擬地址映射到物理地址,使得進(jìn)程可以訪問對(duì)應(yīng)的內(nèi)存區(qū)域。

頁(yè)表一般由操作系統(tǒng)來維護(hù),因?yàn)椴僮飨到y(tǒng)需要掌握虛擬地址和物理地址之間的映射關(guān)系。

在使用MMU(Memory Management Unit)的硬件支持的系統(tǒng)中,當(dāng)進(jìn)程訪問虛擬地址時(shí),MMU會(huì)通過頁(yè)表將虛擬地址轉(zhuǎn)換為物理地址,并將訪問指向正確的物理地址。這樣,進(jìn)程就可以在不知道自己真實(shí)物理地址的情況下訪問內(nèi)存。

第五:為什么沒有MMU就無法運(yùn)行Linux系統(tǒng)?

這是因?yàn)?Linux 內(nèi)核將虛擬地址空間分為多個(gè)頁(yè)面,并將這些頁(yè)面映射到物理地址空間上,以實(shí)現(xiàn)內(nèi)存隔離、保護(hù)和虛擬內(nèi)存等功能。

沒有 MMU,就無法實(shí)現(xiàn)這種映射,從而無法運(yùn)行 Linux 系統(tǒng)。

第六:為什么有些較為簡(jiǎn)單的SOC可能沒有MMU,但仍然可以運(yùn)行一些嵌入式操作系統(tǒng)或者裸機(jī)程序?

RTOS可以運(yùn)行在沒有MMU的系統(tǒng)上,因?yàn)镽TOS通常不需要進(jìn)行內(nèi)存保護(hù)和虛擬地址映射等高級(jí)特性。

相反,RTOS的設(shè)計(jì)側(cè)重于實(shí)時(shí)性和低延遲,因此通常只需要簡(jiǎn)單的內(nèi)存管理和任務(wù)調(diào)度即可。

這使得RTOS可以運(yùn)行在許多嵌入式系統(tǒng)上,包括一些沒有MMU的系統(tǒng)。

審核編輯:湯梓紅

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

    關(guān)注

    41

    文章

    3593

    瀏覽量

    129473
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10863

    瀏覽量

    211765
  • 內(nèi)存管理
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

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

    關(guān)注

    0

    文章

    91

    瀏覽量

    18289
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    為什么沒有MMU就無法運(yùn)行Linux系統(tǒng)呢?

    MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實(shí)現(xiàn)虛擬
    發(fā)表于 08-03 10:05 ?941次閱讀
    為什么沒有<b class='flag-5'>MMU</b>就無法運(yùn)行Linux系統(tǒng)呢?

    ARM的內(nèi)存管理MMU)是如何實(shí)現(xiàn)的?

    平板式的地址映射機(jī)制對(duì)其操作,或需要使用虛擬地址對(duì)其進(jìn)行讀寫;系統(tǒng)中,需引入存儲(chǔ)保護(hù)機(jī)制,增強(qiáng)系統(tǒng)的安全性。為適應(yīng)如此復(fù)雜的存儲(chǔ)體系要求, ARM 處理器中引入了存儲(chǔ)管理單元管理存儲(chǔ)系統(tǒng)。一
    發(fā)表于 10-23 15:29

    MMU存儲(chǔ)管理單元工作原理是什么?如何實(shí)現(xiàn)其流程呢

    MMU,Memory Management Unit,存儲(chǔ)管理單元MMU工作流程為:首先,配置一個(gè)地址映射表的基地址。然后,每輸入一個(gè)虛
    發(fā)表于 05-13 09:56

    Arm CoreLink MMU?700系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)

    MMU?700是一個(gè)系統(tǒng)級(jí)內(nèi)存管理單元(SMMU),用于將輸入地址轉(zhuǎn)換為輸出地址。此轉(zhuǎn)換基于MMU?700內(nèi)部寄存器和轉(zhuǎn)換表中可用的地址映射
    發(fā)表于 08-08 07:44

    ARM CORELINK?MMU-600AE系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)

    MMU-600AE是MMU-600系統(tǒng)級(jí)內(nèi)存管理單元(SMMU)的功能安全(FUSA)變體,可將輸入地址轉(zhuǎn)換為輸出地址。此轉(zhuǎn)換基于
    發(fā)表于 08-09 06:28

    ARM系統(tǒng)內(nèi)存管理單元架構(gòu)規(guī)范SMMU架構(gòu)2.0版

    ARM系統(tǒng)MMU(SMMU)體系結(jié)構(gòu)為存儲(chǔ)器管理單元(MMU)實(shí)施提供了靈活的實(shí)施框架,具有多個(gè)實(shí)施定義的選項(xiàng)。 該體系結(jié)構(gòu)可用于系統(tǒng)級(jí)的MMU
    發(fā)表于 08-12 06:25

    ARM 內(nèi)存管理單元MMU詳細(xì)圖解資料

    ARM 內(nèi)存管理單元MMU詳細(xì)圖解資料 本文描述基于存儲(chǔ)器管理單元的系統(tǒng)結(jié)構(gòu), 包含以下內(nèi)容:
    發(fā)表于 03-03 16:22 ?97次下載

    S3C2410內(nèi)存管理單元MMU基礎(chǔ)實(shí)驗(yàn)

    (11)實(shí)驗(yàn)十一:MMU 在理論上概括或解釋MMU,這不是我能勝任的。我僅基于為了理解本實(shí)驗(yàn)中操作MMU的代碼而對(duì)MMU做些說明,現(xiàn)在先簡(jiǎn)單地描述虛擬地址(VA)、變換后的虛擬地址(M
    發(fā)表于 01-01 02:29 ?17次下載

    ARM存儲(chǔ)管理單元MMU詳解

    15.5 存儲(chǔ)管理單元MMU 在創(chuàng)建多任務(wù)嵌入式系統(tǒng)時(shí),最好有一個(gè)簡(jiǎn)單的方式來編寫、裝載及運(yùn)行各自獨(dú)立的任務(wù)。目前大多數(shù)的嵌入式系統(tǒng)不再使用自己定制的控制系統(tǒng),而使用操作系統(tǒng)來簡(jiǎn)化這個(gè)過程。較高
    發(fā)表于 10-17 16:24 ?4次下載

    淺談ARM MMU工作原理和過程

    在沒有使用虛擬存儲(chǔ)器的機(jī)器上,虛擬地址被直接送到內(nèi)存總線上,使具有相同地址的物理存儲(chǔ)器被讀寫。而在使用了虛擬存儲(chǔ)器的情況下,虛擬地址不是被直接送到內(nèi)存地址總線上,而是送到內(nèi)存管理
    發(fā)表于 03-12 09:17 ?3707次閱讀
    淺談ARM <b class='flag-5'>MMU</b><b class='flag-5'>工作原理</b>和過程

    MMU工作原理梳理

    本文從內(nèi)存管理的發(fā)展歷程角度層層遞進(jìn),介紹 MMU 的誕生背景,工作機(jī)制。而忽略了具體處理器的具體實(shí)現(xiàn)細(xì)節(jié),將 MMU
    的頭像 發(fā)表于 12-17 16:13 ?1.3w次閱讀
    <b class='flag-5'>MMU</b>的<b class='flag-5'>工作原理</b>梳理

    ARM920T的MMU與Cache介紹

    CPU通過地址來訪問內(nèi)存中的單元,地址有虛擬地址和物理地址之分,如果CPU沒有MMU(Memory Management Unit,內(nèi)存管理
    發(fā)表于 03-28 11:05 ?14次下載
    ARM920T的<b class='flag-5'>MMU</b>與Cache介紹

    一文解讀內(nèi)存管理單元 (MMU)

    一般MMU會(huì)有一種disable的模式,即不使能MMU,所有虛擬地址都直接映射到相應(yīng)的物理地址,VA=PA。
    的頭像 發(fā)表于 07-28 18:09 ?4674次閱讀
    一文解讀<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b> (<b class='flag-5'>MMU</b>)

    為什么沒有MMU就無法運(yùn)行Linux系統(tǒng)

    MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實(shí)現(xiàn)虛擬
    的頭像 發(fā)表于 04-23 10:48 ?917次閱讀
    為什么沒有<b class='flag-5'>MMU</b>就無法運(yùn)行Linux系統(tǒng)

    MMU內(nèi)存管理單元的宏觀理解

    (Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實(shí)現(xiàn)虛擬內(nèi)存
    的頭像 發(fā)表于 11-26 15:21 ?595次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b>的宏觀理解
    主站蜘蛛池模板: 天天天天添天天拍天天谢| 国产自在自线午夜精品视频| 国产视频久| 美女扒开下面让男人捅| 色尼玛亚洲综合| 国产国产人免费人成免费视频| 色天天综合色天天看| 欧美一级一一特黄| 97影院理论| 天天干视频网| 4444kk在线看片| 四虎影视网站| 成年午夜一级毛片视频| 91福利国产在线观看网站| 亚洲最大的成人网| 天堂新版www中文| 国产成人亚洲综合a∨婷婷| 午夜看毛片| 成人黄色免费网站| 亚洲毛片免费在线观看| 亚洲美国avcom| 欧美色图久久| 天天狠天天操| 免费观看黄视频| 久久综合色综合| 久久狠狠躁免费观看| 天天躁夜夜躁狠狠躁2021a| 人人澡人| 手机看片福利国产| 二区三区在线| 国产激烈床戏无遮挡观看| 在线视频观看免费| 色多多在线观看高清免费| 午夜影院免费| 国产在线欧美精品卡通动漫| 黄色大片毛片| 免费视频www| 欧美大全| 国产美女一级高清免费观看| 激情九月| 国产精品三级在线播放|