Màquina virtual

De Viquipèdia
Dreceres ràpides: navegació, cerca
Arquitectura típica d'una màquina virtual.

En informàtica una màquina virtual és un programari que emula un ordinador i pot executar programes com si fos un ordinador real. Aquest programari en un principi va ser definit com "un duplicat eficient i aïllat d'una màquina física". L'accepció del terme inclou màquines virtuals que no tenen cap equivalència directa amb cap maquinari real. Una característica essencial de les màquines virtuals és que els processos que s'executen estan limitats pels recursos i abstraccions proporcionats per elles. Aquests processos no poden escapar d'aquest "ordinador virtual". Un dels usos domèstics més estesos de les màquines virtuals és executar sistemes operatius per "provar". D'aquesta manera podem executar un sistema operatiu que vulguem provar (Linux, per exemple) des del sistema operatiu habitual (Mac OS X per exemple) sense necessitat d'instal·lar directament al nostre ordinador i sense por que es desconfiguri el sistema operatiu primari.

Tipus de màquines virtuals[modifica | modifica el codi]

Funcionament de VMware, una de les màquines virtuals de sistema més populars.
Funcionament de la màquina virtual de Java, una de les màquines virtuals de procés més populars.

Les màquines virtuals es poden classificar en dues grans categories segons la seva funcionalitat i el seu grau d'equivalència a una veritable màquina.

  • Màquines virtuals de sistema (en anglès System Virtual Machine)
  • Màquines virtuals de procés (en anglès Process Virtual Machine)

Màquines virtuals de sistema[modifica | modifica el codi]

Les màquines virtuals d'alleujament sistema, també anomenades màquines virtuals del maquinari , permeten a la màquina física subjacent multiplexar entre diverses màquines virtuals, cadascuna executant el seu propi sistema operatiu. A la capa de programari que permet la virtualització es la flama monitor de màquina virtual o "hypervisor" . Un monitor de màquina virtual pot executar o bé directament sobre el maquinari o bé sobre un sistema operatiu ( "host operating system" ).

Aplicacions de les màquines virtuals del sistema
  • Diversos sistemes operatius diferents poden coexistir sobre el mateix ordinador, en sòlid aïllament l'un de l'altre, per exemple per provar un sistema operatiu nou sense necessitat de instal directament.
  • La màquina virtual pot proporcionar una arquitectura d'instruccions (ISA) que sigui una mica diferent de la veritable màquina. És a dir, podem simular un maquinari inexistent.
  • Diverses màquines virtuals (cadascuna amb el seu propi sistema operatiu anomenat sistema operatiu "convidat" o "guest"), poden ser utilitzades per consolidar servidors . Això permet que serveis que normalment s'hagin d'executar en ordinadors diferents per evitar interferències, es puguin executar en la mateixa màquina de manera completament aïllada i compartint els recursos d'un únic ordinador. La consolidació de servidors sovint contribueix a reduir el cost total de les instal·lacions necessàries per mantenir els serveis, ja que permeten estalviar en maquinari.
  • La virtualització és una excel·lent opció avui dia, ja que les màquines actuals (Portàtils, taules de treball, servidors) en la majoria dels casos estan sent "sub-utilitzats" (gran capacitat de disc dur, memòria RAM, etc.), Arribant a un ús d'entre 30% a 60% de la seva capacitat. En virtualitzar, la necessitat de noves màquines en una ja existent permet un estalvi considerable dels costos associats (energia, manteniment, espai, etc).

Màquines virtuals de procés[modifica | modifica el codi]

Una màquina virtual de procés, de vegades anomenada "màquina virtual d'aplicació" , s'executa com un procés normal dins d'un sistema operatiu i suporta un sol procés. La màquina s'inicia automàticament quan es llança el procés que es vol executar i s'atura quan aquest finalitza. El seu objectiu és el de proporcionar un entorn d'execució independent de la plataforma de maquinari i del sistema operatiu , que oculti els detalls de la plataforma subjacent i permeti que un programa s'executi sempre de la mateixa manera sobre qualsevol plataforma.

L'exemple més conegut actualment d'aquest tipus de màquina virtual és la màquina virtual de Java. Una altra màquina virtual molt coneguda és la de l'entorn . Net de Microsoft que es diu "Common Language Runtime".

Inconvenients de les màquines virtuals[modifica | modifica el codi]

Un dels inconvenients de les màquines virtuals és que afegeixen gran complexitat al sistema en temps d'execució. Això té com a efecte l'alentiment del sistema, és a dir, el programa no arribarà a la mateixa velocitat d'execució que si es fes directament en el sistema operatiu "amfitrió" (host) o directament sobre la plataforma de maquinari. No obstant això, sovint la flexibilitat que ofereixen compensa aquesta pèrdua d'eficiència.

Tècniques[modifica | modifica el codi]

Monitor de tipus I.
Monitor de tipus II.

Emulació del maquinari subjacent (execució nativa)[modifica | modifica el codi]

Aquesta tècnica s'anomena virtualització completa (full virtualization) del maquinari, i es pot implementar utilitzant un hypervisor de Tipus 1 o de Tipus 2 :

  • El tipus 1 s'executa directament sobre el maquinari
  • El tipus 2 s'executa sobre un altre sistema operatiu.

Cada màquina virtual pot executar qualsevol sistema operatiu suportat pel maquinari subjacent. Així els usuaris poden executar dos o més sistemes operatius diferents simultàniament en ordinadors "privats" virtuals.

El sistema pioner que va utilitzar aquest concepte va ser la CP-40, la primera versió (1967) de la CP/CMS d'IBM (1967-1972) i el precursor de la família VM d'IBM (de 1972 en endavant). Amb l'arquitectura VM, la major part d'usuaris controlen un sistema operatiu monousuari relativament simple anomenat CMS que s'executa en la màquina virtual VM.

Actualment tant Intel com AMD han introduït prestacions als seus processadors x86 per permetre la virtualització de maquinari.

Emulació del sistema no natiu[modifica | modifica el codi]

Les màquines virtuals també poden actuar com emuladors de maquinari, permetent que aplicacions i sistemes operatius concebuts per a altres arquitectures de processador es puguin executar sobre un maquinari que en teoria no suporten.

Algunes màquines virtuals emulen maquinari que només existeix com una especificació. Per exemple:

Aquesta tècnica permet que qualsevol ordinador pugui executar programari escrit per a la màquina virtual. Només la màquina virtual en si mateixa ha de ser portada a cadascuna de les plataformes de maquinari.

Virtualització a nivell de sistema operatiu[modifica | modifica el codi]

Aquesta tècnica consisteix a dividir un ordinador en diversos compartiments independents de manera que en cada compartiment puguem instal·lar un servidor. A aquests compartiments se'ls diu "entorns virtuals". Des del punt de vista de l'usuari, el sistema en el seu conjunt actua com si realment existissin diversos servidors executant-se en diverses màquines diferents. Dos exemples són les zones de Solaris (Solaris Zones) i la tècnica de Micro Partioning de AIX.

Llista de maquinari suportades per virtualització[modifica | modifica el codi]

Descripcions ampliades per a aplicacions de virtualització seleccionades[modifica | modifica el codi]

Els productes de programari següents són capaços de virtualitzar el maquinari de manera que diversos sistemes operatius puguin compartir-lo.

Referències[modifica | modifica el codi]

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]