Virtuaalmasin

Virtuaalmasin (tuleneb inglise keelsest "virtual machine") on tarkvara ja/ või seadme süsteem, mis emuleerib riistvara platvormi (sihtkoha platvorm, kliendi platvorm) ja täidab programme sihtkoha platvormile "peremees"-platvormil (host-platform); või masin, mis virtualiseerib ükskõik millist platvormi ja loob sellel keskkondi, mis omaette isoleerivad programme või isegi operatsioonsüsteeme. Samuti mõninga arvuti keskkonna spetsifikatsioon (näiteks: programmeerimiskeele C visuaalne masin).

Virtuaalmasin täidab misiganes masina-sõltumata koodi (näiteks: baitkood, p-kood) või reaalse protsessori masina-koodi. Peale protsessori võib virtuaalmasin emuleerida nii riistvara üksikosade tööd kui ka kogu arvuti tööd (sealhulgas BIOS, operatiivmälu, kõvaketas ja teised lisaseadmed). Viimasel juhul virtuaalmasina sisse võib paigutada, nagu reaalsele arvutile, operatsioonisüsteeme (näiteks Windowsiga arvutis võib virtuaalmasinas käivitada Linuxi ja vastupidi). Ühel arvutil võib töötada mitu virtuaalmasinat (seda võib kasutada mitme serveri imiteerimiseks ühe reaalse serveri peal, et optimeerida serveri ressursikasutust).

VirtualBox võimaldab luua mitu virtuaalmasinat, mis töötavad korraga samas arvutis. Samuti saab virtuaalmasinale emuleerida mõningaid ressursse (võrgukaarte, kõvakettaid, optilise seadme lugejaid, USB-pesi jm) rohkem, kui "peremees"-platvormil on.

Tuntuim virtuaalmasin on Java virtuaalmasin ehk Java interpretaator, mis teisendab Java koodi reaalajas ridahaaval selle arvuti masinakoodiks, kuhu see on installitud.

Virtuaalmasin võimaldab luua platvormist sõltumatu ühtse arenduskeskkonna või ühtse käivituskeskkonna.

Virtuaalmasin võib olla kas reaalselt simuleeritav arvuti (VMWare) või spetsiaalne programmikeskkond, näiteks Java Virtual Machine, milles töötavad Java programmid.

Ajalugu
Mõiste virtuaalmasin nagu ressursside kogum, mis emuleerib reaalse masina käitumist, tekkis Cambridge'is 1960. aastate lõpus selles kontseptsioonis nagu Manchesteri arvutusmasina "Atlas" virtuaalmälu laiendamine. Üldiselt arvutusprotsess põhineb sellisele mälule olevas tööruumis, millele tal on olemas juurdepääs.

Tingimusel, et konkreetne situatsioon selles tööruumis vastab ootustele, ei oma protsess vahendeid määramiseks, kas antud ressurss on tõesti füüsiline seda tüüpi ressurss, või on ta imiteeritud teiste ressursside tegevustega, mis toovad kaasa analoogsetele sisu muutustele tööruumis.

Näiteks ei õnnestu protsessil määrata, kas ta kasutab protsessorit monopoolselt või multiprogrammeerimise režiimis koos teiste protsessidega. Virtuaalmasinas ei saa mitte ükski protsess olla kasutatud üksikult ja kõik süsteemseid ressursse määratakse nagu ressursse potentsiaalseks koos kasutamiseks. Virtuaalmasinate kasutamine loob sidemeid kasutajate vahel, kes töötavad ühes arvutussüsteemis, andes kindlat andmetekaitse taset. Virtuaalmasina põhiidee on paljude operatsioonisüsteemide all, nii näiteks, IBM VM/CMS ja DEC VAX/VMS.

Esialgu oli virtuaalmasin IBM-i suurarvutite tarkvara, mille töötasid välja nende arvutite kasutajad ja mille IBM võttis hiljem oma süsteemseks tooteks (VM/SP). Vestlusmonitori süsteem annab virtuaalmasinale interaktiivse töö võime.

Hiljem hakati virtuaalmasinaks nimetama igasugust interpretaatortarkvara, mis tõlgib keskprotsessorile arusaamatus programmikeeles kirjutatud koodi sellele mõistetavateks käskudeks.

Virtuaalmasina võimalused
 Ühele arvutile võib paigaldada mitu operatsioonisüsteemi ja selleks ei ole vaja teha kõvaketta rekonfiguratsiooni.
 Võimaldab käitada mitut operatsioonisüsteemi samas arvutis ühel ja samal ajal, kusjuures iga operatsioonisüsteem käitab oma programme.
 Installeeritud operatsioonisüsteemide sisu muutmise aja vähenemine. 
 Võimalus modelleerida arvutivõrku ühel autonoomsel arvutil.
Tänu nendele virtuaalmasina võimalustele saab arvutis uusi operatsioonisüsteeme proovida nii, et see arvutis olevaid andmeid ei kahjusta. Saab programme erinevatel operatsioonisüsteemidel testida, otsustamaks sobivaim operatsioonisüsteem või testida programme, millel on viirusekahtlus.

Rakendus 
Virtuaalmasinat võib kasutada selleks, et: 
 Kaitsta infot, andmeid ja piirata programmide võimalusi;
 Uurida tarkvara jõudlust või uue arvutiriistvara jõudlust; 
 Emuleerida erinevaid riistvarasid (näiteks mängukonsool); 
 Optimeerida kasutatavaid "mainframe"-ressursse ja muid võimsaid arvuteid (näiteks, IBM-i eServer);
 Kontrollida kahjulikku koodi infitseeritud süsteemis: viirus PMBS, mis avastati 1993. aastal, samuti rootkit SubViRT, mis oli loodud 2006. aastal Microsoft Researchi poolt, oli tehtud virtuaalsüsteem, millega oli piiratud kasutaja ja kõik kaitseprogrammid (antiviirused ja muud);
 Modelleerida infosüsteeme klient-serverite riistvaraga IBM-is (arvutivõrgu emuleerimine virtuaalmasinate abil);
 Lihtsustada kobarate juhtimist – virtuaalmasinaid on võimalik töö ajal ühest füüsilisest masinast teise migreerida; 
 Testida ja parandada süsteemi tarkvara.

Tuntud virtuaalmasinaid 
Programmeerimiskeelte keskkonnad: 
 ActionScript Virtual Machine
 Clipper
 Common
 Language Runtime 
 Harbour
 Java Virtual Machine
 CSD p-System  
Operatsioonisüsteemid ja hüperviisorid:
 ICore Virtual Accounts
 Hyper-V
 User-mode Linux 
 VM/CMS
 OpenVZ 
 Xen 
Autonoomsed arvuti emulaatorid:
 bochs 
 DOSBox
 Virtual PC 
 Parallels Workstation 
 QEMU 
 VirtualBox

Vaata ka
Liivakast (infotehnoloogia)
Pilvandmetöötlus
Virtualiseerimine

Viited 

Informaatika