<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > 詳細講解MMU:為什么嵌入式linux沒(méi)他不行?

詳細講解MMU:為什么嵌入式linux沒(méi)他不行?

作者: 時(shí)間:2023-06-01 來(lái)源: 收藏

01

本文引用地址:http://dyxdggzs.com/article/202306/447225.htm

內存管理

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

截屏2023-08-15 22.29.37.png

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

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

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

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

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

· 舉個(gè)例子

假設我們有一個(gè)程序,它需要訪(fǎng)問(wèn)兩個(gè)內存區域:一個(gè)是只讀的代碼區域,一個(gè)是可讀寫(xiě)的數據區域。

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

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

這意味著(zhù),如果程序嘗試訪(fǎng)問(wèn)不正確的地址,MMU 可以通過(guò)重新映射來(lái)保護系統不崩潰。

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

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

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

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

同時(shí),MMU可以根據內存訪(fǎng)問(wèn)權限來(lái)限制程序對內存的訪(fǎng)問(wèn),確保系統的安全性和穩定性。

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

截屏2023-08-15 22.30.49.png

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

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

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

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

02

頁(yè)表是什么?

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

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

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

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

頁(yè)表一般由操作系統來(lái)維護,因為操作系統需要掌握虛擬地址和物理地址之間的映射關(guān)系。

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

· 為什么沒(méi)有MMU就無(wú)法運行Linux系統?

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

沒(méi)有 MMU,就無(wú)法實(shí)現這種映射,從而無(wú)法運行 Linux 系統。

· 為什么有些較為簡(jiǎn)單的SOC可能沒(méi)有MMU,但仍然可以運行一些操作系統或者裸機程序?

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

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

這使得RTOS可以運行在許多系統上,包括一些沒(méi)有MMU的系統。

版權聲明:本文來(lái)源網(wǎng)絡(luò ),免費傳達知識,版權歸原作者所有。如涉及作品版權問(wèn)題,請聯(lián)系我進(jìn)行刪除。



關(guān)鍵詞: MMU 嵌入式 linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>