Inbäddad hypervisor

En inbäddad hypervisor är en hypervisor som stöder kraven för inbäddade system .

Kraven för en inbäddad hypervisor skiljer sig från hypervisorer som är inriktade på server- och skrivbordsapplikationer. En inbäddad hypervisor är designad i den inbäddade enheten från början, snarare än att laddas efter enhetens distribution. Medan skrivbords- och företagsmiljöer använder hypervisorer för att konsolidera hårdvara och isolera datormiljöer från varandra, i ett inbäddat system, fungerar de olika komponenterna vanligtvis tillsammans för att tillhandahålla enhetens funktionalitet. Mobil virtualisering överlappar med inbyggd systemvirtualisering och delar vissa användningsfall.

Typiska attribut för inbäddad virtualisering inkluderar effektivitet, säkerhet, kommunikation, isolering och realtidsfunktioner.

Bakgrund

Mjukvaruvirtualisering har varit ett stort ämne i företagsområdet sedan slutet av 1960-talet, men först sedan början av 2000-talet har dess användning dykt upp i inbyggda system. Användningen av virtualisering och dess implementering i form av en hypervisor i inbyggda system skiljer sig mycket från företagsapplikationer. En effektiv implementering av en inbäddad hypervisor måste hantera ett antal problem som är specifika för sådana applikationer. Dessa frågor inkluderar den mycket integrerade karaktären hos inbyggda system, kravet på isolerade funktionsblock inom systemet för att kommunicera snabbt, behovet av realtids/deterministisk prestanda, den resursbegränsade målmiljön och det breda utbudet av säkerhets- och tillförlitlighetskrav.

Hypervisor

En hypervisor tillhandahåller en eller flera mjukvaruvirtualiseringsmiljöer där annan mjukvara, inklusive operativsystem , kan köras med sken av full åtkomst till den underliggande systemhårdvaran, där sådan åtkomst faktiskt är under hypervisorns fullständiga kontroll. Dessa virtuella miljöer kallas virtuella maskiner (VM) och en hypervisor kommer vanligtvis att stödja flera virtuella datorer som hanteras samtidigt.

Klassificering

Hypervisorer klassas i allmänhet som antingen typ 1 eller typ 2, beroende på om hypervisorn körs uteslutande i supervisorläge eller privilegierat läge (typ 1) eller om det själv är värd för ett operativsystem som en vanlig applikation (typ 2).

Typ 1-hypervisorer hanterar viktiga systemresurser som krävs för att behålla kontrollen över de virtuella maskinerna och underlättar en minimal betrodd datorbas (TCB). Typ 2-hypervisorer körs vanligtvis som en applikation inom ett mer generellt operativsystem, och förlitar sig på tjänster från operativsystemet för att hantera systemresurser. Nuförtiden laddas ofta kärntillägg för att dra fördel av hårdvara med virtualiseringsstöd.

Inbäddad hypervisor

En inbäddad hypervisor är oftast en typ 1 hypervisor som stödjer kraven för utveckling av inbyggda system . Se referenser och för en mer detaljerad diskussion.

Dessa krav sammanfattas nedan.

  • En liten, snabb hypervisor med stöd för flera isolerade virtuella datorer;
  • Stöd för lätt men säker inkapsling av medelkorniga delsystemkomponenter som interagerar starkt;
  • Kommunikation med hög bandbredd och låg latens mellan systemkomponenter, med förbehåll för en konfigurerbar, systemomfattande säkerhetspolicy;
  • Minimal påverkan på systemresurserna och stöd för garantier för fördröjning i realtid;
  • Förmåga att implementera en schemaläggningspolicy mellan virtuella datorer och tillhandahålla stöd för systemkomponenter i realtid;

Genomförande

En inbäddad hypervisor tillhandahåller vanligtvis flera virtuella datorer, som var och en emulerar en hårdvaruplattform på vilken den virtualiserade programvaran körs. Den virtuella datorn kan emulera den underliggande inbyggda hårdvaran, i vilket fall inbäddad kod som körs på den verkliga maskinen kommer att köras på den virtuella maskinen och vice versa. En emulering av den inbyggda hårdvaran är inte alltid möjlig eller önskvärd, och en virtuell plattform kan definieras istället.

