Virtuální stroj

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 .

Dějiny

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 .

Použití

Emulace

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.

Multitasking

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ů.

Virtuální stroj na vysoké úrovni

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 Java

Technická 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 .

Virtualizace

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ý server

Virtuá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

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.

Programování

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.

Techniky

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 .

Právě včas

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.

Stack Virtual Machine

Na tomto principu pracuje JVM Oracle.

Registrovat virtuální stroj

Virtuální stroj Dalvik je založen na této technice.

Virtuální stroj na vysoké úrovni

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.

.NET vs. Java a Java EE

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 .

RIA-RDA

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).

Web a aplikační technologie
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
Příklady

Podívejte se také

Související články

Poznámky a odkazy

  1. (in) Karen Hazzah, Writing VxDs Windows and device drivers , Focal Press - 1996 ( ISBN  9780879304386 )
  2. (in) Computerworld , roč. 9 - N ° 33, August 1975, ( ISSN  0010-4841 )
  3. (v) InfoWorld , roč. 11 - č. 7, únor 1989, ( ISSN  0199-6649 )
  4. (in) Network World , roč. 12 - N ° 50, prosinec 1995, ( ISSN  0887-7661 )
  5. (v) InfoWorld , roč. 21 - N ° 16, duben 1999, ( ISSN  0199-6649 )
  6. (in) Harry Henderson, Encyclopedia of computer science and technology , Infobase Publishing - 2009 ( ISBN  9780816063826 )
  7. (in) James Edward Smith a Ravi Nair Název Virtuální stroje - univerzální platformy pro systémy a procesy , Elsevier - 2005 ( ISBN  9781558609105 )
  8. (in) FJM Laver, An Introduction to the usage of computers , CUP Archive - 1976 ( ISBN  9780521290357 )
  9. (in) James Edward Smith a Ravi Nair, Virtuální stroje - univerzální platformy pro systémy a procesy , Elsevier - 2005 ( ISBN  9781558609105 )
  10. (in) Joshua Engel, Programování pro virtuální stroj Java , Addison-Wesley Professional - 1999 ( ISBN  9780201309720 )
  11. (in) Ivanka Menken a Gerard Blokdijk, Virtualization: The Complete Cornerstone Guide to Virtualization Best Practices , Lulu.com - 2008 ( ISBN  9781921523915 )
  12. (in) Judith Hurwitz - Robin Bloor - Marcia Kaufman a Fern Halper, Cloud Computing for Dummies , For Dummies - 2009 ( ISBN  9780470484708 )
  13. (in) Michael J. Jipping, operační systém pro smartphony Symbian OS koncepty s návodem , John Wiley & Sons - 2007 ( ISBN  9780470034491 )
  14. (in) Maximum PC , prosinec 2008, ( ISSN  1522-4279 )
  15. (in) Michael A. Davis - Sean Bodmer a Aaron LeMasters, Hacking odhalil Malware a Rootkits: Bezpečnostní tajemství a řešení Malware a Rootkits , McGraw Hill Professional, 2009 ( ISBN  9780071591188 )