Ve výpočetní technice je virtuální stroj (anglicky virtual machine , Rep. VM ) iluzí výpočetního zařízení vytvořeného softwarem pro emulaci nebo instancovaného na hypervisoru . Emulační software simuluje přítomnost hardwarových a softwarových prostředků, jako je paměť , procesor , pevný disk nebo operační systém a ovladače , což umožňuje spouštět programy za stejných podmínek jako simulované zařízení.
Jednou z výhod virtuálních strojů je schopnost abstrahovat od charakteristik použitého fyzického stroje ( hardware a software - zejména operační systém ), což umožňuje silnou přenositelnost softwaru a správu starších systémů, které jsou někdy určeny pro stroje nebo systémy. starší a již nedostupná softwarová prostředí.
Virtuální stroje se také používají k izolaci aplikací z bezpečnostních důvodů , ke zvýšení odolnosti serveru omezením dopadu systémových chyb nebo k emulaci několika strojů na jednom fyzickém počítači ( virtualizace ).
Nevýhody virtuálních strojů jsou na jedné straně hrubý výkon výrazně nižší než běh na nativním hardwaru (což může ztěžovat testování 3D her), na druhé straně spotřebovávat malou část skutečné paměti pro jejich vlastní provoz. Jejich výhodou je umožnění testování variant instalace na simulovaných strojích s velmi odlišnou velikostí RAM , grafické paměti a počtem procesorů.
Používání virtuálních strojů je jedním ze základních principů technologie Java .
Pojem virtuální stroj se v oblasti logiky začal objevovat již v roce 1936, kdy Turing vynalezl univerzální Turingův stroj . To umožňuje simulovat chování stroje se vstupem určitého programu, jehož provedení bychom chtěli simulovat.
Produkt VM / 370 , vytvořený společností IBM v 70. letech, umožňoval více uživatelům využívat sdílení času v počítači, na kterém běží operační systém DOS / VSE (in), který sám o sobě nenabízí možnost použití timeshare.
VM / 370 byl jedním z prvních virtualizačních systémů v IT a jako první byl uveden na trh v průmyslovém měřítku. Fungovalo to na IBM 370 počítače , ačkoli univerzita verze běžel na modelu 67 s názvem Program Control (CP). Od té doby se vyvinul do z / VM s rozšířenějšími adresovacími kapacitami, které se stále používají v roce 2016.
V roce 1989 byly k simulaci virtuálních strojů s operačním systémem MS-DOS použity software Desqview, Omniview, VM / 386 a Windows / 386 . Software Desqview a Windows / 386 také nabízejí grafické rozhraní umožňující vidět různé virtuální stroje v provozu na stejné obrazovce.
Virtuální stroj Java byl vytvořen v roce 1995 společností Sun Microsystems . Bylo určeno ke spuštění softwaru staženého z webového serveru , bez ohledu na technické vlastnosti zařízení, které software stáhne a spouští. Produkt je dodáván s programovacím jazykem Java , inspirovaným C ++ a slíbil, že se stane de facto standardem .
Windows NT a jeho nástupci začleňují virtuální stroj pro simulaci počítače se systémem MS-DOS ; Windows Server 2008 nabízí vestavěný hypervisor. Linux má také prostředí virtualizace open source s názvem Xen .
VMware, který byl vytvořen v roce 1999, je software, který umožňuje spouštět více operačních systémů současně na stejném počítači (viz část Virtualizace níže). Zjednodušená verze tohoto produktu od společnosti VMware , kterou získala společnost EMC Corporation v roce 2004, byla tímto vydavatelem zdarma v roce 2006 .
Emulace se provádí implementovat funkčnost zařízení s použitím jiného zařízení s různými funkcemi. Jedním z použití je implementace instrukční sady jednoho procesoru pomocí jiného procesoru. To umožňuje například použít nedávný počítač k provádění programů určených pro počítač, operační systém nebo herní konzoli, které již na trhu neexistují. Simulace je doprovázena významným poklesem výpočetního výkonu: výkon simulovaného procesoru bude zlomkem výkonu simulačního procesoru.
Virtuální stroje se používají od 70. let k implementaci multitaskingu , to znamená, že umožňují počítači provádět několik operací současně ve službě několika uživatelů. Virtuální stroj je přiřazen každému uživateli, což mu dává iluzi, že je jediný, kdo počítač používá. Tato funkce je nyní součástí všech operačních systémů.
V technice virtuálních strojů na vysoké úrovni je zdrojový kód programů překládán kompilátorem do mezilehlého objektového kódu , který bude později přeložen do strojového kódu pomocí specifické instrukční sady procesoru, který bude stroj simulovat. Programy jsou na trhu distribuovány jako bytecode - mezikód - a lze je provádět jakýmkoli výpočetním zařízením, které má software nezbytný k simulaci daného stroje.
Bytecode používá fiktivní strojová instrukce sady, které nejsou komerčně dostupné, a je navržen tak, aby ignorovat konečné instrukční sadu, která bude použita ke spuštění programu. Tato technika byla poprvé použita pro programovací jazyk Pascal v roce 1980.
CLI provozovány Microsoft .NET a Java Virtual Machine od společnosti Sun Microsystems jsou virtuální stroje na vysoké úrovni.
Virtuální stroj JavaTechnická specifikace virtuálního stroje Javy nebo JVM, které jsou definovány v roce 1995 společností Sun Microsystems , se zmiňuje o instrukční sadu procesoru, formát z spustitelné soubory a programovací rozhraní na standardní knihovny . Virtuální stroj Java je simulován softwarem, jako je prostředí Java Runtime Environment . Slogan této technologie je „ psát jednou, běžet kdekoli “: že software, který je jednou napsán, lze použít na široké škále strojů (od mobilních telefonů po 'až po superpočítač).
Existuje několik implementací JVM, z nichž nejpoužívanější je HotSpot od společnosti Oracle Corporation .
V širším slova smyslu virtualizace spočívá v simulaci existence několika počítačových strojů pomocí pouze jednoho. To umožňuje zejména snížit náklady na nákup počítačového vybavení a zajistit jeho ziskovost. Technologie roku 2008 jsou tak výkonné, že za běžných podmínek server využívá pouze 10% kapacity hardwaru. Virtualizace také šetří čas: zkrácený postup modifikovat konfiguraci z emulátoru nahradí dlouhou proceduru získávání počítačového hardwaru.
Mezi virtualizační software patří KVM , QEMU , VMware , VirtualBox , VirtualPC , Xen a Bochs .
Virtuální dedikovaný serverVirtuální dedikovaný server (anglicky: virtuální privátní server ., ABR VPS) je virtuální stroj, který simuluje serverový počítač určený pro konkrétního zákazníka. Stroj použitý pro simulaci obsluhuje několik spotřebitelů současně. Každý virtuální dedikovaný server má své vlastní místo na disku a vlastní operační systém, který si zákazník může nainstalovat a restartovat. Fyzickou IT Server tak může pojmout několik virtuálních dedikovaných serverů sdílení zdrojů a rozdělí se od sebe navzájem.
Paralelní virtuální stroj je zařízení, které vytváří iluzi jednoho počítače, zatímco se používají prostředky více počítačů, čímž zvyšuje výpočetní konkurenci. PVM je sada softwarových knihoven a komunikačních nástrojů pro počítačové sítě, která umožňuje agregaci sítě počítačů do jednoho virtuálního stroje.
Virtuální stroj je uzavřené a kontrolované prostředí chráněné proti zneužití hardwarových prostředků. To z něj činí prostředí vhodné pro běh nedůvěryhodných programů, jako je vyvíjený software, zejména operační systémy, nebo pro analýzu malwaru . Kromě toho použití pro programování operačních systémů řeší kruhový problém: software, který se používá pro vývoj a ladění operačního systému, potřebuje operační systém.
Hypervisor je software, který řídí použití, různými virtuálními stroji, hardware simulátoru zařízení. Hypervisor typu 2 používá operační systém počítače simulátoru, zatímco hypervisor typu 1 tento operační systém na zařízení simulátoru nepotřebuje.
Jednou z běžných funkcí softwaru hypervisoru i operačních systémů je simulovat přítomnost hlavní paměti pomocí virtuální paměti . Mechanismus také umožňuje simulovat přítomnost 4 GB paměti ve stroji skutečně vybaveném 1 GB , overbooking se provádí kopírováním nevyužitého obsahu paměti na pevný disk .
Kompilace just-in-time (anglicky just-in-time , Rep. JIT ) je technika používaná k simulaci buď procesor je urychlit provádění programu napsaného v bytecode.
V prvním případě je strojový kód poskytnutý pro simulovaný procesor přeložen s cílem stát se strojovým kódem pro simulující procesor.
V druhém případě spuštění programu trvá o něco déle, ale jeho provedení je rychlejší. Operaci překladu provádí kompilátorový software bezprostředně před provedením přeloženého kódu. Tato technika byla pro Lisp implementována poprvé koncem šedesátých let. JVM společnosti Oracle tuto techniku používá od verze 1.2 z důvodu efektivity, zatímco zařízení Android Dalvik nikoli.
Na tomto principu pracuje JVM Oracle.
Virtuální stroj Dalvik je založen na této technice.
Software nebo tlumočník, který implementuje virtuální počítač na vysoké úrovni, izoluje aplikaci používanou uživatelem od specifičností počítače, to znamená od jeho architektury nebo provozu systému. Tato indirekce umožňuje návrháři aplikace zpřístupnit ji na velkém počtu počítačů bez obvyklých omezení psaní přenosného softwaru běžícího přímo na počítači. V mnoha případech umožňuje kompilace just-in-time aplikaci mít výkon srovnatelný s nativní aplikací.
Windows XP a podobně také běží ve virtualizovaném prostředí, které je vytvořeno vrstvou HAL . V případě změny fyzického stroje můžete v zásadě změnit pouze HAL, aniž by to ovlivnilo zbytek instalace systému Windows.
K CLI a C # má několik podobností s JVM ze Slunce a Javy . Oba jsou založeny na virtuálním stroji, který skrývá hardwarové podrobnosti počítače, na kterém běží jejich programy. Oba používají svůj vlastní bytecode Common Intermediate Language (CIL, dříve MSIL) pro Microsoft a bajtový kód Java pro Sun. S .NET je byte-code vždy kompilován před spuštěním, ať už za běhu (JIT, just-in-time ) nebo předem pomocí nástroje ngen.exe. U Java je byte-kód buď interpretován nebo kompilován předem, nebo dokonce kompilován just-in-time. Obě poskytují rozšiřitelné knihovny tříd, které řeší mnoho běžných programovacích problémů. Oba řeší mnoho bezpečnostních problémů pomocí stejného přístupu. Tyto jmenné prostory poskytované .NET Framework silně podobají se Java EE API balíček v obou styl a vyvolání.
.NET v plné formě (tj. Implementace Microsoftu) je aktuálně plně k dispozici pro Windows a částečně pro Linux a Mac , zatímco Java je plně k dispozici téměř na všech platformách. Od začátku .NET podporuje více jazyků a zůstává nezávislý na platformě, takže jej může kdokoli znovu implementovat na jiné platformy (implementace Microsoftu se zaměřuje pouze na Windows , Windows CE a Xbox360 ). Platforma Java byla původně postavena tak, aby podporovala pouze jazyk Java, ale na několika operačních systémech se sloganem „ Write once, run anywhere “ . Pro virtuální stroj Java byly vyvinuty jiné jazyky, které však nejsou příliš rozšířené. Sunova implementace Java je otevřený zdroj (který zahrnuje knihovnu tříd, kompilátor, JVM a několik dalších nástrojů spojených s platformou Java) pod licencí GNU GPL .
Stále více a více technologií se v současné době schází, aby fungovaly na straně webu a OS. Liší se více nástroji pro výrobu a údržbu než použitými technologiemi, které lze shrnout do použití jazyka kompilace a provádění (virtuální stroj) / interpretace a xml formalismu (xaml, xmm, xul). Tyto technologie se podle případu vyskytují na počítačích, telefonech, pdafonech nebo multimediálních periferiích (satelitní přijímače).
RIA je založena na virtuálním stroji běží ve webovém prohlížeči. RDA je založena na virtuálním stroji běží na operačním systému. RIA a RDA se vyvíjejí stále více a více jazyků (C #, javascript, java, C #), více rozhraní ( swing , wpf, flash, AJAX-ui-widgety), multi OS (Mac, Windows, unix), multi-hardware (PC, PDA, telefon).
Společnost | Technologie | Operační systém | Programovací jazyk | aplikace | technologie | Web | formát |
---|---|---|---|---|---|---|---|
Microsoft | Microsoft CLI | Microsoft .NET | C # pak CLR / DLR | MFC / GDI | ClickOnce | Silverlight | XAML .cs → .dll |
Novell | Microsoft CLI | unix / SuSE | C # pak CLR / DLR | Mono | ? | Měsíční svit | |
Adobe | Flash player | Flash animace | ActionScript | VZDUCH | ? | Adobe flex | .as → .swf |
Sun Microsystems | Jáva | Applet Java | Jáva | JFC awt-swing | Java Web Start | JavaFX | .java → .class |
Netscape | navigátor | unix | javascript | Gears (google) | AJAX XUL SMIL SVG |