app下載網(wǎng)站模板品牌推廣外包
ver0.2
[看前序文章有驚喜,關(guān)注W\X\G=Z+H=“浩瀚架構(gòu)師”,可以解鎖全部文章]
前言
前一篇文章,我們介紹了ARM內(nèi)存的屬性,算是一個(gè)小小的里程碑點(diǎn),接下來(lái)我們會(huì)把注意力重新拉回虛擬化的賽道。我們從[V-05] 虛擬化基礎(chǔ)-異常模型(Exception model)之后,花了很多筆墨介紹了ARM體系的Cache和內(nèi)存相關(guān)的機(jī)制作為我們進(jìn)一步研究虛擬化的基礎(chǔ)知識(shí),今天終于回歸到我們的虛擬化主線繼續(xù)小馬奔騰。內(nèi)存空間的管理也是虛擬化技術(shù)體系中的核心課題之一,下面我們就進(jìn)入內(nèi)存虛擬化的世界。
正文
1.1 內(nèi)存資源的管理
我們?cè)谇靶蛭恼耓V-00] 虛擬化概論-思想 中介紹過(guò),虛擬化的思想的核心要義就是:對(duì)底層的硬件資源在時(shí)間和空間上做分割,進(jìn)行二次分配給GuestOS使用。完成這個(gè)資源再分配的角色就是Hypervisor,而它對(duì)內(nèi)存資源以及其他設(shè)備資源的分配靠的就是對(duì)內(nèi)存空間的精準(zhǔn)的管理,如圖1-1所示。
先來(lái)看一段手冊(cè)中的描述:
An ordinary OS manages the memory that the applications run in, and the memory where the OS is located. The hypervisor is responsible for memory management for itself and for the guest operating systems it manages. The entire physical memory is at the direct disposal of the hypervisor. The MMU in EL2 is used by the hypervisor to translate the virtual addresses that the hypervisor uses to address physical memory.
通過(guò)手冊(cè)中的描述并結(jié)合圖1-1,我們可以總結(jié)幾點(diǎn)如下:
(1) 首先要搞清楚,內(nèi)存資源其實(shí)內(nèi)存空間資源,覆蓋設(shè)備類(lèi)型(IO)和Normal類(lèi)型(SDRAM)。
(2) 內(nèi)存資源的分配是經(jīng)過(guò)兩級(jí)控制的:
? 第一級(jí):從App的視角向底層看去,它要使用內(nèi)存資源需要受到當(dāng)前運(yùn)行的操作系統(tǒng)的控制,比如Linux系統(tǒng)中的Kernel。
? 第二級(jí):在虛擬化架構(gòu)下光有第一級(jí)控制是不行的,因?yàn)閮?nèi)存資源是各個(gè)VM共享的,因此需要Hypervisor介入進(jìn)行二次控制并分配。
(3) 在虛擬化的架構(gòu)下,ARM體系還是要依賴MMU完成VA到PA的翻譯過(guò)程,那么MMU工作時(shí)依賴的VMSA所有機(jī)制都需要參與配合。
(4) Hypervisor也只能管控分配給它的內(nèi)存空間,對(duì)于其他空間比如TEE-OS所在Secure空間,它說(shuō)了不算。