Virtualizuojančios OS

Virtualizuojančios OS - tokios operacinės sistemos, kurios sukuria virtualias mašinas, kuriose galima leisti kitas operacines sistemas. Griežtai tariant, iš esmės bet koks hipervizorius, kuris gali dirbti savarankiškai, jau gali būti laikomas ir tam tikra virtualizuojančia OS. Kitą vertus, praktikoje virtualių mašinų sistemos paprastai dar nebūna laikomos atskiromis operacinėmis sistemomis.

Šiais laikais virtualizacija naudojama dviem esminiais tikslais:

  • Efektyviai ir saugiai padalinti serverių resursus tarp vartotojų, kurių dalis gali būti piktybiniai pusgalviai, norintys daryti negerus šūdus
  • Patogiai paleisti kitoms OS ar kitai kompiuterio architektūrai skirtas programas taip, kad tos dirbtų lyg niekur nieko


Visokios istorinės virtualizuojančios operacinės sistemos

Bene pirma virtualizuojanti operacinė sistema buvo OS/360, išleista dar 1966 metais ir skirta IBM kompanijos mainfreimams. Taip pat virtualizuojančios buvo ir vėlesnės šios OS palikuonės, įskaitant ir naujausias z/OS. Skirtingai nuo daugelio vėlesnių virtualizuojančių sistemų, OS/360 buvo pilnai virtualizuojanti, t.y., joje buvo galima paleisti kitą tokią pat sistemą ir šioji niekaip negalėjo nustatyti, kad dirba ne tikrame kompiuteryje, o virtualioje mašinoje.

Kita grupė sistemų, kurios pradėjo daryti virtualizaciją, buvo įvairios UNIX sistemos, kuriose būdavo laiukomasi principo, kad daryti reikia minimumą, kurio pakaktų. Tuo šios sistemos skyrėsi nuo sunkių ir lėtų mainfreiminių OS, kad paprastai padarydavo tą minimumą, kuris realiai pasiteisina praktikoje.

Virtualizavimas visada yra labai sulėtinantis darbą ir atimantis daug resursų, tad BSD tipo sistemose pradžioje būdavo tiesiog chroot priemonės - tai reiškia, kad jokia kita operacinė sistema nei nepaleidžiama, bet programos gauna aplinką, kuri joms atrodo lyg būtų visai kita, nes jų matoma failų sistema visai atskiriama nuo bendros sistemos. Iš visokių BSD sistemų ta pati chroot perkeliavo ir į visiokias System V sistemas, tad tapo įprasta UNIX, ir atrandama netgi tokiuose anachronizmuose, kaip visokios SCO UNIX.

Vėliau FreeBSD atsirado ir smarkiai pagerintas chroot variantas jail, kuris jau duoda programai ir aplinką, kurioje ji negali nustatyti, kur išties ji yra ir dėl to negali išsiveržti. Iš FreeBSD jail paveldėjo ir kai kurios kitos BSD tipo OS, pvz., DragonFly BSD. Tokios virtualios mašinos pasižymi geru greičiu, jose gali būti atskiros vartotojų teisių hierarchijos su ne visai tikrais root jūzeriais, bet ribotos tuo, kad duoda tiktai tą pat OS, kurioje ir dirba. Žodžiu, kito kernelio čia nepasileisi.

Panašios, tik dar rimtesnės priemonės buvo įvestos Solaris, pavadintos konteineriais. Tenai vartotojas gauna praktiškai pilną OS kopiją su vartotojų kūrimo galimybėmis, root vartotoju ir taip toliau, o ta virtuali aplinka yra tiek gerai padaryta, kad tas vartotojas paprastais būdais negali ir nustatyti, ar jis dirba virtualioje mašinoje, ar ant pirminės OS.

Kai kuriose Linux versijose buvo įvestas ir gilesnis virtualizacijos sluoksnis - t.y., KVM modulis kerneliui, kuris sukuria visiškai pilnas virtualias mašinas. Tas mašinas paskui galima valdyti per virtualizacijos ir emuliacijos softą, kaip kad QEMU. Tokiu atveju Linux faktiškai neduoda atskiros Linux kopijos, o duoda jau atskirą virtualią mašiną, kurioje galima susiinstaliuoti kokią nors kitą OS, kuri geriau veiktų, pvz., Windows.

Analogiškas virtualizacijos priemones turi ir MacOS-X, tik tenai jos matyt labiausiai išplėstos ir komplikuotos: operacinė sistema ne tik pagal poreikį susipranta, kad reikia ką nors virtualizuoti, bet dar ir pakiša kokį nors emuliatorių, kurio dėka ant to paties kompiuterio ir OS gali dirbti kokia tai programa, skirta visai kitai aparatinei platformai. Kaip pvz., ant Apple Silicon galima pasileisti programas, kurios kadaise buvo kompiliuotos x86 tipo architektūrai, ir tos programos pačios net nepastebėdamos, dirbs ir sąveikaus su kitomis lyg niekur nieko, nes tarp sukuriamų virtualių mašinų yra realizuojamas nematomas duomenų perdavimas, veikiantis taip, kad programa net nesusipranta, kad dirba ant kažkokios virtualios mašinos.