Zaawansowane systemy operacyjne. Wirtualizacja. Janina Mincer-Daszkiewicz. jmd@mimuw.edu.pl



Podobne dokumenty
Systemy Operacyjne Wirtualizacja

Linux -- u mnie działa!

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Przegląd dostępnych hypervisorów. Jakub Wojtasz IT Solutions Architect

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Q E M U.

Monitor maszyn wirtualnych

Czym jest wirtualizacja

Wirtualizacja. Piotr Sikora Tomasz Ziółkowski

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski. 12 listopada 2007 WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski

Wirtualizacja. Metody, zastosowania, przykłady

VMware, QEMU, UML. oraz inne wirtualne maszyny. Piotr Findeisen Filip Grządkowski Piotr Kuśka Krzysztof Mroczek

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Zarządzanie pamięcią operacyjną

Działanie systemu operacyjnego

System wspomagania zarządzania wirtualizacją

Działanie systemu operacyjnego

Struktury systemów operacyjnych

Prezentacja emulatora QEMU Zajęcia SO

Przepełnienie bufora. SQL Injection Załączenie zewnętrznego kodu XSS. Nabycie uprawnień innego użytkownika/klienta/administratora

Prezentacja systemu RTLinux

Wirtualizacja w praktyce.

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Systemy operacyjne III

Wprowadzenie do systemów operacyjnych

Działanie systemu operacyjnego

Zarządzanie zasobami pamięci

WIRTUALIZACJA teoria i praktyka. Oskar Skibski, Piotr Sikora, Mateusz Kruszyński

Schematy zarzadzania pamięcia

Jądro systemu operacyjnego

dr inż. Jarosław Forenc

Działanie systemu operacyjnego

Pamięć wirtualna w AS/400

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Wybrane zagadnienia elektroniki współczesnej

Wykład 7. Zarządzanie pamięcią

Wirtualizacja. wspomagana sprzętowo - zalety, wady, zagrożenia. Szymon Doroz & Bartosz Janiak & Przemysław Zych

EPTI: Efficient Defence against Meltdown Attack for Unpatched VMs

Wirtualizacja. czyli trochę co innego niż rzeczy do tej pory omawiane

Wirtualizacje. Opracowali: Piotr Dąbrowiecki Jakub Gołębiowski Winicjusz Szyszka

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Wirtualizacja Systemy operacyjne

Architektura chmur i wirtualizacja. Wykład 4 Wirtualizacja

CyberGuru Wirtualizacja na platformie Hyper-V w pigułce. Prezentuje: Kamil Frankowicz

Wirtualizacja. Paweł Mantur Artur Mączka Tomasz Niedabylski

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Zarządzanie pamięcią operacyjną

Budowa systemów komputerowych

Virtual Grid Resource Management System with Virtualization Technology

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

MAGISTRALE ZEWNĘTRZNE, gniazda kart rozszerzeń, w istotnym stopniu wpływają na

VMware. Prezentacja na Systemy Operacyjne

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Konwersja maszyny fizycznej na wirtualną

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

architektura komputerów w. 8 Zarządzanie pamięcią

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Zadanie1. Wykorzystując serwis internetowy Wikipedii wyjaśnij następujące pojęcia: wirtualizacja, VirtualBox, Vmware, KVM, Virtual PC, Hyper-V.

System komputerowy. System komputerowy

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

LEKCJA TEMAT: Zasada działania komputera.

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Wirtualizacja jako środek zmniejszenia kosztów działalności przedsiębiorstwa w czasach kryzysu

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Tablice stron, bezpośredni dostęp do urządzeń z maszyny wirtualnej i IOMMU.

Wirtualizacja. Przegla d wybranych technik. Magda Michalska Krzysztof Kulewski Andrzej Pacuk. Systemy operacyjne 2006

Linux KVM - wparcie dla wirtualizacji w kontekście serwerów ARM

Architektura systemu komputerowego

System pamięci. Pamięć wirtualna

Zarządzanie pamięcią w systemie operacyjnym

Architektura komputerów

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Grzegorz Jaśkiewicz Dariusz Stefański

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

ARCHITEKTURA PROCESORA,

LPAR - logiczne partycjonowanie systemów

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

SYSTEMY OPERACYJNE. kik.pcz.czest.pl/so. (C) KIK PCz Materiały pomocnicze 1 PROWADZI: PODSTAWOWA LITERATURA: ZAJĘCIA: STRONA

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Systemy operacyjne II

RHEL 5 wpływ wirtualizacji na koszty

Oracle VM - Przegląd architektury i możliwości

Stronicowanie w systemie pamięci wirtualnej

Systemy operacyjne. Paweł Pełczyński

Wsparcie migracji obliczeń poprzez wirtualizację zasobów sieciowych

Systemy operacyjne system przerwań

Szybki start instalacji SUSE Linux Enterprise Server 11 SP1

Podstawy. Pamięć wirtualna. (demand paging)

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

WZÓR UMOWY. Zawarta w Białymstoku, w dniu.. pomiędzy:

Architektura komputerów

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

MANAGER 2010 PROFESSIONALP VS. VIRTUALIZATION WIRTUALIZACJA OBSŁUGIWANE ANAGER 2010 C MANAGER 2010 CORPORATE: Funkcja. Korzyści.

Wykorzystanie wirtualizacji w kluczowych scenariuszach data-center

Transkrypt:

Zaawansowane systemy operacyjne Wirtualizacja Janina Mincer-Daszkiewicz jmd@mimuw.edu.pl

Wirtualizacja (systemu) Definicje Odwzorowanie widocznego na zewnątrz interfejsu warstwy i zasobów na interfejs i zasoby warstwy leżącej pod spodem lub systemu, na którym jest zaimplementowana. Cele Abstrakcja żeby ułatwić korzystanie z zasobów (np. poprzez usuwanie szczegółów ich budowy) Replikacja żeby stworzyć wiele instancji zasobów (prostsze zarządzanie) Izolacja żeby odseparować od siebie użytkowników korzystających z zasobów (np. w celu poprawy bezpieczeństwa) Virtual Machine Monitor (VMM), hipervisor (ang. hypervisor) Oprogramowanie, firmware lub sprzęt, który dzieli pojedynczą fizyczną maszynę na (potencjalnie) wiele maszyn wirtualnych (VM) Terminologia Gospodarz (ang. host) maszyna i/lub oprogramowanie, na którym zaimplementowano VMM Gość (ang. guest) system operacyjny, który wykonuje się pod kontrolą VMM 2

Definicje Istnieją dwa typy hipervisorów: hipervisory 1 typu (ang. native) działają bezpośrednio na sprzęcie. hipervisory 2 typu (ang. hosted) działają na systemie operacyjnym gospodarza, który zapewnia usługi wirtualizacji, takie jak wsparcie dla urządzeń we-wy i zarządzanie pamięcią. http://www.ibm.com/developerworks/cloud/library/cl-hypervisorcompare/

Źródła pomysłu zasady an efficient, isolated duplicate of the real machine Efektywność Nieszkodliwe instrukcje powinny się wykonywać bezpośrednio na sprzęcie Kontrola zasobów Wykonywane programy nie mogą wpływać na zasoby systemowe Równoważność Zachowanie programu wykonywanego na VMM powinno być takie samo, jak gdyby program wykonywano bezpośrednio na sprzęcie (z wyjątkiem być może dostępności czasu i zasobów) Communications of the ACM, vol 17, no 7, 1974, pp.412-421 4

Typy instrukcji Źródła pomysłu zasady cd. Uprzywilejowane Generują pułapki (ang. traps) w trybie nieuprzywilejowanym (użytkownika), lecz nie w trybie uprzywilejowanym (systemu). Wrażliwe Wrażliwe na sterowanie próbują zmienić przydział pamięci lub tryb uprzywilejowania. Wrażliwe behawioralnie na położenie (wykonanie zależy od położenia w pamięci), na tryb (wykonanie zależy od trybu uprzywilejowania). Nieszkodliwe instrukcje, które nie są wrażliwe Twierdzenie Dla dowolnego tradycyjnego komputera trzeciej generacji można zbudować VMM, jeśli zbiór instrukcji wrażliwych tego komputera jest podzbiorem zbioru instrukcji uprzywilejowanych Znaczenie twierdzenia (należy pamiętać, z którego roku jest artykuł) Architektura IA-32/x86 nie jest wirtualizowalna 5

Źródła pomysłu technologia IBM Systems Journal, vol. 18, no. 1, 1979, pp. 4-17. Współbieżne wykonanie wielu produkcyjnych systemów operacyjnych Testowanie i rozwój systemów eksperymentalnych Instalowanie nowych systemów z równoległym kontynuowaniem użycia starych Możliwość zapewnienia niektórym aplikacjom specjalnych systemów operacyjnych Lepsza możliwość współprojektowania sprzętu, VMM i systemu operacyjnego gościa CMS pochodzi od Conversational Monitor System (oficjalna nazwa VM/CMS)

Wirtualizacja na nowo odkryta Application Guest OS Virtual Machine Application Guest OS Virtual Machine Application Guest OS Virtual Machine VMM May, 2005 Real Machine Konsolidacja serwera/obciążenia (zmniejsza server sprawl jest to sytuacja, gdy w centrum danych wiele fizycznych serwerów jest wykorzystywanych w niewielkim stopniu) Zgodne z rozwijającą się architekturą wielordzeniową Upraszcza dystrybucję oprogramowania w złożonych środowiskach Migracja całego systemu (obciążenia) Poprawa zarządzania i wydajności centrów danych Dodatkowe usługi (izolacja obciążenia) dodane poniżej SO Bezpieczeństwo (wykrywanie intruzów, piaskownice,...) Odporność na awarie (punkty kontrolne, wycofywanie (ang. roll-back)/odtwarzanie po awarii) 7

Wirtualizacja architektury IA-32 (x86) Architektura ma warstwy bezpieczeństwa 0.. 3, z SO działającym w warstwie 0 i aplikacjach działających w warstwie 3... i VMM musi wykonywać się w warstwie 0, żeby zachować integralność i kontrolę. ale nie wykonywanie SO gościa w warstwie 0 jest problematyczne: Niektóre instrukcje uprzywilejowane wykonują się jedynie w warstwie 0, lecz nie powodują błędu kiedy są wykonywane poza warstwą 0 (por. uprzywilejowane vs wrażliwe). Instrukcje wymagające niskiej latencji wywołań systemowych (SYSENTER/SYSEXIT) zawsze powodują przejście do warstwy 0 wymuszając na VMM niechcianą emulację lub narzut. Dla architektury Itanium, rejestry przerwań są dostępne tylko w warstwie 0; zmuszanie VMM do przechwytywania wszystkich dostępów do tych rejestrów ze strony sterowników urządzeń ma poważne konsekwencje wydajnościowe Maskowanie przerwań może być wykonywane tylko w w warstwie 0. Kompresja warstw: stronicowanie nie odróżnia poziomów uprzywilejowania 0-2, SO gościa musi wykonywać się w warstwie 3, lecz wówczas nie jest chronione przed swoimi aplikacjami, które także wykonują się w warstwie 3. Nie można używać dla 64-bitowych SO gościa na IA-32. Można wykryć, że SO gościa nie wykonuje się w warstwie 0. 8

Wirtualizacja architektury IA-32 (x86) 1998 inżynierowie firmy Vmware dokonali całkowicie programowej wirtualizacji architektury x86. VMM oparto na binarnej translacji dzięki czemu udało się rozwiązać problemy wirtualizacji trap-and-emulate. 2003 Vmvare wprowadza Virtual SMP (Symmetric Multiprocessing) pojedyncza maszyna wirtualna może być wykonywana na wielu procesorach 2005 Intel dostarcza na rynek procesory ze sprzętowym wsparciem do wirtualizacji zbioru instrukcji (VT-x) 2006 AMD wypuszcza procesory ze sprzętowym wsparciem do wirtualizacji zbioru instrukcji, znane początkowo jako AMD-SVM (Secure Virtual Machine), a później przemianowane na AMD-V (Virtualization) 2007 AMD dostarcza na rynek procesory ze sprzętowym wsparciem do wirtualizacji pamięci (RVI Rapid Virtualization Indexing; w trakcie projektowania znane jako Nested Page Tables), później zaadaptowane przez Intela jako EPT (Extended Page Tables) 9

Architektura i interfejsy Architektura: formalna specyfikacja interfejsu systemu i logicznego zachowania jego widocznych zasobów API ABI ISA Libraries Operating System System Calls System ISA Applications User ISA Hardware API Application Programming Interface ABI Application Binary Interface ISA Instruction Set Architecture 10

Typy VMM System Dostarcza ABI Efektywne wykonanie Można dodawać usługi niezależne od SO (np. migracja, wykrywanie intruzów) Proces Dostarcza API Łatwiejsza instalacja Wpływa na usługi SO (np. sterowniki urządzeń) Narzut wykonania (prawdopodobnie łagodzony przez kompilację JIT) 11

Projekty podejść na poziomie systemu Pełna wirtualizacja (bezpośrednie wykonanie) Sprzęt dostępny dla SO Efektywne wykonanie SO wykonuje się bez zmian Wymaga wirtualizowalnej architektury Przykład: VMWare, VirtualPC, QEMU Parawirtualizacja SO zmieniony, by mógł się wykonywać na VMM Wymaga portowania kodu SO Narzut wykonania Konieczne (kiedyś) dla niektórych (popularnych) architektur (np. x86) Przykłady: Xen, UML, KVM (przed 2005) Emulacja symulacja pełnego środowiska sprzętowego, np. QEMU 12

Przestrzeń projektowa (poziom vs ISA) API interface ABI interface Możliwych jest wiele technik i podejść Zakreślone te krytyczne 13

Systemowe VM Typ 1 Struktura Typ 1: wykonuje się bezpośrednio na sprzęcie gospodarza Typ 2: wykonuje się na OS gospodarza Główne cele Typ 1: Wysoka wydajność Typ 2: Łatwość konstrukcji/instalacji/ akceptowalności Przykłady Typ 1: VMWare ESX Server, Xen, OS/370 Typ 2: User-mode Linux Typ 2 14

Hostowane VM Struktura Hybryda między Typ1 i Typ 2 Bazowy VMM wykonywany bezpośrednio na sprzęcie Usługi wejścia-wyjścia dostarczane przez kod wykonywany na SO gospodarza Cele Ogólna poprawa wydajności Poprawia wsparcie dla urządzeń wejściawyjścia dla SO gospodarza Wady Wprowadza narzut na operacje wejściawyjścia Brak izolacji wydajności i gwarancji wydajności Przykład: VMWare (stacja robocza) 15

VM całego systemu Wyzwanie: ISA systemu operacyjnego gościa różni się od ISA systemu operacyjnego gospodarza Wymaga pełnej emulacji systemu operacyjnego gościa i jego aplikacji Przykład: VirtualPC Emulacja i wirtualizacja są podobne, lecz nie identyczne. Emulacja to programowe dostarczanie innego środowiska wykonania lub architektury (np. emulator Androida wykonywany w systemie Windows). Wirtualizacja to tworzenie wirtualnych barier między wieloma środowiskami wirtualnymi wykonywanymi w tym samym środowisku fizycznym 16

Strategie GuestOS trap change resource emulate change vmm resource privileged instruction Od-uprzywilejowywanie VMM emuluje wpływ na zasoby systemowe/sprzętowe instrukcji uprzywilejowanych, których wykonanie powoduje przerwanie systemowe typu trap i przekazanie sterowania do VMM Także znany jako trap-and-emulate Zwykle osiąga się przez wykonanie SO gościa na niższym poziomie priorytetu sprzętowego niż VMM Problematyczne w pewnych architekturach, w których instrukcje uprzywilejowane nie powodują zgłoszenia pułapki podczas wykonywania z od-przywilejowanym priorytetem Struktury główne/dodatkowe (ang. primary/shadow) VMM utrzymuje dodatkowe kopie krytycznych struktur, których wersjami głównymi manipuluje SO gościa Przykład tablice stron Kopie główne są potrzebne, żeby zapewnić prawidłowe środowisko widoczne dla SO gościa Ślady pamięci (ang. memory traces) Kontrolowanie dostępu do pamięci, żeby zapewnić spójność struktur głównych i dodatkowych Stosowane strategie: ochrona przez zapisem kopii głównych, dzięki czemu operacje aktualizacji powodują błędy braku strony, które mogą być przechwytywane, interpretowane i emulowane 17

Wirtualizacja CPU trap-and-emulate Strategia trap-and-emulate może być stosowana tylko w architekturach ściśle wirtualizowalnych Procesor lub tryb pracy procesora jest ściśle wirtualizowalny (ang. strictly virtualizable) jeśli, gdy jest wykonywany w trybie mniej uprzywilejowanym: Wszystkie instrukcje, które sięgają do trybu uprzywilejowanego powodują pułapkę (ang. trap) Wszystkie instrukcje albo powodują pułapkę, albo wykonują się identycznościowo Problemy związane z trap-and-emulate Nie wszystkie architektury wspierają to rozwiązanie (x86 nie jest ściśle wirtualizowalne, przykład: instrukcja popf, która ustawia flagę przerwania, zachowuje się inaczej w trybie systemowym i inaczej w trybie użytkowym) Koszty pułapek mogą być wysokie VMM zajmuje jeden poziom uprzywilejowania Trzeba wirtualizować poziomy ochrony 18

Wirtualizacja CPU tłumaczenie binarne Guest Code Translation Cache vepc mov ebx, eax cli mov ebx, eax mov [VIF], 0 start and ebx, ~0xfff and ebx, ~0xfff mov ebx, cr3 mov [CO_ARG], ebx sti ret call HANDLE_CR3 mov [VIF], 1 test [INT_PEND], 1 jne call HANDLE_INTS jmp HANDLE_RET 19

Wirtualizacja CPU tłumaczenie binarne 1. Monitor sprawdza następny blok instrukcji (następny blok podstawowy). Są to zwykle wszystkie instrukcje aż do następnej instrukcji przekazania sterowania, takiej jak rozgałęzienie. 2. Każda instrukcja jest tłumaczona, a tłumaczenie kopiowane do schowka (ang. translation cache) 3. Instrukcje są tłumaczone następująco: Te, które nie powodują problemów mogą być kopiowane do schowka bez zmian. To są tzw. tłumaczenia identycznościowe (ang. ident). Niektóre proste instrukcje niebezpieczne są tłumaczone do prostej sekwencji kodu emulowanego. Ten kod jest umieszczany bezpośrednio w schowku. Jest to tzw. tłumaczenie w miejscu (ang. inline). Przykładem jest modyfikacja flagi Interrupt Enable. Inne niebezpieczne instrukcje muszą być wykonywane przez emulowany kod wewnątrz monitora. Dla tych instrukcji wykonuje się wywołania kodu monitora. Są to tzw. call-outs. Przykładem jest zmiana adresu początku tablicy stron. Rozgałęzienie kończące podstawowy blok kodu także wymaga wywołania kodu monitora. Teraz monitor może skoczyć do początku przetłumaczonego bloku podstawowego z wartościami rejestrów wirtualnych w rejestrach sprzętowych. 20

Wirtualizacja pamięci tradycyjne przestrzenie adresowe 0 4GB Virtual Address Space 0 4GB Physical Address Space W tradycyjnym systemach są zwykle dwie przestrzenie adresowe wirtualna przestrzeń adresowa (VAS) i fizyczna przestrzeń adresowa (PAS). SO i procesy użytkowników wykonują się w VAS. SO zarządza mapowaniem z VAS do PAS przy użyciu sprzętowego MMU. SO utrzymuje tablicę stron, która odwzorowuje każdą stronę w bieżącym VAS na stronę w PAS. Zwykle jest jedna taka tablica stron dla procesu. 21

Wirtualizacja pamięci tradycyjne przestrzenie adresowe Virtual Address TLB Physical Address 1 4 2 5 3 Operating System s Page Fault Handler Process Page Table 2 22

Wirtualizacja pamięci wirtualizowane przestrzenie adresowe 0 4GB Virtual Address Space 0 0 Guest Page Table Physical Address Space VMM PhysMap Machine Address Space 4GB 4GB W systemie wirtualizowanym warstwa fizyczna staje się warstwą wirtualno-fizyczną. Żeby pozostać w zgodzie z tym co widzi SO gościa, nadal nosi to nazwę PAS, Rzeczywista pamięć systemu nazywana jest teraz MAS. VMM jest odpowiedzialne za utrzymywanie bieżącego mapowania VM z adresów fizycznych na maszynowe. 23

Shadow Page Table Wirtualizowane przestrzenie adresowe z Shadow Page Tables 0 4GB Virtual Address Space 0 Guest Page Table Physical Address Space 4GB 0 VMM PhysMap Machine Address Space 4GB Ze względu na dużą liczbę instrukcji, które sięgają do pamięci, trzeba używać sprzętowego TLB do tłumaczenia adresów wirtualnych na maszynowe. Potrzebna jest do tego dodatkowa tablica stron. Rzeczywiste sprzętowe MMU wskazuje na tę dodatkową tablicę. Trzyma ona mapowanie adresów wirtualnych na maszynowe. Procedura obsługi błędów strony w VMM jest odpowiedzialna za wypełnianie pozycji w dodatkowej tablicy stron na bazie tablicy stron gościa i PhysMap. 24

Wirtualizowane przestrzenie adresowe z Shadow Page Tables Virtual Address TLB Machine Address 1 5 2 6 4 3 Shadow Page Table Guest Page Table 3 PMap 2 A 25

Wirtualizowane przestrzenie adresowe z Shadow Page Tables 1. W TLB nie ma szukanego adresu. Sprzęt przegląda dodatkowe tablice stron, żeby znaleźć mapowanie. 2. Możliwe są dwa przypadki: Mapowanie zostanie odnalezione w tablicy stron i umieszczone w TLB. Instrukcja jest restartowana i proces normalnie kontynuuje wykonanie. Całą pracę wykonuje sprzęt. Brak mapowania. Sprzęt generuje błąd braku strony, który zostaje przechwycony przez VMM. VMM musi przetłumaczyć adres wirtualny na maszynowy. Rozpoczyna od przejrzenia tablicy stron gościa, żeby odczytać mapowanie wirtualne na fizyczne. Układ tablicy stron gościa jest określany na podstawie wirtualizowanego sprzętu. 3. VMM przegląda mapowanie dla gościa, mogą zajść dwa scenariusze: Nie ma mapowania dla gościa. W tym przypadku gość oczekuje błędu braku strony. VMM musi wygenerować wyjątek wirtualnego CPU i wznowić wykonanie od pierwszej instrukcji procedury obsługi wyjątków gościa. To jest tzw. prawdziwy błąd strony (ang. true page fault), ponieważ sprzętowy błąd braku strony powoduje błąd strony widoczny przez gościa. Jest mapowanie dla gościa, VMM musi przetłumaczyć stronę fizyczną na maszynową. Jest to tzw. ukryty błąd strony (ang. hidden page fault), ponieważ sprzętowy błąd jest błędem, który by się nie pojawił w nie-wirtualizowanym systemie. Żeby przetłumaczyć stronę fizyczną na maszynową, VMM musi przejrzeć struktury danych, które mapują strony fizyczne na maszynowe. Ta struktura danych jest definiowana przez VMM, na przykład PMap. VMM może musieć wykonać dalszą pracę, jeśli nie ma mapowania stron maszynowych na fizyczne. 4. Tłumaczenie z adresu wirtualnego na maszynowy zostaje zakończone. Nowe tłumaczenie jest wstawiane do dodatkowej tablicy stron. 5. VMM restartuje instrukcję gościa, która spowodowała błąd. Teraz będzie już działał mechanizm wypełniania sprzętowego TLB. 6. Sprzęt ustala nowe mapowanie w TLB i wykonanie jest kontynuowane. 26

Problemy z użyciem Shadow Page Tables Utrzymywanie spójności pomocniczej tablicy stron z tablicą stron gościa Co się dzieje, gdy gość zmienia pozycję w tablicy stron Co się dzieje, gdy gość przełącza się na nową tablicę stron przy przełączaniu kontekstu na inny proces Odpowiedź zależy od potrzeby czyszczenia TLB przez gościa Kluczowe dla wydajności jest minimalizowanie liczby ukrytych błędów strony Techniki poprawy wydajności Utrzymywanie jednej pomocniczej tablicy stron na jeden proces gościa Konieczne jest agresywne buforowanie pozycji pomocniczej tablicy stron Trzeba śledzić zapisy do buforowanych tablic stron 27

Wirtualizowane przestrzenie adresowe z Nested Page Tables 0 4GB Virtual Address Space 0 0 Guest Page Table Physical Address Space VMM PhysMap Machine Address Space 4GB 4GB Zagnieżdżone tablice stron są przykładem wirtualizacji wspieranej sprzętowo. W tym przypadku sprzęt wykona dwa kolejne tłumaczenia adresów przy błędach TLB. Tablica stron gościa jest teraz używana bezpośrednio przez sprzęt. PhysMap utrzymywana przez VMM staje się zdefiniowaną sprzętowo strukturą danych, która jest używana przy drugim tłumaczeniu adresu. 28

Wirtualizowane przestrzenie adresowe z Nested Page Tables Virtual Address TLB Machine Address 1 3 2 Guest Page Table 2 PhysMap By VMM 3 29

Wirtualizowane przestrzenie adresowe z Nested Page Tables 1. Brak adresu w TLB. Sprzęt przegląda tablicę stron gościa, żeby znaleźć mapowanie. 2. Możliwe są dwa scenariusze: Brak poszukiwanego mapowania. Generowany jest błąd strony i przekazywany do VMM. VMM zwykle przekazuje ten wyjątek do gościa prawdziwy błąd strony. Jest poszukiwane mapowanie. Sprzęt rozpoczyna przeglądanie drugiej tablicy stron 3. Podczas przeglądania PhysMap przez sprzęt możliwe są dwa scenariusze: Brak poszukiwanego mapowania. Generowany jest błąd strony i przekazywany do VMM. VMM obsługuje błąd w odpowiedni sposób. To jest ukryty błąd strony. Jeśli jest mapowanie, to sprzęt umieszcza połączone mapowanie w TLB i instrukcja jest restartowana. 30

Wirtualizowane przestrzenie adresowe z Nested Page Tables Zalety Upraszcza projekt monitora Brak potrzeby przeliczania na potrzeby ochrony stron Wady Tablica stron gościa w fizycznej przestrzeni adresowej Trzeba wiele razy przechodzić PhysMap Potrzebne mapowanie adres fizyczny adres maszynowy przy przeglądaniu tablicy stron gościa Potrzebne mapowanie adres fizyczny adres maszynowy dla oryginalnego adresu wirtualnego Inne typy sprzętowego wsparcia dla wirtualizacji pamięci Tryb monitora ma własną przestrzeń adresową Nie ma potrzeby ukrywania VMM 31

Przykłady KVM http://www-03.ibm.com/systems/resources/systems_virtualization_idc kvmforservervirtualization.pdf http://linux-kvm.org http://lxr.free-electrons.com/source/documentation/virtual/kvm/?v=3.13 http://pl.wikipedia.org/wiki/kernel-based_virtual_machine https://www.ibm.com/developerworks/cloud/library/cl-hypervisorcomparekvm/

