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

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

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

3天內不再提示

MMU內存管理單元的工作原理和作用

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

先來看一張圖

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

第一:MMU內存管理

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

其主要功能是將虛擬地址轉換為物理地址,同時提供訪問權限的控制和緩存管理等功能。MMU是現代計算機操作系統中重要的組成部分,可以提高系統的穩定性和安全性。

在內存管理方面,MMU可以通過頁面表(Page Table)實現虛擬內存管理。頁面表是一種數據結構,記錄了每個虛擬頁面和其對應的物理頁面之間的映射關系。

當CPU發出一個虛擬地址時,MMU會通過頁面表查找并將其轉換為對應的物理地址。

此外,MMU還可以通過頁面表實現內存保護和共享等功能,從而提高系統的安全性和效率。

總之,MMU是內存管理中一個重要的硬件組件,可以實現虛擬內存管理、內存保護、共享和緩存等功能,為現代計算機操作系統的穩定性和安全性提供支持。

第二:舉個例子

假設我們有一個程序,它需要訪問兩個內存區域:一個是只讀的代碼區域,一個是可讀寫的數據區域。

我們現在想要在一個沒有 MMU 的系統上運行這個程序。如果沒有 MMU,代碼區域和數據區域就只能被映射到兩個固定的物理地址上。這就意味著,如果程序嘗試訪問一個不正確的地址,可能會導致系統崩潰。

現在,如果我們在一個具有 MMU 的系統上運行這個程序,情況會有所不同。MMU 可以將程序嘗試訪問的地址映射到不同的物理地址,這樣可以使得代碼區域和數據區域在物理內存中不再是固定的位置。

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

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

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

這種情況下,程序如果訪問了錯誤的地址或試圖訪問未被授權的地址,就會產生訪問錯誤或非法訪問,可能導致系統崩潰、數據丟失等問題。

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

同時,MMU可以根據內存訪問權限來限制程序對內存的訪問,確保系統的安全性和穩定性。

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

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

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

相同的虛擬地址空間在不同的進程中可能會映射到不同的物理地址,這個映射的過程是由MMU完成的。在操作系統中,每個進程都有獨立的虛擬地址空間,且這些虛擬地址空間互不干擾。

MMU會將每個進程的虛擬地址映射到對應的物理地址上,使得不同進程間的內存訪問不會相互干擾。同時,MMU也會提供一些安全機制,如頁面保護等,來防止進程越界訪問內存或訪問其他進程的內存。

因此,MMU起到了保護進程間內存互不干擾的作用,也是現代操作系統的重要組成部分。

第四:頁表是什么?

頁表是一種用于存儲虛擬內存地址與物理內存地址映射關系的數據結構。在使用虛擬內存的系統中,每個進程都有自己的虛擬地址空間,而這些虛擬地址空間被分割成許多頁(通常大小為4KB或更大),而不是一整塊連續的內存。

因此,當進程需要訪問某個虛擬地址時,需要將其翻譯成對應的物理地址。這個翻譯過程就是通過頁表來完成的。

頁表的基本原理是將虛擬地址劃分成一個頁號和一個偏移量。

頁號用于在頁表中查找對應的物理頁幀號,而偏移量則用于計算該虛擬地址在物理頁幀中的偏移量。通過這種方式,就可以將虛擬地址映射到物理地址,使得進程可以訪問對應的內存區域。

頁表一般由操作系統來維護,因為操作系統需要掌握虛擬地址和物理地址之間的映射關系。

在使用MMU(Memory Management Unit)的硬件支持的系統中,當進程訪問虛擬地址時,MMU會通過頁表將虛擬地址轉換為物理地址,并將訪問指向正確的物理地址。這樣,進程就可以在不知道自己真實物理地址的情況下訪問內存。

第五:為什么沒有MMU就無法運行Linux系統?

這是因為 Linux 內核將虛擬地址空間分為多個頁面,并將這些頁面映射到物理地址空間上,以實現內存隔離、保護和虛擬內存等功能。

沒有 MMU,就無法實現這種映射,從而無法運行 Linux 系統。

第六:為什么有些較為簡單的SOC可能沒有MMU,但仍然可以運行一些嵌入式操作系統或者裸機程序?

RTOS可以運行在沒有MMU的系統上,因為RTOS通常不需要進行內存保護和虛擬地址映射等高級特性。

相反,RTOS的設計側重于實時性和低延遲,因此通常只需要簡單的內存管理和任務調度即可。

這使得RTOS可以運行在許多嵌入式系統上,包括一些沒有MMU的系統。

審核編輯:湯梓紅

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

    關注

    41

    文章

    3665

    瀏覽量

    130888
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11031

    瀏覽量

    215957
  • 內存管理
    +關注

    關注

    0

    文章

    168

    瀏覽量

    14473
  • MMU
    MMU
    +關注

    關注

    0

    文章

    92

    瀏覽量

    18637
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    為什么沒有MMU就無法運行Linux系統呢?

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

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

    平板式的地址映射機制對其操作,或需要使用虛擬地址對其進行讀寫;系統中,需引入存儲保護機制,增強系統的安全性。為適應如此復雜的存儲體系要求, ARM 處理器中引入了存儲管理單元管理存儲系統。一
    發表于 10-23 15:29

    MMU存儲管理單元工作原理是什么?如何實現其流程呢

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

    Arm CoreLink MMU?700系統內存管理單元技術參考手冊

    MMU?700是一個系統級內存管理單元(SMMU),用于將輸入地址轉換為輸出地址。此轉換基于MMU?700內部寄存器和轉換表中可用的地址映射
    發表于 08-08 07:44

    ARM CORELINK?MMU-600AE系統內存管理單元技術參考手冊

    MMU-600AE是MMU-600系統級內存管理單元(SMMU)的功能安全(FUSA)變體,可將輸入地址轉換為輸出地址。此轉換基于
    發表于 08-09 06:28

    ARM系統內存管理單元架構規范SMMU架構2.0版

    ARM系統MMU(SMMU)體系結構為存儲器管理單元(MMU)實施提供了靈活的實施框架,具有多個實施定義的選項。 該體系結構可用于系統級的MMU
    發表于 08-12 06:25

    ARM 內存管理單元MMU詳細圖解資料

    ARM 內存管理單元MMU詳細圖解資料 本文描述基于存儲器管理單元的系統結構, 包含以下內容:
    發表于 03-03 16:22 ?97次下載

    S3C2410內存管理單元MMU基礎實驗

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

    ARM存儲管理單元MMU詳解

    15.5 存儲管理單元MMU 在創建多任務嵌入式系統時,最好有一個簡單的方式來編寫、裝載及運行各自獨立的任務。目前大多數的嵌入式系統不再使用自己定制的控制系統,而使用操作系統來簡化這個過程。較高
    發表于 10-17 16:24 ?4次下載

    淺談ARM MMU工作原理和過程

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

    MMU工作原理梳理

    本文從內存管理的發展歷程角度層層遞進,介紹 MMU 的誕生背景,工作機制。而忽略了具體處理器的具體實現細節,將 MMU
    的頭像 發表于 12-17 16:13 ?1.4w次閱讀
    <b class='flag-5'>MMU</b>的<b class='flag-5'>工作原理</b>梳理

    ARM920T的MMU與Cache介紹

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

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

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

    為什么沒有MMU就無法運行Linux系統

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

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

    (Memory Management Unit,內存管理單元)是一種硬件模塊,用于在CPU和內存之間實現虛擬內存
    的頭像 發表于 11-26 15:21 ?815次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>內存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b>的宏觀理解