Środowisko wirtualne
Maszyna wirtualna – ogólna nazwa środowiska uruchomieniowego 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 być 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.
Rodzaje maszyn wirtualnych
- interpretery, szczególnie interpretery kodu bajtowego
- kompilatory JIT
- emulatory rzeczywiście istniejącego sprzętu, np. emulatory konsol
Różnice między poszczególnymi typami takich maszyn są płynne. Na przykład wirtualna maszyna Javy jest powszechnie znana jako samodzielny interpreter, ale ponieważ istniały komputery, które potrafiły wykonywać programy w kodzie bajtowym Javy bezpośrednio, można ją także traktować jako emulator tych maszyn. Ponadto kompilator JIT również jest rozwiązaniem wykorzystywanym podczas interpretacji kodu bajtowego Javy.
Możliwości maszyn wirtualnych
Maszyny wirtualne pozwalają uruchamiać programy napisane dla innych architektur bez żadnych zmian lub tylko z niewielkimi modyfikacjami (parawirtualizacja). Daje to dużą niezależność od fizycznego sprzętu, choć kosztem dodatkowej warstwy abstrakcji, która wiąże się z pewnymi niedogodnościami: oprogramowanie wirtualizujące samo wymaga części czasu procesora i pamięci operacyjnej, zwiększa także stopień komplikacji układu, a więc i ryzyko błędu. 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. Jest to możliwe dzięki przeźroczystości maszyny wirtualnej: każda kolejna maszyna wirtualna zachowuje się tak, jakby działała na sprzęcie fizycznym, nawet jeśli jego rolę pełni inna maszyna wirtualna.
Zastosowania maszyn wirtualnych
- do uruchamiania istniejących aplikacji i systemów operacyjnych w innych środowiskach niż pierwotne
- do bezpiecznego rozdzielania zasobów serwerów i dużych maszyn (mainframe, superkomputery)
- do uruchamiania jednocześnie różnych systemów operacyjnych na jednym komputerze
- dla zapewnienia uniwersalnego środowiska uruchomieniowego
- do uruchamiania na jednym komputerze programowych klastrów (w sytuacjach, gdy nie jest możliwe uruchomienie kilku instancji węzłów klastra w ramach jednego hosta)
- 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
- do uruchamiania niezaufanego kodu w wyizolowanym środowisku
Wirtualizacja
Proces symulowania przez oprogramowanie istnienia zasobów logicznych, które wykorzystują ustalone podczas konfiguracji zasoby fizyczne. np. wirtualna maszyna stosuje wirtualizację w celu emulowania pracy maszyny z danym systemem operacyjnym pozwalając przez to badać zachowanie tej maszyny i jej oprogramowania bez wpływania na realny system operacyjny, na którym pracujemy. Wirtualizacja umożliwia efektywniejsze wykorzystanie istniejących zasobów sprzętowych środowiska informatycznego poprzez dowolne (w ramach możliwości sprzętowych czy programowych oraz założeń projektowych) modyfikowanie cech wirtualizowanych zasobów, dostosowując je do wymagań użytkownika. Jedną z pierwszych szeroko stosowanych technik wirtualizacji była technika wirtualizacji pamięci operacyjnej. Obecnie technika ta jest powszechna nie tylko w superkomputerach, serwerach czy komputerach osobistych, ale także w systemach wbudowanych. Inną techniką wirtualizacji jest wirtualizacja sprzętu komputerowego w celu umożliwienia jednoczesnego uruchamiania wielu systemów operacyjnych.
Typy wirtualizacji
- Parawirtualizacja – technika wirtualizacji, w której wirtualizowany system operacyjny (Gość – ang. Guest, Partycja – ang. Partition lub Domena – ang. Domain) współpracuje ze środowiskiem operacyjnym komputera w zakresie obsługi tych elementów sprzętowych, których obsługa kolidowałaby z działalnością innych środowisk wirtualizowanych.
- Pełna wirtualizacja – technika wirtualizacji, w której wirtualizowany system operacyjny (gość) ma wrażenie, że działa na prawdziwym, fizycznym sprzęcie (komputerze). W rzeczywistości odwołania wirtualizowanego systemu operacyjnego (gościa) do tych elementów fizycznych komputera, które kolidowałyby z działalnością innych środowisk wirtualizowanych lub systemu operacyjnego gospodarza (ang. host), są przechwytywane przez oprogramowanie wirtualizacyjne, a następnie emulowane. Emulacja taka spowalnia pracę wirtualizowanego środowiska, dlatego pożądane jest sprzętowe wspomaganie wirtualizacji.
Czym jest PVM?
PVM (Parallel Virtual Machine) to Równoległa Maszyna Wirtualna. Działa ona w podobny sposób, co zwykłe maszyny wirtualne, jednak zamiast uruchamiania systemu operacyjnego wewnątrz działającego już systemu, łączy ona równolegle podłączone do sieci komputery i podporządkowuje je pod swój system operacyjny, co w rezultacie daje nam jeden spójnie działający komputer.
Jak działa równoległa maszyna wirtualna?
Jak można zauważyć, pvm nie specjalnie pasuje do definicji maszyny wirtualnej. Bardziej od emulacji interfejsu innego systemu operacyjnego, pvm skupia się na zarządzaniu i komunikacji równoległych sobie procesów znajdujących się w różnych komputerach. Mówiąc prostszym językiem, zamiast tworzenia kilku środowisk uruchomieniowych na jednej maszynie, tworzymy jedno takie środowisko z kilku maszyn. Głównym powodem takiego, a nie innego nazewnictwa, jest fakt, że pvm powstawał za czasów, kiedy inaczej interpretowano pojęcie maszyny wirtualnej.
PVM jest narzędziem służącym głównie do pośrednictwa w wymianie informacji pomiędzy procesami uruchomionymi na oddzielnych maszynach oraz do zarządzania nimi za pośrednictwem konsoli. Odbywa się to na zasadzie dołączania kolejnych hostów (komputerów), na których został zainstalowany i skonfigurowany pvm. W momencie, kiedy cała maszyna wirtualna już jest skonfigurowana, rola pvm sprowadza się do stanowienia pomostu wymiany informacji pomiędzy procesami, które się w pvm “zarejestrują”, oraz umożliwienia administrowania stanem zarejestrowanych w niej procesów.
Czym jest środowisko wirtualne?
Środowisko wirtualne jest niczym innym jak wirtualnym środowiskiem uruchomieniowym działającym wewnątrz uruchomionego już systemu operacyjnego. Innymi słowy środowisko wirtualne, między innymi, umożliwia nam, poprzez maszyny wirtualne, uruchomienie “komputera wewnątrz komputera”. Innym przykładem wykorzystywania środowiska wirtualnego jest .NET Framework od firmy Microsoft.
Czym jest środowisko uruchomieniowe?
Jest to zestaw wykorzystywanych przez program bibliotek uruchomieniowych, różniący się w zależności od kodu i języka programowania użytego do stworzenia programu, jak i również systemu operacyjnego, w którym jest on uruchamiany. Przykład błędu działania biblioteki uruchomieniowej(Z ang.) runtime library to zestaw funkcji wyłączonych w czasie kompilacji kodu programu do biblioteki programistycznej, łączonych w czasie kompilacji kodu programu do pliku uruchomieniowego (np. .exe) i wykorzystywanych w trakcie działania danego programu komputerowego. Biblioteki stosuje się w celu standaryzacji, funkcjonalnej powtarzalności i efektywności działania systemu.
Czym jest biblioteka uruchomieniowa?
Biblioteka uruchomieniowa – zestaw funkcji wyłączonych w czasie kompilacji kodu programu do biblioteki programistycznej, łączonych w czasie kompilacji kodu programu do pliku wykonywalnego (np. .exe) i wykorzystywanych w trakcie działania (ang. run time) danego programu komputerowego.