嵌入式虛擬化技術(shù)與應(yīng)用:ACRN開源項(xiàng)目實(shí)踐
定 價(jià):99 元
叢書名:電子與嵌入式系統(tǒng)設(shè)計(jì)叢書
- 作者:王洪波
- 出版時(shí)間:2023/10/1
- ISBN:9787111736325
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP338
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
伴隨著物聯(lián)網(wǎng)設(shè)備的指數(shù)級(jí)增長(zhǎng),在需要高算力的場(chǎng)景,例如軟件定義汽車駕駛艙、工業(yè)領(lǐng)域的工作負(fù)載整合,開源虛擬化技術(shù)在嵌入式系統(tǒng)上受到了越來(lái)越多的關(guān)注和應(yīng)用。本書首先介紹虛擬化技術(shù)的基本原理,包括CPU虛擬化、內(nèi)存虛擬化、中斷虛擬化和設(shè)備虛擬化,對(duì)比KVM在云服務(wù)器上參考實(shí)現(xiàn),重點(diǎn)介紹了開源嵌入式虛擬機(jī)ACRN的架構(gòu)設(shè)計(jì)、原理和實(shí)現(xiàn)。還特別總結(jié)了虛擬化系統(tǒng)的實(shí)時(shí)性能調(diào)優(yōu)方法和功能安全認(rèn)證實(shí)踐,以及嵌入式虛擬化技術(shù)的典型應(yīng)用場(chǎng)景案例分析。本書作為嵌入式虛擬化技術(shù)入門參考書,通過(guò)對(duì)ACRN開源軟件的介紹,幫助讀者從代碼開始了解、學(xué)習(xí)、開發(fā)虛擬機(jī)軟件,掌握嵌入式虛擬化技術(shù)并應(yīng)用于工程實(shí)踐。
1.英特爾開源軟件技術(shù)中心虛擬化項(xiàng)目組專家力作,本書圍繞嵌入式虛擬化技術(shù)的核心內(nèi)容,詳細(xì)解讀Linux基金會(huì)開源嵌入式虛擬機(jī)ACRN技術(shù)的架構(gòu)、原理和應(yīng)用實(shí)現(xiàn)。本書還特別披露和總結(jié)了虛擬化系統(tǒng)的實(shí)時(shí)性能調(diào)優(yōu)方法和功能安全認(rèn)證實(shí)踐。讀者可以從第一行代碼實(shí)現(xiàn)一個(gè)x86平臺(tái)上的“小身材、大能耐”的嵌入式虛擬機(jī)。ACRN開源項(xiàng)目的地址:https://projectacrn.org/。2.讀者通過(guò)該書學(xué)習(xí),在需要高算力的嵌入式應(yīng)用場(chǎng)景中,基于x86平臺(tái)和ACRN虛擬化技術(shù)可以實(shí)現(xiàn)工業(yè)領(lǐng)域的工作負(fù)載整合或軟件定義汽車智能駕駛艙等應(yīng)用產(chǎn)品。3.本書適合從事嵌入式虛擬化領(lǐng)域開發(fā)的技術(shù)人員,或者任何想了解如何在嵌入式系統(tǒng)上實(shí)現(xiàn)虛擬機(jī)管理程序的專業(yè)人員。
前 言
嵌入式系統(tǒng)與虛擬化技術(shù)似乎是兩個(gè)獨(dú)立的技術(shù)領(lǐng)域,沒有交集。但隨著物聯(lián)網(wǎng)設(shè)備的爆炸式增長(zhǎng)和萬(wàn)物互聯(lián)應(yīng)用的快速發(fā)展,嵌入式虛擬化技術(shù)這個(gè)跨界創(chuàng)新組合應(yīng)運(yùn)而生,也越來(lái)越受到業(yè)界的關(guān)注和重視。本書將主要回答兩個(gè)問題:為什么嵌入式系統(tǒng)需要虛擬化技術(shù)?如何在資源受限的嵌入式系統(tǒng)上實(shí)現(xiàn)虛擬化技術(shù)?
為什么嵌入式系統(tǒng)需要虛擬化技術(shù)
因?yàn)樘摂M化技術(shù)已經(jīng)來(lái)到了下一個(gè)風(fēng)口—萬(wàn)物互聯(lián)時(shí)代的虛擬化!
先從虛擬化技術(shù)的發(fā)展歷史說(shuō)起。虛擬化技術(shù)得益于分時(shí)操作系統(tǒng)和PC的蓬勃發(fā)展,現(xiàn)代虛擬化技術(shù)已經(jīng)有了20多年的發(fā)展歷史。而真正催生虛擬化技術(shù)快速部署和發(fā)展的是云時(shí)代春天的到來(lái)。開源虛擬化技術(shù)和Linux催生了基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service,IaaS),開啟了云計(jì)算時(shí)代的新篇章。虛擬機(jī)可以作為服務(wù),提供一系列獨(dú)特優(yōu)勢(shì),例如彈性資源共享、快速部署、廉價(jià)方便、集中式IT管理等。這個(gè)起始于大型電商的內(nèi)部技術(shù)革新,迅速成長(zhǎng)為一種公共服務(wù),構(gòu)成了云計(jì)算時(shí)代的基礎(chǔ)。云計(jì)算技術(shù)的發(fā)展使得作為標(biāo)準(zhǔn)化產(chǎn)品的虛擬機(jī)作為服務(wù)走入“尋常百姓家”。目前各大云服務(wù)廠商都不約而同地切換到基于KVM技術(shù)的云架構(gòu)上,并發(fā)展出各種各樣的應(yīng)用技術(shù)。
進(jìn)入新世紀(jì)后,計(jì)算機(jī)領(lǐng)域出現(xiàn)了另一個(gè)新的虛擬化應(yīng)用場(chǎng)景—萬(wàn)物互聯(lián),進(jìn)一步促進(jìn)了虛擬化技術(shù)的應(yīng)用落地和發(fā)展。萬(wàn)物互聯(lián)是把百億級(jí)別的嵌入式設(shè)備整合在一起,并通過(guò)云連接起來(lái)。虛擬化技術(shù)因此在嵌入式領(lǐng)域得到廣泛的應(yīng)用,以此整合各種單一功能設(shè)備,通過(guò)共同的網(wǎng)絡(luò)接口接入互聯(lián)網(wǎng),構(gòu)建更加高效、低成本的萬(wàn)物互聯(lián)系統(tǒng)。這也是實(shí)現(xiàn)工業(yè)4.0的必由之路。
促使嵌入式設(shè)備支持虛擬化技術(shù)的原因有如下幾點(diǎn)。第一,隨著半導(dǎo)體技術(shù)的發(fā)展,摩爾定律推動(dòng)硬件的性能提升,成本下降。今天的嵌入式SoC的性能甚至可能超過(guò)了昨天的服務(wù)器。第二,無(wú)處不在的CPU多核技術(shù)的發(fā)展自然地能夠支持多個(gè)系統(tǒng)。第三是業(yè)務(wù)的負(fù)載整合、數(shù)字化互聯(lián)的需求。出于節(jié)約成本考慮,系統(tǒng)整合并重用已有的軟件系統(tǒng),降低移植工作量,減少硬件系統(tǒng)的互連,降低整體硬件系統(tǒng)的復(fù)雜度,可以把多個(gè) “異構(gòu)” 的操作系統(tǒng)和業(yè)務(wù)整合在一套硬件系統(tǒng)上。這些都需要虛擬化技術(shù)在嵌入式設(shè)備上的支持。
如何在資源受限的嵌入式系統(tǒng)上實(shí)現(xiàn)虛擬化
“云”虛擬化和“物”虛擬化兩種技術(shù)雖然同根同源,但是嵌入式虛擬化技術(shù)和傳統(tǒng)虛擬化技術(shù)還是有很多不同的地方,例如應(yīng)用場(chǎng)景和目標(biāo)定位不同、可用的資源多寡不同、支持的物理硬件設(shè)備和外設(shè)不同、軟件發(fā)布的模式不同、各自的生態(tài)系統(tǒng)不同。為此,本書專門選擇了Linux開源基金會(huì)下支持Intel x86平臺(tái)的開源嵌入式虛擬機(jī)管理程序ACRN進(jìn)行架構(gòu)剖析和代碼實(shí)現(xiàn)的解讀。主要原因有兩點(diǎn)。第一,在嵌入式虛擬機(jī)市場(chǎng)上大多都是閉源的商用軟件,以支持Arm平臺(tái)為主,開源的、專門為嵌入式設(shè)備設(shè)計(jì)的虛擬機(jī)在市面上并不多見。第二,ACRN具有如下特點(diǎn):在x86平臺(tái)上支持實(shí)時(shí)操作系統(tǒng);小尺寸,額外開銷;能通過(guò)工業(yè)IEC 61508 功能安全認(rèn)證;具有BSD 3.0友好的許可證,完全開源。
虛擬化技術(shù)主要包括四部分核心內(nèi)容:CPU虛擬化、內(nèi)存虛擬化、中斷虛擬化和設(shè)備虛擬化。本書圍繞這四個(gè)方面,以ACRN為例介紹如何在嵌入式系統(tǒng)上實(shí)現(xiàn)一個(gè)完整的虛擬機(jī)管理程序(VMM或者Hypervisor)。本書首先介紹最基本的、通用的虛擬化技術(shù)原理?紤]到云虛擬化技術(shù)和KVM的廣泛流行,再以主流開源KVM為例來(lái)介紹其CPU、內(nèi)存、中斷和設(shè)備虛擬化的實(shí)現(xiàn)。有了這兩章的鋪墊,當(dāng)讀者隨后讀到ACRN的架構(gòu)設(shè)計(jì)和代碼實(shí)現(xiàn)時(shí),可以一邊比較KVM,一邊理解嵌入式系統(tǒng)上虛擬化技術(shù)實(shí)現(xiàn)的要點(diǎn)。本書還有兩章是針對(duì)ACRN的高級(jí)技術(shù)的,分別是性能調(diào)優(yōu)和功能安全認(rèn)證。因?yàn)榍度胧教摂M機(jī)Hypervisor是運(yùn)行在嵌入式硬件和實(shí)時(shí)操作系統(tǒng)之間的薄薄的軟件層,Hypervisor的出現(xiàn)會(huì)對(duì)整機(jī)的實(shí)時(shí)性能帶來(lái)額外的開銷,對(duì)于如何最大限度地減少Hypervisor自身引入的實(shí)時(shí)開銷,讀者可以閱讀性能調(diào)優(yōu)相關(guān)章節(jié)。ACRN還有另外一個(gè)獨(dú)特優(yōu)點(diǎn),它是第一個(gè)能支持IEC 61508安全認(rèn)證的開源虛擬機(jī)。以前只有商用虛擬機(jī)軟件才能夠完成的安全認(rèn)證,開源虛擬機(jī)也能做到。本書討論安全認(rèn)證實(shí)現(xiàn)的章節(jié)將從技術(shù)和流程兩個(gè)方面“解密”如何實(shí)現(xiàn)這一目標(biāo)。
目標(biāo)讀者
在某種程度上可以將嵌入式系統(tǒng)的虛擬化技術(shù)看作一門跨領(lǐng)域的交叉技術(shù)。虛擬化技術(shù)本身涉及操作系統(tǒng)、計(jì)算機(jī)體系結(jié)構(gòu)等領(lǐng)域知識(shí)。當(dāng)把虛擬化技術(shù)“嫁接”到嵌入式系統(tǒng)上時(shí),除了虛擬化技術(shù)背景之外,工作人員還必須具有良好的嵌入式系統(tǒng)設(shè)計(jì)經(jīng)驗(yàn)。Hyper-visor要運(yùn)行在資源受限的硬件平臺(tái)上,性能調(diào)優(yōu)又必須是整機(jī)系統(tǒng)(硬件+虛擬機(jī)+實(shí)時(shí)操作系統(tǒng)+應(yīng)用程序)的調(diào)優(yōu),所以工作人員還需要一些“螺螄殼里做道場(chǎng)”的系統(tǒng)調(diào)優(yōu)能力。
另外,本書并沒有定位成一本純理論的學(xué)術(shù)書籍,而是一本綜合了虛擬化原理知識(shí)和技術(shù)實(shí)踐的圖書。本書定位的讀者包括:
從事嵌入式虛擬化領(lǐng)域開發(fā)的研發(fā)人員或?qū)I(yè)技術(shù)人員。
從事嵌入式系統(tǒng)開發(fā),但是對(duì)虛擬化技術(shù)感興趣的研發(fā)人員。
從事虛擬化領(lǐng)域開發(fā),但是希望擴(kuò)展到嵌入式領(lǐng)域的研發(fā)人員。
全書結(jié)構(gòu)
本書的邏輯主線是按照如下思路來(lái)組織的:為什么需要嵌入式虛擬化技術(shù)→如何實(shí)現(xiàn)嵌入式虛擬化→嵌入式虛擬化和主流的云虛擬化在實(shí)現(xiàn)上有何不同→嵌入式虛擬化技術(shù)在哪些領(lǐng)域可以帶來(lái)價(jià)值。各章具體內(nèi)容簡(jiǎn)介如下。
第1章主要介紹虛擬化技術(shù)的發(fā)展歷史、虛擬機(jī)的三種模型、虛擬化技術(shù)的分類,并分析當(dāng)前嵌入式虛擬化技術(shù)所面臨的發(fā)展和挑戰(zhàn)。
第2章介紹虛擬化技術(shù)的通用概念,并描述處理器虛擬化、內(nèi)存虛擬化和I/O虛擬化的實(shí)現(xiàn),比較“云”虛擬化和“物”虛擬化,以及嵌入式虛擬化技術(shù)的特征和必要性。
第3章主要介紹在服務(wù)器領(lǐng)域廣泛使用的KVM的基本原理,并探討其與嵌入式領(lǐng)域虛擬化技術(shù)的不同之處。通過(guò)實(shí)現(xiàn)一個(gè)極簡(jiǎn)版的用戶態(tài)VMM,進(jìn)而描述KVM的主要功能實(shí)現(xiàn):CPU虛擬化、內(nèi)存虛擬化、中斷虛擬化和設(shè)備虛擬化。
第4章介紹一個(gè)Linux基金會(huì)下的專門為資源受限的嵌入式設(shè)備而設(shè)計(jì)的虛擬機(jī)ACRN。它尺寸小,額外開銷小,專門為實(shí)時(shí)系統(tǒng)進(jìn)行了設(shè)計(jì)和優(yōu)化,同時(shí)具有完全開源、友好的許可證。該章將深入介紹ACRN嵌入式虛擬機(jī)的具體實(shí)現(xiàn),包括CPU虛擬化、內(nèi)存虛擬化、中斷虛擬化和I/O虛擬化的框架支持,并提供設(shè)計(jì)框圖及部分流程圖。
第5章繼續(xù)介紹ACRN中的設(shè)備虛擬化。豐富的I/O設(shè)備虛擬化支持是ACRN的另一個(gè)優(yōu)勢(shì),也是專門為嵌入式系統(tǒng)而設(shè)計(jì)實(shí)現(xiàn)的。
第6章主要介紹ACRN系統(tǒng)的使用和環(huán)境搭建過(guò)程,并配有完整的安裝部署入門指南,方便讀者了解和具體操作ACRN。
第7章介紹嵌入式虛擬機(jī)如何能夠支持實(shí)時(shí)性,以及如何做到性能調(diào)優(yōu),并結(jié)合Intel硬件平臺(tái)和ACRN虛擬機(jī)介紹幾種常用的實(shí)時(shí)優(yōu)化思路及工具。
第8章介紹嵌入式實(shí)時(shí)操作系統(tǒng)。雖然本書主要介紹嵌入式虛擬機(jī),但是也需要對(duì)運(yùn)行在Hypervisor之上的嵌入式操作系統(tǒng)進(jìn)行介紹,因?yàn)閮烧咝枰浜显谝黄鸩拍軐?shí)現(xiàn)業(yè)務(wù)應(yīng)用程序的實(shí)時(shí)性能。ACRN是在x86硬件平臺(tái)上實(shí)現(xiàn)的,所以該章主要介紹三個(gè)比較流行的x86平臺(tái)上的開源實(shí)時(shí)操作系統(tǒng)。
ACRN是第一個(gè)能夠通過(guò)功能安全認(rèn)證的開源的虛擬機(jī)Hypervisor。第9章主要從流程和技術(shù)兩方面來(lái)分享ACRN的功能安全的工程實(shí)踐。
第10章介紹智能數(shù)控系統(tǒng)和數(shù)字孿生的實(shí)現(xiàn)。借助虛擬化技術(shù)來(lái)實(shí)現(xiàn)智能數(shù)控系統(tǒng),可以把傳統(tǒng)數(shù)控系統(tǒng)設(shè)備端側(cè)的各個(gè)分離的單獨(dú)控制器整合到同一平臺(tái)上,還可以通過(guò)數(shù)字孿生技術(shù)在云中構(gòu)建設(shè)備的數(shù)字實(shí)例。
第11章介紹如何使用虛擬化技術(shù)進(jìn)行工作負(fù)載整合。通過(guò)把機(jī)器視覺和機(jī)器控制整合在一個(gè)物理硬件平臺(tái)上運(yùn)行,可以使工業(yè)設(shè)備裝上“眼睛”和“手臂”,既可以看到需要識(shí)別的物品,又可以使用機(jī)器控制執(zhí)行相應(yīng)的操作。
第12章主要介紹如何通過(guò)虛擬化方案使移動(dòng)機(jī)器人、復(fù)合機(jī)器人的設(shè)計(jì)變得更從容,同時(shí)可以從控制器的體積、成本、功耗、性能、安全等角度滿足機(jī)器人開發(fā)所需,為多樣化的上層應(yīng)用打好基礎(chǔ)。
第13章介紹虛擬化技術(shù)在智能駕駛艙中的解決方案。通過(guò)虛擬化技術(shù),數(shù)字儀表盤系統(tǒng)及車載娛樂系統(tǒng)現(xiàn)在可以同時(shí)運(yùn)行在一顆SoC處理器上,從而降低整機(jī)成本和平臺(tái)的集成復(fù)雜性。
如何閱讀本書
本書大體上介紹了5部分技術(shù)內(nèi)容,讀者可以針對(duì)自己的興趣點(diǎn)來(lái)閱讀。
希望了解虛擬化技術(shù)基礎(chǔ)知識(shí)的讀者,可以閱讀第1、2章。
希望了解服務(wù)器上常用的KVM虛擬機(jī)實(shí)現(xiàn)的讀者,可以閱讀第3章。
希望了解如何實(shí)現(xiàn)一個(gè)完整的嵌入式虛擬機(jī)的讀者,可以閱讀第4~6章。
希望了解如何進(jìn)行實(shí)時(shí)性能調(diào)優(yōu)的讀者,可以閱讀第7章。
希望了解常用x86平臺(tái)的開源實(shí)時(shí)操作系統(tǒng)的讀者,可以閱讀第8章。
希望了解功能安全認(rèn)證的讀者,可以閱讀第9章。
希望了解嵌入式虛擬機(jī)的應(yīng)用場(chǎng)景和實(shí)際案例的讀者,可以閱讀第10~13章。
致謝
本書的作者都是英特爾公司的工程師。他們有的是來(lái)自開源技術(shù)中心部門的虛擬化開發(fā)工程師,有的是來(lái)自物聯(lián)網(wǎng)事業(yè)部的開發(fā)工程師或市場(chǎng)經(jīng)理。他們大都在虛擬化領(lǐng)域、嵌入式領(lǐng)域、工業(yè)領(lǐng)域沉浸和工作多年,具有豐富的技術(shù)實(shí)踐經(jīng)驗(yàn)。
寫作本書主要有三個(gè)原因。第一,虛擬化技術(shù)的發(fā)展。在2008年,英特爾開源軟件技術(shù)中心的虛擬化團(tuán)隊(duì)和復(fù)旦大學(xué)并行處理研究所合作并出版了《系統(tǒng)虛擬化—原理與實(shí)現(xiàn)》一書。十幾年過(guò)去了,虛擬化技術(shù)依然發(fā)展迅猛,不僅使云計(jì)算資源唾手可得,而且伴隨著萬(wàn)物互聯(lián)時(shí)代的春風(fēng),虛擬化技術(shù)在嵌入式領(lǐng)域也迎來(lái)了新的大發(fā)展。所以,團(tuán)隊(duì)認(rèn)為很有必要再續(xù)寫一本書,來(lái)專門介紹新的嵌入式虛擬化技術(shù)的原理與實(shí)現(xiàn)。第二,本書的作者除了日常的技術(shù)開發(fā)工作,也負(fù)責(zé)客戶的技術(shù)推廣和產(chǎn)品落地,在與OEM、ODM、車企、設(shè)備制造廠商打交道時(shí),他們深刻體會(huì)到我國(guó)制造行業(yè)的“一手硬、一手軟”,即硬件制造優(yōu)勢(shì)領(lǐng)先,但軟件設(shè)計(jì)開發(fā)能力卻缺乏技術(shù)積累,水平有待提高。所以也希望本書能扮演一個(gè)虛擬化技術(shù)入門和普及的“敲門磚”的角色。雖然它不能使人“21天學(xué)會(huì)虛擬化”,但是通過(guò)ACRN開源軟件的介紹(ACRN只有3萬(wàn)多行代碼),卻可以讓人們有機(jī)會(huì)從第一行代碼來(lái)了解、學(xué)習(xí)虛擬化技術(shù),甚至開發(fā)自己的虛擬機(jī)管理程序,從而能掌握嵌入式和虛擬化技術(shù)的要點(diǎn)。第三,本書的策劃編輯專門為團(tuán)隊(duì)提供了讀者需求、業(yè)界熱點(diǎn)技術(shù)分析,并給出了寫作方向。
本書的作者分工如下:第1章由董耀祖、沈溢合作撰寫;第2章由王穩(wěn)超撰寫;第3章由王穩(wěn)超、鄧杰合作撰寫;第4章由曹明貴、高世青、單峻俊合作撰寫;第5章由鄧杰撰寫;第6章由鄒皓、江燕婷合作撰寫;第7章由曹明貴撰寫;第8章由曹劍波、楊湘、陳鵬、陳紅展合作撰寫;第9章由吳向陽(yáng)撰寫;第10章由沈溢、李世奇合作撰寫;第11章由王洪波撰寫;第12章由瞿好聰、楊洪、李世奇合作撰寫;第13章由張泉撰寫。王洪波、曹明貴、王穩(wěn)超、鄧杰、高世青對(duì)全書做了審校。感謝本書的技術(shù)顧問茅俊杰、王禹、孫捷。還要感謝機(jī)械工業(yè)出版社的編輯進(jìn)行了細(xì)致的審稿,并提出了寶貴的修改建議,最終促成了本書的出版。
最后,感謝你在茫茫書海中選擇了本書,并衷心祝愿你能從中受益。
編者
2023年5月
伴隨著物聯(lián)網(wǎng)設(shè)備的指數(shù)級(jí)增長(zhǎng),在需要高算力的場(chǎng)景,例如軟件定義汽車駕駛艙、工業(yè)領(lǐng)域的工作負(fù)載整合,開源虛擬化技術(shù)在嵌入式系統(tǒng)上受到了越來(lái)越多的關(guān)注和應(yīng)用。本書首先介紹虛擬化技術(shù)的基本原理,包括CPU虛擬化、內(nèi)存虛擬化、中斷虛擬化和設(shè)備虛擬化,對(duì)比KVM在云服務(wù)器上參考實(shí)現(xiàn),重點(diǎn)介紹了開源嵌入式虛擬機(jī)ACRN的架構(gòu)設(shè)計(jì)、原理和實(shí)現(xiàn)。還特別總結(jié)了虛擬化系統(tǒng)的實(shí)時(shí)性能調(diào)優(yōu)方法和功能安全認(rèn)證實(shí)踐,以及嵌入式虛擬化技術(shù)的典型應(yīng)用場(chǎng)景案例分析。本書作為嵌入式虛擬化技術(shù)入門參考書,通過(guò)對(duì)ACRN開源軟件的介紹,幫助讀者從代碼開始了解、學(xué)習(xí)、開發(fā)虛擬機(jī)軟件,掌握嵌入式虛擬化技術(shù)并應(yīng)用于工程實(shí)踐。