Full virtualisering - Full virtualization

Image
Skjermbilde av ett virtualiseringsmiljø

I informatikk er virtualisering en moderne teknikk utviklet på slutten av 1990 -tallet og er forskjellig fra simulering og emulering . Virtualisering bruker teknikker som brukes til å lage forekomster av et miljø, i motsetning til simulering, som modellerer miljøet; eller emulering, som replikerer målmiljøet, for eksempel visse typer virtuelle maskinmiljøer . Full virtualisering krever at alle viktige funksjoner i maskinvaren gjenspeiles i en av flere virtuelle maskiner - inkludert hele instruksjonssettet, inngangs-/utdataoperasjoner , avbrudd, minnetilgang og alle andre elementer som brukes av programvaren som kjører på den bare maskinen , og det er ment å kjøre i en virtuell maskin. I et slikt miljø kan all programvare som er i stand til å utføre på den rå maskinvaren, kjøres i den virtuelle maskinen og spesielt alle operativsystemer. Den åpenbare testen for full virtualisering er om et operativsystem beregnet på frittstående bruk kan kjøres på en virtuell maskin.

Hjørnesteinen i full virtualisering eller virtualisering av type 1 er en hypervisor eller et superoperativsystem som opererer på et høyere privilegium enn operativsystemet. Denne Hypervisor eller Super OS krever to viktige funksjoner for å etablere og beskytte virtualiserte miljøer. Disse to funksjonene er:

  1. OS-uavhengig lagringsadministrasjon for å skaffe ressurser for alle støttede virtuelle miljøer som Linux, Microsoft Windows eller innebygde miljøer og for å beskytte disse miljøene mot uautorisert tilgang og,
  2. Bytte av virtualiserte miljøer for å allokere fysiske databehandlingsressurser til virtuelle miljøer.

Se Intel VT-x eller AMD-V for en detaljert beskrivelse av rettighetsnivåer for Hypervisor-, OS- og brukermoduser, VMCS, VM-Exit og VM-Entry. Denne virtualiseringen skal ikke forveksles med IBM Virtual Machine -implementeringer på slutten av 60 -tallet og begynnelsen av 70 -tallet, ettersom IBM -systemarkitekturen bare støttet to moduser for Supervisor og Program som ikke ga sikkerhet eller separasjon av virtuelle maskiner.

Andre former for plattformvirtualisering tillater bare at bestemt eller modifisert programvare kjøres i en virtuell maskin. Konseptet med full virtualisering er godt etablert i litteraturen, men det refereres ikke alltid til av dette spesifikke begrepet; se plattformvirtualisering for terminologi.

Et viktig eksempel på virtuelle maskiner, ikke å forveksle med virtualisering implementert ved emulering, var det som ble levert av kontrollprogrammet til IBMs CP/CMS -operativsystem. Det ble først demonstrert med IBMs CP-40 forskningssystem i 1967, deretter distribuert via åpen kildekode i CP/CMS i 1967–1972, og implementert på nytt i IBMs VM-familie fra 1972 til i dag. Hver CP/CMS-bruker fikk en simulert, frittstående datamaskin. Hver slik virtuell maskin hadde de fullstendige egenskapene til den underliggende maskinen, og (for brukeren) den virtuelle maskinen kunne ikke skilles fra et privat system. Denne simuleringen var omfattende, og var basert på Driftsprinsipper manuelle for maskinvaren. Det inkluderte således elementer som et instruksjonssett, hovedminne, avbrudd, unntak og tilgang til enheten. Resultatet var en enkelt maskin som kan multiplexeres blant mange brukere.

Full virtualisering er bare mulig med den riktige kombinasjonen av maskinvare- og programvareelementer . For eksempel var det ikke mulig med de fleste av IBMs System/360- serier med unntak av IBM System/360-67 ; Det var heller ikke mulig med IBMs tidlige System/370 -system. IBM la til virtuell minnemaskinvare i System/370-serien i 1972, noe som ikke er det samme som Intel VT-x Rings som gir et høyere privilegiumnivå for Hypervisor for å kontrollere virtuelle maskiner på riktig måte som krever full tilgang til Supervisor og Program eller User-moduser.

Tilsvarende var full virtualisering ikke helt mulig med x86-plattformen før 2005–2006 tillegg av AMD-V- og Intel VT-x- utvidelser (se x86-virtualisering ). Mange plattformshypervisorer for x86-plattformen kom veldig nært og hevdet full virtualisering selv før AMD-V og Intel VT-x-tilleggene. Eksempler inkluderer Adeos , Mac-on-Linux, Parallels Desktop for Mac , Parallels Workstation , VMware Workstation , VMware Server (tidligere GSX Server), VirtualBox , Win4BSD og Win4Lin Pro . VMware, for eksempel, bruker en teknikk kalt binær oversettelse for automatisk å endre x86-programvare på farten for å erstatte instruksjoner som "gjennomborer den virtuelle maskinen" med en annen, virtuell maskinsikker sekvens av instruksjoner; denne teknikken gir utseendet til full virtualisering.

En sentral utfordring for full virtualisering er avlytting og simulering av privilegerte operasjoner, for eksempel I/O -instruksjoner. Virkningene av hver operasjon som utføres i en gitt virtuell maskin må holdes innenfor den virtuelle maskinen - virtuelle operasjoner kan ikke tillates å endre tilstanden til noen annen virtuell maskin, kontrollprogrammet eller maskinvaren. Noen maskininstruksjoner kan utføres direkte av maskinvaren, siden effektene deres helt er inneholdt i elementene som administreres av kontrollprogrammet, for eksempel minnelokasjoner og aritmetiske registre. Men andre instruksjoner som ville "gjennombore den virtuelle maskinen" kan ikke tillates å kjøre direkte; de må i stedet fanges og simuleres. Slike instruksjoner får enten tilgang til eller påvirker statlig informasjon som er utenfor den virtuelle maskinen.

Full virtualisering har vist seg å være svært vellykket for:

  • deling av et datasystem blant flere brukere;
  • isolere brukere fra hverandre (og fra kontrollprogrammet);
  • etterligne ny maskinvare for å oppnå forbedret pålitelighet, sikkerhet og produktivitet.

Se også

Referanser

Se spesifikke kilder oppført under plattformvirtualisering og (for historiske kilder) CP/CMS .

Eksterne linker