Mem ria s perif ri k virtualiz ci ja
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

Memória és perifériák virtualizációja PowerPoint PPT Presentation


  • 66 Views
  • Uploaded on
  • Presentation posted in: General

Virtualizációs Technológiák és Alkalmazásaik. Memória és perifériák virtualizációja. Tóth Dániel. Tartalom. Előző rész tartalmából: CPU virtualizáció A három alap virtualizációs megközelítés Memória virtualizáció Virtuális memória az operációs rendszerekben

Download Presentation

Memória és perifériák virtualizációja

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Mem ria s perif ri k virtualiz ci ja

Virtualizációs Technológiák és Alkalmazásaik

Memória és perifériák virtualizációja

Tóth Dániel


Tartalom

Tartalom

  • Előző rész tartalmából:

    • CPU virtualizáció

    • A három alap virtualizációs megközelítés

  • Memória virtualizáció

    • Virtuális memória az operációs rendszerekben

    • Virtuális memória a platform virtualizációban

    • Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon

  • Perifériák virtualizációja

    • Perifériák programozói felülete általában

    • Periféria virtualizációs architektúrák


Eml keztet virtu lis cpu felt telei

Emlékeztető: virtuális CPU feltételei

  • Popek és Goldberg* követelményei egy virtualizált rendszerrel szemben

    • VMM – virtualmachine monitor:olyan komponens, ami a virtuális gépek számára az absztrakciót biztosítja

  • Ekvivalencia

    • A VMM felett futó program mindig pontosan ugyanazt az eredményt adja futás közben, mint ha fizikai CPU-n közvetlenül futna

  • Erőforrás kezelés

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

  • Hatékonyság

    • 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

Mi teljesül ezekből egy OS felett futó folyamatnál?

És mi a helyzet, ha OSfut VMM felett?


Eml keztet a h rom virtualiz ci s lehet s g

Emlékeztető: A három virtualizációs lehetőség

  • Virtualizáció – az utasításokat (egy részüket) változatlanul hagyja végrehajtani, csak a problémás privilegizáltakkal kell valamit kezdeni

    • Szoftveres virtualizáció (Trap and Emulate + bináris fordítás)

    • Hardveres virtualizáció (Trap and Emulate, teljesen hardveres támogatással)

    • Paravirtualizáció


Tartalom1

Tartalom

  • Előző rész tartalmából:

    • CPU virtualizáció

    • A három alap virtualizációs megközelítés

  • Memória virtualizáció

    • Virtuális memória az operációs rendszerekben

    • Virtuális memória a platform virtualizációban

    • Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon

  • Perifériák virtualizációja

    • Perifériák programozói felülete általában

    • Periféria virtualizációs architektúrák


Virtu lis mem riakezel s

Virtuális memóriakezelés

  • Modern CPU-k tartalmaznak memóriakezelő egységet (MMU – memory management unit)

    • Feladata „virtuális” memóriacímeket leképezni „fizikaira”

    • Mi is az a virtuális memóriacím? Hol használható?

    • CPU felhasználói (pl. Ring 1-3) módjaiban mindig virtuális címekkel dolgozik

    • Az alkalmazások nem a fizikai memóriacímeket látják

      • Cél: áthelyezhető legyen az oprendszer felett futó alkalmazások kódja, ne csak fix bedrótozott helyen tudjon futni (akár szoftveresen is megoldható lenne…)

      • Cél2: eközben a teljesítmény ne romoljon számottevően (ehhez már hardver támogatás is kell)


Virtu lis mem riakezel s1

Virtuális memóriakezelés

Fizikai memória

Cím: 0

Cím: N-1

Cím: 0

Cím: M-1

Az alkalmazás egy 0-tól induló összefüggő virtuális címtartományt lát.

Tehát minden pointer avirtuális címtartományban értelmezett.

Alkalmazás memóriája


Virtu lis mem riakezel s2

Virtuális memóriakezelés

Fizikai memória

Cím: 0

Cím: N-1

Cím: 0

Cím: M-1

Cím: 0

Cím: K-1

1. Alkalmazás memóriája

2. Alkalmazás memóriája

Ez minden alkalmazásra igaz


Virtu lis mem ria megval s t sa lapokkal

Virtuális memória megvalósítása lapokkal

  • Memória lapok (pages)

    • Virtuális → fizikai memória cím hozzárendelés

    • Tipikusan (x86) 4 kB méretű allokációs egységekben

    • A cím utolsó 12 bitje a lapon belüli cím

    • A cím első 20 bitje kétszintű (10-10 bit) laptábla cím

      • Létezik óriás lap üzemmód is, ilyenkor csak egyszintű laptábla van, ezen belül 22 bit (4MB) pozíciócím

Lap könyvtár (pagedirectory) – első 10 bit

Lap tábla (pagetable) – második 10 bit

Pozíció a lapon belül – 12 bit

Fizikai memória címtartomány


Virtu lis mem ria megval s t sa lapokkal1

Virtuális memória megvalósítása lapokkal

  • A laptáblák is a fizikai memóriában foglalnak helyet

    • Csak az operációs rendszer kernel módosíthatja őket

    • Minden alkalmazáshoz másik táblakészlet tartozik, a kernel ütemezéskor cseréli ki mindig a megfelelőre

    • Az MMU a CPU laptábla regisztere alapján tudja, hogy hol kell keresni legfelső szintű lap könyvtárat

    • Automatikusan feloldja a virtuális címeket fizikaira, a virtuális címeket használó kód módosítás nélkül fut

    • A virtuális címtartományból kicímzés vagy read-only bittel jelölt lapra írás trap-et vált ki a CPU-ban

Lap könyvtár (pagedirectory) – első 10 bit

Lap tábla (pagetable) – második 10 bit

Pozíció a lapon belül – 12 bit

Fizikai memória címtartomány


Mem ria virtualiz l sa

Memória virtualizálása

  • A Ring0 feletti szinteken futó folyamatok virtuális memóriát látnak

    • A virtuális -> fizikai cím feloldása hardverben történik laptáblák alapján

  • Használhatjuk ezt a vendég gépek memóriájához?

    • Több szint kell: a VM-ben is kell saját laptábla a saját alkalmazásokhoz

    • De a CPU ilyet nem támogat.

    • Kell két példány a laptáblából az egyik a vendég kernel számára látható és a vendég VM „fizikai” címeit képezi le a VM-en belül futó alkalmazások „virtuális” címeire. A másik a VMM (és a CPU) számára látható ún. árnyék laptábla (Shadowpagetable) és a futtató gép „igazi fizikai” címeit képezi le a VM-en belül futó alkalmazások virtuális címére.


Mem ria virtualiz l sa1

Memória virtualizálása

VM allokációs laptábla:Virtuális gép „fizikai” memóriacímei-> Fizikai gép fizikai memóriacímei

Guest OS azt „hiszi”, hogy ezt használja. A kernele ezt próbálja módosítani

A fizikai processzor valójában ezt használja. A guest ennek létezéséről nem tud. Ha módosítja a guesta saját laptábláját, ezt is frissíteni kell.

Árnyék laptábla

Virtuális gép virtuális címei

-> Fizikai gép fizikai címei

Guest laptábla

Virtuális gép virtuális címei

-> Virtuális gép „fizikai” címei


Mem ria virtualiz l sa2

Memória virtualizálása

  • Másik nézetben:

A virtuális gépbenfutó alkalmazás

virtuális memóriája

App.

Árnyék

laptábla

Guestlaptábla

A virtuális gép

„fizikai” memóriája

VM allokációs laptábla

Fizikai memória a hardverben


Mem ria virtualiz l sa3

