MAQUINAS VIRTUALES

11
MAQUINAS VIRTUALES En informática una máquina virtual es un software que emula a un ordenador y puede ejecutar programas como si fuese un ordenador real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real. Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de este "ordenador virtual".

description

Libro de maquinas virtuales

Transcript of MAQUINAS VIRTUALES

Page 1: MAQUINAS VIRTUALES

MAQUINAS VIRTUALES

En informática una máquina virtual es un software que emula a un

ordenador y puede ejecutar programas como si fuese un ordenador real.

Este software en un principio fue definido como "un duplicado eficiente y

aislado de una máquina física". La acepción del término actualmente

incluye a máquinas virtuales que no tienen ninguna equivalencia directa

con ningún hardware real.

Una característica esencial de las máquinas virtuales es que los procesos

que ejecutan están limitados por los recursos y abstracciones

proporcionados por ellas. Estos procesos no pueden escaparse de este

"ordenador virtual".

Page 2: MAQUINAS VIRTUALES

Uno de los usos domésticos más extendidos de las máquinas virtuales es

ejecutar sistemas operativos para "probarlos". De esta forma podemos

ejecutar un sistema operativo que queramos probar (Linux, por ejemplo)

desde nuestro sistema operativo habitual (Windows por ejemplo) sin

necesidad de instalarlo directamente en nuestro ordenador y sin miedo a

que se desconfigure el sistema operativo primario.

Las máquinas virtuales se pueden clasificar en dos grandes categorías

según su funcionalidad y su grado de equivalencia a una verdadera

máquina.

Máquinas virtuales de sistema (en inglés System Virtual Machine)

Máquinas virtuales de proceso (en inglés Process Virtual Machine)

Page 3: MAQUINAS VIRTUALES

MAQUINAS VIRTUALES Y CLIENTE SERVIDOR

MAQUINAS VIRTUALES DE SISTEMA

Las máquinas virtuales de sistema, también llamadas máquinas virtuales de

hardware, permiten a la máquina física subyacente multiplexarse entre

varias máquinas virtuales, cada una ejecutando su propio sistema

operativo. A la capa de software que permite la virtualización se la llama

monitor de máquina virtual o "hypervisor". Un monitor de máquina virtual

puede ejecutarse o bien directamente sobre el hardware o bien sobre un

sistema operativo ("host operating system").

Page 4: MAQUINAS VIRTUALES

APLICACIONES DE LAS MAQUINAS VIRTUALES DE SISTEMA

Varios sistemas operativos distintos pueden coexistir sobre el mismo

ordenador, en sólido aislamiento el uno del otro, por ejemplo para

probar un sistema operativo nuevo sin necesidad de instalarlo

directamente.

La máquina virtual puede proporcionar una arquitectura de

instrucciones (ISA) que sea algo distinta de la de la verdadera

máquina. Es decir, podemos simular hardware.

Varias máquinas virtuales (cada una con su propio sistema operativo

llamado sistema operativo "invitado" o "guest"), pueden ser utilizadas

para consolidar servidores. Esto permite que servicios que

normalmente se tengan que ejecutar en ordenadores distintos para

evitar interferencias, se puedan ejecutar en la misma máquina de

manera completamente aislada y compartiendo los recursos de un

único ordenador. La consolidación de servidores a menudo

contribuye a reducir el coste total de las instalaciones necesarias

para mantener los servicios, dado que permiten ahorrar en hardware.

Funcionamiento de la máquina virtual de Java, una de las máquinas

virtuales de proceso más populares.

MAQUINAS VIRTUALES DE PROCESO

Page 5: MAQUINAS VIRTUALES

Una máquina virtual de proceso, a veces llamada "máquina virtual de

aplicación", se ejecuta como un proceso normal dentro de un sistema

operativo y soporta un solo proceso. La máquina se inicia automáticamente

cuando se lanza el proceso que se desea ejecutar y se para cuando éste

finaliza. Su objetivo es el de proporcionar un entorno de ejecución

independiente de la plataforma de hardware y del sistema operativo, que

oculte los detalles de la plataforma subyacente y permita que un programa

se ejecute siempre de la misma forma sobre cualquier plataforma.

El ejemplo más conocido actualmente de este tipo de máquina virtual es la

maquina virtual de java. Otra máquina virtual muy conocida es la del

entorno .Net de Microsoft que se llama "Common Language Runtime".

INCONVENIENTES DE LAS MAQUINAS VIRTUALES

Uno de los inconvenientes de las máquinas virtuales es que agregan gran

complejidad al sistema en tiempo de ejecución. Esto tiene como efecto la

ralentización del sistema, es decir, el programa no alcanzará la misma

velocidad de ejecución que si se instalase directamente en el sistema

operativo "anfitrión" (host) o directamente sobre la plataforma de

hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa

esta pérdida de eficiencia.

Page 6: MAQUINAS VIRTUALES

MODELO Y JERARQUIA DE PROCESOS

Page 7: MAQUINAS VIRTUALES

El modelo de procesos posee las siguientes características:

Todo el software ejecutable, inclusive el Sistema Operativo, se

organiza en varios procesos secuenciales o procesos.

Un proceso incluye al programa en ejecución y a los valores activos

del contador, registros y variables del mismo.

Conceptualmente cada proceso tiene su propia cpu virtual.

Si la cpu alterna entre los procesos, la velocidad a la que ejecuta un

proceso no será uniforme, por lo que es necesario aclarar lo

siguiente:

Que los procesos no deben programarse con hipótesis

implícitas acerca del tiempo.

Que normalmente la mayoría de los procesos no son afectados

por la multiprogramación subyacente de la cpu o las

velocidades relativas de procesos distintos.

En cuanto a las jerarquías de procesos es necesario señalar que los

Sistemas Operativos deben disponer de una forma de crear y destruir

procesos cuando se requiera durante la operación, teniendo además

presente que los procesos pueden generar procesos hijos mediante

llamadas al Sistema Operativo, pudiendo darse ejecución en paralelo.

Respecto de los estados del proceso deben efectuarse las siguientes

consideraciones:

Cada proceso es una entidad independiente pero frecuentemente

debe interactuar con otros procesos.

Los procesos pueden bloquearse en su ejecución porque:

Desde el punto de vista lógico no puede continuar porque

espera datos que aún no están disponibles.

El Sistema Operativo asignó la cpu a otro proceso

Los estados que puede tener un proceso son:

En ejecución: utiliza la cpu en el instante dado.

Listo: ejecutable, se detiene en forma temporal para que se

ejecute otro proceso.

Bloqueado: no se puede ejecutar debido a la ocurrencia de

algún evento externo.

Son posibles cuatro transiciones entre estos estados.

Page 8: MAQUINAS VIRTUALES

Para permitir la multiprogramación y la concurrencias requiere de un

modelo de procesos que ofrezca el soporte necesario para proveerla.

Cuando se habla de concurrencia entre procesos se refiere al hecho de

poder tener varios procesos usuarios parcialmente ejecutados en un

momento determinado, con la sensación de que todos los procesos

estuvieran corriendo simultáneamente (por el tiempo compartido) aunque

realmente sólo un proceso a la vez se ejecuta en el CPU.

Las operaciones de E/S son acciones que se ejecutan en paralelo con las

acciones del CPU. Esto es paralelismo real. Muchas veces, a la concurrencia

también se le llama ``paralelismo virtual''.

Este modelo de procesos es seguido por la mayoría de los sistemas de

operación de hoy en día y considera los siguientes aspectos:

PCB (Process Control Block)

Es una estructura usada por el sistema de operación para mantener

la información necesaria de cada proceso. El contenido varía de

acuerdo al sistema de operación pero la información general que

debe contener se puede resumir en:

Identificadores numéricos:

Identificador del procesos en si

Identificador del proceso padre (quién lo creó)

Identificador del usuario.

Información del manejo de memoria:

Registros base y límite

Tabla de páginas o de segmentos

Información del estado del procesador:

Registros visibles al usuario

Registros de estado y control: PC, modo de ejecución,

flags, etc.

Apuntadores del stack

Información de control de proceso:

Información de estado y planificación: estado del

proceso, prioridad, evento por el cual espera, etc.

Estructuración de datos: formación de anillos con otros

procesos, apuntador de secuencia de listas, apuntadores

a los archivos, archivos abiertos.

Comunicación entre procesos

Privilegios del proceso

Administración de memoria

Utilización de recursos.

Page 9: MAQUINAS VIRTUALES

Tabla de Procesos

Es la estructura donde se mantienen los PCBs de los procesos

usuarios. Aquí se encuentran registrados los procesos que ya fueron

reconocidos por el sistema de operación, independientemente del

