Virtuální stroj

From perl6.cz

Za virtuální stroj je v jednom ze svých významů považován software, který nad nějakou počítačovou platformou vytváří jednotné virtuální prostředí pro běh aplikací.

Virtuální stroj

  • skrývá rozdíly mezi různými hardwarovýmí platformami
  • definuje sadu instrukcí
  • vytváří jednotnou abstraktní vrstvu nad různými operačními systémy
  • efektivně překládá virtuální instrukce na skutečné instrukce procesoru
  • poskytuje podporu pro vyšší programovací jazyky (např. způsob voláni podprogramů, OOP)


Výhody použiti virtuálního stroje:

  • jednodužší vývoj software a jeho připrava pro použití
  • společné požadavky vyšších programovacích jazyků stačí implementovat jednou, např.
    • podprogramy, objekty, jmenné prostory (namespaces)
    • uzávěry (closures) a navazování (continuations)
    • správu paměti
  • snadnější spolupráce mezi vyššími programovacími jazyky
    • způsob volání podprogramů a metod
    • reprezentace základnich typů (řetězců, polí, objektů, ...)
    • kód s částmi v různých jazycích běží jako jeden program
  • možnost nastavit bezpečnostní opatření a kvóty
    • např. tenhle program se může připojivat k jiným počítačům v síti, ale nemůže přistupovat k lokálním souborům
  • ladění, analýza a optimalizování programů jsou jednodužší
  • možnost použít dynamické optimalizace, tj. využit informace, které jsou známý až za běhu programu, ne při jeho psaní

Mezi nejznámější virtuální stroje patří

  • JVM (Java Virtual Machine),
  • .Net CLR (Common Languages Runtime)
  • Parrot

Někdy se za virtuální stroje považuje také interprety jazyků Perl 5, Python nebo Ruby. Ty jsou však úzce svázány se svými programovacímí jazyky a proto toto označní není zcela přesné.

Mnoho virtuálích strojů (JVM, .NET) jsou zásobníkové (stack based). Sečtení čísel 10 a 17 většinou probíhá pomocí tří instukcí takto:

push 10 - ulož 10 na vrchol zásobníku
push 17 - ulož 17 na vrchol zásobníku
add - sečti dva čísla na vrcholu zásobníku

Druhým typem virtuálních strojů jsou registrové (register based). Mezi ně patří např. virtuální stroj Parrot. Registry jsou očíslované místa v paměti pro ukládání pracovních dat. Sečtení dvou čísel probíhá pomocí jedné instrukce např. takto:

add I5, I1, I0 - do registru I5 ulož součet registrů I1 a I0

To co je u zásobníkového virtuálního stroje popsáno třemi istrukcemi, může být u registrového popsáno jednou. Když je kód interpretován (bez použití JIT), tak je nutné každou virtuální instukci přemapovat na reálnou instrukci procesoru, což vyžaduje práci procesuru navíc. Proto je v tomto vhodnější mít méně instrukcí.


Externí odkazy

Personal tools
Language