Memória virtualizálása

  • De mi van, ha guest kernel módosítani akarja a laptábláját?

    • Megfelelően frissíteni kell az árnyék táblát is

    • -> természetesen Trap and emulate, de hogyan?

    • Read-only-ra állítjuk a vendég kernel számára látható laptáblákat, ha az módosítani akarja, akkor jön a kivétel, átkerül a vezérlés a VMM-hez ami biztonságosan elvégzi a módosítást az árnyék táblán is

  • Második megoldás: hardveres kiegészítés több szintű laptáblák kezelésére

    • Core i7 és Phenom processzoroktól kezdve van

    • Az egész árnyék tábla frissítési problémát hardveresen lekezeli

  • Harmadik megoldás: „természetesen?! trap and emulate?”

    • A guest kernel egyszerűen ne maga akarja módosítani a laptáblát, kérje meg a VMM-et erre 

  • Tanulságok:

  • A memóriakezelésben is a háromféle fő megvalósítás megtalálható.

  • A memóriakezeléshez extra laptáblák kellenek, tehát a VM több host memóriát igényel, mint amennyi számára látható lesz

  • A memória foglalása és felszabadítása extra feladatot jelenthet a VMM számára is (kivéve hardveresen virtualizáltMMU-nál)


Extra mem ria virtualiz l si lehet s gek

Extra memória virtualizálási lehetőségek

  • Memórialap deduplikáció

    • azonos tartalmú memórialapok megosztása több vendég VM között

    • tipikusan kód szegmensek, ha több példány fut azonos OS-ből

    • gyakorlati haszna főleg speciális alkalmazásokban (VirtualDesktopInfrastructure)

  • Megvalósítása

    • Gyors hash számítás, ez alapján egyezés keresés

    • Copy-on-write elv


Extra mem ria virtualiz l si lehet s gek1

Extra memória virtualizálási lehetőségek

  • Dinamikus allokáció

    • ami memóriát nem használ ki a vendég, arra ne is tartsunk fenn lapokat

    • Gyakorlati haszna önmagában elenyésző, a legtöbb OS az összes szabad memóriát disk cache-nek használja

    • Háttértárra swappelhetők a lapok a vendég OS tudta nélkül

  • Memória felfújás (memoryballooning)

    • Ha kifogy a host memóriája, akkor „elvesz” a vendégtől

    • Egy ágens vagy driver a vendég kernelben (paravirtualizációs szemléletmód) elkezd memóriát foglalni a VMM utasítására. A VMM az ágens által „foglalt” memórialapok mögé nem is allokál fizikai memóriát, így nyer vissza helyet

    • Egyrészt a vendég fel fog adni a disk cache-ből,

    • Másrészt el fog kezdeni kilapozni a saját swap területre, elkerüli, hogy a host is swappeljen

  • Tanulságok:

  • Figyelni kell a memóriafoglalást, nagyot esik a teljesítmény, ha diszkre kell lapozni

  • Ha van rá lehetőség, ki kell használni a vendégbe telepíthető ballooning drivert, elkerülhető vele a vergődés


Tartalom2

Tartalom

  • Előző rész tartalmából:

    • CPU virtualizáció

    • A három alap virtualizációs megközelítés

  • Memória virtualizáció

    • Virtuális memória az operációs rendszerekben

    • Virtuális memória a platform virtualizációban

    • Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon

  • Perifériák virtualizációja

    • Perifériák programozói felülete általában

    • Periféria virtualizációs architektúrák


Perif ri kr l ltal ban

Perifériákról általában

  • A perifériák kezelése jellegzetesen

    • CPU felprogramozza a perifériát, regiszterek átírása

    • Periféria eseményt jelez a CPU felé, megszakítás

      • Ilyenkor valamilyen módon le kell kezelni az eseményt, valamit reagálni kell rá

    • Periféria maga elvégzi a feladatát, közvetlen memória hozzáférés

      • Kiolvas elküldendő adatot, vagy berak beérkező adatot a memóriába

      • Külön lefoglalt fizikai memóriaterült kell erre a célra

A periféria kezelése a „driver” felelőssége, ami többé kevésbé része az OS kernelnek


Perif ri kr l ltal ban1

Perifériákról általában

  • Az adapter modell

    • Napjainkban igen gyakori

Perifériának szánt konkrét utasítás, adat

Az üzenet egy saját (gyakran szabványos) protokollon keresztül jut el a perifériához

Periféria protokollja

Rétegzett programozási

modell (pl USB, SCSI, SATA):

HDD

====

Ezt szeretném programozni

