Hy­per­vi­sor on oh­jel­mis­to tai lai­teoh­jel­mis­to, joka helpottaa vir­tu­aa­li­ko­nei­den luomista ja hallintaa ab­stra­hoi­mal­la fyysisen tie­to­ko­neen lait­teis­to­re­surs­sit, jolloin useita käyt­tö­jär­jes­tel­miä voidaan käyttää sa­ma­nai­kai­ses­ti. Sen sijaan, että ra­ken­net­tai­siin ko­ko­nai­nen jär­jes­tel­mä lait­teis­tos­ta ja käyt­tö­jär­jes­tel­mäs­tä, se luo vir­tua­li­soi­dun version – joka käy­tän­nös­sä simuloi täy­del­lis­tä PC-ym­pä­ris­töä.

Miten hy­per­vi­sor toimii?

Kun vir­tu­aa­li­ko­ne (VM) luodaan, se toimii to­del­li­sen, ei-vir­tu­aa­li­sen koneen – kuten tie­to­ko­neen – pohjalta. Vir­tu­aa­li­ko­ne on riip­pu­vai­nen fyy­si­ses­tä lait­teis­tos­ta. Siksi näiden kahden tason välissä on hal­lin­nas­ta vastaava kerros: hy­per­vi­sor. Hy­per­vi­sor on oh­jel­mis­to, joka ottaa haltuunsa tar­vit­ta­vien re­surs­sien hallinnan. Tämä ohjelma, joka tunnetaan myös nimellä Virtual Machine Monitor (VMM), jakaa resurssit jär­jes­tel­män sisällä. Tällä tavalla useita ja erilaisia vir­tu­aa­li­ko­nei­ta voi toimia isän­tä­jär­jes­tel­mäs­sä, sillä hy­per­vi­sor varmistaa, että ne eivät häiritse toisiaan ja että kaikilla on käy­tet­tä­vis­sään tar­vit­ta­vat ka­pa­si­tee­tit.

Hy­per­vi­sor luo näin ollen ab­strak­tio­ta­son lait­teis­ton ja sillä toimivien käyt­tö­jär­jes­tel­mien välille. Se tekee tämän jakamalla lait­teis­to­re­surs­sit loogisiin yk­si­köi­hin ja si­mu­loi­mal­la jo­kai­sel­le vir­tu­aa­li­ko­neel­le oman ym­pä­ris­tön­sä. Vir­tu­aa­li­ko­neet kokevat toi­mi­van­sa suoraan fyy­si­sel­lä lait­teis­tol­la, vaikka ne ja­ka­vat­kin re­surs­se­ja muiden vir­tu­aa­li­ko­nei­den kanssa.

Huomio

Eri vir­tu­aa­li­ko­nei­den tiukka erottelu takaa paitsi re­surs­sien hyvän ja­kau­tu­mi­sen myös parantaa tie­to­tur­vaa. Hy­per­vi­sor varmistaa, ettei vie­ras­ko­ne voi käyttää toisen vie­ras­ko­neen tie­dos­to­ja. Tämä on erityisen tärkeää tes­taus­käy­tös­sä, jotta viallinen ohjelma ei va­hin­goi­ta muita tes­tausym­pä­ris­tö­jä.

Muistin hallinta

CPU-vir­tua­li­soin­nis­sa hy­per­vi­sor käyttää esi­mer­kik­si ai­ka­vii­laus­tek­niik­kaa jakamaan las­ken­ta­te­hoa tas­a­puo­li­ses­ti vir­tu­aa­li­ko­nei­den kesken. Ny­ky­ai­kai­sis­sa pro­ses­so­reis­sa on erityisiä vir­tua­li­soin­ti­toi­min­to­ja (kuten Intel VT-x tai AMD-V), jotka tukevat hy­per­vi­so­ria ja vä­hen­tä­vät jär­jes­tel­män hal­lin­ta­kus­tan­nuk­sia.

Muistia (RAM) hallitaan si­vu­tuk­sen ja kar­toi­tuk­sen avulla. Hy­per­vi­sor osoittaa vir­tu­aa­li­muis­tin osoitteet fyy­si­sil­le muis­ti­loh­koil­le, joten kukin vir­tu­aa­li­ko­ne näkee vain oman muis­tia­lu­een­sa. Kun muistia on niukasti, se voi käyttää esi­mer­kik­si muistin yli­käyt­töä tai bal­loo­ning-tek­niik­kaa jakamaan muistia te­hok­kaas­ti vir­tu­aa­li­ko­nei­den kesken.

I/O ja lai­te­hal­lin­ta