KVM (Kernel-based Virtual Machine) Infrastruktura wirtualizacyjna dla jądra Linuksa. Wspiera natywną wirtualizację na procesorach ze sprzętowymi rozszerzeniami dla wirtualizacji (hipervisor typu 1). Oryginalnie wspierał procesory x86, lecz teraz wspiera wiele różnych procesorów i systemów operacyjnych gości, w tym wiele wariantów Linuksa, BSD, Solaris, Windows. Wsparcie ze strony firm: RedHat, IBM, SUSE. 33

Architektura KVM Maszyna wirtualna jest implementowana jako zwykły proces w Linuksie, szeregowany przez standardowego planistę. Dzięki temu KVM korzysta z wszystkich cech jądra Linuksa. Emulacja urządzeń jest obsługiwana przez zmodyfikowaną wersję QEMU, która dostarcza emulowany BIOS, szynę PCI, szynę USB i standardowy zbiór urządzeń, takich jak kontrolery dysków IDE i SCSI, karty sieciowe itp. KVM jest platformą wirtualizacyjną dla systemu Linux na sprzęcie x86 zawierającym rozszerzenia wspierające wirtualizację (Intel VT lub AMD-V). Zawiera moduł jądra (nazwany kvm.ko), który dostarcza podstawową infrastrukturę wirtualizacyjną, moduły specyficzne dla procesora (kvm-intel.ko lub kvm-amd.ko) i komponent przestrzeni użytkownika (zmodyfikowaną wersję QEMU). Komponent KVM pojawił się w jądrze Linuksa wraz z wersją 2.6.20 (wydaną w styczniu 2007). 34

Cechy KVM Architektura KVM Bezpieczeństwo ponieważ maszyna wirtualna jest implementowana jako proces w Linuksie, więc zapewnia standardowy Linuksowy model bezpieczeństwa i kontrolę zasobów Zarządzanie pamięcią KVM dziedziczy mechanizm zarządzania pamięcią z Linuksa. Pamięć maszyny wirtualnej jest przechowywana tak jak pamięć każdego procesu, może podlegać wymianie Zarządzanie pamięcią współdzielenie stron pamięci jest wspierane przez KSM (Kernel Same-page Merging). KSM przegląda pamięć każdej maszyny wirtualnej i jeśli znajdzie identyczne strony pamięci, skleja je w jedną współdzieloną stronę. Jeśli gość spróbuje coś zmodyfikować, to dostanie własną kopię. 35

KVM shadow MMU MMU (arch/x86/kvm, mmu.[ch], paging_tmpl.h) odpowiada za prezentowanie gościowi standardowego MMU architektury x86, poprzez tłumaczenie adresów fizycznych gościa na adresy fizyczne gospodarza. MMU wspiera sprzęt MMU pierwszej generacji, który pozwala na atomowe przełączenie bieżącego trybu stronicowania i cr3, jak również dwu-wymiarowe stronicowanie (NPT dla AMD i EPT dla Intela). Emulowany sprzęt, który jest w ten sposób udostępniany, to tradycyjne 2/3/4 poziomowe MMU x86, ze wsparciem dla globalnych stron, PAE (Page Address Extension), PSE (Page Size Extension), PSE-36, CR0.WP (Write Protect bit) i 1 GB stron. 36

Stosowane skróty pfn host page frame number hpa host physical address hva host virtual address gfn guest frame number gpa guest physical address gva guest virtual address ngpa nested guest physical address ngva nested guest virtual address pte page table entry gpte guest pte (referring to gfns) spte shadow pte (referring to pfns) tdp two dimensional paging (vendor neutral term for NPT and EPT) 37

Tłumaczenie adresów Głównym zadaniem MMU jest zaprogramowanie MMU procesora w taki sposób, żeby tłumaczyło adresy gościa. W różnych sytuacjach są potrzebne różne tłumaczenia: Kiedy wyłączone jest stronicowanie gościa, to należy tłumaczyć gpa hpa Kiedy włączone jest stronicowanie gościa, to należy tłumaczyć gva gpa hpa Kiedy gość uruchamia swojego gościa, trzeba tłumaczyć ngva ngpa gpa hpa Wyzwanie polega na zakodowaniu od 1 do 3 tłumaczeń na sprzęcie, który wspiera tylko 1 (tradycyjne) lub 2 (tdp) tłumaczenia. Kiedy liczba wymaganych tłumaczeń jest zgodna ze sprzętem, to MMU działa w trybie bezpośrednim, wpp działa w trybie shadow. 38

Slajdy z prezentacji: Nested paging hardware and software Benjamin Serebrin Jörg Rödel KVM Forum 2008 http://www.linuxkvm.org/wiki/images/c/c8/kvmforum2008%24kdf2008_21.pdf 39

Przykłady QMU QEMU, a Fast and Portable Dynamic Translator, Fabrice Bellard, Usenix 2005 http://wiki.qemu.org http://en.wikipedia.org/wiki/qemu

QEMU (Quick EMUlator) QEMU to hosted VMM (Virtual Machine Monitor) (typ 2) ogólnego przeznaczenia, dystrybuowany jako open-source. Może być używany jako emulator lub wirtualizator komputera. Gdy jest używany jako emulator, QEMU może wykonywać systemy operacyjne i programy przygotowane na jeden komputer (np. płytę ARM) na innym komputerze (np. PC). Dzięki użyciu dynamicznej binarnej translacji, osiąga bardzo dobrą wydajność. Gdy jest używany jako wirtualizator, QEMU osiąga wydajność bliską natywnej wykonując kod gościa bezpośrednio na CPU gospodarza. QEMU wspiera wirtualizację gdy wykonuje się na hipervisorze Xen lub gdy używa modułu KVM w Linuksie. Docelowa architektura musi być taka sama jak architektura gospodarza, na przykład gdy wykonuje się qemu-system-x86 na procesorze zgodnym z x86. 48

