久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

車載操作系統(tǒng)(七):虛擬化(Hypervisor)

 Read_He 2021-09-30

在電子電氣系統(tǒng)架構(gòu)從分布式向域集中式演進(jìn)的大背景下,,各種功能模塊都集中到少數(shù)幾個(gè)域控制器中,,以前需要N個(gè)ECU(Electronic Control Unit,電子控制單元)實(shí)現(xiàn)各種功能,,現(xiàn)在只需要一個(gè)DCU(Domain Control Unit,,域控制器),節(jié)省了大量的線束和接插件,,減輕了車身整體重量,。

但是,在汽車電子電氣系統(tǒng)中,,不同的ECU提供不同的服務(wù),,具有不同的優(yōu)先級(jí),對(duì)底層操作系統(tǒng)的要求也不一樣,。例如,,根據(jù)ISO 26262標(biāo)準(zhǔn),汽車儀表系統(tǒng)與娛樂(lè)信息系統(tǒng)屬于不同的安全等級(jí),,具有不同的處理優(yōu)先級(jí),。汽車儀表系統(tǒng)與動(dòng)力系統(tǒng)密切相關(guān),要求具有高實(shí)時(shí)性,、高可靠性和強(qiáng)安全性,,以QNX操作系統(tǒng)為主,而信息娛樂(lè)系統(tǒng)主要為車內(nèi)人機(jī)交互提供控制平臺(tái),,追求多樣化的應(yīng)用與服務(wù),,以Linux和Android為主。

要使不同類型的操作系統(tǒng)運(yùn)行在同一個(gè)計(jì)算平臺(tái),,最直接的技術(shù)路徑就是虛擬化,。虛擬化作為一項(xiàng)底層IT核心技術(shù)一直被廣泛應(yīng)用于云計(jì)算領(lǐng)域,,它的作用是通過(guò)Hypervisor軟件模擬出一個(gè)具有完整硬件系統(tǒng)功能、運(yùn)行在一個(gè)完全隔離環(huán)境中的計(jì)算機(jī)系統(tǒng),。

虛擬化的概念被引入到車載操作系統(tǒng)之后,,供應(yīng)商不再需要設(shè)計(jì)多個(gè)硬件來(lái)實(shí)現(xiàn)不同的功能需求,而只需要在車載主芯片上進(jìn)行虛擬化的軟件配置,,形成多個(gè)虛擬機(jī),,在每個(gè)虛擬機(jī)上運(yùn)行相應(yīng)的軟件即可滿足需求。

WeChat Image_20210329103803.jpg

虛擬化(Hypervisor)解決方案提供了在同一硬件平臺(tái)上承載異構(gòu)操作系統(tǒng)的靈活性,,同時(shí)實(shí)現(xiàn)了良好的高可靠性和故障控制機(jī)制, 以保證關(guān)鍵任務(wù),、硬實(shí)時(shí)應(yīng)用程序和一般用途、不受信任的應(yīng)用程序之間的安全隔離,,實(shí)現(xiàn)了車載計(jì)算單元整合與算力共享,。

云虛擬化 vs 物虛擬化

如果說(shuō)“云“虛擬化是過(guò)去20年的技術(shù)風(fēng)口,那么”物“虛擬化將會(huì)是下一個(gè)20年不容錯(cuò)過(guò)的技術(shù)風(fēng)口,。雖然兩種技術(shù)同根同源,,但是,基于嵌入式的物虛擬化與傳統(tǒng)的云計(jì)算虛擬化還是有其不同的地方,。

  1. **定位目標(biāo)不同:**云虛擬化關(guān)注虛擬機(jī)的熱遷移,、資源彈性按需分配、靈活管理,,而嵌入式虛擬化關(guān)注實(shí)時(shí)性,、可確定性、功能安全(Functional Safety) 及小身材(Footprint)等,。

  2. **可用的資源多寡不同:**云服務(wù)器的計(jì)算能力和內(nèi)存資源遠(yuǎn)多于嵌入式系統(tǒng),,后者對(duì)資源的使用幾乎達(dá)到“斤斤計(jì)較”的地步。

  3. 軟件發(fā)布模式不同,。云虛擬化軟件是同一套二進(jìn)制代碼部署在所有服務(wù)器上運(yùn)行,,而嵌入式虛擬化軟件和嵌入式硬件往往是綁定的,,大多數(shù)情況下是一物一系統(tǒng),。