Vir­tu­aa­li­ko­neet käyttävät laitteita, kuten kiin­to­le­vy­jä, verk­ko­kort­te­ja tai näy­tö­noh­jai­mia, vir­tu­aa­lis­ten ra­ja­pin­to­jen kautta. Hy­per­vi­sor emuloi näitä laitteita tai välittää pyynnöt suoraan fyy­si­sel­le lait­teis­tol­le (käyttäen Direct-I/O- tai pass-through-tek­nii­koi­ta). Tämä takaa ta­sa­pai­non yh­teen­so­pi­vuu­den ja suo­ri­tus­ky­vyn välillä.

Eris­tä­mi­nen ja tur­val­li­suus

Vir­tua­li­soin­nin mer­kit­tä­vä etu on vir­tu­aa­li­ko­nei­den välinen eris­tä­mi­nen. Kukin vir­tu­aa­li­ko­ne toimii omassa ym­pä­ris­tös­sään, joten yhden vir­tu­aa­li­ko­neen virheet tai hyök­käyk­set eivät vaikuta suoraan muihin vir­tu­aa­li­ko­nei­siin tai isän­tä­jär­jes­tel­mään. Hy­per­vi­sor käyttää erilaisia suo­jaus­me­ka­nis­me­ja tiukan erottelun var­mis­ta­mi­sek­si, kuten muis­tin­suo­jaus­ta, käyt­tö­oi­keuk­sien hallintaa ja hiek­ka­laa­tik­ko­tek­nii­koi­ta.

Erilaiset vir­tu­aa­li­ko­neen oh­jai­noh­jel­mat

Vir­tu­aa­li­ko­nei­den valvojia on kahta eri tyyppiä: tyypin 1 ja tyypin 2 hy­per­vi­so­rit. Kum­mal­la­kin on omat erityiset etunsa. En­sim­mäi­nen on myös vanhempi versio. Tällä tek­nii­kal­la to­teu­tet­tua vir­tua­li­soin­tia ke­hi­tet­tiin jo 1960-luvulla.

Tyypin 1 hy­per­vi­sor

En­sim­mäis­tä hy­per­vi­sor-tyyppiä kutsutaan bare-metal-hy­per­vi­so­rik­si tai na­tii­vik­si hy­per­vi­so­rik­si. Tällainen VMM asen­ne­taan suoraan fyy­si­sel­le lait­teis­tol­le ohittaen isän­tä­ko­neen käyt­tö­jär­jes­tel­män. Tämän vuoksi sen on si­säl­let­tä­vä kaikki tar­vit­ta­vat lai­tea­ju­rit. Tyypin 1 hy­per­vi­so­rin re­surs­sien­ku­lu­tus on suh­teel­li­sen alhainen, koska las­ken­ta­te­hoa ei tarvitse ohjata isän­tä­käyt­tö­jär­jes­tel­män kautta. Tä­män­tyyp­pi­nen hy­per­vi­sor on suun­ni­tel­tu en­si­si­jai­ses­ti käyt­tä­jil­le, jotka haluavat perustaa vir­tua­li­soin­ti­pal­ve­li­men. Pie­nem­mil­le ko­tipro­jek­teil­le tyypin 1 hy­per­vi­sor on kuitenkin yleensä liian mo­ni­mut­kai­nen.

Kuva: Schematic representation of the functioning of the Type-1 hypervisor
A Type-1 hy­per­vi­sor sits directly on the hardware.

Tyypin 2 hy­per­vi­sor

Toinen vaih­toeh­to (jota kutsutaan myös isän­nöi­dyk­si hy­per­vi­so­rik­si) edel­lyt­tää olemassa olevaa käyt­tö­jär­jes­tel­mää, joka on asennettu fyy­si­sel­le lait­teis­tol­le. Tyypin 2 hy­per­vi­sor asen­ne­taan aivan kuten mikä tahansa muu ohjelma. VMM hallinnoi sitten vir­tua­li­soin­tia. Lai­tea­ju­rei­ta ei tarvitse asentaa hy­per­vi­so­riin, koska var­si­nai­nen käyt­tö­jär­jes­tel­mä voi yk­sin­ker­tai­ses­ti välittää ne oh­jel­mis­tol­le. Tämä mukavuus kuitenkin heikentää suo­ri­tus­ky­kyä. Mer­kit­tä­vä osa re­surs­seis­ta on jo varattu isän­tä­ko­neen käyt­tö­jär­jes­tel­mäl­le. Helpon asen­nuk­sen ja kon­fi­gu­roin­nin ansiosta tyypin 2 hy­per­vi­so­rit sopivat erin­omai­ses­ti pie­nem­piin pro­jek­tei­hin.

Kuva: Schematic representation of the functioning of the Type-2 hypervisor
The Type-2 hy­per­vi­sor is installed on an existing operating system.
Siirry pää­va­lik­koon