MAQUINAS VIRTUALES
-
Upload
miguel-bahena -
Category
Documents
-
view
215 -
download
0
description
Transcript of 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".
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)
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").
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
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.
MODELO Y JERARQUIA DE PROCESOS
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.
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.
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.
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
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.