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