cpu virtualizáció

32
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek CPU virtualizáció Micskei Zoltán, Tóth Dániel Virtualizációs technológiák és alkalmazásaik

Upload: kaya

Post on 21-Mar-2016

50 views

Category:

Documents


0 download

DESCRIPTION

Virtualizációs technológiák és alkalmazásaik. CPU virtualizáció. Micskei Zoltán, Tóth Dániel. Mi történt az elmúlt két hétben?. Tartalom. Platform virtualizáció technikai háttere Ismétlés: mit csinál egy CPU Mi kell egy virtuális CPU-hoz ( Popek & Goldberg) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CPU virtualizáció

Budapesti Műszaki és Gazdaságtudományi EgyetemMéréstechnika és Információs Rendszerek Tanszék

CPU virtualizáció

Micskei Zoltán, Tóth Dániel

Virtualizációs technológiák és alkalmazásaik

Page 2: CPU virtualizáció

2

Mi történt az elmúlt két hétben?

Page 3: CPU virtualizáció

3

TartalomPlatform virtualizáció technikai háttere Ismétlés: mit csinál egy CPU Mi kell egy virtuális CPU-hoz (Popek & Goldberg) Szimuláció, emuláció, virtualizáció Három lehetőség a virtualizációra: szoftveres,

hardveres, para- Memóriakezelés egy modern CPU-ban Virtuális gépek memóriakezelése: szoftveres,

hardveres, para- Virtuális memóriakezelés speciális képességei:

megosztás, késleltetett allokáció, memória-ballon

Page 4: CPU virtualizáció

4

Mi is az a processzor?Egyszerű matematikai modellje: Belső állapottal rendelkező automata

Utasítás sorozat

Adatok

Belső állapot:-adatregiszterek- programszámláló- üzemmód

Új (számított) adatok

Vezérlés (perifériák)

Visszahatás a program további folyására

Utasításokat hajt végre, amik befolyásolják a belső állapotát, majd

ezen keresztül a kimenetet

Page 5: CPU virtualizáció

5

Mi is az a processzor?CPU utasításkészlet architektúrája (ISA, Instruction Set Architecture) Meghatározza a lehetséges utasításokat

o bináris kódjait (opcodes) és assembly rövidítéseit (mnemonic)o operandusok fajtáját (konstans, regiszter, memória, indirekt memória)o végrehajtási szemantikájukat: pontos jelentésüket, hatásukat

Meghatározza a regiszterkészleteto általános célú adattároló regiszterek, méretükkel és a bennük tárolható

adat formátumával (előjeles/nélküli egész, lebegőpontos, logikai stb.)o speciális regiszterek, pl. programszámláló, verem mutató…

CPU üzemmódjaito Minden üzemmódban más-más részhalmaza engedélyezett az

utasításkészletneko Memória elérése lényegesen eltérhet üzemmódok között

Page 6: CPU virtualizáció

6

ISA – példa Részlet az Intel x86 kézikönyvből:

Page 7: CPU virtualizáció

7

Mit tud a processzor – üzemmódok A CPU üzemmódok célja:

o Visszamenőleges kompatibilitás (x86 másból sem áll…)• Pl.: valós mód (16 bit), védett mód (16 és 32 bit), long mód (64 bit)…

o Egy program ne tudjon bizonyos műveleteket végeznio Operációs rendszer el tudja szigetelni a programokat egymástól

• „védett” módok• Futási privilégium szintek, al-üzemmódok (rings)

Példa: 4 privilégium szint az x86 védett módjábano Ring 0, supervisor mód: legbővebb utasításhalmazo Ring 1o Ring 2o Ring 3, user mód: legszűkebb részhalmaz

Ring0

Ring1

Ring2

Ring3

Page 8: CPU virtualizáció

8

Mit tud a processzor – eseménykezelés

mov eax, 5

push eaxdiv edxcmp ebx,

3

IP

… megszakítás(interrupt)

Interrupt Descriptor Table (IDT)

INT handler X…

INT handler Y…

Megszakítás száma alapján

Az INT rutin lefutása után visszaadódhat a megszakított utasítás

utánra a vezérlés

Lehet HW vagy SW

Az INT kezelő rutin kódja kezd el

végrehajtódni

Page 9: CPU virtualizáció

9

Mit tud a processzor – eseménykezelésOS alapvető része a megszakításkezelés Így kezeli a perifériáktól érkező eseményeket Az időzítő periféria periodikus

megszakításküldésével jut vissza a vezérlés rendszeresen a rendszermaghoz (OS ütemező)

Az alkalmazások szoftveres megszakítással vagy rendszerhívással kérhetik meg a rendszermagot különböző műveletekre

Page 10: CPU virtualizáció

10

Mit tud a processzor – eseménykezelésKivételek (exception): Ha a programban olyan utasítás kerül sorra, ami az

adott üzemmódban nem engedélyezett, akkor kivétel keletkezik (Illegal Instruction Exception vagy Trap)

Ilyenkor is váltás történik a supervisor módba és a vezérlés egy megadott memóriaterületen lévő kezelő rutinhoz kerül

A rendszermag mindig értesül a user módban futó folyamatok „tilosban járásairól” is

(Vannak további fajta kivételek, pl. page fault…)

Page 11: CPU virtualizáció

11

Tartalom Platform virtualizáció technikai háttere

o Ismétlés: mit csinál egy CPUoMi kell egy virtuális CPU-hoz (Popek & Goldberg)o Szimuláció, emuláció, virtualizációo Három lehetőség a virtualizációra: szoftveres,

hardveres, para-oMemóriakezelés egy modern CPU-bano Virtuális gépek memóriakezelése: szoftveres,

hardveres, para-o Virtuális memóriakezelés speciális képességei:

megosztás, késleltetett allokáció, memória-ballon

Page 12: CPU virtualizáció

12

Virtuális CPU feltételei Popek és Goldberg* követelményei egy virtualizált rendszerrel

szembeno VMM – virtual machine monitor:

olyan komponens, ami a virtuális gépek számára az absztrakciót biztosítja

Ekvivalenciao A VMM felett futó program mindig pontosan ugyanazt az eredményt

adja futás közben, mintha fizikai CPU-n közvetlenül futna Erőforrás kezelés

o A VMM minden virtualizált erőforrást teljes egészében maga felügyel

Hatékonyságo A virtuális gépben futó program utasításainak nagy része változtatás és

VMM beavatkozás nélkül fut a fizikai CPU-n

Page 13: CPU virtualizáció

13

Virtuális CPU feltételei Mik a problémák

o Az OS felett futó folyamat korlátozottabb CPU üzemmódban fut, közvetlenül nem menedzsel hardver erőforrásokat, nem futhat OS nélkül – ez nem ekvivalens futási környezet

o OS nem futhat user módban, mert hardver erőforrásokat kell közvetlenül menedzselnie, ehhez kellenek a supervisor mód nyújtotta privilégiumok.

Az ekvivalencia és az erőforrás kezelési kritérium ellentmondó követelményeket támaszt

Page 14: CPU virtualizáció

14

TartalomPlatform virtualizáció technikai háttere Ismétlés: mit csinál egy CPU Mi kell egy virtuális CPU-hoz (Popek & Goldberg) Szimuláció, emuláció, virtualizáció Három lehetőség a virtualizációra: szoftveres,

hardveres, para- Memóriakezelés egy modern CPU-ban Virtuális gépek memóriakezelése: szoftveres,

hardveres, para- Virtuális memóriakezelés speciális képességei:

megosztás, késleltetett allokáció, memória-ballon

Page 15: CPU virtualizáció

15

Virtuális CPU feltételei Ekvivalencia biztosítása

o Szimuláció: szoftverrel modellezzük a processzor belső működését (különböző mélységig megtartva a valósághűséget). Fizikailag sohasem fut a virtuális gép kódja a CPU-n.