När en virtuell plattform tillhandahåller en virtuell plattform måste gästprogramvara portas för att köras i den här miljön, men eftersom en virtuell plattform kan definieras utan att vara beroende av den inbyggda hårdvaran, kan gästprogramvara som stöder en virtuell plattform köras oförändrad över olika distinkta hårdvaruplattformar stöds av hypervisorn.

Inbäddade hypervisorer använder antingen paravirtualisering eller använder virtualiseringsfunktioner för den underliggande CPU:n. Paravirtualisering krävs i fall där hårdvaran inte hjälper, och involverar ofta omfattande modifieringar av kärnarkitekturens kärna av gästkärnor. Emulering av hårdvara på registernivå ses sällan i inbäddade hypervisorer eftersom detta är mycket komplext och långsamt. Den anpassade karaktären hos inbyggda system innebär att behovet av att stödja omodifierad gästmjukvara endast för binärt som kräver dessa tekniker är sällsynt.

Storleken och effektiviteten på implementeringen är också ett problem för en inbäddad hypervisor, eftersom inbäddade system ofta är mycket mer resursbegränsade än skrivbords- och serverplattformar. Det är också önskvärt för hypervisorn att så nära som möjligt bibehålla den ursprungliga hastigheten, realtidssvaret och determinism och effekteffektivitet för den underliggande hårdvaruplattformen.

Hypervisor design

Implementeringar för applikationer för inbäddade system har oftast varit baserade på design av små mikrokärnor och separationskärnor , med virtualisering inbyggd som en integrerad förmåga. Detta introducerades med PikeOS 2005. Exempel på dessa tillvägagångssätt har tagits fram av företag som Open Kernel Labs (mikrokärna följt av en separationskärna) och LynuxWorks (separationskärna). VirtualLogix verkar inta ståndpunkten att ett tillvägagångssätt baserat på en dedikerad Virtual Machine Monitor (VMM) skulle vara ännu mindre och effektivare. Denna fråga är föremål för en pågående debatt. Huvudfrågan är dock densamma på alla sidor av diskussionen – hastigheten och storleken på implementeringen (för en given funktionalitetsnivå) är av stor betydelse. Till exempel: "... hypervisorer för inbäddad användning måste vara realtidskapabla, såväl som resurssnåla."

Resurskrav

Inbyggda system är vanligtvis mycket resursbegränsade på grund av kostnader och tekniska begränsningar hos hårdvaran. Det är därför viktigt att en inbäddad hypervisor är så effektiv som möjligt. Den mikrokärn- och separationskärnbaserade designen möjliggör små och effektiva hypervisorer. Således har inbäddade hypervisorer vanligtvis ett minnesfotavtryck från flera tiotal till flera hundra kilobyte, beroende på effektiviteten i implementeringen och nivån av funktionalitet som tillhandahålls. En implementering som kräver flera megabyte minne (eller mer) är i allmänhet inte acceptabel.

Med den lilla TCB i en typ 1 inbäddad hypervisor kan systemet göras mycket säkert och pålitligt. Standardtekniker för mjukvaruutveckling, såsom kodinspektioner och systematiska tester, kan användas för att minska antalet buggar i en så liten kodbas till en liten bråkdel av de defekter som måste förväntas för en kombination av hypervisor och gästoperativsystem som kan vara 100 000–300 000 rader totalt.

VM-kommunikation

En av de viktigaste funktionerna som krävs i en inbäddad hypervisor är en säker meddelandeöverföringsmekanism, som behövs för att stödja realtidskommunikation mellan processer. I den inbäddade miljön kommer ett system vanligtvis att ha ett antal nära kopplade uppgifter, av vilka några kan kräva säker isolering från varandra. I en virtualiserad miljö kommer den inbäddade hypervisorn att stödja och upprätthålla denna isolering mellan flera virtuella datorer. Dessa virtuella datorer kommer därför att kräva tillgång till en mekanism som ger kommunikation med låg latens mellan uppgifterna.

