如今,在軟件世界中,關(guān)于虛擬化的說法很多。簡(jiǎn)單地說,虛擬化就是讓多個(gè)操作系統(tǒng)同時(shí)在同一個(gè)計(jì)算平臺(tái)上運(yùn)行。虛擬化被認(rèn)為是從最新的多核處理器中獲得最大性能的關(guān)鍵技術(shù)。但正如并非所有計(jì)算應(yīng)用程序都相同,并非所有虛擬化方法都適用于所有應(yīng)用程序。
嵌入式系統(tǒng)有一個(gè)通常不適用于辦公室和服務(wù)器計(jì)算機(jī)的關(guān)鍵要求:需要對(duì)實(shí)時(shí)事件做出確定性響應(yīng)。為了支持確定性要求,嵌入式應(yīng)用程序通常使用 RTOS。嵌入式應(yīng)用程序還使用通用操作系統(tǒng)來處理操作員界面、數(shù)據(jù)庫(kù)和通用計(jì)算任務(wù)。
過去,由于操作系統(tǒng)無法成功地共存于計(jì)算平臺(tái)上,系統(tǒng)開發(fā)人員采用多個(gè)處理平臺(tái),使用一個(gè)或多個(gè)來支持實(shí)時(shí)功能,而其他處理平臺(tái)則用于處理通用處理。可以在同一平臺(tái)上結(jié)合兩種類型處理的系統(tǒng)設(shè)計(jì)人員可以通過消除冗余計(jì)算硬件來節(jié)省成本。多核處理器的出現(xiàn)支持了這一前提,因?yàn)榭梢詫⑻幚砥鲀?nèi)核專用于不同的計(jì)算環(huán)境;然而,整合這些環(huán)境帶來的軟件問題需要特別考慮。在同一平臺(tái)上結(jié)合實(shí)時(shí)和通用操作環(huán)境對(duì)如何實(shí)施虛擬化提出了一些嚴(yán)格的要求。
半虛擬化
在嵌入式平臺(tái)上支持多個(gè)操作系統(tǒng)的一種常見方法是使用稱為管理程序的操作軟件,該軟件在上電時(shí)首先啟動(dòng),然后加載操作系統(tǒng)。管理程序負(fù)責(zé)平臺(tái)并處理操作系統(tǒng)環(huán)境之間的內(nèi)存分區(qū)和其他處理器資源。如果 CPU 不支持用于虛擬化的 Intel VT-x 硬件擴(kuò)展,則必須對(duì)來賓操作系統(tǒng)進(jìn)行修改,以便他們知道虛擬機(jī)管理程序支持它們。它們必須進(jìn)行自己的地址轉(zhuǎn)換,以避免與屬于其他操作系統(tǒng)的內(nèi)存發(fā)生沖突。
像這樣的情況,客戶操作系統(tǒng)知道它是客戶,稱為半虛擬化。盡管該方案可能有效,但這種方法的主要缺點(diǎn)是開發(fā)人員不能將標(biāo)準(zhǔn)的開箱即用操作系統(tǒng)用作來賓。這是 Xen 管理程序采用的虛擬化方法。修改第三方操作系統(tǒng)可能會(huì)導(dǎo)致嚴(yán)重的支持問題,并且通過升級(jí)和更新在其長(zhǎng)期生命周期內(nèi)支持此類產(chǎn)品的成本非常高。
服務(wù)器虛擬化
為了最大限度地減少需要對(duì)客戶操作系統(tǒng)進(jìn)行的更改,以便它可以在虛擬環(huán)境中運(yùn)行,開發(fā)人員可以構(gòu)建一個(gè)虛擬機(jī)管理程序來模擬整個(gè)機(jī)器,為每個(gè)客戶操作系統(tǒng)提供它認(rèn)為對(duì)處理器平臺(tái)的獨(dú)占訪問權(quán)限。今天,這種方法正用于多核處理器系統(tǒng),以運(yùn)行同一應(yīng)用程序的多個(gè)實(shí)例。
雖然這種方法對(duì)于經(jīng)過優(yōu)化以使處理器保持忙碌的服務(wù)器應(yīng)用程序可能是令人滿意的,但對(duì)于需要確保對(duì)外部事件做出最快響應(yīng)的嵌入式應(yīng)用程序來說,它是不可接受的。當(dāng)前可用的此類軟件產(chǎn)品并未針對(duì)英特爾架構(gòu)處理器或特定類別的應(yīng)用程序進(jìn)行優(yōu)化。每次需要支持新的操作系統(tǒng)配置時(shí),都需要大量工作來定制管理程序以與選定的操作系統(tǒng)一起使用。
硬件輔助嵌入式虛擬化
嵌入式應(yīng)用程序的最佳虛擬化類型涉及處理器和平臺(tái)架構(gòu)提供的硬件輔助功能,管理程序使用這些功能來確保系統(tǒng)滿足要支持的應(yīng)用程序的性能目標(biāo)。借助嵌入式虛擬化,對(duì)機(jī)器的某些部分進(jìn)行仿真以為多個(gè)操作系統(tǒng)提供標(biāo)準(zhǔn)環(huán)境,而不對(duì)系統(tǒng)的某些部分進(jìn)行仿真以確保滿足系統(tǒng)性能目標(biāo)。模擬 PCI 總線接口和 CMOS 寄存器等基本功能,但實(shí)時(shí)響應(yīng)所需的 I/O 接口分配給客戶 RTOS 專用。
嵌入式管理程序必須對(duì)機(jī)器進(jìn)行分區(qū)以分離資源,供每個(gè)操作系統(tǒng)獨(dú)占使用。TenAsys 的 Windows eVM 通過配置 Microsoft Windows 引導(dǎo)加載程序來限制它使用的硬件線程和內(nèi)存的數(shù)量來實(shí)現(xiàn)這一點(diǎn)。Windows 首先啟動(dòng)并正常運(yùn)行,剩余資源分配給它。因?yàn)樗诼銠C(jī)而不是模擬軟件層上運(yùn)行,所以 Windows 任務(wù)以最高性能執(zhí)行。
接下來,RTOS 和實(shí)時(shí)應(yīng)用程序軟件被加載到為應(yīng)用程序的實(shí)時(shí)部分分配的內(nèi)存中,然后 RTOS 從 Windows 驅(qū)動(dòng)程序啟動(dòng)并開始在其隔離的硬件環(huán)境中執(zhí)行應(yīng)用程序代碼。通過訪問自己的性能關(guān)鍵 I/O 設(shè)備,實(shí)時(shí)應(yīng)用程序?qū)⑼耆?dú)立于 Windows 運(yùn)行。提供了特殊的驅(qū)動(dòng)程序,以便實(shí)時(shí)環(huán)境可以使用 Windows 資源。當(dāng) Windows 和實(shí)時(shí)任務(wù)需要通信或?qū)崟r(shí)應(yīng)用程序需要使用 Windows 資源時(shí),這兩個(gè)環(huán)境通過共享內(nèi)存中的仿真通信鏈路進(jìn)行通信,例如虛擬以太網(wǎng)和串行鏈路。實(shí)時(shí) I/O 設(shè)備通過 Windows 端的通用設(shè)備驅(qū)動(dòng)程序進(jìn)行配置。
利用英特爾架構(gòu)
嵌入式系統(tǒng)開發(fā)人員在他們想要保護(hù)的知識(shí)產(chǎn)權(quán)上進(jìn)行了大量投資。除了花費(fèi)金錢和時(shí)間來重新實(shí)現(xiàn)之外,更改應(yīng)用程序代碼以在新的操作系統(tǒng)環(huán)境中運(yùn)行可能會(huì)將錯(cuò)誤注入應(yīng)用程序或?qū)е滤鼈冏兊貌豢煽俊?/p>
高效的嵌入式虛擬化需要硬件支持,以便各種操作系統(tǒng)無需修改即可運(yùn)行。通過使用英特爾在其新 CPU 和芯片組中提供的 VT-x 硬件擴(kuò)展,可以提供高效的執(zhí)行平臺(tái),而無需修改客戶操作系統(tǒng)或其驅(qū)動(dòng)程序或重新分區(qū)系統(tǒng)磁盤。
英特爾正在開發(fā)的新硬件支持將支持其他通用操作系統(tǒng)的嵌入式虛擬化。此外,英特爾目前正在開發(fā)對(duì)虛擬化 CPU 的分頁機(jī)制和中斷控制器的支持。借助新的硬件功能,客戶操作系統(tǒng)可以獨(dú)立啟動(dòng)和停止,并且無需重新啟動(dòng)整個(gè)平臺(tái)即可重新啟動(dòng) Windows。
嵌入式虛擬化節(jié)省成本
在嵌入式市場(chǎng)中,開發(fā)人員已經(jīng)習(xí)慣于使用多個(gè)處理平臺(tái)來定制具有額外工作和費(fèi)用的操作環(huán)境,以保證實(shí)時(shí)系統(tǒng)響應(yīng)能力。但未來可能會(huì)有所不同。使用適用于 Windows 的 eVM 來實(shí)現(xiàn)系統(tǒng)整合,而無需軟件定制,可以避免無法適應(yīng)的解決方案,同時(shí)啟用可以以合理成本快速實(shí)施的解決方案。
審核編輯:郭婷
-
控制器
+關(guān)注
關(guān)注
112文章
16419瀏覽量
178818 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3554瀏覽量
89013 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6862瀏覽量
123523
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論