Next: Kompilacja i instalacja UML
Previous: Szybkie zapoznanie z GDB
Program UML:
- Emulator działania jądra systemu pod Linuksem
- Spostrzegany przez system operacyjny jako grupa procesów(w trybie TT) lub cztery procesy(tryb SKAS)
- System operacyjny zagnieżdżony w systemie operacyjnym gospodarza
- Pełni rolę systemu operacyjnego dla procesów w nim uruchomionych
Zalety UML:
- Stosunkowo mały spadek prędkości programów uruchamianych w środowisku - ok. 20-30%
- Wystarczą uprawnienia zwykłego użytkownika do uruchomienia, jako proces ze zwykłymi uprawnieniami nie może wiele popsuć w systemie
- Nie widzi systemu operacyjnego gospodarza i jego zasobów
- Kompatybilny względem obsługi procesów, pamięci, plików, wywołań systemowych oraz interfejsu programistycznego do Linuxa
- Można kompilować i uruchamiać jądra nowsze od posiadanego
Wady UML
- Na pierwszą instalację ze źródeł można stracić dużo czasu
- Nie umożliwia emulacji rejestrów wyspecjalizowanych(SSE2), których nie ma procesor
Do czego służy UML
- Testowanie i odpluskwianie modułów i jądra Linuksa
- Testowanie i odpluskwianie niebezpiecznych aplikacji
- Honeypot
Dwa zasadnicze tryby działania UML:
- Tracing Thread (TT)
- Separate Kernel Adress Space(SKAS)
Najważniejszą różnicą pomiędzy powyższymi trybami pracy jest sposób wykonywania procesu uruchomionego w systemie wirtualnym:
W trybie Tracing Thread procesom uruchamianym w UML odpowiadają procesy w systemie macierzystym. Jądro UML kontroluje swoje procesy poprzez specjalny proces śledzący(Tracing Thread), który jest ojcem wszystkich procesów w systemie gospodarza i wykorzystuje funkcję systemową ptrace (man 2 ptrace) do kontroli dzieci. Dlatego tryb TT nie nadaje się do uruchamiania wielu instancji UML na jednym komputerze.
W trybie SKAS przestrzeń adresowa jądra UML jest odseparowana od przestrzeni adresowej procesów użytkownika UML. Praca w tym trybie wymaga wsparcia od systemu operacyjnego gospodarza. UML działający w trybie SKAS zakłada tylko cztery procesy w systemie gospodarza:
- wątek jądra UML - w osobnej przestrzeni adresowej
- wątek UML przestrzeni użytkownika który wykonuje kody wszystkich procesów i przełącza przestrzenie adresowe.
- the ubd driver asynchronous IO thread
- the write SIGIO emulation thread
Zalety architektury SKAS:
- zapewnia większą wydajność emulatora i mniejsze obciążenie systemu macierzystego
- blokuje dostęp procesów maszyny wirtualnej do przestrzeni adresowej systemu macierzystego i przestrzeni adresowej jądra maszyny wirtualnej
- zwiększa bezpieczeństwo działania pułapek typu 'honeypot'