微觀理解
內存管理單元(MMU)的一個重要功能是使系統(tǒng)能夠運行多個任務,作為獨立的程序運行在他們自己的 私有虛擬內存空間。
它們不需要了解系統(tǒng)的物理內存圖,即硬件實際使用的地址,也不需要了解可能在同一時間執(zhí)行的其他程序。
所以在這種時候其實也要注意,你到底是使用的物理內存還是虛擬內存,使用的同一片內存,會不會出現踩踏內存的現象。
你可以為每個程序使用相同的虛擬內存地址空間。
你也可以使用一個連續(xù)的虛擬內存地圖,即使物理內存是碎片化的。
這個虛擬地址空間與系統(tǒng)中的實際物理內存地圖是分開的。
你可以編寫、編譯和鏈接應用程序以在虛擬內存空間中運行。
如下圖所示的內存虛擬和物理視圖的系統(tǒng)實例,一個系統(tǒng)中的不同處理器和設備可能有不同的虛擬和物理地址圖。
操作系統(tǒng)對MMU進行編程,在這兩個內存視圖之間進行轉換。
要做到這一點,虛擬內存系統(tǒng)中的硬件必須提供地址轉換,即把處理器發(fā)出的虛擬地址轉換為主內存中的物理地址。
虛擬地址是你、編譯器和鏈接器在內存中放置代碼時使用的地址。
物理地址是由實際的硬件系統(tǒng)使用的。
MMU使用虛擬地址的最重要的位來索引映射表中的條目,并確定哪個塊被訪問。
MMU將代碼和數據的虛擬地址映射成實際系統(tǒng)中的物理地址。
這種轉換是在硬件中自動進行的,對應用程序是透明的。
除了地址轉換外,MMU還控制內存訪問權限、內存排序和每個區(qū)域內存的緩存策略。
(安全地址與非安全地址的訪問控制權限,檢查頁標簽)
MMU使任務或應用程序的編寫方式要求它們對系統(tǒng)的物理內存圖或可能同時運行的其他程序一無所知。這使你可以為每個程序使用相同的虛擬內存地址空間。
它還允許你使用一個連續(xù)的虛擬內存地圖,即使物理內存是碎片化的。這個虛擬地址空間與系統(tǒng)中的實際物理內存地圖是分開的。應用程序被編寫、編譯和鏈接以在虛擬內存空間中運行。
這個就回到了我之前說的這個MMU本質上提供的能力。
-
操作系統(tǒng)
+關注
關注
37文章
6834瀏覽量
123350 -
程序
+關注
關注
117文章
3787瀏覽量
81074 -
內存管理
+關注
關注
0文章
168瀏覽量
14143 -
MMU
+關注
關注
0文章
91瀏覽量
18307
發(fā)布評論請先 登錄
相關推薦
評論