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



Hasonló dokumentumok
Operációs rendszerek

Utolsó módosítás:

UNIX / Linux rendszeradminisztráció

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

Programozás alapjai Bevezetés

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

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Bevezetés a Python programozási nyelvbe

Operációs rendszerek MINB240 V2+2+0

Operációs rendszerek MINB240 V kredit KF Nagyváradi Anett 0. előadás Bevezetés

Bevezetés az informatikába

Utolsó módosítás:

A számítógép egységei

Alkalmazások típusai Szoftverismeretek

A virtuális környezetet menedzselő program. Első lépésként egy új virtuális gépet hozzunk létre a Create a New Virtual Machine menüponttal.

Operációs rendszerek Folyamatok 1.1

Telepítési útmutató a Solid Edge ST7-es verziójához Solid Edge

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

Virtualizációs technológiák és alkalmazások. Házi feladat. A Virtualbox. készítette: Andrus Tamá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

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Számítógépes alapismeretek

Írásjogtól Rootig AIX-on

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES

Informatika érettségi vizsga

Dr. Schuster György október 30.

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Informatika. 3. Az informatika felhasználási területei és gazdasági hatásai

1_Linux_bevezeto_bash

Az operációs rendszer. Az operációs rendszer feladatai, részei, fajtái Az operációs rendszer beállítása

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Számítógépes vírusok. Barta Bettina 12. B

1. MODUL - ÁLTALÁNOS FOGALMAK

A L I N U X f e l é p í t é s e

Mi van a Lajtner Machine hátterében?

Hardver és szoftver követelmények

1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.

Operációs rendszerek - bevezető

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

1. Origin telepítése. A telepítő első képernyőjén kattintson a Next gombra:

Adatbázis és szoftverfejlesztés elmélet

OPERÁCIÓS RENDSZEREK. Elmélet

Mértékegységek a számítástechnikában

Segédlet Hálózatok. Hálózatok 1. Mit nevezünk hálózatnak? A számítógép hálózat más-más helyeken lévő számítógépek összekapcsolását jelenti.

8. gyakorlat Pointerek, dinamikus memóriakezelés

Kiszolgálók üzemeltetése. Iványi Péter

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

IT - Alapismeretek. Megoldások

A LEGO Mindstorms EV3 programozása

Hálózati operációs rendszerek II. OES biztonsági rendszere

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Operációs rendszerek. Bemutatkozás

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

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Történet. Számítógépes vírusok. Mik a vírusok? A vírusok felépítése

Operációs rendszerek

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

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

Mechatronika segédlet 6. gyakorlat

Adatbázis rendszerek. dr. Siki Zoltán

A PiFast program használata. Nagy Lajos

A Hypertext. Dr. Nyéki Lajos 2019

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

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

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

Számítógép architektúra

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

ARM Cortex magú mikrovezérlők. mbed

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

Operációs Rendszerek II.

Bepillantás a gépházba

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

III. Alapfogalmak és tervezési módszertan SystemC-ben

MPLAB ICD használata

Ubuntu telepítése virtuális gépre (VirtualBox)

CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén

TestLine - zsoldosbeatesztje-01 Minta feladatsor

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

FELHŐ és a MAINFRAME. Irmes Sándor

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

SZÁMÍTÓGÉP HÁLÓZATOK BEADANDÓ ESSZÉ. A Windows névfeloldási szolgáltatásai

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

Telenor Webiroda. Kezdő lépések

TestLine ae01tesztje-01 Minta feladatsor

elektronikus adattárolást memóriacím

TestLine ae01tesztje-01 Minta feladatsor

Szoftver alapfogalmak

Windows Server 2008 Standard telepítése lépésenként VirtualBox virtuális gépbe

TestLine - kkvtestnk01tesztje-01 Minta feladatsor

1. Fejezet: Számítógép rendszerek. Tipikus számítógép hirdetés

10. előadás Speciális többágú fák

Win 8 változatok. 2. sz. melléklet felnottkepzes@gmail.com. Töltse ki az előzetes tudásszint felmérő dolgozatot!

TestLine - kkvtest02tesztje-01 Minta feladatsor

Operációsrendszerek. 2. elıadás. Standard ismeretek II.

Programozás alapjai. 10. előadás

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

tovább használhatjuk a Windows-t.

Átírás:

