在ARMv8-A中,程序在4個Exception Level中的某一個Level執(zhí)行。在64-bit的執(zhí)行狀態(tài)中,Exception Level決定了執(zhí)行時的特權(quán)級別拆挥,這個特權(quán)級別與ARMv7-A中定義的特權(quán)級別類似。
Exception Level是ARMv8-A體系結(jié)構(gòu)中的基礎(chǔ)概念某抓。所有的操作都在一個特定的Exception Level中執(zhí)行竿刁,并且一個寄存器能存在多個Exception Level中。在一個Exception Level中改變寄存器中的值搪缨,在另一個Exception Level會產(chǎn)生影響。
Exception Level為軟件的執(zhí)行特權(quán)提供了邏輯隔離鸵熟,這個適用于ARMv8-A體系結(jié)構(gòu)中的所有操作狀態(tài)副编。系統(tǒng)軟件決定Exception Level,從而也就決定了軟件執(zhí)行的特權(quán)級別流强。Exception Level有點類似于計算機科學中的分層保護域的概念痹届。
4個Exception Level如下:
- EL0
運行通常的用戶程序呻待,EL0對應(yīng)最低特權(quán)級,因此也稱為非特權(quán)級队腐,其他的Exception Level對應(yīng)的為特權(quán)級蚕捉; - EL1
運行操作系統(tǒng)內(nèi)核,特權(quán)級柴淘; - EL2
運行Hypervisor管理程序迫淹; - EL3
運行Low-level firmware,包括Secure Monitor
ELn中为严,n越大表明Exception Level對應(yīng)的級別越高敛熬。
通常來說,應(yīng)用程序第股,操作系統(tǒng)內(nèi)核应民,或者Hypervisor,分別占用一個Exception Level夕吻。內(nèi)核Hypervisor是一個例外诲锹,比如KVM,它同時運行在EL2和EL1中涉馅。
ARMv8-A中還提供了兩個安全狀態(tài)归园,分別用Secure和Non-Secure來指代。一般Non-secure通常指Normal world控漠,Non-Secure并不是指存在安全漏洞蔓倍,而是指正常的操作。操作系統(tǒng)運行在Normal world中盐捷,與之對應(yīng)的是trusted OS運行在Secure world中偶翅。ARM的TrustZone技術(shù)可以將系統(tǒng)劃分成Normal world和Secure world。這個可以在遇到軟件攻擊或硬件攻擊時提供保護碉渡。Secure Monitor可以在Normal world和Secure world之間移動時充當通道的作用聚谁。在ARMv8-A體系架構(gòu)中,Secure Monitor運行在一個比其他軟件都要高的Exception Level中滞诺。下圖將很好的描述這個關(guān)系:
ARMv8-A提供了虛擬化的硬件支持形导。在Normal world中,虛擬化可以使多個操作系統(tǒng)能并存在同一個系統(tǒng)中习霹,這意味著Hypervisor或者Virtual Machine Manager(VMM)可以在系統(tǒng)上運行朵耕,并承載多個客戶機操作系統(tǒng)。
Normal world有以下組成部分:
- Applications:應(yīng)用程序淋叶;
- Guest Operating Systemms:包括運行在EL1中的Linux或Windows系統(tǒng)阎曹,當在一個Hypervisor中運行時,OS內(nèi)核可以作為客戶機或主機運行,這個取決于Hypervisor的模型处嫌;
- Hypervisor:運行在EL2中栅贴,當Hypervisor使能時,可以在多個客戶機操作系統(tǒng)中進行切換操作熏迹;
Secure world有以下組成部分:
- Secure firmware:在一個應(yīng)用處理器中檐薯,Secure firmware必須是引導階段中的第一個運行的,它提供了多種服務(wù)注暗,包括平臺的初始化坛缕,Trusted OS的安裝,Secure monitor calls的路由等友存,運行在EL3級別祷膳。
- Trusted OS:可信操作系統(tǒng)為Normal world提供安全服務(wù),并為執(zhí)行安全或可信應(yīng)用程序提供運行時環(huán)境屡立。當EL3使用AArch64時直晨,它執(zhí)行在EL1中,當EL3使用AArch32時膨俐,它執(zhí)行在EL3中勇皇。