Pełna wirtualizacja

 Mówimy tu o "prawdziwym" uruchomieniu wielu systemów operacyjnych na jednym komputerze. Chodzi o to aby operacje wykonywane w ramach jednego systemu były rzeczywiście wykonywane na procesorze. Podejście to różni się od emulacji API, tym że emulowany system operacyjny może rzeczywiście dowolnie modyfikować środowisko swoich procesów.

 

 

Ale czy sprzęt na to pozwala?


Na większości architektur - nie
Urządzenia zewnętrzne zakładają, że rozmawiają z pojedynczym sterownikiem
Niektóre właściwości procesora(IA32) są zaprojektowane tylko pod kątem jednego systemu operacyjnego
Są to:
Model Segmentacji
Model Stronicowania
System ochrony pamięci
Przerwania sprzętowe

 

W pewnym sensie jednak procesory z rodziny i386 zezwalają na coś takiego. Nie potrafią wirtualizować samego siebie, lecz procesor starszego - 8086. Tak zwany tryb wirtualny służy wykonywaniu kodu, który wykonywałby się normalnie w trybie rzeczywistym procesora 8086.

W tym trybie proces potrafi zaadresować tylko jeden megabajt pamięci tak jak w trybie rzeczywistym, z tym że ten megabajt może dowolnie zostać zamapowany na pamięć fizyczną za pomocą mechanizmu pamięci wirtualnej. (Emulacja dos'a w DOSemu i Windowsach)

 

Ale w ogólności pełnej wirtualizacji NIE da się zastosować na współczesnych pecetach!

Dlatego aby zastosować tę strategię trzeba użyć kilku sztuczek, które przypominają quasi-emulację:

    . . .

Emulacja API Systemu operacyjnego.

spis tresci

Dynamiczne tłumaczenie kodu.