“modul de funcționare și caracteristicile generale ale...
Post on 31-Aug-2019
5 Views
Preview:
TRANSCRIPT
Universitatea Politehnică Bucureşti
Facultatea de Electronică, Telecomunicaţii şi Tehnologia Informaţiei
Sisteme de Operare Avansate
“Modul de funcționare și caracteristicile generale ale mașinilor virtuale”
Profesor coordonator: prof. univ. dr. ing. Ştefan Stăncescu
Student: Sipică Alin-Marian
Grupa: IISC – anul I, sem I
Anul universitar
2016-2017
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
1
CUPRINS
1. Introducere .......................................................................................................................... 2
1.1 Scopul lucrarii .......................................................................................................... 2
1.2 Notiuni introductive despre masini virtuale ............................................................. 2
2. Notiuni despre HAL (Hardware Abstraction Layer) ........................................................... 5
3. Modele de masini virtuale ................................................................................................... 7
3.1 Masina VMware ........................................................................................................ 7
3.2 Masina Java ............................................................................................................... 9
3.3 Masina Z (Z-Machine) ............................................................................................ 11
3.4 Masina x86 (conceptul de virtualizare) ................................................................... 12
5. Concluzii ............................................................................................................................ 13
6. Bibliografie ........................................................................................................................ 14
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
2
INTRODUCERE
1.1 Scopul lucrarii
Lucrarea de fata are drept scop prezentarea conceptelor ce stau la baza masinariilor virtuale,
iar totodata, o listare a celor mai proeminente modele, alaturi de caracteristicile fiecareia. Astfel,
drept inceput vom prezenta notiuni introductive, generale, despre masinariile virtuale, avand in
vedere scopul, intrebuintarea, dezvoltarea, si implementarea modelului teoretic al acestora.
Totodata, vom discuta in detaliu despre HAL (Hardware Abstraction Layer) si cele mai
raspandite sau inspirationale modele de masinarie virtuala. Ulterior, vom concluziona lucrarea cu
o serie de observatii bine definite pe parcurs.
1.2 Notiuni introductive despre masini virtuale
În calcul, o mașină virtuală (cunoscuta sub acronimul "VM", de la "Virtual Machine" in
limba engleza) este o emulație a unui sistem informatic. Mașinile virtuale se bazează pe
arhitecturi informatice și oferă funcționalitatea unui computer fizic. Implementările lor pot
implica hardware specializat, software sau o combinație. Există diferite tipuri de mașini virtuale,
fiecare cu funcții diferite:
Mașinile virtuale de sistem (numite și VM de virtualizare completă) oferă un substitut
pentru o mașină reală. Ele oferă funcționalitatea necesară pentru a executa întregul
sistem de operare. Un hypervisor ("supraveghetor") utilizează execuția nativă pentru a
partaja și gestiona hardware-ul, permițând existența unor medii multiple care sunt
izolate unele de altele și totuși există pe aceeași mașină fizică. Hipervizorii moderni
utilizează virtualizarea asistată de hardware, hardware-ul specific pentru virtualizare,
în primul rând de la procesoarele gazdă.
Procesele de mașini virtuale sunt concepute pentru a executa programe de calculator
într-un mediu independent de platformă.
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
3
Unele mașini virtuale, cum ar fi QEMU (acronim de la cuvantul "Quick Emulator", ce
inseamna "Emulator Rapid" in engleza), sunt concepute pentru a emula diferite arhitecturi și
pentru a permite executarea aplicațiilor software și a sistemelor de operare scrise pentru un alt
procesor sau arhitectură. [1] Sistemul de operare la nivel de virtualizare permite resurselor unui
calculator să fie împărțite prin suportul kernel-ului pentru mai multe instanțe de spațiu pentru
utilizatori izolati, care sunt de obicei denumite containere și pot arăta ca și mașini reale pentru
utilizatorii finali.
Reprezentarea conceptului de „masina virtuala”
Mecanismele virtuale ale sistemului au crescut din timpul de partajare, așa cum s-a
implementat în mod special în sistemul compatibil de distribuire a timpului. Distribuirea
timpului a permis mai multor utilizatori să foloseasca simultan un computer: fiecare program
părea să aibă acces deplin la mașină, însă la acel moment a fost executat un singur program,
sistemul schimbând programele în timp, salvând și restaurând de fiecare dată statusul. Acestea au
evoluat în mașini virtuale, în special prin intermediul sistemelor de cercetare ale IBM: M44 /
44X, care utilizează virtualizarea parțială, și CP-40 și SIMMON, care au folosit virtualizarea
completă și au fost exemple timpurii de hypervizori.
Mașinile virtuale de proces au apărut inițial ca platforme abstracte pentru un limbaj
intermediar utilizat ca reprezentare a unui program de către un compilator. Un exemplar din
1966 a fost mașina O-cod, care execută "codul O" (un predecesor al codului obiect), emis de
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
4
partea frontală a compilatorului BCPL. Această abstractizare a permis compilatorului să fie
portat cu ușurință într-o nouă arhitectură prin implementarea unui nou back-end care a preluat
codul O existent și l-a compilat în codul mașinii pentru mașina fizică de bază. Limba Euler a
folosit un design similar, cu limbajul intermediar numit "P" (portabil). Acest lucru a fost
popularizat în jurul anului 1970 de către Pascal, în special în sistemul Pascal-P (1973) și al
compilatorului Pascal-S (1975), în care acesta a fost denumit "p-cod" și mașina rezultată ca
"mașină cu coduri p". [2]
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
5
NOȚIUNI DESPRE HAL
(HARDWARE ABSTRACTION LAYER)
În calcul, virtualizarea asistată de hardware este o abordare a platformei care permite o
virtualizare completă si eficientă, utilizând ajutorul capabilităților hardware, în special de
procesoarele masinii gazdă. Virtualizarea este utilizată pentru a simula un mediu hardware
complet sau o mașină virtuală, în care un sistem de operare gazdă (folosind același set de
instrucțiuni ca și aparatul gazdă) se execută în izolare completă. Asistența hardware-asistată a
fost adăugată procesoarelor x86 (Intel VT-x sau AMD-V) în 2005 și 2006. Virtualizarea asistată
de hardware este, de asemenea, cunoscută sub numele de "virtualizare accelerată".
Creșterea capacității de calcul pe serverul x86 (și în special creșterea substanțială a
lățimii de bandă a rețelelor moderne), a readus interesul față de calculul realizat in centre de date,
folosind tehnicile de virtualizare. Virtualizarea a permis unui singur server să consolideze în mod
eficient, din punct de vedere al costurilor, puterea de calcul pe mai multe servere dedicate care
nu sunt utilizate. Cea mai vizibilă amprentă a revenirii la rădăcini ale computerelor este cloud
computing, care este un sinonim pentru computerele de date bazate pe date (sau computere de tip
"mainframe") prin rețele de bandă largă. Arhitectura x86 de implementare inițială nu îndeplinea
cerințele de virtualizare "Popek și Goldberg" pentru a realiza "virtualizarea clasică":
echivalență: un program care rulează sub monitorul mașinii virtuale (VMM)
trebuie să prezinte un comportament în esență identic cu cel demonstrat atunci
când rulează direct pe o mașină
eficiență: o fracție dominantă statistic a instrucțiunilor mașinii trebuie executată
fără intervenția VMM
Pentru a compensa aceste limitări arhitecturale, designerii au realizat virtualizarea
arhitecturii x86 prin două metode: virtualizare completă sau paravirtualizare. [3] Ambele creau
iluzia hardware-ului fizic pentru a atinge obiectivul independenței sistemului de operare față de
hardware, dar prezintand unele compromisuri în ceea ce privește performanța și complexitatea.
Virtualizarea completă a fost implementată în VMS de prima generație x86. Se bazează pe
traducerea binară în "capcana" (instructiune de "fetch", tradusa prin ideea de "capcana") și
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
6
virtualizează executarea anumitor instrucțiuni sensibile, non-virtualizabile. Cu această abordare,
instrucțiunile critice sunt descoperite (static sau dinamic la timpul de execuție) și înglobate de
VMM pentru a fi emulate în software. Traducerea binară poate genera cheltuieli de performanță
în comparație cu o mașină virtuală care rulează pe arhitecturi virtualizate nativ, cum ar fi IBM
System / 370. VirtualBox, VMware Workstation (numai pentru 32 de biți) și Microsoft Virtual
PC, sunt implementări comerciale cunoscute de virtualizare completă.
Paravirtualizarea este o tehnică în care hipervizorul oferă un API, iar sistemul de
operare al mașinii virtuale gazdă solicită API-ul, care necesită modificări ale sistemului de
operare.
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
7
MODELE DE MAȘINI VIRTUALE
3.1 Mașini VMware
VMware Workstation Pro și VMware Workstation Player sunt standardul industrial
pentru rularea mai multor sisteme de operare ca mașini virtuale pe un singur PC. Mii de
profesioniști IT, dezvoltatori și companii folosesc VMwareWorkstation Pro și VMware
Workstation Player pentru a fi mai agile, mai productive și mai sigure în fiecare zi. Produsele
VMware Workstation permit utilizatorilor să ruleze mai multe sisteme de operare, inclusiv
Linux, Windows și altele, ca mașini virtuale pe un singur PC. Utilizatorii pot replica medii de
servere, desktop și tablete pe o mașină virtuală, pentru a rula aplicații simultan în sistemele de
operare fără a reporni. Stația de lucru oferă, de asemenea, un mediu izolat și sigur pentru a
evalua noile sisteme de operare precum Windows 10 și aplicațiile software de testare, patch-uri
și arhitecturi de referință. VMware Workstation este un hypervisor găzduit care rulează pe
versiuni x64 ale sistemelor de operare Windows și Linux [4] (o versiune x86 a versiunilor
anterioare a fost disponibilă); permite utilizatorilor să instaleze mașini virtuale (VM) pe o
singură mașină fizică , și să le folosiți simultan împreună cu mașina actuală. Fiecare mașină
virtuală poate executa propriul sistem de operare, inclusiv versiuni de Microsoft Windows,
Linux, BSD și MS-DOS. VMware Workstation este dezvoltat și vândut de VMware, Inc., divizia
Dell Technologies. Există o versiune gratuită, VMware Workstation Player, pentru utilizare
necomercială. Este necesară o licență pentru sistemele de operare pentru utilizarea unor
dispozitive brevetate, cum ar fi Windows. VM-urile Linux create pentru diferite scopuri sunt
disponibile din mai multe surse.
VMware Workstation suportă adaptarea adaptoarelor de rețea gazdă existente și
partajarea unităților fizice de disc și a dispozitivelor USB cu o mașină virtuală. Poate simula
unitățile de disc; un fișier imagine ISO poate fi montat ca o unitate de disc optică virtuală, iar
unitățile hard disk virtuale sunt implementate ca fișiere .vmdk. VMware Workstation Pro poate
salva starea unei mașini virtuale în orice moment. Aceste imagini pot fi restaurate mai târziu,
returnând efectiv mașina virtuală la starea salvată așa cum a fost și fără nici un fel de deteriorare
postmodernă a VM. VMware Workstation include abilitatea de a grupa mai multe mașini virtuale
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
8
într-un director de inventar. Mașinile dintr-un astfel de folder pot fi apoi alimentate și dezactivate
ca un singur obiect, util pentru testarea unor medii complexe client-server.
Arhitectura logica a unei masinarii VMware
Multe mașini virtuale deja existente (VM) care rulează pe VMware Player, Workstation
și alte programe de virtualizare sunt disponibile în scopuri specifice, fie pentru cumpărare, fie
gratuit; De exemplu, "dispozitive de browser" gratuite bazate pe Linux cu Firefox sau cu un alt
browser instalat care poate fi folosit pentru navigarea în siguranță în Web; Dacă sunt infectate
sau deteriorate, acestea pot fi aruncate și înlocuite cu o copie curată. Aparatul poate fi configurat
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
9
să se reseteze automat după fiecare utilizare, astfel încât informațiile personale și alte modificări
nu sunt stocate. VM distribuite în mod legal au doar sisteme de operare distribuite în mod liber,
deoarece sistemele de operare pe VP trebuie să fie licențiate; Gadgeturile Microsoft Windows
VG, în special, nu sunt distribuite, cu excepția versiunilor de evaluare.
Doua masini VMware ce utilizeaza Windows 8 si Windows 10,
ruland pe un Mac OS
3.2 Mașini Java
O mașină virtuală Java este o mașină abstractă de calcul care permite unui computer să
ruleze un program Java. Există trei noțiuni ale JVM: specificație, implementare și instanță.
Specificația este un document care descrie în mod oficial ceea ce este necesar pentru
implementarea JVM. Având o singură specificație, toate implementările sunt interoperabile.
Implementarea JVM este un program de calculator care îndeplinește cerințele specificației JVM.
O instanță a unui JVM este o implementare care rulează într-un proces care execută un program
compilat în Java bytecode. Java Runtime Environment este un pachet software care conține ceea
ce este necesar pentru a rula un program Java. Acesta include o implementare Java Virtual
Machine împreună cu o implementare a Bibliotecii de clase Java. Oracle Corporation, care deține
marca comercială Java, distribuie un mediu Java Runtime cu mașina lor virtuală Java denumită
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
10
HotSpot. Masina virtuala Java este un calculator abstract (virtual) definit de o specificatie.
Această specificație omite detaliile implementării care nu sunt esențiale pentru a asigura
interoperabilitatea: aspectul memoriei zonelor de date de rulare, algoritmul de colectare a
gunoiului folosit și orice optimizare internă a instrucțiunilor mașinii virtuale Java (traducerea lor
în codul mașinii). Motivul principal al acestei omisiuni este acela de a nu constrânge în mod
inutil implementatorii. Orice aplicație Java poate fi rulată numai în interiorul unei implementări
concrete a specificației abstracte a mașinii virtuale Java. [5]
Reprezentarea logica a unei masini virtuale Java
JVM funcționează pe valori primitive (numere întregi și puncte în virgulă mobilă) și
referințe. JVM este în mod fundamental o mașină pe 32 de biți. Tipuri de date long și double,
care sunt 64 biți, sunt suportate nativ, dar consumă două unități de stocare în variabilele locale
ale cadrului sau în stackul de operații, deoarece fiecare unitate are 32 de biți. Boolean, byte, short
și tipuri de caractere sunt toate semn-extinse (cu excepția caracterelor care sunt zero-extinse) și
funcționează ca întregi pe 32 de biți, la fel ca int. Tipurile mai mici au doar câteva instrucțiuni
specifice pentru încărcare, stocare și conversie de tip. Boolean nu este deloc cunoscut de JVM;
booleanii funcționează ca valori octet pe 8 biți, 0 reprezentând false și 1 reprezentând true. JVM
are un model "recycle" pentru depozitarea obiectelor și a rețelelor. Codul, constantele și alte date
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
11
de clasă sunt stocate în "zona metodei". Zona metodei face parte logic din stiva, dar
implementările pot trata zona separată de coada și, de exemplu, nu ar putea să o colecteze.
Fiecare thread JVM are și propriul său stack de apel (numit "stivă virtuală Java Java" pentru
claritate), care stochează cadre. Un nou cadru este creat de fiecare dată când este apelată o
metodă, iar cadrul este distrus când metoda ieșită.
Fiecare cadru oferă un "stack operand" și o serie de "variabile locale". Stackul de operand
este folosit pentru operandi la calcule si pentru primirea valorii returnate a unei metode numite,
in timp ce variabilele locale servesc aceluiasi scop ca registrele si sunt de asemenea folosite
pentru a trece argumentele metodelor. Astfel, JVM este o masina de stivuire si o masina de
inregistrare. Mediul Java Runtime Environment (JRE) lansat de Oracle este o distribuție de
software care conține un Java VM (HotSpot) autonom, plugin browser, biblioteci standard Java
și un instrument de configurare. Este cel mai comun mediu Java instalat pe computerele
Windows. Este disponibil gratuit pentru descărcare de pe site-ul java.com.
3.3 Mașina Z (Z Machine)
Masina Z este o mașină virtuală dezvoltată de Joel Berez și Marc Blank în 1979 și
folosită de Infocom pentru jocurile de aventură text. Infocom a compilat codul de joc în fișiere
care conțin instrucțiuni de mașină Z (numite fișiere de poveste sau fișiere Z-cod) și, prin urmare,
ar putea porni toate aventurile sale text într-o nouă platformă, pur și simplu scriind o
implementare a mașinii Z pentru platforma respectivă. Cu numărul mare de sisteme
incompatibile de calculator de uz curent utilizate în acel moment, acesta a fost un avantaj
important față de utilizarea codului nativ sau dezvoltarea unui compilator pentru fiecare sistem.
După ce Mediagenic a relocat Infocom în California în 1989, Computer Gaming World a
declarat că "ZIL ... este mort din punct de vedere funcțional" și a raportat zvonuri despre un
"parser complet nou care nu poate fi folosit niciodată". Compilatorul (numit Zilch) pe care
Infocom l-a folosit pentru a produce fișierele de poveste nu a fost lansat niciodată, deși
documentația pentru limba folosită (numită ZIL pentru Zork Implementation Language) încă mai
există și a fost scris un înlocuitor open-source (numit ZILF). În mai 1993, Graham Nelson a
lansat prima versiune a compilatorului Inform, care generează, de asemenea, fișierele de istorie a
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
12
mașinilor Z, chiar dacă limba sursă Inform este destul de diferită de ZIL. Cele mai multe fișiere
produse de Inform sunt versiunea 5. Frotz a fost inițial scris în C de către Stefan Jokisch în 1995
pentru DOS. În timp a fost portat pe alte platforme, cum ar fi Unix, RISC OS, Mac OS și, cel
mai recent, iOS. [6] Efectele de sunet și grafica au fost suportate în grade diferite. Până în 2002,
dezvoltarea a stagnat și programul a fost preluat de David Griffith. Baza de coduri a fost apoi
separată distinct între mașina virtuală și porțiunile interfeței utilizator astfel încât mașina virtuală
a devenit complet independentă de orice interfață de utilizator. Acest lucru a permis mult mai
multă varietate în portul Frotz. Unul dintre porturile străine este, de asemenea, unul dintre cele
mai simple: un bot de mesagerie instantanee este înfășurat în jurul unei versiuni de Frotz, cu un
minim de funcționalitate IO, creând un bot cu care se pot juca majoritatea jocurilor Z-machine
folosind un client instant messenger.
3.4 Mașini x86 (conceptul de virtualizare)
În calcul, virtualizarea x86 se referă la virtualizarea hardware pentru arhitectura x86.
Permite sistemelor de operare multiple să partajeze simultan resursele procesoarelor x86 într-un
mod sigur și eficient. La sfârșitul anilor 1990, virtualizarea x86 a fost realizată prin tehnici
complexe de software, necesare pentru a compensa lipsa suportului de virtualizare de către
procesor în timp ce atingerea unor performanțe rezonabile. În 2006, atât Intel (VT-x), cât și
AMD (AMD-V) au introdus un suport limitat de virtualizare a hardware-ului, care a permis un
software de virtualizare mai simplu, dar a oferit beneficii foarte reduse vitezei. Sprijinul
hardware mai mare, care a permis îmbunătățiri substanțiale ale vitezei, a venit cu modele de
procesoare ulterioare. Cercetătorii VMware au subliniat într-o lucrare ASPLOS din 2006 că
tehnicile de mai sus au făcut platforma x86 virtualizabilă în sensul îndeplinirii celor trei criterii
ale lui Popek și Goldberg, deși nu prin tehnica clasică de capcană și emulate. O altă rută a fost
luată de alte sisteme precum Denali, L4 și Xen, cunoscute sub numele de paravirtualizare, care
implică portarea sistemelor de operare pentru a rula pe mașina virtuală rezultată, care nu
implementează componentele setului real de instrucțiuni x86 greu de virtualizat . I / O
paravirtualizate are beneficii semnificative de performanță, așa cum sa demonstrat în hârtia
SOSP'03 Xen originală.
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
13
CONCLUZII
Mai mulți furnizori oferă software pentru mașini virtuale, însă doi dominanți au dominat
piața: VMware și Microsoft. VMware are un portofoliu matur de produse, cu mulți ani de
utilizare în industria IT. Mai multe alternative cu sursă deschisă se dezvoltă rapid, cu
caracteristici noi și cu o stabilitate sporită, dar nu au aceleași opțiuni de maturitate sau de sprijin
ca aceste oferte ale furnizorilor. Mașinile virtuale sunt construite pentru a oferi utilizatorilor
propriul hardware virtual, inclusiv un CPU virtual, o memorie, un hard disk, o interfață de rețea
și alte dispozitive. Dispozitivele hardware virtuale furnizate de mașina virtuală sunt lipite de
hardware-ul real funcțional al mașinii dvs. fizice. De exemplu, un hard disk virtual al unui
computer virtual este stocat într-un fișier care se găsește pe hard disk. Mai mult decât atât, puteți
avea câteva mașini virtuale instalate pe sistemul dvs., unde sunteți constrânși numai de spațiul de
stocare pe care îl aveți la dispoziție. După instalarea sistemelor de operare în mașinile virtuale,
puteți deschide programul dvs. de computer virtual și puteți alege mașina virtuală pe care doriți
să o bootați numai atunci când sistemul de operare invitat este activat și rulează într-o fereastră în
sistemul dvs. de operare gazdă.
Sisteme de Operare Avansate MODUL DE FUNCȚIONARE ȘI CARACTERISTICILE GENERALE ALE MAȘINILOR VIRTUALE
14
BIBLIOGRAFIE
[1] - "Licensing manual” wiki.qemu.org, „Support” tab, pag 3.
[2] - „Modern Operating Systems”, Tannenbaum, cap 1.7.3, pag 97
[3] – "A Comparison of Software and Hardware Techniques for x86 Virtualization" Adams,
Keith. Retrieved 20 January 2013, cap 4, pag 5.
[4] - "A Comparison of Software and Hardware Techniques for x86 Virtualization" Adams,
Keith. Retrieved 20 January 2013, cap 1, pag 1.
[5] – „Inside the Java Virtual Machine”, Bill Venners, cap 5.
[6] – "Frotz README file on Github". Retrieved 2016-10-29.
top related