Pełna wirtualizacja

to jest HTMLowa wersja prezentacji przeprowadzonej przez Stanisława Witkowskiego 7 stycznia 2005 roku. Oryginalne slajdy do te prezentacji znajdują się tutaj: PDF. 36 screenshotów Virtual PC znajduje się tutaj.

Wady przedstawionych do tej pory rozwiązań

Czemu?
Co najważniejsze z punktu widzenia "popularności" projektu (nie wśród informatyków, ale ogólnie):

Żadna z dwóch opisanych już metod
nie jest odpowiednia dla "normalnego użytkownika"

(tzn. może w założeniach jest lub ma być,
ale na dzień dzisiejszy mało który zwykły użytkownik komputera
sobie z sobie z którąkolwiek z nich poradzi)

Gdzie leży rozwiązanie?

Co możemy uzyskać?

Co wykonywać bez emulacji?

w teorii: w praktyce:

Jak to działa?

Słówko o przerwaniach

Gdzie "przechowywać" VMM?

Wirtualizacja na poziomie sprzętu

Poziom sprzętu cd. - przykład

Przykład 2 - Wirtualizacja na poziomie SO

Chociaż aplikacje na XENie działają normalnie, to jednak trzeba się trochę napracować przy dostosowywaniu systemu. Przy emulacji na poziomie SO nie ma tego problemu.

Microsoft Virtual PC 2004

motto: Istnieje życie poza Linuxem!

jak to w ogóle wygląda?

Microsoft Virtual PC 2004: (porównując do innych aplikacji pod Windows)
Jak to możliwe?

Krótki rys historyczny

"Wizja" ;)

Małe diagramiki prosto z Redmond

Normalny komputerKomputer z Virtual PC

Obsługiwane SO

Słówko o innych systemach

To co w końcu działa?

Powtórka z zasad działania

* Virtual PC for Mac emuluje również procesor

Sprzęt w Virtual PC

Sprzęt w Virtual PC - pamięć

Sprzęt w Virtual PC - dyski

Sprzęt w Virtual PC - dyski wirtualne

Sprzęt w Virtual PC - inne

Sprzęt w Virtual PC - procesor


Opis do powyższego rysunku: po pierwsze widać, że sieć działa ;) Po drugie widać, że pingi są zróżnicowane - prawdopodobnie w pingu nr 1 i 3 łącze internetowe było prawdopodobnie wykorzystywane przez hosta, dostęp do niego zajął chwilkę dłużej niż w przypadku 2-go pinga.

Dygresja o sieci w Virtual PC

Mamy normalny dostęp do sieci lokalnej i internetu, ale... Tylko poprzez DHCP! (IP 192.168.131.xxx), czyli... Programy wymagające stałego IP nie będą działać :(

Przełączanie kontekstu

* Grupowane = nie wykonywane po jednej, ale po 2-3
** rzadziej = stosunkowo rzadziej, bo i tak jest to bardzo częste

Ficzery Virtual PC

VMware

obecny w sumie dla króciutkiego porównania
Czemu więc ludzie używają Virtual PC?

Instalacja

Instalacja Virtual PC jest banalnie prosta, jak to pod Windowsem bywa. Next, next, next, finish.

Screenshoty

Screenshoty z działania Virtual PC z Windowsem 98, PLD i Fedorą znajdują się tutaj tutaj.

Linki

Strona Virtual PC
Strona Virtual PC for MAC
Downloads m. in. obrazy dysków z Windows 98 (do dodania jedynie ISO i CD-KEY, oszczędza się czas instalacji!)
FAQ:
Oficjalny
Nieoficjalny i lepszy
Grupa dyskusyjna:
Na serwerach MS
Inne:
Lista systemów pod X86 pod względem działania z Virtual PC (szczegółowe opisy instalacji problemowych systemów, m. in. Fedory)
Niektórzy używają Virtual PC do robienia screenshotów innym SO: Longhorn

(bardzo) krótkie podsumowanie

 Czysta emulacja
(Bochs)
Emulacja API
(WINE)
Wirtualizacja na poziomie sprzętu
(XEN)
Wirtualizacja na poziomie SO
(Virtual PC)
Inna architektura
Czy użycie na innej architekturze jest możliwe?
Tak
łatwe do realizacji
Możliwe
kosztowne w realizacji (trzeba sporo kodu napisać od nowa)
Nie
(praktycznie wszystko trzeba by napisać od nowa)
Możliwe
strata wydajności (no i w zasadzie stało by się to czystą emulacją)
Zależność od SO hosta
W jakim stopniu SO guesta zależy od SO hosta?
brakcałkowitabrakśrednia
(część rzeczy można robić niezależnie od niego, do niektórych rzeczy musimy się odwoływać za jego pośrednictwem)
Inny SO guesta
Czy można zainstalować inny SO niż przewidywany?
TakMożliwe
trzeba emulować inne API (czyli pisać sporo rzeczy od nowa)
Tak
o ile nowy SO będzie przystosowany
Tak
Wydajność
Na ile metoda jest wydajna?
BARDZO małaDobraŚWIETNAdobra

Ciekawostka - Wirtualna Maszyna Javy

To, że przy nazwie "Java" często pojawia się sformułowanie "wirtualna maszyna" nie jest przypadkiem. Zalety tworzenia wirtualnych maszyn zostały wykorzystane do stworzenia samej Javy jako języka programowania. Na każdym SO instaluje się emulator nieistniejącej, abstrakcyjnej maszyny, po czym pisze się programy pracujące bezpośrednio na niej. Ponieważ specyfikacja tej abstrakcyjnej maszyny jest dokładnie określona mamy pewność, że program napisany na jednym SO będzie działał na drugim (w końcu nie zostanie bezpośrednio uruchomiony na tym innym SO, a jedynie na emulacji tej samej abstrakcyjnej maszyny).
Więcej szczegółów a propos Javy można znaleźć na stronie SUNa oraz w prezentacji przygotowanej przez Jarka z okazji ZPP (PDF).

Uwagi i linki: