Wady

Wydajność
Każdy rozkaz procesora i każda operacja wejścia-wyjścia musi być symulowana. Urządzenia elektroniczne działają w pewnym sensie współbieżnie, ale my musimy je symulować za pomocą jednego wątku.
Procesory często zawierają instrukcje, których nie da się bezpośrednio przetłumaczyć na architekturę hosta.
Przykładowo zapisanie wartości rejestru do pamięci (maszyny wirtualnej) nie może odbywać się bezpośrednio ze względu na problemy z kolejnością bajtów.
Nawet proste operacje mogą wyglądać inaczej na różnych architekturach: Przykładowo dzielenie najmniejszej liczby całkowitej przez -1 generuje błąd na niektórych architekturach.
Warto zwrócić uwagę na to, że niektóre procesory (w tym x86) zawierają uproszczenie takie jak tymczasowe wczytywanie kodu programu, które powodują, że pisanie po tymże kodzie czasami nie ma efektu - to też trzeba symulować. Symulacja tej właściwości wydaje się być kosztowna.
Symulacja "nic nie robienia" jest tak samo kosztowna - można to obejść "pauzując" maszynę
Duże zapotrzebowanie na zasoby
Trzeba zalokować co najmniej tyle samo pamięci (wirtualnej), ile ma symulowana maszyna.
Utrudniona komunikacja między hostem a maszyną wirtualną.
Komunikacja najczęściej odbywa się za pomocą sieci, emulacji klawiatury i ekranu. Nie ma sposobu na zastosowanie podejścia takiego jak hostfs w UML'u - nie wiemy jaki system operacyjny uruchamiamy.

 

Zalety.

spis tresci

Zastosowania.