車載虛擬化的技術(shù)要求

車載虛擬化操作系統(tǒng)首先是一個(gè)穩(wěn)定可靠、性能良好,、具備實(shí)時(shí)響應(yīng)能力的微內(nèi)核,,承載在虛擬機(jī)上的應(yīng)用程序按照預(yù)先設(shè)定的優(yōu)先級(jí)運(yùn)行,確保在高優(yōu)先級(jí)虛擬機(jī)中運(yùn)行的實(shí)時(shí)進(jìn)程能夠及時(shí)獲得對(duì)計(jì)算資源的必要訪問(wèn),,無(wú)論低優(yōu)先級(jí)虛擬機(jī)執(zhí)行的繁忙程度如何,,同時(shí),強(qiáng)制性地將關(guān)鍵應(yīng)用程序和實(shí)時(shí)操作系統(tǒng)與非關(guān)鍵應(yīng)用程序和普通操作系統(tǒng)安全隔離,。

小知識(shí)

所謂微內(nèi)核(Microkernel),,是指內(nèi)核進(jìn)程僅提供最基本的服務(wù),,例如進(jìn)程調(diào)度、進(jìn)程間通信,、信號(hào),、時(shí)鐘、中斷等,,而其它的服務(wù)(例如文件系統(tǒng),、內(nèi)存管理、設(shè)備驅(qū)動(dòng),、網(wǎng)絡(luò)協(xié)議棧等)都獨(dú)立于內(nèi)核以單獨(dú)的進(jìn)程運(yùn)行,,它們與內(nèi)核進(jìn)程和其它進(jìn)程之間通過(guò)內(nèi)核提供的消息傳遞機(jī)制進(jìn)行通信。

微內(nèi)核是相對(duì)于宏內(nèi)核而言的,,Linux是典型的宏內(nèi)核,,除了時(shí)鐘、中斷,、進(jìn)程調(diào)度,、進(jìn)程間通信外,文件系統(tǒng),、內(nèi)存管理,、設(shè)備驅(qū)動(dòng)管理等都由內(nèi)核完成。

一般而言,,車載虛擬化操作系統(tǒng)要求具備三點(diǎn)技術(shù)要求

  1. 使用資源分區(qū)技術(shù)嚴(yán)格隔離和分配資源,。

  2. 靈活高效的實(shí)時(shí)和非實(shí)時(shí)任務(wù)調(diào)度機(jī)制。

  3. 進(jìn)程間通信,,實(shí)現(xiàn)消息在虛擬機(jī)之間通信,。

1、資源分區(qū)



微內(nèi)核將全局內(nèi)存空間劃分為靜態(tài)可配置的資源池,,虛擬機(jī)啟動(dòng)時(shí),,將相應(yīng)的內(nèi)存頁(yè)地址空間分配給它,虛擬機(jī)中的任務(wù)線程總是連接到這部分地址空間,,并且它只能訪問(wèn)和管理這部分地址空間,,此機(jī)制確保了虛擬機(jī)之間的嚴(yán)格隔離。當(dāng)一個(gè)虛擬機(jī)中的應(yīng)用程序出現(xiàn)故障時(shí),,只會(huì)影響分配給它的內(nèi)存,,而不會(huì)影響其它虛擬機(jī)的內(nèi)存池。這是一個(gè)簡(jiǎn)單的解決方案,,因?yàn)樗S護(hù)了一個(gè)最小的受信任的代碼庫(kù),,唯一的挑戰(zhàn)是開發(fā)人員應(yīng)該預(yù)先預(yù)測(cè)Guest OS的內(nèi)存需求。

2,、任務(wù)調(diào)度機(jī)制

常見的操作系統(tǒng)任務(wù)調(diào)度機(jī)制有兩種:

  • 基于優(yōu)先級(jí):一旦內(nèi)核把資源分配給某進(jìn)程,,該進(jìn)程便會(huì)一直執(zhí)行下去,,直到該進(jìn)程結(jié)束或發(fā)生某事件被阻塞(例如主動(dòng)調(diào)用延時(shí)),才把資源分配給其它進(jìn)程,。在這種情況下,,如果某個(gè)高優(yōu)先級(jí)的任務(wù)運(yùn)行時(shí)間過(guò)長(zhǎng),最好有阻塞機(jī)制,,讓出CPU使其它低優(yōu)先級(jí)的任務(wù)也有機(jī)會(huì)運(yùn)行,。

  • 基于時(shí)間片:所有任務(wù)的執(zhí)行優(yōu)先級(jí)相同,當(dāng)內(nèi)核分配給該進(jìn)程的時(shí)間片結(jié)束,,內(nèi)核會(huì)立即停止執(zhí)行該進(jìn)程,,將時(shí)間片分配給其它進(jìn)程執(zhí)行,即便這個(gè)任務(wù)還沒(méi)有執(zhí)行完,。