estado en que se encuentren. Se actualiza a medida que se van

creando procesos, eliminando procesos o se producen transiciones

entre los estados.

Estados de un proceso

El principal trabajo del procesador es ejecutar las instrucciones de máquina

que se encuentran en memoria principal. Estas instrucciones se encuentran

en forma de programas. Para que un programa pueda ser ejecutado, el

sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras

otra las instrucciones del mismo. En un entorno de multiprogramación, el

procesador intercalará la ejecución de instrucciones de varios programas

que se encuentran en memoria. El sistema operativo es el responsable de

determinar las pautas de intercalado y asignación de recursos a cada

proceso.

Se trata de la utilización de dos archivos, un objeto ejecutable y una

biblioteca del sistema, que después se colocan en la imagen del proceso

dentro de la memoria RAM y posteriormente también se dan de alta dentro

de la tabla de procesos, Bloque de control del proceso.

Page 10: MAQUINAS VIRTUALES

Modelo de dos estados

El modelo de estados más simple es el de dos estados. En este modelo, un

proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso,

se pone en estado de No ejecución. En algún momento el proceso que se

está ejecutando pasará al estado No ejecución y otro proceso se elegirá de

la lista de procesos listos para ejecutar para ponerlo en estado Ejecución.

De esta explicación se desprende que es necesario que el sistema

operativo pueda seguirle la pista a los procesos, conociendo su estado y el

lugar que ocupa en memoria. Además los procesos que no se están

ejecutando deben guardarse en algún tipo de cola mientras esperan su

turno para ejecutar.

Modelo de cinco estados

Los cinco estados de este diagrama son los siguientes según Osëliyo:

Ejecución: el proceso está actualmente en ejecución.

Listo: el proceso está listo para ser ejecutado, sólo está esperando

que el planificador de corto plazo así lo disponga.

Espera: el proceso no puede ejecutar hasta que no se produzca cierto

suceso, como la finalización de una operación de Entrada/Salida

solicitada por una llamada al sistema operativo.

Nuevo: El proceso recién fue creado y todavía no fue admitido por el

sistema operativo. En general los procesos que se encuentran en este

estado todavía no fueron cargados en la memoria principal.

Terminado: El proceso fue expulsado del grupo de procesos

ejecutables, ya sea porque terminó o por algún fallo, como un error

de protección, aritmético, etc.

Una de las razones para implementar el estado Espera era poder hacer que

los procesos se puedan mantener esperando algún suceso, por ejemplo

una Entrada/Salida. Sin embargo, al ser mucho más lentas estas

operaciones, puede suceder que en nuestro modelo de cinco estados todos

los procesos en memoria estén esperando en el estado Espera y que no

haya más memoria disponible para nuevos procesos. Podría conseguirse

más memoria, aunque es probable que esto sólo permita procesos más

grandes y no necesariamente nuevos procesos. Además hay un costo

asociado a la memoria y de cualquier forma es probable que se llegaría al

mismo estado con el tiempo. Otra solución es el intercambio. El

intercambio se lleva a cabo moviendo una parte de un proceso o un

proceso completo desde la memoria principal al disco, quedando en el

estado Suspendido. Después del intercambio, se puede aceptar un nuevo

Page 11: MAQUINAS VIRTUALES

proceso o traer a memoria un proceso suspendido anteriormente. El

problema que se presenta ahora es que puede ser que si se decide traer a

memoria un proceso que está en el estado Suspendido, el mismo todavía se

encuentre en espera. Sólo convendría traerlo cuando ya está listo para

ejecutar, esto implica que ya aconteció el suceso que estaba esperando.

Para tener esta diferenciación entre procesos suspendidos, ya sean listos

como en espera, se utilizan cuatro estados: Listo, Espera, Espera y

suspendido y Listo y suspendido.

PROCESOS SUSPENDIDOS (Hold)

Dos o más procesos pueden cooperar mediante señales de forma que uno

obliga a detenerse a los otros hasta que reciban una señal para continuar.

Se usa una variable de tipo Semaforo para sincronizar los procesos.

Si un proceso está esperando una señal, se suspende (Hold) hasta

que la señal se envíe (SIGNAL).

Se mantiene una cola de procesos en espera en el semáforo.

La forma de elegir los procesos de la cola en ESPERA es mediante una

política FIFO(First In First Out) también llamada FCFS(First Come First

Served), Round Robin, etc.