Tryby działania QEMU QEMU może działać w dwóch trybach: 1. Pełna emulacja systemu (full system emulation) W tym trybie (pełna wirtualizacja platformy), QEMU emuluje pełny system (zwykle PC), włączając w to procesor i różne urządzenia peryferyjne. Może zostać użyty do uruchomienia kilku różnych systemów operacyjnych naraz bez reinstalacji maszyny gospodarza lub w celu testowania kodu systemowego. 2. Emulacja w trybie użytkownika (user mode emulation) W tym trybie (wirtualizacja na poziomie aplikacji), QEMU umożliwia wykonywanie procesów skompilowanych na jedno CPU na innym CPU, jednak systemy operacyjne muszą pasować. Można to wykorzystywać np. żeby ułatwić cross-kompilację i cross-testowanie. 49

Architektura QEMU http://en.wikipedia.org/wiki/qemu

Przykłady VMware The Evolution of an x86 Virtual Machine Monitor. Ole Agesen, Alex Garthwaite, Jeffrey Sheldon, Pratap Subrahmanyam, VMWare, 2010. Virtualization Performance. Perspectives and Challenges Ahead. Richard McDougall, Jennifer Anderson, Vmware, 2010. http://courses.cs.vt.edu/cs5204/fall09-kafura/overheads/vmm-vmware.ppt Memory Resource Management in VMware ESX Server, Carl A. Waldspurger, 2002

Vmware binarna translacja VMM VMM VMM Base Functionality (e.g. scheduling) Enhanced Functionality Hypervisor 52

Binarna translacja sensitive SIMULATE(d) innocuous IDENT(ical) innocuous Cechy Binarna na wejściu jest kod maszynowy Dynamiczna ma miejsce w czasie wykonania Na żądanie kod tłumaczony wtedy, gdy potrzebny do wykonania Poziom systemu nie czyni żadnych założeń odnośnie kodu gościa Podzbiór tłumaczy z pełnego zbioru instrukcji do bezpiecznego podzbioru Adaptowalność dostosowuje kod zależnie od zachowania gościa w celu osiągnięcia dobrej wydajności 53

% translation Binarna translacja Hash Table 3 ([x], [y]) Translation Cache PC [x] 1 Binary Translator 2 [y] 4 TU CCF execute 5 Few cache hits TU: CCF: translation unit (usually a basic block) compiled code fragment : continuation Working set captured Running time 54

Eliminacja błędów/pułapek Można uniknąć kosztownych błędów/pułapek Przykład: Instrukcja uprzywilejowana Pentium (rdtsc read time-stamp counter into edx:eax) Trap-and-emulate: 2030 cykli Callout-and-emulate: 1254 cykli In-TC emulation: 216 cykli Proces Instrukcje uprzywilejowane wyeliminowane przez prostą binarną translację (BT) Instrukcje nieuprzywilejowane Wyeliminowane przez adaptacyjną BT wykryj CCF zawierające instrukcję, która często powoduje pułapkę generuje nowe tłumaczenie CCF żeby uniknąć pułapki (być może wstawiając callout do interpretera), załataj oryginalne tłumaczenie żeby wykonać nowe tłumaczenie 55

Zarządzanie pamięcią Zarządzanie pamięcią na poziomie VMM (meta-poziom) Musi identyfikować VM i strony w ramach VM do wymiany Decyzje wymiany pochodzące z VMM mogą powodować niechciane interakcje ze strategią wymiany stron SO gościa Najgorszy przypadek: podwójne stronicowanie Strategie Balonowanie (ang. ballooning) Dodaj żądania pamięci w SO gościa, żeby to SO gościa decydował, które strony wymienić Także używane w Xen Eliminacja zdublowanych stron nawet identycznych stron między różnymi SO gościa (współdzielenie) VMM ma wystarczającą perspektywę Czyste zyski, gdy wykonuje się wiele kopii tego samego SO gościa Algorytm przydziału Równoważy wykorzystanie pamięci vs. gwarancje izolacji wydajności Taksuje (ang. tax) bezczynną pamięć 56

Balonowanie Balon moduł wstawiony do SO gościa jako pseudosterownik lub usługa jądra Nie ma interfejsu do SO gościa i aplikacji Ma prywatny kanał komunikacji z VMM Przepytuje VMM o bieżący rozmiar balona Balon trzyma liczbę ramek przyszpilonych w pamięci równą jego bieżącemu rozmiarowi 57

Balon pompowanie powietrza Pompowanie balona Balon żąda dodatkowych przypiętych stron od SO gościa Pompowanie balona powoduje, że SO gościa wybiera strony do usunięcia używając swojej strategii wymiany stron Balon informuje VMM, które strony fizyczne zostały mu przydzielone VMM zwalnia ramki maszyny odpowiadające fizycznym ramkom przydzielonym balonowi (tym samym zwalniając pamięć, którą będzie można przydzielić innym SO gości) 58

Balon spuszczanie powietrza Spuszczanie powietrza z balona VMM odzyskuje ramki maszyny VMM przekazuje informacje do balona Balon odpina/zwalnia fizyczne ramki odpowiadające nowym ramkom maszyny SO gościa używa swojego algorytmu wymiany stron żeby sprowadzić potrzebne strony 59