車載虛擬化系統(tǒng)同時(shí)承載實(shí)時(shí)車控系統(tǒng)和非實(shí)時(shí)娛樂(lè)系統(tǒng),,這兩種系統(tǒng)對(duì)于任務(wù)的時(shí)間響應(yīng)要求有著本質(zhì)的不同:

  • 實(shí)時(shí)系統(tǒng):一般要求基于優(yōu)先級(jí)的調(diào)度方式,對(duì)于不同優(yōu)先級(jí)的任務(wù),,完全基于優(yōu)先權(quán)原則來(lái)運(yùn)行,,一旦高優(yōu)先級(jí)的任務(wù)就緒,它可以無(wú)條件地?fù)屨既魏握趫?zhí)行的,、低于自己優(yōu)先級(jí)的進(jìn)程,,無(wú)論正在運(yùn)行的進(jìn)程是否已經(jīng)進(jìn)入內(nèi)核調(diào)度階段。在一些實(shí)時(shí)操作系統(tǒng)的實(shí)現(xiàn)中,,同時(shí)支持基于時(shí)間片的調(diào)度方式,,當(dāng)幾個(gè)任務(wù)的優(yōu)先級(jí)相同時(shí),會(huì)按照時(shí)間片來(lái)管理,,在優(yōu)先級(jí)相同的任務(wù)間切換運(yùn)行,。

  • 非實(shí)時(shí)系統(tǒng):一般情況下沒(méi)有任務(wù)優(yōu)先級(jí)的概念,所有任務(wù)默認(rèn)優(yōu)先級(jí)相同,,任務(wù)調(diào)度采用時(shí)間片調(diào)度方式,。

車載虛擬化內(nèi)核應(yīng)該具備靈活的時(shí)間調(diào)度機(jī)制,既支持基于優(yōu)先級(jí)的任務(wù)調(diào)度方式,,又支持基于時(shí)間片的任務(wù)調(diào)度方式,。



3、進(jìn)程間通信

Hypervisor在對(duì)虛擬機(jī)進(jìn)行嚴(yán)格安全隔離的同時(shí),,也需要支持不同虛擬機(jī)進(jìn)程之間以受控方式相互通信,。最基本的進(jìn)程間通信包括同步消息傳遞和共享內(nèi)存兩種方式,。

  • 同步消息傳遞:采用客戶端/服務(wù)器(Client/Server)模式,,它實(shí)現(xiàn)了兩個(gè)進(jìn)程之間的點(diǎn)對(duì)點(diǎn)通信。

  • 共享內(nèi)存:一種相對(duì)高效的進(jìn)程間通信方式,,對(duì)于效率要求較高,、數(shù)據(jù)量較大的場(chǎng)景,,通常采用這種方式。共享內(nèi)存段被視為共享文件系統(tǒng),,為每個(gè)虛擬機(jī)進(jìn)程配置對(duì)共享內(nèi)存的讀寫訪問(wèn),。

在車載虛擬化領(lǐng)域,主流的虛擬機(jī)技術(shù)提供商包括BlackBerry QNX Hypervisor(閉源)及Intel與Linux基金會(huì)主導(dǎo)的ACRN(開源),。但截至目前,,只有QNX Hypervisor應(yīng)用到量產(chǎn)車型,它也是目前市場(chǎng)上唯一被認(rèn)可功能安全等級(jí)達(dá)到ASIL D級(jí)的虛擬化操作系統(tǒng),。

BlackBerry:QNX Hypervisor

QNX是由加拿大QSSL公司(QNX Software System Ltd.)開發(fā)的實(shí)時(shí)操作系統(tǒng),,既能運(yùn)行于以Intel x86、Pentium等CPU為核心的硬件環(huán)境,,也能運(yùn)行于以PowerPC,、MIPS等CPU為核心的硬件環(huán)境。

小知識(shí)

2004年,,全球領(lǐng)先的音響產(chǎn)品制造商哈曼國(guó)際工業(yè)集團(tuán)(Harman International Industries)收購(gòu)QNX,,2010年4月,BlackBerry母公司RIM以2億美元從哈曼國(guó)際手中收購(gòu)QNX,。

QNX操作系統(tǒng)的應(yīng)用范圍極廣,,包括控制保時(shí)捷跑車的音樂(lè)和媒體功能、核電站,、美國(guó)陸軍無(wú)人駕駛坦克的控制系統(tǒng),、BlackBerry PlayBook平板電腦等。

2021年2月,,BlackBerry正式發(fā)布QNX Hypervisor 2.2版本,,該版本基于QNX Neutrino實(shí)時(shí)操作系統(tǒng)(RTOS)7.1。

QNX Hypervisor是基于Type-1(直接運(yùn)行于裸機(jī)),、實(shí)時(shí)優(yōu)先級(jí)的微內(nèi)核管理程序,,符合IEC 61508 SIL-3(用于工業(yè)安全),IEC 62304(用于醫(yī)療設(shè)備軟件)和ISO 26262 ASIL-D(用于汽車安全)等標(biāo)準(zhǔn),。

WeChat Image_20210329104201.jpg

整個(gè)QNX操作系統(tǒng)是由微內(nèi)核調(diào)度管理的一組進(jìn)程的集合,,與硬件總線結(jié)構(gòu)非常相似,稱之為“軟件總線”,。

WeChat Image_20210329104208.jpg

QNX是一個(gè)基于優(yōu)先級(jí)搶占的操作系統(tǒng),,線程優(yōu)先級(jí)用0\~255的數(shù)字表示,數(shù)字越大,,優(yōu)先級(jí)越高,。優(yōu)先級(jí)0是內(nèi)核中的IDLE線程。同時(shí),,優(yōu)先級(jí)64是一個(gè)分界嶺,,優(yōu)先級(jí)1\~63是非特權(quán)優(yōu)先級(jí),,一般用戶都可以用,而64\~255必須是有Root權(quán)限的線程才可以設(shè)置,。調(diào)度程序在選擇下一個(gè)運(yùn)行的線程時(shí),,將檢查每個(gè)處于就緒狀態(tài)的線程的優(yōu)先級(jí),具有高優(yōu)先級(jí)的線程將被優(yōu)先執(zhí)行,。

QNX基本的任務(wù)調(diào)度算法使用的是按優(yōu)先級(jí)搶占的調(diào)度方法,。這種方法保證在任何時(shí)刻都是優(yōu)先級(jí)最高的任務(wù)占用CPU時(shí)間。優(yōu)先級(jí)最高的任務(wù)可以中斷當(dāng)前運(yùn)行的任務(wù),。這種方法適用于工業(yè)實(shí)時(shí)性要求較高的場(chǎng)合,。

在基本調(diào)度算法的基礎(chǔ)上,當(dāng)兩個(gè)或更多具有相同優(yōu)先級(jí)的線程同時(shí)處于就緒狀態(tài),,并且都是當(dāng)前就緒隊(duì)列中最高優(yōu)先級(jí)的任務(wù)時(shí),,QNX提供了四種調(diào)度方法來(lái)解決問(wèn)題:

  • 先進(jìn)先出(First In First Out,F(xiàn)IFO):先進(jìn)入任務(wù)隊(duì)列的線程被選擇執(zhí)行,,直到它自動(dòng)放棄,,或者被一個(gè)級(jí)別更高的線程打斷運(yùn)行。

  • 輪詢(Round Robin):先進(jìn)入任務(wù)隊(duì)列的線程被選擇執(zhí)行,,直到它自動(dòng)放棄,,或者被一個(gè)級(jí)別更高的線程打斷運(yùn)行,或者它消耗完了自己的時(shí)間片(時(shí)間片為50ms,,是系統(tǒng)分配給每個(gè)線程用于運(yùn)行的時(shí)間單位),。

  • 自適應(yīng)調(diào)度(Adaptive Scheduling):如果一個(gè)線程消耗完自己的時(shí)間片時(shí)仍未被阻塞,線程優(yōu)先級(jí)將被減1,,稱為優(yōu)先級(jí)衰減,。一個(gè)線程只能降低一次優(yōu)先級(jí)。如果該線程被阻塞,,則將立即恢復(fù)為原來(lái)的優(yōu)先級(jí),。這種算法不適用于實(shí)時(shí)控制系統(tǒng),主要應(yīng)用于后臺(tái)有計(jì)算密集的任務(wù),,且同時(shí)需要響應(yīng)用戶的交互信息,,此時(shí),計(jì)算線程可以擁有足夠的CPU資源,,同時(shí)對(duì)用戶請(qǐng)求又有很快的響應(yīng),。

  • 零星調(diào)度(Sporadic Scheduling):引入Initial Budget、Replenishment Period,、Max Number of Pending Replenishments三個(gè)參數(shù),,使一個(gè)線程可動(dòng)態(tài)執(zhí)行于Normal Priority和Low Priority兩個(gè)優(yōu)先級(jí)。

  • Initial Budget(C):線程在Normal Priority下允許執(zhí)行的時(shí)間。

  • Low Priority:由于某種原因,,線程不再以Normal Priority運(yùn)行,,就將該線程的優(yōu)先級(jí)降至此優(yōu)先級(jí),。

  • Replenishment Period(T):只有在這個(gè)時(shí)間段內(nèi),,線程才被允許消耗完它的Initial Budget。

  • Max Number of Pending Replenishments:限制Replenishment Period的發(fā)生次數(shù),。

