Menager maszyn
wirtualnych
Maszyna wirtualna
(ang. virtual machine, VM) - ogólna nazwa dla programów
tworzących środowisko uruchomieniowe dla innych programów.
Maszyna wirtualna kontroluje wszystkie odwołania
uruchamianego programu bezpośrednio do sprzętu lub systemu operacyjnego i zapewnia ich obsługę.
Dzięki temu program uruchomiony na maszynie wirtualnej
"myśli", że działa na rzeczywistym sprzęcie, podczas gdy w istocie pracuje na sprzęcie wirtualnym, "udawanym" przez odpowiednie oprogramowanie (maszynę wirtualną).
Wykonywanym programem może byd zarówno pojedyncza aplikacja jak i cały system operacyjny lub nawet kolejna maszyna wirtualna. Są one zupełnie odizolowane przez maszynę wirtualną od maszyny fizycznej, w odróżnieniu od klasycznego systemu
operacyjnego, który tylko zarządza uruchamianiem aplikacji na maszynie fizycznej.
Zastosowania maszyn wirtualnych
Maszyny wirtualne są używane do różnych celów:
• do uruchamiania istniejących aplikacji i systemów operacyjnych w innych środowiskach niż pierwotne
• dla zapewnienia uniwersalnego środowiska uruchomieniowego
• do bezpiecznego rozdzielania zasobów dużych maszyn (mainframe, superkomputery)
• do uruchamiania jednocześnie różnych systemów operacyjnych na jednym komputerze
• do uruchamiania na jednym komputerze programowych klastrów
• do uzyskania pełnej kontroli nad systemem operacyjnym, np. podczas analizowania jego pracy
• do optymalizacji pracy programów, poprzez kontrolę ich środowiska działania i procesu translacji kodu
Rodzaje Maszyn
Wirtualnych
I n t e r p r e t e r
To rodzaj programu komputerowego (translatora), który analizuje kod źródłowy a przeanalizowane fragmenty (zazwyczaj jedna instrukcja) są wykonywane. Wykonanie powtórnie tego samego fragmentu wymaga powtórnej analizy. Jest to działanie przeciwne do kompilatora, który nie wykonuje wejściowego programu (kodu
źródłowego) lecz tłumaczy go do wykonywalnego kodu
maszynowego, który jest zapisywany do pliku w celu późniejszego wykonania. W większości przypadków jest możliwe wykonanie
tego samego kodu źródłowego zarówno bezpośrednio przez interpreter jak i przez kompilację i wykonanie wygenerowanego
kodu źródłowego.
K o m p i l a t o r
To program służący do automatycznego tłumaczenia kodu
napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym). W informatyce tym pojęciem określa się najczęściej program do tłumaczenia kodu
źródłowego w języku programowania na język maszynowy.
Niektóre kompilatory tłumaczą najpierw do języka asemblera, a ten na język maszynowy jest tłumaczony przez asembler.
E m u l a t o r
To program komputerowy, który duplikuje funkcje jednego
systemu informatycznego w innym, dzięki czemu ów drugi system zwraca te same rezultaty, co pierwszy. Mówimy wtedy, że
pierwszy system jest emulowany przez drugi. Jedną z form emulatorów są programy, które umożliwiają uruchamianie aplikacji na komputerze lub systemie operacyjnym innym niż ten
na który zostały napisane (np. emulatory Amigi, Atari, ZX Spectrum).
Możliwości maszyn wirtualnych
Maszyny wirtualne pozwalają uruchamiad programy napisane dla innych architektur bez żadnych zmian lub tylko z niewielkimi modyfikacjami (parawirtualizacja). Idealna maszyna wirtualna w pełni naśladuje działanie fizycznego sprzętu, teoretycznie możliwe
jest więc dowolne i nieograniczone kombinowanie różnych warstw wirtualizacji, w tym np. rekursywne uruchamianie
wirtualnych maszyn.
VMM - Virtual Machine Manager - menadżer maszyn wirtualnych
Jest to program zarządzający zasobami wymaganymi przez różne maszyny wirtualne zainstalowane w danym komputerze.
Virtual Machine Manager odpowiada za uruchamianie aplikacji i przydzielanie im obszarów pamięci.
Program zarządzający wirtualnymi maszynami.
Podstawowe usługi VMM:
-szeregowanie procesów;
-stronicowanie pamięci;
-obsługa aplikacji, które wymagają wyłącznego dostępu do zasobów;