Virtuális gépek Kiss Róbert, informatika IV. év, Babes-Bolyai t.e. 1. Bevezetés. A virtuális gépek fogalma egyáltalán nem új a számítástechnikában. Sokan nem is tudnak róla, hogy éppen virtuális gépet használnak, ilyen gép pl. az Internetezés közben használt Java Virtual Machine is. Ezeket a gépeket gyakran használják a számítógépek világában, segítségükkel számos problémát oldanak meg, bár működésükről az átlag felhasználó semmit sem sejt, mivel a programok belsejében vagy operációs rendszer szinten működnek. Ilyen feladatok a hardware eszközök megosztása a programok között, programok hordozhatóvá tétele különböző operációs rendszerek vagy akár gépek között. Maga a szó, virtuális, eredetileg az optikában terjedt el, a tárgyak tükörképeit nevezték virtuális képeknek. Később kibővült a jelentési köre, minden olyan dolgot virtuálisnak hívtak, amiben a valóság szimulációja valósult meg, ilyenek pl. a közismert virtuális memória, virtuális lemez, virtuális valóság fogalmak. Ezek alapján kijelenthetjük, hogy egy virtuális gép egy valódi gépnek a lemodellezése, de nem a tökéletes másolata. Ez a modell minden szempontból úgy viselkedik, mint az eredeti, mégsem fizikailag van kivitelezve, hanem logikailag. Tehát egy olyan gépet varázsol nekünk, ami nincs fizikailag jelen. (Biztosan sokan használtak Nintendo, vagy Play Station emulátort a PC-jén, ezek nagyon jó példák a virtuális gépekre). Maga az ötlet nem új, még a számítógépek meg sem jelentek, már gondolkoztak ilyen jellegű gépek építésén. De igazán akkor kapott értelmet az egész, miután megjelentek az első számítógépek. 1965 környékén az IBM szakemberei kísérletet tettek egy nagyobb rendszer felosztására kisebb, önálló rendszerekre, amelyek rendelkeznek a nagy rendszer minden tulajdonságával. Ennek volt is eredménye, két számítógép: IBM System 370 (S/370) és az IBM System 390 (S/390), amelyek az IBM VM/ESA operációs rendszerrel működtek. Később felvetődik a programok hordozhatóságának a kérdése, 1980 és 1985 között megjelennek a POSIX alapú parancsok (Unix). A Java, mint ötlet már a 70-es években megjelenik (Bill Joy), bár valósággá csak a 90-es években válik. 3. A virtuális gépek általános jellemzése. Minden gépnek, legyen az számítógép vagy akár hűtőszekrény, van egy közös jellemzője: kell legyen egy utasításkészletük, ennek az utasításkészletnek a segítségével irányíthatjuk a gépet. A virtuális gépek éppen ezt az alaptulajdonságot használják ki, lényegében egy utasításkészletet szimulálnak. A szimuláció úgy történik, hogy a felhasználó kiad egy utasítást a virtuális gépnek, a gép értelmezi azt majd átalakítja fizikai utasítássá, attól föggően, hogy milyen géptípussal valósítjuk meg a szimulációt. Pl. a Java Virtual Machine mikor egy olyan utasítást kap, hogy írjon ki egy karaktert a képernyőre, akkor az eredmény géptől függetlenül ugyanaz lesz, viszont nyilvánvaló, hogy egy PC és egy Macintosh gépen fizikailag különbözőképpen valósul 1

meg a kiírás. Lényegében a virtuális gép minden virtuális utasításnak egy vagy több fizikai utasítást feleltet meg. Az alábbi ábrán a fenti rész egy valódi gép működését jellemzi, teház az X utasítás hozzárendelhető az Y fizikai szinten történő utasításhoz, míg a virtuális gép esetében az X-et először egy x1-hez rendeljük hozzá, és így tovább, míg eljútunk a Y-hoz. 4. Modellek. Az évek során a virtuális gépek világában négy nagyobb modell alakult ki. Az első az IBM modellje, amely az egy az egyben lemásolni elvet követi (one-to-one map). A második családba tartoznak azok a virtuális gépek, amelyek a fizikai gép minden parancsának megfeleltetnek egy virtuális parancsot, ilyen a Java Virtual Machine is vagy a különböző emulátorok. Végül az utolsó két modell a Unix és az OSI modellek, amelyek bizonyos fizikai utasításoknak megfeleltetnek egy virtuálisat, más virtuális utasítások viszont az operációs rendszer kínálta alapfüggvényeket hívják meg. A. Az IBM modell. Az IBM modell alapján egy virtuális gép nem lesz más, mint az eredeti gép egy pontos mása, csak csökkentett kapcitással, és mindez az eredeti gépen kivitelezve. Ezzel azt akarták elérni, hogy egy nagy teljesítményű gépet felosszanak sok kisebb, gyengébb gépre. Mivel ugyanazon a gépen fut, mint amit szimulálni akar, ezért a virtuális gép utasításkészlete egy az egyben megegyezik a fizikai gép utasításkészletével. Így minden virtuális parancshoz hozzárendelődik egy és csakis egy fizikai utasítás, méghozzá a neki megfelelő fizikai utasítás. Ezáltal megvalósítható egy biztonság is, hiszen a rendszer, ha úgy itéli egy utasításról, hogy bajt okozhat, akkor egyszerűen nem hajtatja végre a fizikai géppel. Jó példa erre, ha valaki meg akarná direktbe változtatni a fizikai processzor regisztereinek a tartalmát. Mivel lehet, hogy más virtuális gép is fut a rendszeren, ezért ez nem megengedhető. Éppen ezért az un. nem-kritikus utasításokat direktbe hajtatja végre, míg a kritikusnak ítélt utasításokat, ha azokat nem sikerül direktbe végrahajtani, megpróbálja szimulálni. Ezáltal a felhasználó minden parancsot elérhet, bár sokszor nincs tudomása arról, hogy ez csak szimulálva van. Felmerül a következő kérdés: honnan tudják a virtuális gépek, hogy mikor használhatják valóban a hardware-t és mikor kell azt emulálni? A válasz egyszerű. 2

Az alapgépet, amelyeken a virtuális gépek fognak futni egy VM Operating System operációs rendszer vezérli. Ezt a hardware-t és az operációs rendszert együttesen VM System -nek nevezzük. Minden virtuális gépet egy un. kontroll program (Control Program) vezérel, ez osztja ki az erőforrásokat, ez vezérli a fizikai hardware-t, ez hozza létre a virtuális gépet minden felhasználó részére, ami egy szimulációja lesz a nagy számítógépnek (System/370 vagy System/390). Ezzel a módszerrel minden felhasználó egy saját gépet kezel, olyan, mintha mindenki hozzájutna egy önálló számítógéphez, és mindezek felett még a biztonsági követelményeknek is eleget tesz a rendszer. Egy másik hasznos program, amely egy ilyen rendszerben megtalálható a CMS (Conversational Monitor System = társalgási felügyelő rendszer). Ez gondoskodik egy virtuális gépen belül a fájlok kezeléséről, programok futtatásáról, a memória kezeléséről, új programok fejlesztését teszi lehetővé, stb. A CMS tehát nem más, mint egyetlen virtuális gépnek az operációs rendszere, és ez csak egyetlen taszkot tud kezelni egyszerre. Ezen a két alapprogramon kívűl még számos kisebb program segíti a felhasználókat a gépek minél hatékonyabb kihasználásában, pl.: Group Control System, Transparent System Access Facility, Dump Viewing Facility. Már említettük, hogy az IBM modell minden virtuális uatasításnak egy fizikai utasítást feleltet meg, ha ezt nem tudja megvalósítani, akkor kritikus utasításként fogja fel. Ezt megpróbálja szimulálni. Vajon ez nem lassítja le a rendszert? Mivel igen kevés utasítás lehet kritikus utasítás, ezért nem lassul észrevehetően a rendszer. Nézzünk egy példát egy ilyen kritikus utasításra: Tételezzük fel, hogy egy felhasználó megpróbál egy olyan parancsot végrehajtatni a rendszerrel, amely hivatkozik egy másik felhasználó által már lefoglalt erőforrásra. Ezt a CMS észleli, és kritikus utasításnak nyilvánítja. Ezután a CMS felismeri az eszközt, amelyet az utasítás nem tud elérni és az utasítást átadja a Control Programnak egy speciális jelzéssel: ez egy védett parancs. A Control Program veszi az utasítást és a jelzést, végrehajt néhány eljárást és ellenőrzést, hogy megállapítsa, hogy az utasítás hatására a gépnek mit kellene tennie. Ezután az eljárások visszajeleznek a Control Program-nak, hogy az utasítás mely részei szimulálhatók, és mely részei fognak gondot okozni. Ha sikerül leszimulálni a parancsot, akkor ez megtörténik, ebben az esetben a felhasználó sosem tudja meg, hogy a parancs csak virtuálisan lett végrehajtva. Ha viszont nem lehetséges a szimuláció, akkor a Control Program visszajelez a felhasználónak, hogy az utasítást nem sikerült végrehajtani. B. A Java Virtual Machine modell. Egy másik típusa a virtuális gépeknek, amelyeket gyakran használnak a számítástechnikában, nem más mint egy gép szimulációja. Ez az elképzelés eltér az IBM felfogásától, amely az erőforrások megosztására összpontosít és a nagyobb gépet felosztja több, kisebb gépre. Ezzel szemben itt nincs szó felosztásról. Ehelyett egy új gépet hoz létre a rendszeren anélkül, hogy az eredeti gépet megváltoztatná. Így lehetővé válik, hogy egy gépen egy teljesen más gépet emuláljunk. Az ötlet eredetileg onnan ered, hogy próbáltak egy plattformfüggetlen programozási nyelvet létrehozni (Java). 3

A Java programozási nyelv segítségével fejlesztett programok pontosan ezen a Java Virtual Machine virtuális gépen futtathatók. Tehát mikor egy Java programot futtatunk, az nem a fizikai gépen fut, hanem egy virtuális gépen. Éppen ezért egy adott rendszeren megírt Java program ugyanúgy fog lefutni egy másik rendszeren is. Ezért lett a Java az Internet fő programozási nyelve. A JVM típusú gépeket absztrakt gépeknek is hívjuk. Másszóval ezek szoftveresen vannak kivitelezve és az operációs rendszer fölött állnak. A programozó megírja a programot, ebből a fordítóprogram bináris kódot generál, amelyet a JVM végrehajt és ennek függvényében egy kimenetet generál. A működését az alábbi ábra mutatja be: C. Az OSI modell. Az OSI az úgynevezett kiterjesztett virtuális gépekre helyezi a hangsúlyt. Ezek természetes melléktermékei a modern operációs rendszereknek, mivel minden ilyen operációs rendszer használ valamilyen virtuális gépet. Éppen ezért néhány alapdolgot meg kell érteni ahhoz, hogy megértsük, hogy valójában mi is az a kiterjesztett virtuális gép. Közismert, hogy egy modern operációs rendszer utasításkészlettel rendelkezik, amelyek kombinációjából előállíthatóak az adott rendszeren futtatható programok. De az operációs rendszer is alaputasítások sorozatából állítja össze a saját utasításkészletét, mégpedig a rendszer nyújtotta alaputasításokból (BIOS rutinok, stb.) Ezzel a gondolkodásmóddal visszajúthatunk egészen az 1-ek és 0-ák világába. Tehát mikor egy programot lefuttatunk, akkor ez meghívja az operációs rendszer utasításait, azok pedig meghívnak hardware szintű utasításokat. De ezek a rétegek, a gép áramkörei, a gépi kód, az operációs rendszer parancsai és a programok kódja, jól elkülönített rétegek, mindegyik csak az alatta illetve a fölötte levő szinttel tud kommunikálni. Éppen ez a tulajdonság teszi lehetővé, hogy egy kiterjesztett virtuális gépet építsünk, hiszen látható, hogy csupán 1-ek és 0-ák sorozatából milyen bonyolult dolgokat lehet előállítani. A végleges célja tehát a kiterjesztett virtuális gépek fejlesztésének olyan gépek létrehozása, amely nem létezik fizikailag és talán nem is építhető meg. Például minden gép rendelkezik merevlemezzel, ezen tároljuk az adatokat. Valójában a mérete 4

korlátozott, előfordulhat, hogy egy nagyobb méretre lenne szükségünk, mint ami jelenleg előállítható. Egy kiterjesztett virtuális gép képes megoldani azt, hogy több, különálló merevlemezt egyként kezeljen. D. A UNIX modell. Mivel a Unix többfelhasználós rendszer, ezért minden felhasználó bejelentkezésekor létrehoz egy új konzol shellt (user shell). Mivel ezek a shellek a felhasználónak külön erőforrásokat biztosítanak (minden shellen folyamatok futtathatók, külön memória van kiosztva nekik, stb.), így ezek mindegyike tekinthető virtuális gépnek, és az IBM modelljéhez hasonlítható. Ezek a shellek hozzák létre a folyamatokat és valósítják meg közöttük a kommunikációt. Mindezek ellenére nem lehet egyértelműen IBM modellnek nevezni, mert az IBM modell éppen a felhasználók elszigeteltségére fekteti a hangsúly, míg a Unix esetében lehetséges a shellek közötti kommunikáció. Pontosan ebből az eltérésből adódóan a Unix folyamatok a Java Virtuális gépre is emlékeztetnek, mivel a Unix operációs rendszer réteges felépítéséből adódóan a parancsokat sikerült standardizálni és ezáltal plattfomfüggetlenné tenni. Ezeket a parancsokat shelleknek hívjuk. (IEEE POSIX project - Information Technology Portable Operating System Interface) Az OSI modell is megtalálható a Unix-ban pontosan a Unix felépítéséből adódóan. A hardware kiterjesztése egy alap tulajdonsága a Unix operációs rendszernek. Az egyik legérdekesebb szoftver, amit a témával kapcsolatban találtam az a VMware nevű program (www.vmware.com). A program egy virtuális gépet hoz létre a rendszerünkön, ami mindennel rendelkezik, amivel egy fizikai gép rendelkezhet (saját BIOS, használja a fizikai gép CD-ROM át, merevlemez adható neki, fizikai memória, stb.). Természetesen saját operációs rendszer telepíthető fel rá, hálózat hozható létre a fizikai géppel, vagy több, virtuális gép között. Nagyon hasznos, ha az ember kísérletezgetni akar, hiszen nem rontható el, mivel csak egy program, amit hiba esetén újra lehet telepíteni. 5

Néhány kép, amint a VMware fut: 6