當(dāng)線程的優(yōu)先級(jí)降低到Low Priority時(shí),,它可能會(huì)被執(zhí)行,也可能不被執(zhí)行,,取決于系統(tǒng)當(dāng)時(shí)其它線程的優(yōu)先級(jí),。一旦一個(gè)Replenishment Period(T)到來(lái),該線程的優(yōu)先級(jí)立即升至Normal Priority,,這樣,,只要適當(dāng)配置系統(tǒng)中各線程的C和T,就可以使每個(gè)線程都可以在每個(gè)T內(nèi)被執(zhí)行C時(shí)間值,。

WeChat Image_20210329104311.jpg

零星調(diào)度將一個(gè)線程需要執(zhí)行的時(shí)間分拆成若干段進(jìn)行執(zhí)行(這也是“零星調(diào)度”名稱的由來(lái)),,這種算法適用于一個(gè)周期內(nèi)具有執(zhí)行時(shí)間上限的線程,可以使一個(gè)線程對(duì)非周期事件進(jìn)行服務(wù),,而不用擔(dān)心影響其它硬實(shí)時(shí)線程的執(zhí)行期限,。

Intel & Linux基金會(huì):ACRN

ACRN由Linux基金會(huì)于2018年3月在“Linux嵌入式大會(huì)”上發(fā)布,是一款靈活,、開源的(BSD-3-Clause License),、輕量級(jí)Hypervisor參考軟件。Intel開源技術(shù)中心為ACRN項(xiàng)目的發(fā)布貢獻(xiàn)了源代碼,,早期支持者包括Intel,、ADLink(凌華科技)、Aptiv,、LG和東軟等,。

2020年6月,ACRN v2.0正式發(fā)布,,采用**“Partition Mode”+“Sharing Mode”的“**Hybrid Mode”架構(gòu)設(shè)計(jì),。

WeChat Image_20210329104331.jpg

  • Partition Mode(左側(cè))的VM獨(dú)享CPU、內(nèi)存,、I/O外設(shè)等資源,,在運(yùn)行時(shí)沒(méi)有ACRN Hypervisor的性能開銷,可以達(dá)到最大****的隔離性和更高的實(shí)時(shí)性,。這個(gè)VM既可以作為Safety VM監(jiān)控整個(gè)物理平臺(tái)的健康狀態(tài),,在系統(tǒng)發(fā)生嚴(yán)重故障時(shí)采取緊急措施,又可以作為實(shí)時(shí)VM獲得更好的實(shí)時(shí)性。

  • Sharing Mode(右側(cè))有一個(gè)Service VM,,它的作用類似于Xen虛擬化架構(gòu)中的Dom0,,通過(guò)Device Model模塊在User VM(類似于Xen虛擬化架構(gòu)中的DomU)之間共享外設(shè),同時(shí)管理各個(gè)VM的生命周期,,并調(diào)用Libvirt接口對(duì)外提供遠(yuǎn)程調(diào)用和編排的標(biāo)準(zhǔn)接口,。需要特別說(shuō)明的是,為了使RTVM(右側(cè)黃色VM)能夠運(yùn)行硬實(shí)時(shí)OS(例如VxWorks,、Zephyr,、Xenomai等),ACRN進(jìn)行了特別的設(shè)計(jì)與代碼優(yōu)化,,例如Local APIC直通等,,使RTVM達(dá)到接近裸金屬的實(shí)時(shí)性能。