o Emuláció: helyettesítjük a VMM felett futtatandó programot/annak egy részletét egy másikkal, ami végül pontosan ugyanazt az eredményt adja (de akár teljesen más futási utat bejárva, elkerülve a privilegizált utasítások használatát)

Ekvivalencia csak ISA szintjén

Ekvivalencia tranzisztorokszintjén

Inkább emuláció Inkább szimuláció

Erőforrás-igényesErőforrás-takarékos

Page 16: CPU virtualizáció

16

Tiszta emuláció A vendég virtuális gép kódját a processzor nem futtatja

közvetlenül, hanem adatként feldolgozzao Eltérhet a virtuális gép CPU architektúrája a futtató CPU-tólo Virtualizációhoz (P&G értelemben vett) képest lassú

Interpreter

Vendég gépfuttatható

bináris kódja

Virtuális gép állapota

JIT fordító

Vendég gépfuttatható

bináris kódja

Vendég gépátfordított

bináris kódja

Page 17: CPU virtualizáció

17

Virtuális CPU feltételeiEmuláció (és szimuláció) kétféleképpen

o Futási idejű értelmező (Interpreter) – adatként kezeli és lépésenként hajtja végre egy szoftveres modellen a virtuális gép utasításfolyamát• Lassú, a CPU közvetlenül csak az értelmező kódját futtatja• Hordozható futtatókörnyezet• Izoláció természetesen adódik• Példa: Bochs x86 emulátor

o „Éppen időben” fordító (JIT compiler „just in time”) – végrehajtás előtt egy fordító feldolgozza a virtuális gép soron következő utasításait, és kódot generál belőle, ami az eredetivel ekvivalens viselkedést mutat• Közvetlenül futtatható kódot generál, cache-elési eljárásokkal gyors lehet• Nehéz implementálni, nem hordozható• Izolációt nem automatikusan biztosítja• Példa: QEMU x86 emulátor (és Java VM, .NET CLR is ilyen)

Page 18: CPU virtualizáció

18

TartalomPlatform virtualizáció technikai háttere Ismétlés: mit csinál egy CPU Mi kell egy virtuális CPU-hoz (Popek & Goldberg) Szimuláció, emuláció, virtualizáció Három lehetőség a virtualizációra: szoftveres,

hardveres, para- Memóriakezelés egy modern CPU-ban Virtuális gépek memóriakezelése: szoftveres,

hardveres, para- Virtuális memóriakezelés speciális képességei:

megosztás, késleltetett allokáció, memória-ballon

Page 19: CPU virtualizáció

19

Három lehetőség a virtualizációra Virtualizáció – az utasításokat (egy részüket)

változatlanul hagyja végrehajtani, csak a problémás privilegizáltakkal kell valamit kezdenio Szoftveres virtualizáció (Trap and Emulate + bináris

fordítás)o Hardveres virtualizáció (Trap and Emulate, teljesen

hardveres támogatással)o Paravirtualizáció (vendég OS kódját módosítjuk, hogy

tudjon a virtualizációról, és hívhassa a VMM-et)

Page 20: CPU virtualizáció

20

Elfogás és emuláció elveTrap: hardveres kivételkezelő rutin ami

után a végrehajtás folytatódhat

HW

Emulátor

Virtuális gép

Virtuális HW

Alkalmazás

Virtuális HWállapota

A nem privilegizált utasítások közvetlenüla valós CPU-n hajtódnak végre

A privilegizált vagy érzékeny műveletek trap-etváltanak ki, és a VMM veszi át a végrehajtást

HW támogatás:• védelmi szintek (az x86-on Ring0-3)• virtuális gép alacsony védelmi szinten fut• privilegizált utasítások nem megfelelő szinten kiadva trap-et okoznak

Page 21: CPU virtualizáció

21

Elfogás és emuláció Gyakorlatban akkor alkalmazható, ha a CPU minden

privilegizált utasítás elfogását támogatjao Az x86 nem ilyeno Gyakorlatilag egyik CPU architektúra sem ilyen,

amelyiket nem kifejezetten erre terveztek Példák:

o POPF utasítás: EFLAGS regisztert módosítja• Ha nem ring 0-n adjuk ki, akkor nem ír felül bizonyos biteket,

és nem is dob kivételto Privilegizált állapot kiolvasható

• CS szegmens regiszter 0. és 1. bitjeiből az aktuális ring kiolvasható, így a vendég gép megtudhatja, hogy virtualizált

Page 22: CPU virtualizáció

22

OS-ek működése Az OS normális működése SYSCALL és INT (szoftveres

megszakítás) a Ring3-ból Ring0-ba hív át

Az időzítő megszakítás (timer interrupt) rendszeresen a kernel megfelelő kezelő rutinjának adja a vezérlést

(ez hívja az ütemezőt)

Ring 0 „supervisor mode” - kernel

Ring 1

Ring 2

Ring 3 – userspace alkalamazások

Page 23: CPU virtualizáció

23

Szoftveres virtualizáció Mikor éppen virtualizált operációs

rendszer fut SYSCALL és INT továbbra is a Ring3-ból

Ring0-ba hív át! A VMM megkapja a vezérlést, feladata

hogy továbbítsa a hívást a vendég kernelnek

Amikor a vendég kernel Ring1-ben nem engedélyezett utasítást hajtana végre a VMM elkapja, lekezeli, és úgy tesz, mintha megtörtént volna.

A VMM kapja a timer interruptot is, így ütemezheti a vendég gépeket. Ezt is továbbítja az aktív vendég kernel felé is.

A vendég OS – teljesítménytől eltekintve – nem tud róla, hogy virtualizált

Ring 0 „supervisor mode” – VMM

Ring 1 – vendég OS kernel

Ring 2

Ring 3 – userspace alkalamazások

A VMM-ben tett „kör” költséges, a CPU

üzemmód váltás során teljes állapotmentés

majd a végén visszaállítás kell!

Page 24: CPU virtualizáció

24

Szoftveres virtualizáció – példa

vEPC mov ebx, eax

cli

and ebx, ~0xfff

mov ebx, cr3

sti

ret

mov ebx, eax

mov [VIF], 0

and ebx, ~0xfff

mov [CO_ARG], ebx

call HANDLE_CR3

mov [VIF], 1

test [INT_PEND], 1

jne

call HANDLE_INTS

jmp HANDLE_RET

start

Guest Code Translation Cache

Forrás: Carl Waldspurger, Introduction to Virtual Machines

Page 25: CPU virtualizáció

25

Szoftveres virtualizáció Mit tegyünk a problémás utasításokkal? Szoftveres virtualizáció bináris fordítással

o (a.k.a Binary Translation - VMware)o Egy JIT fordító a végrehajtás előtt végignézi a kód szegmenst és kicseréli a

problémás utasításokat pl. SYSCALL-ra, vagy valami egyéb kódrészletreo Kicserélhet egyéb, amúgy elfogható utasításokat is rögtön a kezelő

kódrészlettel, hogy elkerülje a felesleges hívást a VMM-be (inline translation)o Mivel a kód hossza megváltozhat ezért a kódra mutató pointereket (jump,

branch utasítások) is módosítani kello Gyors: nem teljes fordítást végez, az utasítások többségét változatlanul hagyjao Gyors2: a JIT fordító minden kódrészletet csak az első futáskor jár be, ismételt

futtatáskor már cache-eli a már módosított kódrészeketo Gyors3: optimalizálással csökkenthető a VMM-be történő hívások számao A végrehajtás menete: elő-fordítás + virtualizált végrehajtás elfogással +

elfogott utasítások emulációja

Page 26: CPU virtualizáció

26

Három lehetőség a virtualizációra Virtualizáció – az utasításokat (egy részüket)

változatlanul hagyja végrehajtani, csak a problémás privilegizáltakkal kell valamit kezdenio Szoftveres virtualizáció (Trap and Emulate + bináris

fordítás)o Hardveres virtualizáció (Trap and Emulate, teljesen

hardveres támogatással)o Paravirtualizáció (vendég OS kódját módosítjuk, hogy

tudjon a virtualizációról, és hívhassa a VMM-et)

