ARM·MMU
MMU的主要功能:1)設置權限 2)地址映射
(這里我們主要講的是地址映射)
【虛擬地址到物理地址的映射】
問(wèn)題一:為什么要虛擬地址?
原因1:我們先來(lái)看一個(gè)問(wèn)題,A程序需要10MB的內存,B程序需要110MB的內存,A和B同時(shí)運行就需要20M的內存,這時(shí)如果只剩下10M的內存,如果C程序需要20M的內存又該如何呢?所以這樣對我們的物理內存的容量要求就十分的大。
原因2:如果這時(shí)候因為某些程序的退出,有了20M的內存,但這些內存不是連續的,是隨機分配的,但是總共加起來(lái)有20M,可以讓c程序運行,可是c程序沒(méi)有確定的運行地址;
原因3:

結合上面2個(gè)原因,我們就可以看出來(lái),虛擬地址的發(fā)明的必要性。
【虛擬地址的改進(jìn)】
(1)

分段方式映射內存
這樣雖然解決了問(wèn)題2,問(wèn)題3,但是物理地址和虛擬地址是一一對應的關(guān)系,物理地址并沒(méi)有得到擴大,容量依然十分小
(2)分頁(yè)的方法(ARM中頁(yè)的大小1MB)
分段的方法中,每次程序運行總是把程序全部裝入內存;分頁(yè)則是程序運行到哪頁(yè)就為哪頁(yè)分配內存
我們用一個(gè)例子來(lái)說(shuō)明一下:
假設一個(gè)A文件在內存中被執行的時(shí)候,操作系統會(huì )先為改程序創(chuàng )建一個(gè)4GB的進(jìn)程虛擬地址空間(并不是真實(shí)的空間,只是一種數據結構,就是頁(yè)目和頁(yè)表)
分頁(yè)方法的核心思想就是當可執行文件執行到第x頁(yè)時(shí),就為第x頁(yè)分配一個(gè)內存頁(yè)y,然后再講這個(gè)內存頁(yè)添加到進(jìn)程虛擬地址空間的映射表中,這個(gè)映射表就相當于一個(gè)y=f(x)的函數
評論