Utolsó módosítás:

Hasonló dokumentumok
Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Utolsó módosítás:

Utolsó módosítás:

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

Operációs rendszerek az iskolában

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

UNIX / Linux rendszeradminisztráció

Virtualizációs technológiák és alkalmazások. Házi feladat. A Virtualbox. készítette: Andrus Tamás

Memória és perifériák virtualizációja. Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Utolsó módosítás:

Felhő alapú hálózatok (VITMMA02) Virtualizáció

Utolsó módosítás:

Felhő alapú hálózatok (VITMMA02) Virtualizáció

VIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC

Virtualizációs technológiák és alkalmazásaik (VIMIAV89) Házi feladat: Intel VT-d (IOMMU) technológia részleteinek megismerése

Az előadás magáncélra szabadon felhasználható. Köz- és felsőoktatásban felhasználható, csak előtte kérlek írj egy t nekem.

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Az előadás magáncélra szabadon felhasználható. Köz- és felsőoktatásban felhasználható, csak előtte kérlek írj egy t nekem.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Az operációs rendszer szerkezete, szolgáltatásai

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

Könyvtári szervervirtualizáció Oracle Virtual Machine platformon

Kivételkezelés a C++ nyelvben Bevezetés

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Architektúra, megszakítási rendszerek

Bevezetés a számítástechnikába

Virtuális memóriakezelés Védelem. Memória védelem. Intel x68. Izsó Tamás október 18. Izsó Tamás Memória védelem/ 1

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Adatszerkezetek 1. Dr. Iványi Péter

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

Virtuális memóriakezelés Védelem. Memória védelem. Intel X86. Izsó Tamás október 1. Izsó Tamás Memória védelem/ 1

Cloud computing Dr. Bakonyi Péter.

Dr. Schuster György október 30.

8. Memória management

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Számítógépes virtualizáció

Globális operátor overloading

Szegmentálás. Memória kezelési stratégia mely a felhasználó nézőpontját támogatja Például:

Pénzügyi algoritmusok

Segesdi Dániel. OpenNebula. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV ősz

Máté: Számítógép architektúrák

Operációs rendszerek. Bemutatkozás

6.2. TMS320C64x és TMS320C67xx DSP használata

A 32 bites x86-os architektúra regiszterei

Operációs Rendszerek MSc

Operációs rendszerek. Az NT folyamatok kezelése

Dr. Illés Zoltán

Az interrupt Benesóczky Zoltán 2004

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Virtuális gépben futtatott CPU-emulátor teljesítményének vizsgálata

Programozás alapjai Bevezetés

Podoski Péter és Zabb László

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

A Dunaújvárosi Főiskola online folyóirata I. évfolyam IV. szám Műszaki-, Informatikai és Társadalomtudományok

A programozás alapjai

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

C++ programok fordítása

.NET (Dot-NET) #1 (Bevezetés)

Digitális rendszerek. Utasításarchitektúra szintje

Virtuális gépek. Kiss Róbert, informatika IV. év, Babes-Bolyai t.e.

VIRTUALIZÁCIÓ. 2006/2007. tavaszi félév Tanulmány Esettanulmány: a XEN VMM KÉSZÍTETTE: BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM

Java IX. telkezelés a Java-ban

Magas szintű optimalizálás

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Java IX. telkezelés a Java-ban

(kernel3d vizualizáció: kernel245_graph.mpg)

Máté: Assembly programozás

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Operációs rendszerek Folyamatok 1.1

Java I. A Java programozási nyelv

Occam 1. Készítette: Szabó Éva

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Operációs rendszerek MINB240

Hogyan működtethető a telefonrendszer virtuális környezetben? Mészáros Tamás Műszaki fejlesztési vezető

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Windows Server 2012: a felhő OS

Korszerű Adatbázisok. Gombos Gergő

Kliens hypervisorok - új buzzword a láthatáron

OPERÁCIÓS RENDSZEREK. Elmélet

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Operációs rendszerek. Windows NT. A Windows NT

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Melyek a Windows Server 2008 R2 tiszta telepítésének (Clean Install) legfontosabb lépései?

Számítógépek felépítése

Adatelérés és memóriakezelés

Optimalizáció ESX-től View-ig. Pintér Kornél ügyfélszolgála3 mérnök

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

386 processzor címzés

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Számítógép Architektúrák

Kivételek, kivételkezelés a C++ nyelvben

Objektumorientált programozás C# nyelven

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Operációs rendszerek. A Windows NT

SUSE Linux megoldások. Horváth Gábor Kálmán vezető tanácsadó

Átírás:

Utolsó módosítás:2010. 09. 15. 1

2

Kicsit konkrétabban: az utasítás hatására a belső regiszterek valamelyikének értékét módosítja, felhasználva regiszter értékeket és/vagy kívülről betöltött adatot. A belső regiszter tartalma lehet később kimenő adat, vagy befolyásolhatja a program további futását. Pl. a programszámlálót átírja, ezzel ugrik más programrészhez (erre általában dedikált vezérlési-folyam utasítások vannak: jump/goto, branch/if, call, return). 3

4

Az elszigetelés fő célja, hogy az egyik program hibája esetén egy másik futó program zavartalanul működhessen tovább ugyanazon a processzoron. Megjegyzés: az ábrát gyakran fordítva szokták rajzolni, hogy a Ring0 van legbelül. Most ez halmazokat hivatott illusztrálni, ezért van a Ring 0, mint legbővebb utasításhalmaz, kívül. Mit jelent a Ring x86-on: a CPU-nak van egy aktuális futási szintje (CPL current privilege level) és vannak különböző adatszerkezet leírók szegmens és lapozott memóriához, melyek szintén tartalmaznak egy futási szintet (DPL descriptor privilege level). Hozzáférés (olvasás, írás, végrehajtás) általános esetben akkor engedélyezett, ha a CPL <= DPL, a bonyolultabb esetekre, mint Call Gate használata most nem térünk ki. A Ring 0-ban a teljes ISA rendelkezésre áll, 1-3-ban csak egy szűkített részhalmaz (pl védelmi szint, szegmens leíró tábla regiszterek nem válthatók). Részletes leírás: Intel Architecture Software Developer s Manual4-9 fejezet. http://download.intel.com/design/pentiumii/manuals/24319202.pdf 5

Az x86 esetén vannak egyéb CPU üzemmódváltási lehetőségek is, pl Call Gate leírón keresztüli kód szegmensbe hívásnál RPL (Requested Protection Level) mező, de modern operációs rendszerek nem támaszkodnak erre a megoldásra. 6

7

8

* Gerald J. Popek and Robert P. Goldberg: Formal Requirements for Virtualizable Third Generation Architectures, 1974 9

10

11

Figyelem, az emuláció vs. szimuláció csak ebben a környezetben definiálható így. Más tudományterületek eltérő értelemben is használják. 12

13

Interpreter hogyan hordozható: ha pl. C nyelven írjuk (bizonyos kódolási konvenciók betartásával), akkor bármely célplatformon futtatható, amire van C fordító JIT fordító viszont specifikus kell hogy legyen minden virtuális gép-futtató platform párra. A Java VM és a.net CLR is Jit fordítós emulátorok, olyan architektúrát emulálnak, ami fizikai processzoron sohasem létezett. Viszont ezek alkalmazásfuttató környezetek, NEM tartoznak a platform virtualizáció témakörébe! 14

15

16

Virtuális gép alacsonyabb védelmi szinten futtatása: deprivilegizálás (de-privileging) x86 ring: 4 darab van, 0 a legmagasabb (itt futnak általában az OS-ek kerneljei), 3 a legalacsonyabb (itt futnak az alkalmazások) A processzor trap művelete kb olyan, mint egy kivétel (exception): van egy catch blokkja, ami egy a processzorba fixen beállított lekezelő függvénypointer tömb. (Megjegyzés az x86-nak valójában van egy 5. ringje is, a System Management Mode, ami a ring 0-nál is bővebb utasításhalmazt enged meg, és el tudja fogni a ring0-ban futó utasításokat is.) 17

18

19

Itt látható, hogy baj van, ha van olyan utasítás, ami nem vált ki trap-et, de nem is hajtódik végre Ring3-ban (vagy nem ugyanúgy hajtódik végre), mert akkor nincs esély rá, hogy elkapja a VMM és emulálni tudja a hatását. Így viszont a hatástalan utasítás miatt a vendég OS működése hibás lesz (és lefagy ) Fontos, hogy ez az emuláció korlátozottabb körű emuláció, mint amiről idáig szó volt, itt lényegében csak a privilegizált utasításokat interpretálja a VMM, ezeket is a CPU hardveresen találja meg, nem kell a futtatható bináris kódot szoftveresen feldolgozni 20

Fontos, hogy a teljes CPU emulációnál használt futtatókörnyezettől eltérően itt csak a kódra mutató pointereket kell átírni (futási időben csak önmódosító kód esetén változhat), az adatra mutató pointerek (amik futási időben változnak!) változatlanul hagyhatók. Ezért a virtuális gép futása elő-fordítási és futási fázisokra bomlik. Az előfordítási lépések mindig akkor történnek, ha új (korábban még nem futtatott) kódrészlethez kerülne a vezérlés. Az előfordító vezérlése lusta módon történik, csak akkor hívódik meg, ha feltétlen szükség van rá és nem dolgozik nagyon előre ezért az előfordítási fázisok külön-külön rövid ideig tartanak -> nem rontja le nagyon a virtuális gép válaszidejét. Bináris fordítás működése példával illusztrálva: Keith Adams, Ole Agesen: A comparison of software and hardware techniques for x86 virtualization http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.117.196&rep=rep1&type =pdf 21

22

Képek forrása: 1. Intel 2. Anandtech Optimizing for virtualization http://www.anandtech.com/show/2786 23

Mivel a vendég gépet módosítjuk, hogy együttműködjön egy virtualizációs környezettel ezért sokkal egyszerűbbé válik a VMM megvalósítása is. DE ez nem jelenti azt, hogy a VMM védelmét csökkenthetnénk, nem tételezhetjük fel, hogy a vendég OS mindig be fogja tartani a szabályokat, meghibásodhat, vagy támadó célzattal módosíthatják a működését. A különbség annyi, hogy paravirtualizációnál a VMM nem kell, hogy megpróbálja emulálni a hatását olyan műveleteknek, amiket a vendég OS megegyezés szerint nem adhatna ki, hanem el nem fogható műveletnél - hagyja összeomlani, vagy elfogható, de nem engedélyezett műveletnél - explicit leállítja a vendég gépet. 24

25