Współdzielenie stron na podstawie zawartości (ang. content based) Tablica haszująca zawiera pozycje na współdzielone strony oznaczone jako COW Dla strony kandydata jest generowany klucz z wartości haszującej z zawartości strony Dokonuje się pełnego porównania między stroną kandydatem a stroną z pasującą wartością klucza Strony, które pasują są współdzielone pozycje w tablicach stron dla ich VMM wskazują na tę samą stronę maszynową Jeśli nie ma dopasowania, to do tablicy haszującej jest dodawana ramka wskazówka (ang. hint) dla przyszłych przypuszczalnych dopasowań Pisanie do współdzielonej strony powoduje błąd braku strony, w wyniku którego powstaje osobna kopia dla OS gościa dokonującego zapisu 60

Wydajność współdzielenia stron Identyczne systemy Linux wykonujące ten sam zestaw programów testowych (ang. benchmark) Przypadek optymalny Duża część (67%) pamięci jest współdzielona Odzyskuje się zauważalną ilość i procent pamięci Zasadniczo brak wpływu na zagregowaną przepustowość systemu 61

Przykłady Xen Xen and the Art of Virtualization. Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, Andrew Warfield, University of Cambridge, 2003. Safe Hardware Access with the Xen Virtual Machine Monitor. Keir Fraser, Steven Hand, Rolf Neugebauer, Ian Pratt, Andrew Wareld, Mark Williamson, University of Cambridge, 2004. http://courses.cs.vt.edu/cs5204/fall09-kafura/

Wady pełnej wirtualizacji Xen parawirtualizacja Pewne instrukcje supervisora muszą być obsługiwane przez VMM, lecz wykonywanie ich z nieodpowiednimi uprawnieniami przechodzi bez echa zamiast powodować pułapkę (ang. trap) Translacja binarna obejmuje cały kod jądra SO gościa, gdyż trzeba przechwycić i obsłużyć wszystkie instrukcje uprzywilejowane, które nie powodują zgłoszenia pułapki. Rozwiązanie problemu polega na utrzymywaniu wersji dodatkowych (ang. shadow) struktur systemowych, takich jak tablice stron. Spójność zapewnia się przechwytując każdą próbę aktualizacji (ang. update). Parawirtualizacja Tworzy się abstrakcję maszyny wirtualnej, która jest podobna, ale nie identyczna ze sprzętem Zwiększa to możliwości poprawy wydajności, ale kosztem zmian w SO gościa (to jest wada) Nie są wymagane zmiany w ABI, dlatego nie trzeba zmieniać aplikacji gościa Xen to hipervisor typu 1, gdyż działa na wyższym poziomie priorytetu niż kod hostowanego SO gościa 63

Architektura Xen 3.0 64

Xen struktura Domena to VM i wykonywany w nim SO gościa Domena 0 Najbardziej uprzywilejowana domena, tylko ona ma (domyślnie) bezpośredni dostęp do sprzętu. Z tej domeny można zarządzać VMM i uruchamiać nieuprzywilejowane domeny Ma sterowniki urządzeń działające w tle Xen VMM Warstwa abstrakcji między sprzętem a SO gości Całkowicie sterowany zdarzeniami Nie ma wewnętrznych wątków Jest aktualnie dostępny na architektury IA-32, x86-64, Itanium i ARM Obsługuje wiele SO, także Microsoft Windows 65

Interfejs maszyny wirtualnej CPU System operacyjny jest zwykle najbardziej uprzywilejowanym bytem w systemie W przypadku Xen hipervisor jest ulokowany pomiędzy SO gościa a CPU Hipervisor jest najbardziej uprzywilejowanym bytem w systemie Xen Xen używa pierścieni ochrony, by zapewnić hypervisorowi wyższy poziom uprzywilejowania niż ma SO gościa 66

Interfejs maszyny wirtualnej CPU Pierścienie ochrony w x86 Zwykle: Xen: SO wykonuje się na poziomie 0 Aplikacje wykonują się na poziomie 3 Poziomy 1 i 2 są niewykorzystane Hipervisor wykonuje się na poziomie 0 SO gościa wykonuje się na poziomie 1 67

Wirtualizacja MMU Shadow Page Table VMM machine OS physical process virtual entity address space VMM dodatkowe tablice stron GuestOS tablice stron Izolacja/ochrona przestrzeni adresowej SO gościa Efektywne tłumaczenie adresów 68

Wirtualizacja MMU tryb bezpośredni SO gości alokują i zarządzają własnymi tablicami stron (PT) Żeby zmienić adres początkowy PT, trzeba wywołać hypercall Xen musi walidować aktualizacje PT przed wykonaniem Możliwe są inkrementalne aktualizacje, unika rewalidacji Reguły walidacji zastosowane do każdego PTE: 1. Gość może jedynie mapować te strony, których jest właścicielem 2. Strony tablic stron mogą być mapowane jedynie w trybie RO Xen wyłapuje (traps) aktualizacje PTE i emuluje (unhooks) strony PTE do masowych aktualizacji 69

Xen PV vs HVM Xen inicjalnie wspierał jedynie PV (Paravirtualization), teraz potrafi korzystać z nowych rozszerzeń procesora na potrzeby wirtualizacji dodanych do architektury x86. Hardware Virtual Machine (HVM) pozwala na wirtualizację na hipervisorze Xena niezmodyfikowanych systemów operacyjnych gości. HVM wymaga procesorów, które sprzętowo wspierają wirtualizację (Intel VT or AMD-V). Rozszerzenia na potrzeby wirtualizacji powodują, że wiele uprzywilejowanych instrukcji jądra, które w PV były tłumaczone na hypercalls jest obsługiwanych przez sprzęt przy użyciu techniki trap-and-emulate. Jest to podobne do klasycznej FV (Full Virtualization), lecz zamiast programowo jest realizowane sprzętowo, co istotnie poprawia wydajność. 70