Virtualisointi
Virtualisointitapoja > Koneiden ja järjestelmien virtualisointi

Hypervisor (myös virtual machine monitor, VMM, virtuaalikonemonitori) on virtuaalikoneen suorittamiseen käytetty ohjelmistokerros. Nämä jaetaan kahteen tyyppiin: suoraan laitteistolla suoritettava (tyyppi 1) ja toisen käyttöjärjestelmän päällä suoritettava (tyyppi 2).
Tyyppi 1 suoritetaan suoraan tietokonelaitteistolla ja ne ovat tehokkaita sekä turvallisia koska mitään muuta ei suoriteta sen ja laitteiston välillä. Tyyppi 1 korvaa tietokoneen käyttöjärjestelmän ja soveltuu palvelinkäyttöön, mutta usein tarvitsee toisen koneen virtuaalikoneiden hallintaan. 
Tyyppi 2 suoritetaan sovellusohjelmana toisen käyttöjärjestelmän päällä ja usein käytössä henkilökohtaisella tietokoneella, jossa on tarve suorittaa useampia käyttöjärjestelmiä. Tyyppi 2 mahdollistaa nopean pääsyn toiseen käyttöjärjestelmään, joka tekee siitä soveltuvan loppukäyttäjälle, mutta se käyttää laitteistoa toisen käyttöjärjestelmän kautta, joka lisää viiveitä (latenssi) ja vaikuttaa suorituskykyyn.
Tietokoneen virtualisointi voidaan jakaa edelleen seuraavasti:
täysi virtualisointi (muokkaamaton vieraskäyttöjärjestelmä)
paravirtualisointi (muutoksia vieraskäyttöjärjestelmään)
yhdistelmä (erikoistuneet laiteajurit)
käyttöjärjestelmätason virtualisointi (säiliöinti)
Täysi virtualisointi sallii toisen käyttöjärjestelmän suorittamisen ilman muokkauksia eristettynä vieraskäyttöjärjestelmäksi. Täysi virtualisointi voi käyttää ohjelmistoapua tai laitteistoapua: ohjelmistoavusteinen tarkoittaa binäärin käännöstä ohjelmallisesti tiettyjen käskyjen käsittelyssä kun taas laitteistoavusteinen käyttää suorittimeen integroituja toimintoja näiden käskyjen suorittamiseen.
Käyttöjärjestelmän muuttamista virtualisoinnille kutsutaan paravirtualisoinniksi, jota tukevat muun muassa Xen ja User-mode Linux. Paravirtualisoinnissa vieraskäyttöjärjestelmä vaatii laajennuksia hypervisorin kutsumiseen.
Yhdistelmässä isäntäkäyttöjärjestelmä käyttää laitteistoavustusta täydelle virtualisoinnille ja vieraskäyttöjärjestelmä käyttää laiteajureita tietyille laitteille paravirtualisoinnin tapaan.
Laitteistopohjaisen tuen lisääntyessä suorittimien käskykantalaajennoksilla erot ovat hämärtyneet.
Eri hypervisor-ratkaisut voivat tukea käynnissä olevan virtuaalikoneen siirtoa isännältä toiselle (live migration) tai sisäkkäisiä virtuaalikoneita (nested). Failover ("puolenvaihto") tarkoittaa suorituksen siirtämistä yhdestä virtuaalikoneesta toiseen suunnitellusti tai vikatilanteessa.
x86-käskykanta ennen vuotta 2005 ei tue Popekin ja Goldbergin esittämiä vaatimuksia virtualisoinnille koska käskykannassa on joukko käskyjä, jotka eivät täytä virtualisointivaatimuksia. VMware esitti vuonna 1998 ohjelmistoratkaisun tiettyjen x86-käskyjen kohdalla, jolloin VMM:n toteutus tuli mahdolliseksi. Intel VT-x ja AMD-V (2005 ja 2006) lisäävät käskykantaan ominaisuudet, joilla laitteisto tukee Popekin ja Goldbergin esittämiä vaatimuksia virtualisoinnille. Eräät muut suoritinarkkitehtuurit täyttävät nämä vaatimukset (IBM S/370, Motorola 68010 ja uudemmat, PowerPC sekä eräät muut).
Säiliöinti on käyttöjärjestelmätason virtualisointi (kevyt prosessitason virtualisointi), jolla tehdään virtuaaliympäristöjä (engl. virtual environment, VE). Docker vaikutti merkittävästi tämän suosioon ja yleistymiseen.
Emulaattorit on suunniteltu suorittamaan eri suorittimelle tehtyjä ohjelmia toisella laitteistoalustalla, kun taas virtualisointi voi käyttää laitteen omaa käskykantaa ja laitteistoa. Emulaatio tulkitsee vierasalustan käskykannan mahdollistaen suorittamisen eri suorittimella.