Hybrid Mode架構(gòu)具有兩個(gè)特點(diǎn):

  1. 利用Partition Mode的VM運(yùn)行Safety VM監(jiān)控物理平臺(tái)狀態(tài),,同時(shí)利用Sharing Mode中的RTVM運(yùn)行RTOS實(shí)現(xiàn)實(shí)時(shí)控制,,滿足復(fù)雜工業(yè)場(chǎng)景的需求

  2. 通過(guò)ACRN Hypervisor實(shí)現(xiàn)了異構(gòu)負(fù)載的整合,,例如,,實(shí)時(shí)和非實(shí)時(shí)負(fù)載、安全功能和非安全功能的隔離等,。

為了保持ACRN Hypervisor代碼庫(kù)盡可能精簡(jiǎn)且高效,,大部分設(shè)備模塊的實(shí)現(xiàn)都駐留在Service VM,Service VM可以運(yùn)行Clear Linux(Intel基于GPL協(xié)議的開源項(xiàng)目),,也支持其它Linux發(fā)行版或者專有RTOS作為Service OS,。如果沒(méi)有Partition Mode中的Pre-launched VM,Service VM是ACRN Hypervisor創(chuàng)建的第一個(gè)虛擬環(huán)境,,以系統(tǒng)最高優(yōu)先級(jí)的虛擬機(jī)形式存在,,通過(guò)Device Model模塊向Guest OS提供I/O模擬操作

ACRN Hypervisor基于Intel IA-32處理器的硬件輔助虛擬化技術(shù)(Intel VT-x),。

Intel VT-x引入了一種新的CPU操作,,稱為VMX(Virtual Machine eXtensions),以及兩種新的CPU工作模式和10條新的虛擬專用指令(VMPTRLD,、VMPTRST,、VMCLEAR、VMREAD,、VMWRITE,、VMCALL、VMLAUNCH,、VMRESUME,、VMXOFF和VMXON),。兩種工作模式分別為VMX root operation(根虛擬化操作)和VMX non-root operation(非根虛擬化操作),其中,,VMX root operation被設(shè)計(jì)用于給Hypervisor使用,,VMX non-root operation則由Guest OS使用。兩種工作模式都支持Ring 0~Ring 3,,因此,,Hypervisor和Guest OS可以自由選擇它們所期望的運(yùn)行級(jí)別。

硬件輔助虛擬化技術(shù)就是通過(guò)在VMX root operation和VMX non-root operation兩種工作模式之間相互切換實(shí)現(xiàn)的,。

運(yùn)行在VMX root operation模式下的Hypervisor通過(guò)顯式調(diào)用VMLAUNCH或VMRESUME指令切換到VMX non-root operation模式,,硬件自動(dòng)加載Guest OS的上下文,,于是Guest OS獲得運(yùn)行,,這種轉(zhuǎn)換稱為VM entry。Guest OS運(yùn)行過(guò)程中遇到需要Hypervisor處理的事件,,例如外部中斷或缺頁(yè)異常,,或者主動(dòng)調(diào)用VMCALL指令請(qǐng)求Hypervisor的服務(wù)的時(shí)候(與系統(tǒng)調(diào)用類似),硬件自動(dòng)掛起Guest OS,,切換到VMX root operation模式,,恢復(fù)Hypervisor的運(yùn)行,這種轉(zhuǎn)換稱為VM exit,。VMX root operation模式下,,軟件的行為與在沒(méi)有VT-x技術(shù)的處理器上的行為基本一致;而VMX non-root operation模式則有很大不同,,最主要的區(qū)別是此時(shí)運(yùn)行某些指令或遇到某些事件時(shí),,發(fā)生VM exit。

WeChat Image_20210329104353.jpg

ACRN Device Model是一個(gè)類似QEMU的硬件設(shè)備模擬軟件,,依賴以下三個(gè)子系統(tǒng)協(xié)同工作:

1,、設(shè)備仿真(Device Emulation)