Adapter programozás

Cél periféria

Az adaptert kell megkérni, hogy adja át a perifériának az üzenetet

Adapter


Perif ri kr l ltal ban2

Perifériákról általában

  • Emuláció

    • Trap and emulate -> az I/O műveleteket kell elfogni

      • Ez adódik a CPU futási szintjéből, Ring1-3-ban az I/O műveleteket elfogja

      • Ha a periféria memóriatartományba illesztett, akkor read-only memórialappal fogható el a felprogramozása

    • Valamilyen létező fajta hardver működését (regiszterek, megszakítás, DMA) emulálni kell egy szoftveres komponenssel

      • Egyfajta „anti-driver”, általános elnevezése Backend

      • A vendégben futó meghajtóprogram valójában ezzel beszélget.

    • Minden I/O művelet egy kör VMM-ben -> lassú


Perif ri k virtualiz ci ja

Perifériák virtualizációja

  • Paravirtualizáció

    • Egyszerűsítsük az emulált hardvert, tervezzünk „nem létező fajta” hardvert, amit a legkevesebb művelettel lehet vezérelni

    • Egy összetett művelet akár csak egy VMM hívást igényel

    • Saját „hardverek”, amik magas szintű művelteket végeznek, plhoszt fájlrendszerhez hozzáférés. Itt kezd keveredni a virtualizáció az operációs rendszerekkel…

  • Hardveres virtualizáció

    • Valamilyen hardvert közvetlenül elérhetővé teszünk a vendég számára

    • Veszélyes… DMA-val a fizikai memória egésze elérhető

      • Ma már léteznek IOMMU megoldások is (pl.: Intel VT-d), használata nem terjedt még el

    • Tipikusan olyan esetekben működik, ahol a periféria valami emulált vezérlő adapter felett futó magasabb protokoll rétegben érhető el. Pl.: SCSI merevlemez, USB eszközök

  • Tanulságok:

  • I/O intenzív alkalmazásoknál számolni kell jelentős teljesítményvesztéssel

  • Ha van rá lehetőség telepítsük fel a paravirtualizált eszközmeghajtókat a vendég operációs rendszerbe

  • Lehet olyan feladat, amit közvetlenül a virtuális géphez rendelt hardverrel célszerű megoldani (backup szerver, 3D gyorsítás…)


Teljes perif ria emul ci

Teljes periféria emuláció

Virtuális gép

A Backend nem feltétlenül létező hardverfajtát emulál! Paravirtualizációnál fizikailag nem létező eszközöket valósít meg.

Meghajtó

Meghajtó

Meghajtó

Virtualizációs .

réteg .

Backend

Backend

Backend

Ütemező

StatikusHozzárendelés

Távoli hozzáférés szerver

Meghajtó

Meghajtó

Meghajtó

HDD

====

Hardver


Hardveres perif ria virtualiz ci

Hardveres periféria virtualizáció

Virtuális gép

Réteges architektúrájú busz elérési protokollok esetén (SCSI, USB) lehetséges: a busz adapter emulált rendszeren keresztül érhető el, de a magasabb rétegekben már a virtuális gép közvetlenül a hardverrel beszél

Lehet olyan hardver, ami közvetlenül I/O műveletekkel vezérelhető virtuális gépből. Manapság ez még nem elterjedt, hardveres feltételei hiányosak. (DMA veszély)

Meghajtó

Meghajtó

Meghajtó

Virtualizációs

réteg

Backend

Backend

Meghajtó

Hardver

HDD

====


Sszefoglal

Összefoglaló

  • A virtualizáció alapjai I-II

    • CPU virtualizáció

      • CPU utasításkészlet architektúra és szerepe

      • A három alap virtualizációs megközelítés

    • Memória virtualizáció

      • Virtuális memória az operációs rendszerekben

      • Virtuális memória a platform virtualizációban

      • Virtuális memóriakezelés speciális képességei: megosztás, késleltetett allokáció, memória-ballon

    • Perifériák virtualizációja

      • Perifériák programozói felülete általában

      • Periféria virtualizációs architektúrák


  • Login