En inter-process communication (IPC) mekanism kan användas för att tillhandahålla dessa funktioner, såväl som att anropa alla systemtjänster, och implementeras på ett sätt som säkerställer att den önskade nivån av VM-isolering upprätthålls. På grund av dess betydande inverkan på systemets prestanda bör en sådan IPC-mekanism vara mycket optimerad för minimal latens.

Hårdvarukrav

En inbäddad hypervisor måste ha fullständig kontroll över systemresurser, inklusive minnesåtkomster, för att säkerställa att programvaran inte kan bryta sig ur den virtuella datorn. En hypervisor kräver därför att målprocessorn tillhandahåller minneshanteringsstöd ( vanligtvis med en MMU ). Många inbyggda processorer inklusive ARM , MIPS och PowerPC har följt leverantörer av skrivbords- och serverchips när de har lagt till hårdvarustöd för virtualisering. Det finns fortfarande en stor andel inbäddade processorer som inte ger sådant stöd och en hypervisor som stöder paravirtualisering krävs.

ARM-processorer är anmärkningsvärda genom att de flesta av deras applikationsklassprocessordesigner stöder en teknologi som kallas ARM TrustZone, som i huvudsak ger hårdvarustöd för en privilegierad och en oprivilegierad virtuell dator. Normalt körs ett minimalt operativsystem för Trusted Execution Environment (TEE) i Secure World och en inbyggd kärna som körs i den icke-säkra världen.

Användningsfall

Några av de vanligaste användningsfallen för en inbäddad hypervisor är:

1. OS-oberoende


Designers av inbyggda system kan ha många hårdvarudrivrutiner och systemtjänster som är specifika för en målplattform. Om stöd för mer än ett operativsystem krävs på plattformen, antingen samtidigt eller i följd med en gemensam hårdvarudesign, kan en inbäddad hypervisor avsevärt förenkla uppgiften. Sådana drivrutiner och systemtjänster kan implementeras bara en gång för den virtualiserade miljön; dessa tjänster är sedan tillgängliga för alla värdbaserade operativsystem. Denna abstraktionsnivå tillåter också den inbäddade utvecklaren att implementera eller ändra en drivrutin eller tjänst i antingen hårdvara eller mjukvara när som helst, utan att detta är uppenbart för det värdbaserade operativsystemet.

2. Stöd för flera operativsystem på en enda processor

Vanligtvis används detta för att köra ett realtidsoperativsystem (RTOS) för realtidsfunktionalitet på låg nivå (som kommunikationsstacken) samtidigt som man kör ett generellt operativsystem ( GPOS) som Linux eller Windows , för att stödja användarapplikationer, såsom en webbläsare eller kalender. Målet kan vara att uppgradera en befintlig design utan den extra komplexiteten hos en andra processor, eller helt enkelt att minimera materialförteckningen ( BoM) .

3. Systemsäkerhet

En inbäddad hypervisor kan tillhandahålla säker inkapsling för vilket delsystem som helst som definierats av utvecklaren, så att ett äventyrat delsystem inte kan störa andra delsystem. Till exempel måste ett krypteringsundersystem vara starkt skyddat från attacker för att förhindra läckage av informationen som krypteringen ska skydda. Eftersom den inbäddade hypervisorn kan kapsla in ett delsystem i en virtuell dator, kan den tillämpa de säkerhetspolicyer som krävs för kommunikation till och från det delsystemet.

4. Systemtillförlitlighet

Inkapslingen av ett delsystems komponenter i en virtuell dator säkerställer att fel i något delsystem inte kan påverka andra delsystem. Denna inkapsling hindrar fel från att spridas från ett delsystem i en virtuell dator till ett delsystem i en annan virtuell dator, vilket förbättrar tillförlitligheten. Detta kan också tillåta att ett delsystem automatiskt stängs av och startas om vid feldetektering. Detta kan vara särskilt viktigt för inbäddade enhetsdrivrutiner, eftersom det är här den högsta tätheten av feltillstånd uppträder, och är därmed den vanligaste orsaken till OS-fel och systeminstabilitet. Det tillåter också inkapsling av operativsystem som inte nödvändigtvis byggdes efter de tillförlitlighetsstandarder som krävs av den nya systemdesignen.

