Previous | Up |
Next |
UML
Opis
UML (User Mode Linux) to oprogramowanie rozpowszechniane w postaci Open Source
na licencji GNU. Umożliwia uruchomienie pod systemem Linux wielu wirtualnych
komputerów pracujących również pod kontrolą systemu Linux, które są odizolowane
zarówno od siebie, jak i od systemu macierzystego (wraz z kontrolowanym przez
niego sprzętem).
W gruncie rzeczy UML jest jądrem linuksa zmodyfikowanym w ten sposób by mogło
być uruchomione wewnątrz innego Linuksa: posiada własną pamięć wirtualną i
własny scheduler, ale korzysta z wywołań systemowych zamiast z interfejsu
hardware’u i jest uruchamiane w przestrzeni użytkownika systemu macierzystego.
Ogólna wydajność wirtualnego systemu nie jest zbyt mocno obniżona, ale spadek
wydajności obsługi urządzeń we/wy jest znaczny. Jednak najczęstsze przyczyny
korzystania z UML to m. in. przeprowadzanie testów, eksperymentów czy też
debugowanie jądra, czyli czynności w kontekście których wydajność wydaje się
mniej znaczącym elementem niż np. bezpieczeństwo. Zatem nie ma potrzeby by UML w
jak najbardziej optymalny sposób wirtualizował Linuksa.
User-mode Linux może działać w dwóch trybach: trybie TT (Tracing Thread) lub
trybie skas (Seperate Kernel Address Space).
Tryb TT: Tracing Thread
Jest to tradycyjny tryb User Mode Linux. Działa według następującego modelu:
Każdemu procesowi UML-a przyporządkowany jest proces w systemie macierzystym.
Specjalny wątek jest odpowiedzialny za przechwytywanie wywołań funkcji systemowych napotkanych w czasie wykonywania procesów wewnątrz UML-a.
Takie rozwiązanie jest wymuszone przez ograniczone wsparcie dla UML-a ze strony systemu macierzystego i powoduje kilka problemów:
Tryb SKAS: Separate Kernel Adress Space
Jest to nowszy tryb pracy UML-a, który korzysta ze wsparcia ze strony jądra
systemu macierzystego. Działa on znacznie szybciej niż tryb TT, jednakże do
działania wymaga lekkiego zmodyfikowania systemu hosta (zainstalowania patcha).
Wprowadzone zmiany powodują, że jądro UML-a wykonuje się w zupełnie innej
przestrzeni adresowej hosta niż UML-owe procesy, co likwiduje m.in. problemy
bezpieczeństwa, sprawiając, że jądro UML-a jest zupełnie niedostępne dla
UML-owych procesów. Przestrzenie adresowe procesów UML-owych są dokładnie takie, jak
gdyby procesy wykonywały się w systemie macierzystym. Takie rozwiązanie skutkuje
również zauważalnym wzrostem
wydajności UML-a, dzięki wyeliminowaniu przetwarzania wywołań systemowych z
UML-a na sygnały.
Kolejną różnicą w stosunku do trybu TT jest zmniejszenie w systemie macierzystym
liczby procesów odpowiadających jednemu UML-owi do następujących czterech:
Wymagana i kompatybilność
System operacyjny Linux (ew. inny system POSIXowy (BSD, systemy
UNIXopodobne)).
Używane trybu SKAS wymaga zainstalowania odpowiedniej łatki na jądro systemu
hosta.
Przeznaczenie
Głównym przeznaczeniem UML jest ułatwienie testowania nowych jąder Linuksa,
eksperymentalnego oprogramowania, debugowania jądra, debugowania procesów,
przeprowadzania eksperymentów na jądrze oraz badania zachowania jądra w
krytycznych sytuacjach.
Źródła:
http://user-mode-linux.sourceforge.net
http://usermodelinux.org
http://user-mode-linux.sourceforge.net/dl-sf.html (tutaj można pobrać UML)
Previous | Up |
Next |