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

Slides:



Advertisements
Hasonló előadás
Nagy rendelkezésre-állású szolgáltatások virtuális környezetben Stefán Péter, Szalai Ferenc, Vitéz Gábor NIIF Intézet.
Advertisements

Virtualizációs technikák
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Virtualizált Biztonságos BOINC Németh Dénes Deák Szabolcs Szeberényi Imre.
© Neeraj Suri EU-NSF ICT March 2006 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék V IRTUALIZÁCIÓ Micskei.
1 Számítógépek felépítése 9. előadás I/O rendszerek.
A mikroprocesszor 1. rész.
3. A programozás eszközei, programozás-technikai alapismeretek
Számítógépek felépítése sínrendszer, megszakítás
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Small Liga Mozgás vezérlő rendszere
Virtualizáció Micskei Zoltán Operációs rendszerek alapjai (vimia024)
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Virtualizáció dr. Micskei Zoltán
1 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Szolgáltatásbiztonsági kérdések virtualizált környezetben.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék CPU és memória virtualizáció Tóth Dániel Virtualizációs.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Memória és perifériák virtualizációja Micskei Zoltán, Tóth.
Memória és perifériák virtualizációja
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Alkalmazás és megjelenítés virtualizáció Micskei Zoltán.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Kliens oldali virtualizáció Micskei Zoltán
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Memória és perifériák virtualizációja Tóth Dániel Virtualizációs.
Csala Péter – Sonkoly Ferenc
Szoftevrismeret Operációs rendszerek.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
A verem működése fpga-n
Az operációs rendszerek
1 Operációs rendszerek Folyamatok kezelése a UNIX-ban.
Mikroszámítógépek I 8085 processzor.
PIC processzor és környezete
Virtualizáció Számítógép architektúrák I. Gyakorlat Radó János.
Virtualizáció Számítógép architektúrák I. Gyakorlat Radó János.
Egy harmadik generációs gép (az IBM 360) felépítése
1 Operációs rendszerek Az NT folyamatok kezelése.
1 Operációs rendszerek Az ütemezés megvalósítása.
1 Operációs rendszerek Signal kezelés. 2 SIGNAL kezelés Egyszerű folyamatok közötti kommunikációs (IPC – Inter Process Communication) megoldás. A signal.
Windows Server 2012 Kiadások, licencelés, lehetőségek
Programrendszer 2. Erőforrás – erőforrás elosztás 3. Indítja és ütemezi a programokat 4. kommunikáció 2 Takács Béla.
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
Számítógép architektúra
szakmérnök hallgatók számára
SZÁMÍTÓGÉP ARCHITEKTÚRÁK - 4
Mikrokontroller (MCU, mikroC)
Programozási nyelvek.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
13. A zillmerezés, mint bruttó
A Neumann-elvű gépek A Neumann elvek:
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék CPU virtualizáció Micskei Zoltán, Tóth Dániel Virtualizációs.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Alkalmazás és megjelenítés virtualizáció Micskei Zoltán.
Magas rendelkezésre állású Hyper-V rendszer építése
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Óravázlat Készítette: Kucsera Mihály és Toldi Miklós
Budapest University of Technology and Economics Department of Measurement and Information Systems Monitor komponensek fejlesztése okostelefon platformra.
Óravázlat Készítette: Toldi Miklós
Ismerkedjünk tovább a számítógéppel
Írja fel a tizes számrendszerbeli
Mikroprocesszorok Működés.
Gombos GergőKorszerű Adatbázis 2012/13 tavasz 2 Kik használják?
2. Operációs rendszerek.
IT ALAPFOGALMAK HARDVER.
Mikroprocesszorok (Microprocessors, CPU-s)
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
PIC mikrokontroller.
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Operációs rendszerek Az operációs rendszerek működésének alapfogalmai.
A Számítógépek felépítése, működési módjai
A Számítógépek felépítése, működési módjai
A számítógép működésének alapjai
Előadás másolata:

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

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

Tartalom Platform 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- 3

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 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 4

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észletet o á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ódjait o Minden üzemmódban más-más részhalmaza engedélyezett az utasításkészletnek o Memória elérése lényegesen eltérhet üzemmódok között 5

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

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égezni o 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ában o Ring 0, supervisor mód: legbővebb utasításhalmaz o Ring 1 o Ring 2 o Ring 3, user mód: legszűkebb részhalmaz Ring 0 Ring 1 Ring 2 Ring 3 7

Mit tud a processzor – eseménykezelés 8 mov eax, 5 push eax div edx cmp 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

Mit tud a processzor – eseménykezelés OS 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 9

Mit tud a processzor – eseménykezelés Kivé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…) 10

Tartalom Platform 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- 11

VMM jellemzői  VMM – virtual machine monitor: olyan komponens, ami a virtuális gépek számára az absztrakciót biztosítja Popek és Goldberg* szerint egy VMM alapvető jellemzői:  Ekvivalencia o 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ág o 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 12

VMM jellemzői Mik a problémák ezzel?  Az ekvivalencia és az erőforrás kezelési kritérium ellentmondó követelményeket támaszt  Ha a VMM kezeli az erőforrásokat, mit csinál a virtuális gépben futó OS? 13

Tartalom Platform 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- 14

Szimuláció és emuláció Ekvivalencia biztosítása  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.  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 tranzisztorok szintjén Inkább emulációInkább szimuláció Erőforrás-igényesErőforrás-takarékos 15

Tiszta emuláció  A vendég virtuális gép kódját a processzor nem futtatja közvetlenül, hanem adatként feldolgozza o Eltérhet a virtuális gép CPU architektúrája a futtató CPU-tól o Virtualizációhoz (P&G értelemben vett) képest lassú Interpreter Vendég gép futtatható bináris kódja Vendég gép futtatható bináris kódja Virtuális gép állapota JIT fordító Vendég gép futtatható bináris kódja Vendég gép futtatható bináris kódja Vendég gép átfordított bináris kódja Vendég gép átfordított bináris kódja 16

Emuláció megvalósításának lehetőségei Emulá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) 17

Virtualizáció  Virtualizáció: o A vendég gép utasításainak egy részét beavatkozás nélkül végrehajtja a fizikai CPU-n o A privilegizált utasításokat kell külön kezelni o Klasszikus módszer: trap & emulate  Következmény: o Gyorsabb, mint az emuláció o A vendég és a fizikai gép ISA-ja megegyezik 18

Trap & emulate módszer (Trap: 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ül a valós CPU-n hajtódnak végre A nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre A privilegizált vagy érzékeny műveletek trap-et váltanak ki, és a VMM veszi át a végrehajtást A privilegizált vagy érzékeny műveletek trap-et váltanak ki, és a VMM veszi át a végrehajtást HW támogatás szükséges: védelmi szintek virtuális gép alacsony védelmi szinten fut privilegizált utasítások nem megfelelő szinten kiadva trap-et okoznak HW támogatás szükséges: védelmi szintek virtuális gép alacsony védelmi szinten fut privilegizált utasítások nem megfelelő szinten kiadva trap-et okoznak 19

Natív és virtualizált rendszer összehasonlítása  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 20

Natív és virtualizált rendszer összehasonlítása  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! 21

Trap & emulate alkalmazása  Gyakorlatban akkor alkalmazható, ha a CPU minden privilegizált utasítás elfogását támogatja o Az x86 nem ilyen o (Gyakorlatilag egyik CPU architektúra sem ilyen, amelyiket nem kifejezetten erre terveztek)  Példák x86 esetén: 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ételt o 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 22

Tartalom Platform 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- 23

Három lehetőség a virtualizációra (x86)  Szoftveres virtualizáció o (Trap and Emulate + bináris fordítás)  Paravirtualizáció o (vendég OS kódját módosítjuk, hogy tudjon a virtualizációról, és hívhassa a VMM-et)  Hardveres virtualizáció o (Trap and Emulate, teljesen hardveres támogatással) 24

Bináris fordítás (binary translation)  Mit tegyünk a problémás utasításokkal?  Szoftveres virtualizáció bináris fordítással (VMware megoldása) 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észletre o 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 kell o A végrehajtás menete: elő-fordítás + virtualizált végrehajtás elfogással + elfogott utasítások emulációja  Miért lesz ez gyors? o Nem teljes fordítást végez, az utasítások többségét változatlanul hagyja o 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észeket o Optimalizálással csökkenthető a VMM-be történő hívások száma 25

Szoftveres virtualizáció – példa 26 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 CodeTranslation Cache Forrás: Carl Waldspurger, Introduction to Virtual Machines

Három lehetőség a virtualizációra (x86)  Szoftveres virtualizáció o (Trap and Emulate + bináris fordítás)  Paravirtualizáció o (vendég OS kódját módosítjuk, hogy tudjon a virtualizációról, és hívhassa a VMM-et)  Hardveres virtualizáció o (Trap and Emulate, teljesen hardveres támogatással) 27

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 28

Három lehetőség a virtualizációra (x86)  Szoftveres virtualizáció o (Trap and Emulate + bináris fordítás)  Paravirtualizáció o (vendég OS kódját módosítjuk, hogy tudjon a virtualizációról, és hívhassa a VMM-et)  Hardveres virtualizáció o (Trap and Emulate, teljesen hardveres támogatással) 29

Hardveres virtualizáció  Intel VT-x és AMD-V kiegészítésekkel új mód jött be (root/non-root mode)  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 30

Hardveres virtualizáció 31

Melyik a legjobb/leggyorsabb módszer?  Folyamatosan változik a válasz o környezettől, terheléstől is függ o HW virtualizáció kezdetben kiforratlanabb, mint a BT  Megoldások több módszert használnak vegyesen 32 VMware ESX/ESXi Microsoft Hyper-V Xen Szoftveres (BT)+-- Paravirtualizáció- (már nem)+ (részben)+ Hardveres (Intel VT-x, AMD-V) +++

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, 44:4, p. 3,  P. Barham et al., “Xen and the art of virtualization,” SIGOPS Oper. Syst. Rev., 37:5, pp ,  F. Leung et al., „Intel® Virtualization Technology: Hardware Support for Efficient Processor Virtualization.” Intel Technology Journal, 10:3,