Virtuell maskin
En virtuell datamaskin, det vill säga en fiktiv apparat som kan emuleras i programvara.Den mest kända sådana torde vara Javas JVM, från Sun.Även Microsoft har (naturligtvis) en egen: VBVM.
Den största fördelen med att låta sina program exekveras av en virtuell maskin är att programmen blir mer flyttbara mellan olika operativsystem och hårdvaruarkitekturer. Vill man köra sin mjukvara på en annan maskin än den är utvecklad för, behöver man bara (i teorin) skaffa en virtuell maskin för den nya fysiska maskinen och köra exakt samma kompilerade kod. Innan java blev populärt förekom det att applikationsleverantörer först skrev sin egen virtuella maskin, sedan implementerade sina applikationer i ett språk för denna maskin. Fördelen var att man bara behövde konvererta det virtuella maskinen till nya arkitekturer, istället för hela applikationen. Ett exempel på detta är Abalons CRM-system som är implementerat i det egenutvecklade språket Xip.
Ett annat användningsområde för virtuella maskiner är för att emulera hårdvara. Ibland kanske man inte har tillgång till den hårdvara man utvecklar för, eller det helt enkelt är opraktiskt att köra på målmiljön. I sådana fall kan det vara praktiskt att ha en virtuell maskin som emulerar målmiljön. Ett exempel är programvara som är tänkt att exekvera i t.ex. en telefonväxel. M.h.a. en virtuell maskin som emulerar telefonväxelns processor och hårdvara kan programmerarna utveckla, och testköra, program på sin PC eller arbetsstation, utan att behöva ha tillgång till växel.
I tidiga virtuella maskiner hade man ofta problem med prestandan. Eftersom maskinen i själva verket var ett program som var tvunget att "simulera" varenda instuktion man gav det, gick program skrivna för virtuella maskiner i många fall flera hundra gånger långsammare än ren maskinkod som exekveras direkt av processorn. För att råda bot på detta började man (framförallt Sun för sin Java-maskin) att införa tekniker där bytecoden (d.v.s. instuktionerna för den virtuella maskinen) konverterades till ren maskinkod innan den kördes. Idag kan virtuella maskiner ofta exekvera programkod i stort sett lika snabbt som ett program kompilerat till ren maskinkod.
Virtuella maskiner, som inte är tänkta att emulera en viss fysisk masikin, är ofta implementerade som stackmaskiner.
Artikeln skriven 2009-01-18 av Learning4sharing
Inga kategorier för denna artikel än...Intresserad av fler artiklar?
WebbtjänstUDDI
Teckenspråk
Härskarringen
Kenneth Grahame
Nationalpark
Ambition
Antonym
Filnamn