Wat is Hypervisor?

Software om meerdere virtuele machines op één computer te laten draaien. Verdeelt CPU, geheugen en apparaten over het OS van elke virtuele machine en isoleert ze van elkaar. Ook virtual machine monitor genoemd.

Japanse benaming: ハイパーバイザ

“Hypervisor” komt voor in 10 oefenvragen uit 3 onderwerpen, bijv. Besturingssysteem en hardware, Hardwarebeveiliging, Halfgeleiders voor auto's en functionele veiligheid.

Vakgebied: Besturingssysteem en hardware

Hoe hij de controle over de CPU houdt

Een hypervisor, ook wel virtual machine monitor, draait op een hoger privilegeniveau dan de gastbesturingssystemen. Gastkernels denken dat ze de hardware besturen, maar wanneer een ervan een geprivilegieerde instructie uitvoert of een beschermde resource aanspreekt, genereert de CPU een trap naar de hypervisor, die het effect op de toestand van die virtuele machine nabootst en de gast laat doorlopen. Dit heet trap-and-emulate. Hardwarematige virtualisatie-uitbreidingen voegen een speciale modus toe en slaan de gasttoestand bij elke overgang snel op en zetten die terug; RISC-V voegt bijvoorbeeld hypervisormodi toe aan zijn machine-, supervisor- en usermodus.

Geheugen virtualiseren

Elke gast beheert paginatabellen die virtuele gastadressen afbeelden op wat hij voor fysieke adressen houdt. Die fysieke gastadressen moeten op hun beurt worden afgebeeld op echt hostgeheugen. Met nested paging voert de hardware beide stappen automatisch uit: van virtueel gastadres naar fysiek gastadres via de tabellen van de gast, en vervolgens naar fysiek hostadres via de tabellen van de hypervisor. Oudere systemen gebruikten shadow page tables die in software werden bijgehouden, waardoor de hypervisor moest ingrijpen telkens wanneer een gast zijn tabellen wijzigde. De prijs van vertaling in twee stappen is een langere page-table walk bij TLB-misses, wat grotere pages helpen beperken.

I/O virtualiseren

Een echt apparaat register voor register emuleren is volledig transparant, maar traag, omdat elke registertoegang een exit naar de hypervisor veroorzaakt. Bij paravirtualisatie worden in de gast in plaats daarvan virtualisatiebewuste drivers geïnstalleerd die gebundelde verzoeken uitwisselen met de hypervisor via wachtrijen in gedeeld geheugen; dat is de gangbare keuze voor virtuele schijven en netwerkkaarten. Voor de hoogste prestaties kan een fysiek apparaat rechtstreeks aan één gast worden toegewezen, waarbij een I/O memory management unit (IOMMU) zijn DMA beperkt tot het geheugen van die gast, zodat de isolatie behouden blijft.

Hypervisors, containers en vertrouwen

Een type 1-hypervisor draait direct op de hardware, zoals in cloudservers, terwijl een type 2-hypervisor als applicatie op een hostbesturingssysteem draait. Containers zijn weer iets anders: ze delen één kernel en partitioneren alleen processen, bestandssystemen en resources, waardoor ze lichter zijn maar minder sterk isoleren dan virtuele machines, die elk hun eigen kernel opstarten. Hypervisors partitioneren ook software met gemengde kritikaliteit op automotive SoC's. Normaal gesproken kan de hypervisor al het gastgeheugen lezen; confidential-computingfuncties versleutelen het VM-geheugen, zodat zelfs de host dat niet kan.

Nu oefenen: vragen over Hypervisor

Welke uitleg over de typen hypervisor is juist?

  1. AEr is een type dat rechtstreeks op de hardware draait en een type dat als toepassing op een gewoon besturingssysteem draait
  2. BHij draait altijd als toepassing op een gewoon besturingssysteem en nooit rechtstreeks op de hardware
  3. CEr is geen verschil tussen typen en alle werken uitsluitend met software zonder hardware te gebruiken
Antwoord en toelichting tonen

Antwoord: A. Er is een type dat rechtstreeks op de hardware draait en een type dat als toepassing op een gewoon besturingssysteem draait

Hypervisors zijn er in een type dat rechtstreeks op de hardware draait en besturingssystemen beheert (type 1, bare metal) en een type dat als toepassing op een gewoon besturingssysteem zoals Windows of Linux draait (type 2, hosted). Type 1 heeft geen extra laag en is uitstekend in prestaties en isolatie, dus wordt gebruikt voor servers en cloud; type 2 is gemakkelijk te gebruiken en wordt vaak gebruikt voor ontwikkeling en tests op pc's. Beide gebruiken hardware zoals CPU-virtualisatieondersteuning.

Hoe heet de methode waarbij, wanneer het besturingssysteem van een virtuele machine een instructie met privileges uitvoert, de verwerking naar de hypervisor gaat en die het effect van de instructie namens de machine nabootst?

  1. ATrap-and-emulate
  2. BCopy-on-write
  3. CDemand paging
Antwoord en toelichting tonen

Antwoord: A. Trap-and-emulate

Het besturingssysteem van een virtuele machine voert een bevoorrechte instructie uit alsof het de hardware rechtstreeks bedient, maar omdat het in werkelijkheid in een modus met lagere privileges draait, treedt een exception (trap) op. De hypervisor vangt die op, bootst het effect van de instructie na (emuleert) zodat het resultaat voor die virtuele machine juist is, en keert terug naar de virtuele machine. CPU-virtualisatieondersteuning zorgt dat dit omschakelen snel en betrouwbaar gebeurt. Copy-on-write en demand paging zijn geheugenbeheermethoden.

Veelgestelde vragen

Wat is het verschil tussen een hypervisor en een virtuele machine?

De hypervisor is de softwarelaag die virtuele machines aanmaakt en uitvoert en de hardware over hen verdeelt; elke virtuele machine is één geïsoleerde gastomgeving met een eigen besturingssysteem.

Wat is het verschil tussen een type 1- en een type 2-hypervisor?

Een type 1-hypervisor (bare-metal) draait direct op de hardware, terwijl een type 2-hypervisor (hosted) als applicatie bovenop een gewoon besturingssysteem draait.

Zijn containers hetzelfde als virtuele machines?

Nee. Containers delen de kernel van de host en zijn lichtgewicht, terwijl virtuele machines elk hun eigen kernel op een hypervisor draaien, wat sterkere isolatie geeft en de mogelijkheid om verschillende besturingssystemen te draaien.

“Hypervisor” in de toelichting

Vragen met “Hypervisor” (10)

  1. Welke uitleg over de typen hypervisor is juist?
  2. Hoe heet de methode waarbij, wanneer het besturingssysteem van een virtuele machine een instructie met privileges uitvoert, de verwerking naar de hypervisor gaat en die het effect van de instructie namens de machine nabootst?
  3. Wat wordt vereist wanneer de functies van meerdere ECU's worden geïntegreerd in één krachtige SoC en software met verschillende ASIL's samen wordt uitgevoerd?
  4. Hoe heet de software waarmee op één computer meerdere besturingssystemen elk als onafhankelijke virtuele machine tegelijk kunnen draaien?
  5. Welke uitleg over de adresvertaling door hardware is juist bij virtualisatie met geneste paginering (tweetraps adresvertaling)?
  6. Welke uitleg over paravirtualisatie is juist?
  7. Welk verschil tussen containers en virtuele machines is juist?
  8. Welke combinatie van de belangrijkste werkingsmodi die in de privileged architecture van RISC-V zijn vastgelegd is juist?
  9. Welke uitspraak over de kenmerken van een TEE van het 'enclave'-type zoals Intel SGX is juist?
  10. Wat is het doel van de functie waarbij de CPU het geheugen van virtuele machines versleutelt (zoals AMD SEV en Intel TDX) bij 'confidential computing' in de cloud?

Verwante termen

Numerieke apertuur (NA) Geneste paginering (nested paging) Copy-on-write Demand paging ECU (elektronische regeleenheid) SoC (system on chip) ASIL (Automotive Safety Integrity Level) CPU-tijd Paginatabel Via

Naar de woordenlijst