VMware nie emuluje sprzętu, a jedynie tworzy warstwę pośredniczącą między OS hosta i guesta ("udaje" przed systemem operacyjnym guesta prawdziwą maszynę).
VMware składa się z trzech głównych komponentów:
VM Driver (sterowniki urządzeń - działa jako część OS hosta - przełączanie VMM i OS host) | |
VMM (monitor - działa na fizycznym sprzęcie!) | |
VM Application (VMApp) (działa jako aplikacja, używa sterowników z VM Driver, aby załadować VMM) |
VMDriver i VMM działają w trybie jądra (w linuxie są modułami), natomiast VMApp jest postrzegany przez system jako zwykła aplikacja.
kiedy może pozwala VM wykonać instrukcję na czystym sprzęcie | |
instrukcje "problemowe" --> emuluje i zwraca sterowanie do VM | |
instrukcje we/wy --> VMApp wykonuje przez odpowiednie wywołanie systemowe (OS host) (nie ma potrzeby posiadania wielu sterowników) | |
przerwanie sprzętowe --> powtórzone w OS host i obsłużone, jakby przyszło od sprzętu |
Każda VM działa we własnej przestrzeni adresowej, posiadając własną kopię tablic stron.
Żądanie dostępu do strony w pamięci -->
guest OS przetwarza z adresu z przestrzeni wirtualnej aplikacji na adres w swojej przestrzeni wirtualnej -->
VMM przechwytuje żądanie i przekształca na rzeczywisty adres -->
VMM pobiera dane i przekazuje do guest OS
Dwukrotna transformacja adresu - guest OS i VMM i dwukrotne przełączenie kontekstu - duży narzut.