Page 27: CPU virtualizáció

27

Hardveres virtualizáció Intel VT-x és AMD-V kiegészítésekkel új

mód jött be (hogy uralkodjon mind felett…)

SYSCALL és INT Ring3-ból Ring0-ba hív át – nem kell felesleges kört futnia a VMM-ben

Van külön VMCALL utasítás is, amivel ki lehet hívni a Root Mode-ba

Minden szükséges privilegizált utasítást elkap

De ennek nem feltétlen örülünk… a binary translation sok optimalizációra adott lehetőséget, ami itt hiányzik

Lassabb volt a szoftveres virtualizációnál (de javul, a VMCALL-VMRESUME körülfordulási időt minden CPU generációval csökkentik)

Ring 0 „supervisor mode” - kernel

Ring 1

Ring 2

Ring 3 – userspace alkalamazások

Root Mode - „hypervisor mode” - VMM

Page 28: CPU virtualizáció

28

Hardveres virtualizáció

Page 29: CPU virtualizáció

29

Három lehetőség a virtualizációra Virtualizáció – az utasításokat (egy részüket)

változatlanul hagyja végrehajtani, csak a problémás privilegizáltakkal kell valamit kezdenio Szoftveres virtualizáció (Trap and Emulate + bináris

fordítás)o Hardveres virtualizáció (Trap and Emulate, teljesen

hardveres támogatással)o Paravirtualizáció (vendég OS kódját módosítjuk, hogy

tudjon a virtualizációról, és hívhassa a VMM-et)

Page 30: CPU virtualizáció

30

Paravirtualizáció Minek ez a sok hajcihő?! Módosítsuk a vendég OS kernelt, hogy ne

használjon elfoghatatlan utasításokat! (Feltéve, hogy megtehetjük…)

Nem kell semmiféle előfordító A vendég OS tehát kifejezetten tud róla,

hogy virtualizált Miért állnánk meg itt? Ne csak az elfoghatatlan, de minden

„szükségtelen” vagy „elkerülhető” privilegizált utasítást irtsunk ki a vendég kernelből. – Kevesebb váltás kell a VMM-be.

Vezessünk be saját rendszerhívásokat a vendég kernel-VMM kommunikációra, és amit csak lehet, ezzel oldjuk meg (perifériák kezelése)

Ring 0 „supervisor mode” – VMM

Ring 1 – vendég OS kernel

Ring 2

Ring 3 – userspace alkalamazások

Page 31: CPU virtualizáció

31

TartalomPlatform virtualizáció technikai háttere Ismétlés: mit csinál egy CPU Mi kell egy virtuális CPU-hoz (Popek & Goldberg) Szimuláció, emuláció, virtualizáció Három lehetőség a virtualizációra: szoftveres, hardveres,

para- Memóriakezelés egy modern CPU-ban

– innen folytatjuk a következő előadáson Virtuális gépek memóriakezelése: szoftveres, hardveres,

para- Virtuális memóriakezelés speciális képességei: megosztás,

késleltetett allokáció, memória-ballon

Page 32: CPU virtualizáció

32

További információ O. Agesen, A. Garthwaite, J. Sheldon, and P. Subrahmanyam,

“The evolution of an x86 virtual machine monitor,” ACM SIGOPS Operating Systems Review, vol. 44, no. 4, p. 3, Dec. 2010.http://dl.acm.org/citation.cfm?id=1899930

P. Barham et al., “Xen and the art of virtualization,” SIGOPS Oper. Syst. Rev., vol. 37, no. 5, pp. 164-177, 2003.http://dl.acm.org/citation.cfm?id=1165389.945462

K. Adams and O. Agesen, “A comparison of software and hardware techniques for x86 virtualization,” in Proc. of the 12th Int. Conf. on Architectural support for programming languages and operating systems, San Jose, California, USA, 2006, pp. 2-13.http://dl.acm.org/citation.cfm?id=1168860