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