摘 要:基于嵌入式系統(tǒng)對虛擬化環(huán)境的特殊要求,探討如何設(shè)計虛擬機(jī)(VM)。針對工業(yè)實時控制,介紹了與第三方產(chǎn)品結(jié)合,把Intel虛擬化技術(shù)的好處拓展到應(yīng)用中去。用虛擬化整合系統(tǒng)可以保證一定的實時性能;無需硬件冗余;進(jìn)行軟件移植而不簡化應(yīng)用。通過軟件環(huán)境并行,虛擬化也允許原有的應(yīng)用與新應(yīng)用并存。它為多線程的應(yīng)用在多核處理器上運行提供了途徑。
關(guān)鍵詞:虛擬化;虛擬機(jī)監(jiān)控器;實時操作系統(tǒng);嵌入式系統(tǒng);工業(yè)控制
中圖分類號:TP3919 文獻(xiàn)標(biāo)識碼:B 文章編號:1004373X(2008)1604303
Virtual Technology Application for Embedded System
LI Fangshe
(Beijing University of Civil Engineering and Architecture,Beijing,100096,China)
Abstract:How to design Virtual Machine(VM)is explored in this paper,based on the special requirement of virtual environment for embedded system.For industrial realtime control,combining with third party product and extending the profit of Intel virtual technology to application is introduced.Real time performance is ensured by virtual consolidation system,without hardware redundancy and simplification of application with software migration.Virtualization also allows legacy application to coexist with new application by software environment in parallel and it provides a way for multithread applications on multicore processors.
Keywords:virtualization;virtual machine monitor;realtime operating system;embedded system;industrial control
1 引 言
虛擬化技術(shù)已經(jīng)應(yīng)用于桌面、移動和IT服務(wù)器領(lǐng)域,實際上,在嵌入式系統(tǒng)中,也可以實現(xiàn)由虛擬化硬件環(huán)境而帶來的一些好處,例如,多個操作系統(tǒng)(OS)可共享硬件平臺的公共資源。這樣就可以降低成本(既可降低資金成本也可以降低運營成本),提高系統(tǒng)的性能,增加系統(tǒng)的功能,或改善系統(tǒng)可靠性和安全性。本文著重探討虛擬化技術(shù)在嵌入式系統(tǒng)中的幾個使用模型。
不考慮虛擬化的工作機(jī)制,使用模型的共同特點是,總是需要添加一個軟件層,調(diào)度共享硬件平臺的操作系統(tǒng),管理分配給每一個操作系統(tǒng)的資源,當(dāng)操作系統(tǒng)之間上下文切換時,保存/恢復(fù)狀態(tài)。在這種方法中,每個操作系統(tǒng)在一個“虛擬機(jī)”(VM)上而不是在一個物理機(jī)上運行。該添加的軟件層,虛擬機(jī)監(jiān)控器(VMM),以類似于操作系統(tǒng)管理應(yīng)用運行的方法管理操作系統(tǒng)的運行。
盡管所有使用模型都有VMM,但是針對不同的應(yīng)用要求可以對VMM的架構(gòu)進(jìn)行裁剪,以便為特定的應(yīng)用需求做出不同的設(shè)計。對于不同的應(yīng)用不僅需要裁剪VMM,而且也必須裁剪在VM內(nèi)運行的操作系統(tǒng)以滿足這些應(yīng)用的要求。因此,一個通用操作系統(tǒng)(GPOS)如Linux,微軟的Windows或Windows Server通常運行在桌面或IT服務(wù)器環(huán)境中,而一個不同種類的操作系統(tǒng)實時操作系統(tǒng)(RTOS)用于嵌入式系統(tǒng)和通信系統(tǒng)中。要在一個虛擬化的環(huán)境中提供特定的實時性就成了嵌入式系統(tǒng)設(shè)計的關(guān)鍵因素。
2 嵌入式虛擬機(jī)監(jiān)控器(VMM)設(shè)計考慮
嵌入式系統(tǒng)的軟件設(shè)計要求不同于服務(wù)器或桌面環(huán)境的軟件設(shè)計要求。這些要求來自很多因素,包括系統(tǒng)的封閉性以及在這些系統(tǒng)上運行的實時任務(wù)。它決定了嵌入式系統(tǒng)環(huán)境的VMM設(shè)計。盡管許多嵌入式系統(tǒng)的要求有些類似,但是在嵌入式系統(tǒng)領(lǐng)域內(nèi),不同的應(yīng)用卻有不同的要求。在Intel推出含Intel虛擬化技術(shù)(Intel VT)的處理器之前,為不同的嵌入式系統(tǒng)應(yīng)用開發(fā)一個VMM是一件復(fù)雜的事情,而且成本極高。有了Intel VT,嵌入式系統(tǒng)的特殊要求可由本文討論的目標(biāo)產(chǎn)品低價滿足。
針對嵌入式系統(tǒng), VMM的設(shè)計應(yīng)該考慮到嵌入式系統(tǒng)獨特的隔離要求、靜態(tài)特性,以及實時任務(wù)的支持。
2.1 特殊的隔離要求
嵌入式VMM與一般VMM要求之間的差異決定了VM如何彼此隔離。大多數(shù)嵌入式系統(tǒng)是封閉系統(tǒng),即所有的軟件由一個廠家編寫,最終用戶不能運行自己的軟件。在有些情況下,這樣可以減少通用VMM中的隔離要求。在嵌入式系統(tǒng)中,減少隔離通??商岣咝阅芑蛱岣咝阅艿念A(yù)期。但在其他情況下比如有關(guān)安全應(yīng)用中,而應(yīng)增加隔離而不是減少隔離,甚至還要求認(rèn)證。
有2個嵌入式VMM,通過減少隔離要求來支持最優(yōu)化。第一個,許多實時操作系統(tǒng)運行不要分頁。因為跨頁使實時系統(tǒng)預(yù)期的代碼性能以及有效地滿足實時性變得困難。也導(dǎo)致了整體性能降低。在Intel VT系統(tǒng)中,運行沒有分頁的客體(guest)減少客體(guest)之間的隔離客體(guest) 能讀寫所有物理內(nèi)存,包括設(shè)備或其他客體(guest)內(nèi)存。在通用環(huán)境中,這是不可接受的,但是在一些嵌入式環(huán)境中,可能是優(yōu)先選擇的。第二個,I/O性能對于一個嵌入式系統(tǒng)的成功與否可能是至關(guān)重要的。這導(dǎo)致一些嵌入式VMM廠家允許VM直接訪問內(nèi)存訪問(DMA)設(shè)備。這提高了性能,但是也允許一個惡意應(yīng)用或設(shè)備驅(qū)動讀寫系統(tǒng)上的其他客體(guest)內(nèi)存。在軟件環(huán)境固定的環(huán)境中,這樣的折衷可以被接受。
即使一些嵌入式環(huán)境允許減少客體(guest)之間的隔離,但其他嵌入式環(huán)境有例外。尤其是,像由LynuxWorks支持那些有關(guān)安全和有關(guān)安全裝置的環(huán)境不允許這種折衷。此外,Intel VT降低了生成VMM的成本,這樣,用不同的設(shè)計折衷開發(fā)目標(biāo)VMM成為可能。
2.2 靜態(tài)虛擬機(jī)
很多嵌入式系統(tǒng)設(shè)計總是準(zhǔn)確地知道將有運行什么任務(wù)。也準(zhǔn)確地知道系統(tǒng)將使用什么樣硬件。這使得設(shè)計者在設(shè)計時對如何分配硬件運行任務(wù)做出選擇。于是,當(dāng)使用嵌入式OS時,典型地,設(shè)計者靜態(tài)分配特定的核和特定的內(nèi)存區(qū)域給處理任務(wù)。這樣減少了在GPOS中通常很重要的動態(tài)調(diào)度和動態(tài)內(nèi)存管理。
在虛擬化環(huán)境中,VMM為客體操作系統(tǒng)(guest OS)負(fù)責(zé)處理器調(diào)度和內(nèi)存管理,就如同操作系統(tǒng)(OS)為應(yīng)用程序負(fù)責(zé)處理器調(diào)度和內(nèi)存管理。在嵌入式環(huán)境中,對OS的很多要求也適用于嵌入式環(huán)境中的VMM。需要注意的是,設(shè)計的VMM,在有關(guān)如何給VM分配資源時,系統(tǒng)設(shè)計者可以靜態(tài)配置選擇。嵌入式環(huán)境在二個方面改變了VMM的設(shè)計。第一,調(diào)度設(shè)計簡化了,設(shè)計者可能手工靜態(tài)地把任務(wù)映射到處理器核。調(diào)度發(fā)生在同一個核上運行的VM之間,使用不同于桌面系統(tǒng)中使用的調(diào)度策略,核之間的調(diào)度被簡化。第二,設(shè)計內(nèi)存管理更多地針對可配置性而不是動態(tài)分配。VMM依賴設(shè)計者規(guī)劃分配給每個VM的內(nèi)存區(qū)域。這樣簡化了VMM內(nèi)內(nèi)存管理的設(shè)計,但是增加了配置VMM的復(fù)雜性。
2.3 實時系統(tǒng)支持
很多嵌入式系統(tǒng)要求支持實時任務(wù)。像微軟Windows這樣的通用操作系統(tǒng)(GPOS)不能提供實時控制,其原因之一就是由于調(diào)度算法的限制。在這種情況下,調(diào)度是實體,它決定一個特定的進(jìn)程或線程在指定的處理器上允許花多少時間。微軟Windows使用基于優(yōu)先級搶先的調(diào)度算法。這基本上意味著相同優(yōu)先級的線程輪巡調(diào)度,優(yōu)先級高的線程先于優(yōu)先級低的線程獲得服務(wù)。Linux也是基于優(yōu)先級的調(diào)度算法。但是,RTOS通常使用嚴(yán)格的優(yōu)先級調(diào)度任務(wù)。優(yōu)先級調(diào)度允許優(yōu)先級高的任務(wù)運行,只要它們有工作要做。通用調(diào)度算法總是試圖保證沒有任務(wù)能阻止另一任務(wù)的進(jìn)程。
在虛擬化環(huán)境中支持實時任務(wù)是一個挑戰(zhàn)。典型地,VMM不可見地在RTOS中運行單個任務(wù),也不知道它們的優(yōu)先級。目前,嵌入式VMM廠家用的解決方案就是在處理器核上隔離RTOS,或者只允許RTOS與GPOS共享一個核并且給RTOS嚴(yán)格的、高于GPOS的優(yōu)先級。
在中斷處理方式上實時環(huán)境與通用環(huán)境之間也存在差異。在很多嵌入式應(yīng)用中,由外部硬件產(chǎn)生的中斷必須在特定的時間內(nèi)響應(yīng)。GPOS不必具有在這樣的能力,因為如果不限制時間,它們常常就關(guān)掉中斷處理。這種做法對于要求實時控制的應(yīng)用是不可接受的。
對于實時中斷處理,Intel VT起著重要作用。有了Intel VT,系統(tǒng)可以配置成這樣,當(dāng)一個客體關(guān)閉中斷,只有發(fā)送給它自己的中斷被關(guān)閉。另一方面,如果當(dāng)RTOS正在運行一個關(guān)鍵任務(wù)時GPOS的中斷發(fā)生,VMM將推遲發(fā)送中斷,直到RTOS完成了該關(guān)鍵任務(wù)。
許多嵌入式系統(tǒng)要求以不同的優(yōu)先級運行的代碼之間嚴(yán)格區(qū)分I/O的優(yōu)先次序。例如,如果多個VM訪問同一個網(wǎng)絡(luò)設(shè)備,應(yīng)用可能要求客體之間增強(qiáng)某些服務(wù)質(zhì)量(QoS)的保證。這些保證可能以帶寬或延遲的保證形式出現(xiàn)。一般地,這樣的要求不會出現(xiàn)在通用系統(tǒng)中。這使得用于VM間共享設(shè)備的設(shè)計變得復(fù)雜。
嵌入式系統(tǒng)有獨特的設(shè)計要求,大大影響了如何為這樣的系統(tǒng)設(shè)計VMM。Intel VT降低了生成一個VMM的成本。它允許VMM廠家把重點放在如何滿足他們的市場需求,而不是花大氣力應(yīng)對虛擬化系統(tǒng)硬件的復(fù)雜性。
3 工業(yè)控制中的虛擬化
許多工業(yè)控制系統(tǒng)以高度可視的人機(jī)界面顯示控制過程為特色,該過程可以是一個醫(yī)療設(shè)備,一個工廠,一條裝配線等。這些顯示也可能涉及快速變化的數(shù)據(jù),或者它們可能包括訪問網(wǎng)絡(luò)數(shù)據(jù)庫接口,訪問示意圖或診斷和維護(hù)流程。這樣的系統(tǒng)得益于GPOS如微軟的Windows的普及與豐富,以及強(qiáng)大CPU的計算性能。但是它們也需要實時控制以確保機(jī)器人精確地裝配零件,移動機(jī)架和X光機(jī)到準(zhǔn)確位置,以精確的時間操縱開關(guān)和執(zhí)行機(jī)構(gòu),或完成準(zhǔn)確時段內(nèi)的功能。多數(shù)要求是閉環(huán)反饋控制系統(tǒng):例如,如果傳感器檢測到機(jī)器已到達(dá)指定位置,傳感器就發(fā)出一個信號,軟件必須在一定時間內(nèi)響應(yīng),該時間為毫秒級,以便機(jī)器在準(zhǔn)確的位置停下。
如上看到的,像微軟Windows這樣的GPOS不適合執(zhí)行實時控制,因為它們被設(shè)計成在運行的進(jìn)程之間公平共享處理器資源,從而防止有些進(jìn)程“餓死”。所以,一般傳統(tǒng)工業(yè)控制系統(tǒng)把它們的處理和控制功能分成主站和遠(yuǎn)程終端單元(RTU),主站實現(xiàn)人機(jī)界面和其他非實時管理功能,遠(yuǎn)程終端單元是小型計算機(jī),實現(xiàn)實時控制功能,傳統(tǒng)上使用可編程控制器。這些RTU包含傳感器和執(zhí)行機(jī)構(gòu),檢測和控制操作環(huán)境,同時具有足夠的計算性能,對環(huán)境變化和控制命令做出快速反應(yīng),執(zhí)行通信協(xié)議與主站交換數(shù)據(jù)。RTU常必須工作在極端溫度、濕度、振動或其他環(huán)境條件下,這些對電子組件比對機(jī)械組件更有挑戰(zhàn)性。這些環(huán)境條件限制了所用計算組件的選擇,或者增加了這些組件的成本,特別是,期望較大的性能裕度以支持未來的功能。所以,針對降低成本原因和期望一個公共的、可伸縮的、功能能夠分層的基礎(chǔ)設(shè)施,工業(yè)控制中的趨勢朝著一個整合的平臺發(fā)展,能分別提供實時控制功能與非實時功能。這樣能簡化RTU,而主站提供絕對優(yōu)先級給實時控制以便在嚴(yán)格定義的時間內(nèi)處理信號,而且仍然提供豐富的圖形環(huán)境、數(shù)據(jù)庫和GPOS的設(shè)備支持。
3.1 工業(yè)控制中對虛擬化解決方案的調(diào)度和中斷反應(yīng)時間 盡管GPOS,如微軟的Windows或Linux的XWindows的圖形用戶界面對于醫(yī)療設(shè)備或工業(yè)設(shè)備的控制滿足要求,但是應(yīng)用的響應(yīng)時間通常不可接受。GPOS提供的平均中斷反應(yīng)時間的確可能在可接受的極限內(nèi)(在5~20 ms級),但是設(shè)計必須針對最差情況的反應(yīng),GPOS的量級可能太長了。
GPOS不適合的主要原因是因為調(diào)度策略和內(nèi)核設(shè)計。調(diào)度是個實體,決定一個特定任務(wù)/進(jìn)程/線程在給定的處理器上花多少時間?,F(xiàn)代的GPOS調(diào)度允許用戶提供一個應(yīng)用調(diào)度控制的元素。Windows和Linux OS都提供了這個特性。盡管具備了這些特性,但是GPOS使用的調(diào)度算法沒有提供足夠的實時控制。
調(diào)度行為直接影響了中斷處理。當(dāng)控制一個關(guān)鍵過程時,控制設(shè)備產(chǎn)生的中斷必須在特定的、有限的時間內(nèi)響應(yīng)。GPOS沒有這個能力,因為高優(yōu)先級的任務(wù)/進(jìn)程或線程有優(yōu)先權(quán)。這種行為對于要求實時控制的應(yīng)用是不可接受的。OS的內(nèi)核設(shè)計也可能包括必須原子執(zhí)行的部分關(guān)鍵代碼,所以,在執(zhí)行這些關(guān)鍵代碼期間必須禁止中斷,因此OS中最長的關(guān)鍵部分長度導(dǎo)致最差反應(yīng)時間的增加。
當(dāng)今有不同的解決方案用于提供實時控制。有些解決方案提供實時內(nèi)核,在一個完整的線程內(nèi)運行GPOS和圖形用戶界面。定義一個API,允許GPOS和實時內(nèi)核交互。如果需要線程調(diào)度,GPOS內(nèi)的應(yīng)用就利用實時內(nèi)核提供的線程機(jī)制。
另一種方法就是一個小的實時內(nèi)核與GPOS一同運行。2個OS共享CPU、內(nèi)存和中斷控制器。但是,內(nèi)核的每個版本有自己的上下文(描述符表,內(nèi)存管理等)。實時內(nèi)核決定何時執(zhí)行特定進(jìn)程來維持其決策,也控制中斷傳遞以致不影響系統(tǒng)行為。如果執(zhí)行實時任務(wù)期間發(fā)生中斷,則實時內(nèi)核就不必執(zhí)行中斷服務(wù)例程,如果它與GPOS有關(guān)。反之將繼續(xù)執(zhí)行實時任務(wù),一旦完成它就把控制移交給GPOS,然后處理中斷。
在GPOS中這種決策設(shè)計可能很復(fù)雜。這樣的OS可能不可用。注意:為了預(yù)期通用內(nèi)核的行為,必須做某些假設(shè)。
3.2 針對工業(yè)控制應(yīng)用的商用虛擬化解決方案
商用解決方案滿足實時控制的緊急響應(yīng)時間約束,并仍然提供豐富的、普及的微軟Windows開發(fā)框架。比如TenAsys公司的INtime產(chǎn)品利用帶有Intel VT的Intel處理器硬件能力為微軟Windows提供極短的反應(yīng)時間(最壞情況低至3 ms)和實時能力,并允許Visual Studio用于Windows環(huán)境和INtime環(huán)境中的開發(fā)。這使開發(fā)者能創(chuàng)建和部署已有的實時應(yīng)用,而不用使GPOS或設(shè)備驅(qū)動達(dá)到實時性能。
4 結(jié) 語
上面闡述了虛擬化在嵌入式系統(tǒng)如在工業(yè)實時控制方面的應(yīng)用。這些領(lǐng)域的要求互不相同,不同于日常熟悉的桌面環(huán)境。這表明在VMM與在VM內(nèi)執(zhí)行的客體OS內(nèi),針對不同的要求做出了體系結(jié)構(gòu)和設(shè)計方面不同的權(quán)衡。
參 考 文 獻(xiàn)
[1]Dean Neumann,Dileep Kulkarni,Aaron Kunze,et al.Intel.RVirtualization Technology in Embedded and Communications Infrastructure Applications,Intel Technology Journal,2006,10(3).
[2]江慧琴,徐敏.中斷管理進(jìn)程化改善Linux實時性能方法研究\\.現(xiàn)代電子技術(shù),2007,30(14):4647,54.
[3]徐波,喬純捷.μC/OSⅡ在ADSP-BF531上的移植\\.國外電子元器件,2005(12):1721.
[4]孫世昶.虛擬化技術(shù)研究及PCI設(shè)備直接訪問的實現(xiàn)\\.大連:大連理工大學(xué), 2006.
[5]楊楠,Lyn.新型輕量級虛擬化技術(shù)\\.杭州:浙江大學(xué),2007.