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