Device Model為User VM中的設(shè)備驅(qū)動(dòng)提供設(shè)備仿真例程(Routines),用來(lái)模擬各種不同種類的硬件設(shè)備,,這些設(shè)備仿真例程將各自的I/O處理程序注冊(cè)到I/O調(diào)度器(Dispatcher),。當(dāng)User VM產(chǎn)生I/O設(shè)備訪問(wèn)請(qǐng)求時(shí),I/O調(diào)度器將這些請(qǐng)求分發(fā)到相應(yīng)的設(shè)備仿真例程,,實(shí)現(xiàn)硬件模擬,。

WeChat Image_20210329104404.jpg

2、VHM(Virtio and Hypervisor Service Module)

以Service OS的內(nèi)核模塊形式存在,,作為ACRN Hypervisor與Device Model之間的橋梁,,為設(shè)備模擬提供必要的服務(wù),具體的服務(wù)流程如下:

  • ACRN Hypervisor通過(guò)中斷通知VHM新的IOREQ到來(lái),。

  • VHM將IOREQ標(biāo)記為“正在處理”,,同時(shí)將其發(fā)送給設(shè)備模擬,、GVT-g(Intel開源的GPU虛擬化解決方案)、VBS-K(Virtio Backend Service Kernel-land)等做進(jìn)一步處理,。之后,,VHM可以處理新的IOREQ。

  • 一旦IOREQ被處理完成,,VHM將被通知(內(nèi)核態(tài)通過(guò)函數(shù)調(diào)用方式通知,,用戶態(tài)通過(guò)IOCTL的方式通知),之后,,VHM通過(guò)Hypercall方式進(jìn)一步通知ACRN Hypervisor該IOREQ處理完成,。

3、I/O請(qǐng)求(I/O Path)

下圖展示了ACRN中訪問(wèn)一個(gè)虛擬I/O的流程,。

WeChat Image_20210329104417.jpg

  • 當(dāng)Guest OS執(zhí)行I/O指令時(shí),,VM exit發(fā)生,ACRN Hypervisor獲得CPU控制權(quán),,首先判斷VM執(zhí)行退出的原因,,例如PIO或MMIO等。

  • ACRN Hypervisor對(duì)產(chǎn)生VM exit的指令進(jìn)行譯碼,,將譯碼得到的信息(包括PIO訪問(wèn),、訪問(wèn)字節(jié)數(shù)、讀/寫方式,、目標(biāo)寄存器等)放到與ACRN VHM,、ACRN Device Model共享的物理頁(yè)面中,然后以中斷的方式通知Service OS中的VHM做進(jìn)一步處理,。

  • Service OS中的VHM接收到中斷后,,查詢與該IOREQ相關(guān)的所有信息。

  • VHM首先會(huì)檢查是否應(yīng)該由內(nèi)核態(tài)的Device Model來(lái)處理該IOREQ,。如果是,,相應(yīng)的內(nèi)核模塊之前注冊(cè)的Callback函數(shù)會(huì)被VHM調(diào)用;否則,,如果沒(méi)有內(nèi)核態(tài)的Device Model來(lái)處理IOREQ,,VHM則會(huì)將該IOREQ保留在共享頁(yè)面中,并喚醒ACRN Device Model對(duì)該IOREQ進(jìn)行處理,。

  • ACRN Device Model采用與VHM相同的機(jī)制對(duì)IOREQ進(jìn)行處理,。Device Model的I/O執(zhí)行線程會(huì)首先查詢IOREQ具體的信息,同時(shí)檢查是否有設(shè)備仿真模塊實(shí)現(xiàn)了該IOREQ對(duì)應(yīng)的邏輯,。如果有相應(yīng)的模塊,,那么該模塊對(duì)應(yīng)的Callback函數(shù)將會(huì)被調(diào)用。

  • ACRN Device Model完成設(shè)備模擬仿真后,,將結(jié)果保存到共享頁(yè)面,。

  • 完成IOREQ的模擬和仿真后,,ACRN Device Model通過(guò)VHM的API將控制權(quán)返回給ACRN Hypervisor。

  • ACRN Hypervisor得知IOREQ處理完成,,將結(jié)果保存到vCPU的相應(yīng)寄存器中,。

  • ACRN Hypervisor更新完vCPU寄存器后,進(jìn)一步更新IP地址寄存器指向下一條Guest OS指令,,同時(shí)恢復(fù)Guest OS的執(zhí)行,。

VirtIO標(biāo)準(zhǔn)

Hypervisor介乎于底層DCU硬件和上層OS軟件之間,與標(biāo)準(zhǔn)化服務(wù)器(x86)+標(biāo)準(zhǔn)化OS(Windows和Linux)的云虛擬化應(yīng)用場(chǎng)景不同,,汽車嵌入式環(huán)境中的虛擬化技術(shù)面臨的挑戰(zhàn)是Hypervisor往往需要定制適配底層DCU硬件和上層OS軟件,,這一點(diǎn)對(duì)于Hypervisor的大規(guī)模商用與普及是一個(gè)非常大的技術(shù)障礙

2016年3月,,OASIS(Organization for the Advancement of Structured Information Standards,,結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織)正式標(biāo)準(zhǔn)化VirtIO項(xiàng)目,旨在提供一種通用的框架和標(biāo)準(zhǔn)接口,,減少Hypervisor對(duì)底層不同硬件和上層不同軟件的適配開發(fā)工作量,。

目前,,VirtIO標(biāo)準(zhǔn)得到了眾多科技巨頭的支持,,包括Apple、Google,、ARM,、Intel、Red Hat,、華為等,。Google也計(jì)劃在Android Automotive OS中集成對(duì)VirtIO的支持。

VirtIO是一套易維護(hù)和易擴(kuò)展的通用設(shè)備仿真接口,,由前端驅(qū)動(dòng)程序(Front-End Driver),、后端驅(qū)動(dòng)程序(Back-End Driver)和VirtIO虛擬隊(duì)列(Virtual Queue)構(gòu)成。

WeChat Image_20210329104435.jpg

前端驅(qū)動(dòng)程序由Guest OS實(shí)現(xiàn),,后端驅(qū)動(dòng)程序由Hypervisor實(shí)現(xiàn),,虛擬隊(duì)列通常使用環(huán)形緩沖,在Hypervisor和Guest OS之間傳輸數(shù)據(jù),,每個(gè)驅(qū)動(dòng)可以有0個(gè)或多個(gè)隊(duì)列,,取決于實(shí)際需要。例如,,網(wǎng)絡(luò)驅(qū)動(dòng)(virtio-net)可能使用了兩個(gè)虛擬隊(duì)列(分別用于接收和發(fā)送),,而塊存儲(chǔ)驅(qū)動(dòng)(virtio-blk)可能只需要一個(gè)。

WeChat Image_20210329104450.jpg

除了網(wǎng)卡,、PCI,、塊存儲(chǔ),、控制臺(tái)、輸入等常用設(shè)備之外,,傳感器,、CAN網(wǎng)絡(luò)、媒體編解碼設(shè)備等汽車領(lǐng)域的一些特殊類型硬件,,可能是未來(lái)VirtIO標(biāo)準(zhǔn)完善的方向,。

結(jié)束語(yǔ)

汽車電子電氣架構(gòu)從分布式向域集中式發(fā)展的趨勢(shì)已成定局,越來(lái)越多的功能被整合到少數(shù)幾個(gè)域控制器中,,從而出現(xiàn)了多種不同的功能復(fù)用同一個(gè)硬件平臺(tái)的需求,。

Hypervisor虛擬化為同一個(gè)硬件平臺(tái)承載多種不同類型的操作系統(tǒng)、不同時(shí)間響應(yīng)要求的業(yè)務(wù)應(yīng)用提供了關(guān)鍵的技術(shù)支撐,。借助Hypervisor虛擬化技術(shù),,既消除了硬件冗余,簡(jiǎn)化了總體設(shè)計(jì),,降低了整車重量,,又滿足了資源復(fù)用、算力共享,、安全隔離的需求,。

當(dāng)前,大多數(shù)的Hypervisor都需要與指定的底層硬件和上層Guest OS配合使用,,隨著越來(lái)越多的Hypervisor提供商和Guest OS供應(yīng)商遵循VirtIO標(biāo)準(zhǔn),,以及VirtIO標(biāo)準(zhǔn)對(duì)特定汽車硬件的虛擬化支持,Hypervisor將進(jìn)一步解耦車載軟硬件,,車載系統(tǒng)供應(yīng)商將更容易在不同的DCU硬件平臺(tái)上支撐不同的Guest OS和應(yīng)用程序,,從而真正實(shí)現(xiàn)軟件定義汽車。

作者:歐珊瑚
來(lái)源:https://mp.weixin.qq.com/s/Ilv9nn0Fy5o6p3p2\_oiacw

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多