5. Dynamisk uppdatering av systemprogramvara

Undersystemprogramvara eller applikationer kan säkert uppdateras och testas för integritet, genom att ladda ner till en säker virtuell dator innan de "sänds live" i ett körande system. Även om denna process sedan misslyckas, kan systemet återgå till sitt tidigare tillstånd genom att starta om det ursprungliga mjukvaruundersystemet/applikationen, utan att stoppa systemdriften.

6. Återanvändning av äldre kod

Virtualisering gör att äldre inbäddad kod kan användas med OS-miljön den har utvecklats och validerats med, samtidigt som utvecklaren frigörs att använda en annan OS-miljö i en separat virtuell dator för nya tjänster och applikationer. Äldre inbäddad kod, skriven för en viss systemkonfiguration kan ta exklusiv kontroll över alla systemresurser av minne, I/O och processor. Denna kodbas kan återanvändas oförändrad på alternativa systemkonfigurationer av I/O och minne genom att använda en virtuell dator för att presentera en resurskarta och funktionalitet som överensstämmer med den ursprungliga systemkonfigurationen, vilket effektivt kopplar bort den äldre koden från specifikationer för en ny eller modifierad hårdvarudesign.

Där åtkomst till operativsystemets källkod är tillgänglig, används paravirtualisering vanligtvis för att virtualisera operativsystemen på processorer utan stöd för hårdvaruvirtualisering, och därför kan applikationerna som stöds av operativsystemet också köras omodifierade och utan omkompilering i nya hårdvaruplattformsdesigner.

Även utan källåtkomst kan äldre binär kod exekveras i system som körs på processorer med stöd för hårdvaruvirtualisering som AMD-V, Intel VT -teknologier och de senaste ARM -processorerna med virtualiseringsstöd. Den äldre binära koden kan köras helt oförändrad i en virtuell dator med all resursmappning hanterad av den inbäddade hypervisorn, förutsatt att systemhårdvaran tillhandahåller motsvarande funktionalitet.

7. IP-skydd

Värdefull proprietär IP kan behöva skydd mot stöld eller missbruk när en inbäddad plattform skickas för vidare utvecklingsarbete av (till exempel) en OEM- kund. En inbäddad hypervisor gör det möjligt att begränsa åtkomst av andra systemprogramvarukomponenter till en specifik del av systemet som innehåller IP som behöver skyddas.

8. Segregering av mjukvarulicenser

Programvaru-IP som arbetar under ett licensschema kan separeras från annan programvaru-IP som arbetar under ett annat system. Till exempel kan den inbäddade hypervisorn tillhandahålla en isolerad exekveringsmiljö för proprietär programvara som delar processorn med programvara med öppen källkod som omfattas av GPL.

9. Migrering av applikationer från uni-core till multi-core system

Eftersom nya processorer använder flerkärniga arkitekturer för att öka prestanda, kan den inbäddade hypervisorn hantera den underliggande arkitekturen och presentera en enprocessormiljö för äldre applikationer och operativsystem samtidigt som den effektivt använder den nya multiprocessorsystemdesignen. På detta sätt kräver en förändring i hårdvarumiljön ingen förändring av den befintliga mjukvaran.

Kommersiella produkter

  • Crucible av Star Lab Corp.
  • Cross-OS Hypervisor - Låter applikationer köras inbyggt på en enda OS-plattform från MapuSoft Technologies, Inc.
  • OKL4 Hypervisor - Stöder ARM-baserade smarta uppkopplade enheter (inbäddade, mobila). Används i försvars- och säkerhetskänsliga applikationer. Stöds kommersiellt av Cog Systems.