Virtuaalmasin

Virtuaalmasin (inglise keeles "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.
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: 
Tuntud virtuaalmasinaid.
Programmeerimiskeelte keskkonnad: 
Operatsioonisüsteemid ja hüperviisorid:
Autonoomsed arvuti emulaatorid: