Issuu on Google+

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.


MAQUINAS VIRTUALES