Está en la página 1de 54

Taller 3 de sistemas operativos Ing. Ms. Jairo E. Mrquez D.

VIRTUALIZACIN y MULTIHILOS 1

Se refiere a la abstraccin de los recursos de un computador, llamada Hypervisor o VMM (Virtual Machine Monitor) que crea una capa de abstraccin entre el hardware de la mquina fsica (host) y el sistema operativo de la mquina virtual (virtual machine, guest), siendo un medio para crear una versin virtual de un dispositivo o recurso, como un servidor, un dispositivo de almacenamiento, una red o incluso un sistema operativo, donde se divide el recurso en uno o ms entornos de ejecucin. Esta capa de software (VMM) maneja, gestiona y arbitra los cuatro recursos principales de una computadora (CPU, Memoria, Red, Almacenamiento) y as podr repartir dinmicamente dichos recursos entre todas las mquinas virtuales definidas en el computador central. De modo que nos permite tener varios ordenadores virtuales ejecutndose sobre el mismo ordenador fsico. La virtualizacin se encarga de crear una interfaz externa que esconde una implementacin subyacente mediante la combinacin de recursos en localizaciones fsicas diferentes, o por medio de la simplificacin del sistema de control. La mquina virtual en general es un sistema operativo completo que corre como si estuviera instalado en una plataforma de hardware autnoma. Tpicamente muchas mquinas virtuales son simuladas en un computador central. Para que el sistema operativo guest funcione, la simulacin debe ser lo suficientemente grande (siempre dependiendo del tipo de virtualizacin). Virtualizacin de plataforma Esta involucra la simulacin de mquinas virtuales. La virtualizacin de plataforma se lleva a cabo en una plataforma de hardware mediante un software "host" (anfitrin), que es un programa de control que simula un entorno computacional (mquina virtual) para su software "guest" ("invitado"). Este software guest, que generalmente es un SO completo, se ejecuta como si estuviera instalado en una plataforma de hardware autnoma. Tpicamente muchas mquinas virtuales son simuladas en una mquina fsica dada. Para que el SO guest funcione, la simulacin debe ser lo suficientemente grande como para soportar todas las interfaces externas de los sistemas guest, las cuales se pueden incluir (todo esto dependiendo del tipo de virtualizacin) los drivers de hardware.

Fuente de consulta. http://es.wikipedia.org/wiki/Virtualizaci%C3%B3n

Tipos de Virtualizacin de plataforma Virtualizacin completa Esta es en donde la mquina virtual simula un hardware suficiente para permitir un sistema operativo guest sin modificar (uno diseado para la misma CPU) para correr de forma aislada. Tpicamente, muchas instancias pueden correr al mismo tiempo. Ejemplos VMware Workstation VMware Server Virtual Box Parallels Desktop Virtual Iron Adeos Mac-on-Linux Win4BSD Win4Lin Pro y z/VM openvz Oracle VM XenServer Microsoft Virtual PC 2007 Hyper-V Virtualizacin parcial Address Space Virtualization. La mquina virtual simula mltiples instancias de gran parte (pero no de todo) del entorno subyacente del hardware, particularmente address spaces. Tal entorno acepta compartir recursos y alojar procesos, pero no permite instancias separadas de sistemas operativos guest. Aunque no es vista como dentro de la categora de mquina virtual. Virtualizacin por Sistema Operativo Virtualizar significa instalar un Sistema Operativo (SO) dentro de otro al que se le llama guest (invitado), mediante el uso de una MV. Frecuentemente denominada virtualizacin compartida del Sistema Operativo o virtualizacin del SO, la virtualizacin del Sistema Operativo virtualiza servidores en la capa del sistema operativo (kernel). Este mtodo de virtualizacin crea particiones aisladas o entornos virtuales (VEs) en un nico servidor fsico e instancia de SO para as maximizar los esfuerzos de administracin del hardware, software y centro de datos. La Virtualizacin de Hypervisor tiene una capa base (generalmente un kernel, Linux que se muestra aqu como un hypervisor o SO estndar) que se carga directamente en el servidor base. Para asignar hardware y recursos a las mquinas virtuales (VMs), es recomendable que todo el hardware del servidor est virtualizado. La siguiente capa superior muestra cada chip, placa, etc. que debe virtualizarse para que as pueda ser asignado a las VMs. Una vez en la VM, hay una copia completa de un SO y finalmente la aplicacin o carga de trabajo.

La Virtualizacin del SO mejora el rendimiento, gestin y eficiencia. En la base reside un SO husped estndar, en el caso de Parallels Virtuozzo que incluye Windows y Linux. A continuacin se encuentra la capa de virtualizacin, con un sistema de archivos propietario y una capa de abstraccin de servicio de kernel que garantiza el aislamiento y seguridad de los recursos entre distintos contenedores. La capa de virtualizacin hace que cada uno de los contenedores aparezca como servidor autnomo. Finalmente, el contenedor aloja la aplicacin o carga de trabajo. Virtualizacin a nivel de sistema operativo

Esta tcnica consiste en dividir una computadora en varios compartimentos independientes de manera que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del usuario, el sistema en su conjunto acta como si realmente existiesen varios servidores ejecutndose en varias mquinas distintas. Dos ejemplos son las zonas de Solaris (Solaris Zones) y la tcnica de Micro Partioning de AIX.

Virtualizacin de Plataforma La virtualizacin de Plataforma permite a los sistemas arbitrarios de operacin y ambientes de operacin resultante correr en un sistema dado. Existen dos modelos bsicos para este sistema de virtualizacin: total virtualizacin o una simulacin completa del hardware fundamental, y paravirtualizacin, lo cual ofrece un modelo mayormente similar del hardware fundamental. Estos estn implementados como hipervisores Tipo 1, los cuales corren directamente en el hardware, e hipervisores Tipo 2, los cuales corren a nivel superior de un SO tradicional. Cada uno de los proveedores de virtualizacin superior ofrece variaciones de ambos modelos. Es importante darse cuenta de que existen intercambios de diseo y desempeo en cualquier modelo del sistema de virtualizacin. Generalmente, cuanto ms abstracto sea hecho el SO del hardware fundamental, menos caractersticas especficas del hardware pueden ser accesadas. La abstraccin del SO incrementada tambin puede incrementar el potencial en la reduccin y las limitaciones del desempeo. Virtualizacin de Red Las tcnicas de balanceo de carga han sido un tema discutible en el cmputo cloud porque, conforme los sistemas fsicos y virtuales dentro de la nube escalan, lo mismo hace la complejidad del manejo de la carga de trabajo que es ejecutada para entregar el servicio. Los balanceadores de carga agrupan mltiples servidores y servicios detrs de las direcciones IP virtuales. Ellos proveen de una gua basada en recursos de requerimientos de servicio y

recuperacin de falla automtica cuando el nodo falla. Mientras los balanceadores del hardware puedan ejecutar balanceadores basados en el software, su flexibilidad es siempre limitada. Los ingenieros terminan tambin escribiendo un software que interacta con el hardware va una interface de usuario sub-ptimo o utilizando un gran nmero de computadoras para resolver el problema. Un reto significativo en la red de cmputo cloud no es slo la provisin de interfaces individuales de la red virtual a un ambiente virtual dado, sino tambin la necesidad creciente de infraestructuras nube de ofrecer un centro de datos ms centros de datos virtual y privado ms complicado, el cual provea un conjunto de diferentes roles de sistemas y la interconexin lgica entre esos roles. Virtualizacin de Aplicaciones Existe tambin un ngulo software para los contenedores dentro de la nube. La tecnologa de contenedor Web implementada en la nube impacta grandemente a la productividad y flexibilidad del desarrollador. El contenedor Web es la parte del servidor de aplicacin que maneja servlets 2, archivos JavaServer Page 3 (JSP por sus siglas en ingls), y otros componentes Web-tier. Pero no todas las tecnologas contenedor Web son creadas iguales. Apache Tomcat, por ejemplo, es una tecnologa de contenedor Web de cdigo abierto, pero tiene limitaciones para los desarrolladores quienes quieren ir ms all de las aplicaciones Web-tier. Si una aplicacin necesita utilizar persistencia, clustering, falla, mensaje, o Enterprise Java Beans (EJB), estas capacidades tienen que ser aadidas a Tomcat una por una, mientras que GlassFish Project provee una coleccin integrada de contenedores Java EE que entrega todas esas capacidades. Hoy, la mayora de las ofertas del cmputo cloud se concentran en la virtualizacin de plataforma, y el desarrollador escoge el SO y plataforma de desarrollo. Pero las crecientes nubes pblicas y ciertamente las nubes privadas ofrecern abstracciones de una programacin de ambiente de desarrollo al ms alto nivel. Con el tiempo, podramos esperar que el nivel de abstraccin con el que el desarrollador tiene interfase se mueva gradualmente hacia arriba mientras que mayor funcionalidad se filtra hacia adentro de la plataforma. Infraestructura virtual Una infraestructura virtual consiste en el mapping dinmico de recursos fsicos en funcin de las necesidades de la empresa. Una mquina virtual representa los recursos fsicos de un nico ordenador, mientras que una infraestructura virtual representa los recursos fsicos de la totalidad del entorno de TI (tecnologas de informacin), aglutinando ordenadores x86 4, as como su red y almacenamiento asociados, en un pool unificado de
Son programas que se ejecutan en un servidor Web y construyen pginas Web. Java Server Pages (JSP) es una tecnologa que nos permite mezclar HTML esttico con HTML generado dinmicamente. 4 x86 es la denominacin genrica dada a ciertos microprocesadores de la familia Intel, sus compatibles y la arquitectura bsica a la que estos procesadores pertenecen, por la terminacin de sus nombres numricos: 8086, 80286, 80386, 80486, etc.
3 2

recursos de TI. componentes:

Estructuralmente, una infraestructura virtual consta de los siguientes

Hipervisor de un solo nodo para hacer posible la virtualizacin de todos los ordenadores x86 Un conjunto de servicios de infraestructura de sistemas distribuida basada en la virtualizacin, como gestin de recursos, para optimizar los recursos disponibles entre las mquinas virtuales Soluciones de automatizacin que proporcionen capacidades especiales para optimizar un proceso de TI concreto, como provisioning o recuperacin ante desastres. Mediante la separacin de la totalidad del entorno de software de su infraestructura de hardware subyacente, la virtualizacin hace posible la reunin de varios servidores, estructuras de almacenamiento y redes en pools compartidos de recursos que se pueden asignar de forma dinmica, segura y fiable a las aplicaciones segn sea necesario. Este enfoque innovador permite a las organizaciones crear una infraestructura informtica con altos niveles de utilizacin, disponibilidad, automatizacin y flexibilidad utilizando componentes bsicos de servidores econmicos y estndar del sector. Ventajas de la infraestructura virtual VMware ha hecho posible el total aprovechamiento de las muchas ventajas de la virtualizacin en entornos de TI a escala de produccin mediante la creacin de automatizacin de infraestructuras virtuales y capacidades de gestin basndose en un robusto hipervisor. De hecho, el 86% de los clientes de VMware utilizan la virtualizacin en produccin y el 50% implementa la mayora de las aplicaciones de produccin nuevas en mquinas virtuales. Las soluciones de infraestructura virtual son ideales para entornos de produccin en parte debido a que se ejecutan en servidores y escritorios estndar de la industria y son compatibles con una amplia gama de de sistemas operativos y entornos de aplicacin, as como de infraestructuras de red y almacenamiento. Se han diseado las soluciones para que funcionen de manera independiente del hardware y del sistema operativo y poder brindar a los clientes amplias posibilidades de eleccin de plataforma. Como resultado, son soluciones que proporcionan un punto de integracin clave para los proveedores de hardware y gestin de infraestructuras de cara a ofrecer un valor nico y aplicable por igual en todos los entornos de aplicacin y sistemas operativos. Diferencias entre virtualizar un Sistema operativo e instalarlo Virtualizar el SO, implica instalar dos sistemas operativos en el mismo computador, pero si por el contrario lo que hacemos es instalarlo, todos los sistemas operativos que tengamos instalados funcionaran de la misma manera que si estuvieran instalados en distintos computadores. El inconveniente es que se necesita un gestor de arranque que al encender el computador d la opcin de elegir qu SO se desea utilizar, lo que conlleva a que si por ejemplo estamos en

La comercial popularidad de esta arquitectura hizo que muchos fabricantes, adems de Intel, empezaran a fabricar en masa microprocesadores basados en esta arquitectura. Estas compaas son entre otras AMD, Cyris, NEC Corporation y TRansmeta.

Windows y queremos cambiar a Linux se debe reiniciar el equipo. La virtualizacin por el contrario permite cambiar de SO como si se tratase de cualquier otro programa, sin embargo, esta agilidad tiene la desventaja de que un SO virtualizado no es tan potente como uno que ya estuviera instalado. Retos de la Virtualizacin

ndices de utilizacin ms altos Antes de la virtualizacin, los ndices de uso del servidor y almacenamiento en los centros de datos de la empresa rondaban entre un 10% al 15%. A travs de la virtualizacin, las cargas de trabajo pueden ser encapsuladas y transferidas a los sistemas inactivos o sin uso lo cual significa que los sistemas existentes pueden ser consolidados, as que las compras de capacidad adicional del servidor pueden ser retrasadas o evitadas. Consolidacin de Recursos La virtualizacin permite la consolidacin de mltiples recursos de TI. Ms all de la consolidacin de almacenamiento, la virtualizacin proporciona una oportunidad para consolidar la arquitectura de sistemas, infraestructura de aplicacin, datos y base de datos, interfaces, redes, escritorios, e incluso procesos de negocios, resultando en ahorros de costo y mayor eficiencia. Uso/costo menor energa La electricidad requerida para que funcionen los centros de datos de clase empresarial ya no est disponible en suministros ilimitados, y el costo est en una espiral ascendente. Por cada dlar gastado en un servidor hardware, un dlar adicional es gastado en energa (incluyendo el costo de los servidores en funcin y los enfriadores). Utilizando virtualizacin para consolidar hace posible cortar el consumo total de energa y ahorrar dinero de una manera significativa. Ahorros de espacio La extensin del servidor permanece como un serio problema en la mayora de los centros de datos empresariales, pero la expansin del centro de datos no es siempre una opcin, con los costos de construccin promediando miles de dlares por pie cuadrado. La virtualizacin puede aliviar la tensin mediante la consolidacin de muchos sistemas virtuales en menos sistemas fsicos. Recuperacin de desastre/continuidad del negocio La virtualizacin puede incrementar la disponibilidad de los ndices del nivel de servicio en general y proporcionar nuevas opciones de soluciones para la recuperacin de desastre. Costos de operacin reducidos La empresa promedio gasta $8 dlares en mantenimiento por cada dlar invertido en nueva infraestructura. La virtualizacin puede cambiar el radio de servicio-a administracin reducir la total carga de trabajo administrativo, y cortar el total de costos de operacin.

Ventajas de la Virtualizacin

Rpida incorporacin de nuevos recursos para los servidores virtualizados.

Reduccin de los costes de espacio y consumo necesario de forma proporcional al ndice de consolidacin logrado (Estimacin media 10:1). Administracin global centralizada y simplificada. Permite gestionar nuestro CPD como un pool de recursos o agrupacin de toda la capacidad de procesamiento, memoria, red y almacenamiento disponible en nuestra infraestructura Mejora en los procesos de clonacin y copia de sistemas: Mayor facilidad para la creacin de entornos de test que permiten poner en marcha nuevas aplicaciones sin impactar a la produccin, agilizando el proceso de las pruebas. Aislamiento: un fallo general de sistema de una mquina virtual no afecta al resto de mquinas virtuales. Mejora de TCO 5 y ROI 6. No slo aporta el beneficio directo en la reduccin del hardware necesario, sino tambin los costes asociados. Reduce los tiempos de parada. Migracin en caliente de mquinas virtuales (sin prdida de servicio) de un servidor fsico a otro, eliminando la necesidad de paradas planificadas por mantenimiento de los servidores fsicos. Balanceo dinmico de mquinas virtuales entre los servidores fsicos que componen el pool de recursos, garantizando que cada mquina virtual ejecute en el servidor fsico ms adecuado y proporcionando un consumo de recursos homogneo y ptimo en toda la infraestructura. Alto grado de satisfaccin general.

Programas tiles para virtualizar sistemas operativos Existen dos tipos de programas: los que son de pago y los que son de cdigo libre. Los de pago, est el VMware, que es uno de los referentes en el mercado. A pesar de ser de pago tambin existe una versin bsica que es gratuita, VMware Player, que permite virtualizar a travs de una mquina virtual ya configurada. Tambin existen webs que
El coste total de propiedad (Total Cost of Ownership o TCO), es un mtodo de clculo diseado para ayudar a los usuarios y a los gestores empresariales a determinar los costes directos e indirectos, as como los beneficios, relacionados con la compra de equipos o programas informticos. El CTP ofrece un resumen final que refleja no slo el coste de la compra sino aspectos del uso y mantenimiento. Esto incluye formacin para el personal de soporte y para usuarios, el coste de operacin, y de los equipos o trabajos de consultora necesarios, etc. Por ejemplo, la compra de un ordenador puede incluir la compra en s misma, reparaciones, mantenimiento, actualizaciones, servicios y soporte, redes, seguridad, formacin de usuarios y costes de licencias. El retorno de la inversin (del ingls return on investment) es un porcentaje que se calcula en funcin de la inversin y los beneficios obtenidos para cuantificar la viabilidad de un proyecto. Se utiliza junto al VAN (valor actual neto) y a la TIR (tasa interna de retorno o rentabilidad). Existen diversas formas para obtenerlo. Una de ellas es: representa los costes iniciales Formula aritmtica , donde: Vf representa la inversin final, y Vi representa la inversin inicial. , donde: B representa los beneficios, y Ci
6 5

permiten llenar un formulario y descargar la mquina virtual a gusto, como EasyVMX! Parallels Virtuozzo Containers, es otro de los programas de pago famosos, que permite la virtualizacin a nivel de sistema operativo o hardware Parallels Bare Metal. Tpicamente suele emplearse para virtualizar Windows y, en menor medida, GNU/Linux. Dentro de los programas gratuitos tenemos el Virtual PC de Microsoft, compatible con versiones avanzadas de XP, Vista y 7. Dentro de los programas de cdigo libre estn el Xen, OpenVZ y VirtualBox, que funcionan tanto en Mac OS, en Windows como en GNU/Linux y todos permiten virtualizar los tres sistemas operativos. Tipos de virtualizacin La virtualizacin se puede hacer desde un sistema operativo Windows, ya sea XP, Vista u otra versin que sea compatible con el programa que utilicemos, en el que virtualizamos otro sistema operativo como Linux o viceversa, que tengamos instalado Linux y queramos virtualizar una versin de Windows. Virtualizacin por (Hardware) La Virtualizacin asistida por Hardware son extensiones introducidas en la arquitectura de procesador x86 para facilitar las tareas de virtualizacin al software corriendo sobre el sistema. Si cuatro son los niveles de privilegio o "anillos" de ejecucin en esta arquitectura, desde el cero o de mayor privilegio, que se destina a las operaciones del kernel de SO, al tres, con privilegios menores que es el utilizado por los procesos de usuario, en esta nueva arquitectura se introduce un anillo interior o ring -1 que ser el que un hypervisor o Virtual Machine Monitor usar para aislar todas las capas superiores de software de las operaciones de virtualizacin.

La virtualizacin de almacenamiento Se refiere al proceso de abstraer el almacenamiento lgico del almacenamiento fsico, y es comnmente usado en SANs ("Storage Area Network" Red de rea de almacenamiento). Los recursos de almacenamiento fsicos son agregados al "storage pool" (almacn de almacenamiento), del cual es creado el almacenamiento lgico. Particionamiento Es la divisin de un solo recurso (casi siempre grande), como en espacio de disco o ancho de banda de la red, en un nmero ms pequeo y con recursos del mismo tipo que son ms fciles de utilizar. Esto es muchas veces llamado zoning, especialmente en almacenamiento de red. Virtualizacin relacionada con el Green IT En estudios realizados se han basado sobre el ahorro de energa que genera la empresa para sus clientes, muestra que las soluciones de virtualizacin reducen los costos econmicos y emisiones de CO2. Esto se puede llevar acabo fusionando varias mquinas

en un solo servidor, con lo que disminuyendo el consumo energtico y los costos; ahorrando 7.000 kilovatios/hora o 4 toneladas de emisiones de CO2 al ao. Los PCs virtualizados pueden reducir el consumo de energa y los costos en un 35%. Hoy en da, la mayor parte consumen entre un 70 y un 80% de su energa estimada. Otra medida es la desconexin de los servidores y desktops durante los perodos de inactividad, como por la noche o los fines de semana, con lo que se puede ahorrar aproximadamente un 25% en su consumo energtico. Las empresas hoy en da son las ms interesadas en el tema de la virtualizacin, ya que para ellas es muy importante reducir costos y energa principalmente. Infraestructura Virtual

Una infraestructura virtual consiste en el mapping dinmico de recursos fsicos en funcin de las necesidades de la empresa. Una mquina virtual representa los recursos fsicos de un nico ordenador, mientras que una infraestructura virtual representa los recursos fsicos de la totalidad del entorno de TI, aglutinando ordenadores x86, as como su red y almacenamiento asociados, en un pool unificado de recursos de TI.

Estructuralmente, una infraestructura virtual consta de los siguientes componentes:


Hipervisor de un solo nodo para hacer posible la virtualizacin de todos los ordenadores x86. Un conjunto de servicios de infraestructura de sistemas distribuida basada en la virtualizacin, como gestin de recursos, para optimizar los recursos disponibles entre las mquinas virtuales. Soluciones de automatizacin que proporcionen capacidades especiales para optimizar un proceso de TI concreto, como provisioning o recuperacin ante desastres. Mediante la separacin de la totalidad del entorno de software de su infraestructura de hardware subyacente, la virtualizacin hace posible la reunin de varios servidores, estructuras de almacenamiento y redes en pools compartidos de recursos que se pueden asignar de forma dinmica, segura y fiable a las aplicaciones segn sea necesario. Este enfoque innovador permite a las organizaciones crear una infraestructura informtica con altos niveles de utilizacin, disponibilidad, automatizacin y flexibilidad utilizando componentes bsicos de servidores econmicos y estndar del sector.

Ventajas de la Infraestructura Virtual Las soluciones de infraestructura virtual son ideales para entornos de produccin en parte debido a que se ejecutan en servidores y escritorios estndar de la industria y son compatibles con una amplia gama de sistemas operativos y entornos de aplicacin, as como de infraestructuras de red y almacenamiento. Se han diseado las soluciones para que funcionen de manera independiente del hardware y del sistema operativo y poder brindar a los clientes amplias posibilidades de eleccin de plataforma. Como resultado, son soluciones que proporcionan un punto de integracin clave para los proveedores de

hardware y gestin de infraestructuras de cara a ofrecer un valor nico y aplicable por igual en todos los entornos de aplicacin y sistemas operativos. Las empresas que han adoptado estas soluciones de infraestructura virtual nos han comunicado unos clarsimos resultados positivos, entre ellos:

ndices de utilizacin del 60 al 80% para servidores x86 (frente al 5 a 15% en hardware no virtualizado) Capacidad para el provisioning de nuevas aplicaciones en cuestin de minutos, en lugar de das o semanas 85% de mejora en tiempo de recuperacin de paradas imprevistas

MQUINA VIRTUAL 7 Una mquina virtual es un contenedor de software aislado que puede ejecutar sus propios sistemas operativos y aplicaciones como si fuera un ordenador fsico. Una mquina virtual se comporta exactamente igual que lo hace un ordenador fsico y contiene sus propios CPU, RAM, disco duro y tarjetas de interfaz de red (NIC) virtuales. El SO no puede establecer una diferencia entre una mquina virtual y una mquina fsica, ni tampoco lo pueden hacer las aplicaciones u otros ordenadores de una red. Incluso la propia mquina virtual considera que es un ordenador real. Sin embargo, una mquina virtual se compone exclusivamente de software y no contiene ninguna clase de componente de hardware. El resultado de ello es que las MV ofrecen una serie de ventajas con respecto al hardware fsico.

Ventajas de las Mquinas Virtuales Compatibilidad Al igual que un ordenador fsico, una MV aloja su propio SO y aplicaciones guest, y dispone de los mismos componentes (placa base, tarjeta VGA, controlador de tarjeta de red, etc.). El resultado de ello es que las MV son totalmente compatibles con la totalidad de sistemas operativos x86, aplicaciones y controladores de dispositivos estndar, de modo de se puede utilizar una MV para ejecutar el mismo software que se puede ejecutar en un ordenador x86 fsico.
7

Fuente de consulta. http://www.itnews.ec/marco/000174.aspx

Aislamiento Aunque las MV pueden compartir los recursos fsicos de un nico ordenador, permanecen completamente aisladas unas de otras, como si se tratara de mquinas independientes. Si, por ejemplo, hay cuatro mquinas virtuales en un nico servidor fsico y falla una de ellas, las otras tres siguen estando disponibles. El aislamiento es un factor importante que explica por qu la disponibilidad y proteccin de las aplicaciones que se ejecutan en un entorno virtual es muy superior a las aplicaciones que se ejecutan en un sistema tradicional no virtualizado. Encapsulamiento Una MV es bsicamente un contenedor de software que ata o encapsula un conjunto completo de recursos de hardware virtuales, as como un sistema operativo y todas sus aplicaciones, dentro de un paquete de software. El encapsulamiento hace a las mquinas virtuales extraordinariamente portables y fciles de gestionar. Por ejemplo, puede mover y copiar una mquina virtual de un lugar a otro como lo hara con cualquier otro archivo de software, o guardar una mquina virtual en cualquier medio de almacenamiento de datos estndar, desde una memoria USB de tamao de bolsillo hasta las redes de rea de almacenamiento (SAN) de una empresa. Independencia del Hardware Las mquinas virtuales son completamente independientes de su hardware fsico subyacente. Por ejemplo, se puede configurar una mquina virtual con componentes virtuales (CPU, tarjeta de red, controlador SCSI, pongamos por caso) que difieren totalmente de los componentes fsicos presentes en el hardware subyacente. Las mquinas virtuales del mismo servidor fsico pueden incluso ejecutar distintos tipos de sistema operativo (Windows, Linux, etc.). Si se combina con las propiedades de encapsulamiento y compatibilidad, la independencia del hardware proporciona la libertad para mover una mquina virtual de un tipo de ordenador x86 a otro sin necesidad de efectuar ningn cambio en los controladores de dispositivo, en el sistema operativo o en las aplicaciones. La independencia del hardware tambin significa que se puede ejecutar una mezcla heterognea de sistemas operativos y aplicaciones en un nico ordenador fsico.

Tipos de mquinas virtuales Las mquinas virtuales se pueden clasificar en dos grandes categoras segn su funcionalidad y su grado de equivalencia a una verdadera mquina. Mquinas virtuales de sistema (en ingls System Virtual Machine). Mquinas virtuales de proceso (en ingls Process Virtual Machine)

Mquinas virtuales de sistema Las mquinas virtuales de alivio sistema, tambin llamadas mquinas virtuales de hardware, permiten a la mquina fsica subyacente multiplexarse entre varias mquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualizacin se la llama monitor de mquina virtual o "hypervisor". Un monitor de mquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operating system").

Aplicaciones de las mquinas virtuales de sistema

Varios sistemas operativos distintos pueden coexistir sobre la misma computadora, en slido aislamiento el uno del otro, por ejemplo para probar un sistema operativo nuevo sin necesidad de instalarlo directamente. La MV puede proporcionar una arquitectura de instrucciones (ISA) que sea algo distinta de la verdadera mquina. Es decir, podemos simular hardware. Varias mquinas virtuales (cada una con su propio SO llamado sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar servidores. Esto permite que servicios que normalmente se tengan que ejecutar en computadoras distintas para evitar interferencias, se puedan ejecutar en la misma mquina de manera completamente aislada y compartiendo los recursos de una nica computadora. La consolidacin de servidores a menudo contribuye a reducir el coste total de las instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en hardware. La virtualizacin es una opcin hoy da, ya que las mquinas actuales (Laptops, desktops, servidores) en la mayora de los casos estn siendo "sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.), llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, la necesidad de nuevas mquinas en una ya existente permite un ahorro considerable de los costos asociados (energa, mantenimiento, espacio, etc).

Mquinas virtuales de proceso Una mquina virtual de proceso, a veces llamada "mquina virtual de aplicacin", se ejecuta como un proceso normal dentro de un SO y soporta un solo proceso. La mquina se inicia automticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando ste finaliza. Su objetivo es el de proporcionar un entorno de ejecucin independiente de la plataforma de hardware y del SO, 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 ms conocido es la mquina virtual de Java, y la mquina virtual del entorno .Net de Microsoft que se llama "Common Language Runtime". Funcionamiento de la mquina virtual de Java.

El lenguaje Java es a la vez compilado e interpretado. Con el compilador se convierte el cdigo fuente que reside en archivos cuya extensin es .java, a un conjunto de instrucciones que recibe el nombre de bytecodes que se guardan en un archivo cuya extensin es .class. Estas instrucciones son independientes del tipo de ordenador. El intrprete ejecuta cada una de estas instrucciones en un ordenador especfico (Windows, Macintosh, etc). Solamente es necesario, por tanto, compilar una vez el programa, pero se interpreta cada vez que se ejecuta en un ordenador. Cada intrprete Java es una implementacin de la Mquina Virtual Java (JVM). Los bytecodes posibilitan el objetivo de "write once, run anywhere", de escribir el programa una vez y que se pueda correr en cualquier plataforma que disponga de una implementacin de la JVM. Por ejemplo, el mismo programa Java puede correr en Windows 98, Solaris, Macintosh, etc. Java es, por tanto, algo ms que un lenguaje, ya que la palabra Java se refiere a dos cosas inseparables: el lenguaje que nos sirve para crear programas y la Mquina Virtual Java que sirve para ejecutarlos. Como se observa en la figura, el API de Java y la Mquina Virtual Java forman una capa intermedia (Java platform) que asla el programa Java de las especificidades del hardware (hardware-based platform).

Mquina Virtual Java La Mquina Virtual Java (JVM) es el entorno en el que se ejecutan los programas Java, su misin principal es la de garantizar la portabilidad de las aplicaciones Java. 8 Define esencialmente un ordenador abstracto y especifica las instrucciones (bytecodes) que este ordenador puede ejecutar. El intrprete Java especfico ejecuta las instrucciones que se guardan en los archivos cuya extensin es .class. Las tareas principales de la JVM son las siguientes:

Reservar espacio en memoria para los objetos creados Liberar la memoria no usada (garbage collection). Asignar variables a registros y pilas Llamar al sistema husped para ciertas funciones, como los accesos a los dispositivos. Vigilar el cumplimiento de las normas de seguridad de las aplicaciones Java

Esta ltima tarea, es una de las ms importantes que realiza la JVM. Adems, las propias especificaciones del lenguaje Java contribuyen extraordinariamente a este objetivo:

Las referencias a arrays son verificadas en el momento de la ejecucin del programa

El lenguaje Java no est diseado solamente para crear applets que corren en la ventana del navegador. Java es un lenguaje de propsito general, de alto nivel, y orientado a objetos puro; en el sentido de que no hay ninguna variable, funcin o constante que no est dentro de una clase. Se accede a los miembros dato y las funciones miembro a travs de los objetos y de las clases. Por razones de eficiencia, se han conservado los tipos bsicos de datos, int, float, double, char, etc, similares a los del lenguaje C/C++. Los tipos de programas ms comunes que se pueden hacer con Java son los applets (se ejecutan en el navegador de la mquina cliente) y las aplicaciones (programas que se ejecutan directamente en la JVM). Otro tipo especial de programa se denomina servlet que es similar a los applets pero se ejecutan en los servidores Java. La API de Java es muy rica, est formada un conjunto de paquetes de clases que le proporcionan una gran funcionalidad. El ncleo de la API viene con cada una de las implementaciones de la JVM: Lo esencial: tipos de datos, clases y objetos, arrays, cadenas de caracteres (strings), subprocesos (threads), entrada/salida, propiedades del sistema, etc. Applets Manejo de la red (networking), E internacionalizacin Seguridad Componentes (JavaBeans) Persistencia (Object serialization) Conexin a bases de datos (JDBC)

Java proporciona tambin extensiones, por ejemplo define un API para 3D, para los servidores, telefona, reconocimiento de voz, etc.

No hay manera de manipular de forma directa los punteros La JVM gestiona automticamente el uso de la memoria, de modo que no queden huecos. No se permiten realizar ciertas conversiones (casting) entre distintos tipos de datos.

Por ejemplo, cuando el navegador encuentra una pgina web con un applet, pone en marcha la JVM y proporciona la informacin que aparece en la etiqueta <APPLET > ... </APPLET>. El cargador de clases dentro de la JVM ve que clases necesita el applet. Dentro del proceso de carga, las clases se examinan mediante un verificador que asegura que las clases contienen cdigo vlido y no malicioso. Finalmente, se ejecuta el applet. Inconvenientes de las mquinas virtuales Uno de los inconvenientes de las mquinas virtuales es que agregan gran complejidad al sistema en tiempo de ejecucin. Esto tiene como efecto la ralentizacin del sistema, es decir, el programa no alcanzar la misma velocidad de ejecucin que si se instalase directamente en el sistema operativo "anfitrin" (host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa esta prdida de eficiencia. Tcnicas Emulacin del hardware subyacente (ejecucin nativa) La virtualizacin consiste emular el hardware mediante una aplicacin llamada "hypervisor", de tal forma que permita ejecutar uno o varios sistemas operativos, es decir, desvincular la ejecucin del sistema operativo y aplicaciones del hardware para encapsularlo dentro de un entorno virtual simulado por software.

La virtualizacin empaqueta el hardware, sistema operativo, aplicaciones y datos de las mquinas virtuales en ficheros, que como tales son trasportables de una mquina fsica a otra. La virtualizacin es aplicable tanto a servidores como a equipos de escritorio.

La virtualizacin ofrece numerosas ventajas, tanto aplicada a servidores como a equipos de escritorio, a costa de una pequea carga de trabajo adicional en los host. Dado que hoy en da el promedio de carga de los host ronda el 20%, el sacrificio claramente merece la pena. En infraestructuras con varios servidores o mltiples equipos de escritorio, el retorno de la inversin est asegurado en periodos de tiempo muy breves.

Se habla tambin de virtualizacin completa (full virtualization) del hardware, y se puede implementar usando un Hypervisor o monitor de mquina virtual (virtual machine monitor) 9 de Tipo 1 o de Tipo 2:

El tipo 1 se ejecuta directamente sobre el hardware: Tambin denominado nativo, unhosted o sobre el metal desnudo (bare metal), es software que se ejecuta directamente sobre el hardware, para ofrecer la funcionalidad descrita. Ntese en las imgenes, que se puede hacer correr varios sistemas operativos sobre el sistema operativo nativo, pero se comparten los recursos computacionales de todo el sistema en s.

Es una plataforma de virtualizacin que permite utilizar, al mismo tiempo, diferentes SO (sin modificar o modificados en el caso de paravirtualizacin = software que permite virtualizar un SO. ) en una misma computadora. Es una extensin de un trmino anterior, supervisor, que se aplicaba a kernel de sistemas operativos.

El tipo 2 se ejecuta sobre otro sistema operativo: Tambin denominado hosted, es software que se ejecuta sobre un sistema operativo para ofrecer la funcionalidad descrita. Ntese que aun se puede compartir recursos computacionales va red, por medio de la mquina virtual.

Cada mquina virtual puede ejecutar cualquier sistema operativo soportado por el hardware subyacente. As los usuarios pueden ejecutar dos o ms sistemas operativos distintos simultneamente en computadoras "privadas" virtuales. Con la arquitectura VM, la mayor parte de usuarios controlan un SO monousuario relativamente simple llamado CMS que se ejecuta en la mquina virtual VM. Actualmente tanto Intel como AMD han introducido procesadores x86 para permitir la virtualizacin de hardware. Consolidacin de hipervisores La consolidacin se refiere a ejecutar varias mquinas virtuales en un mismo servidor o host, reduciendo as el nmero total de mquinas fsicas. Dado que el promedio de carga de trabajo de los host es de aproximadamente el 20%, con la consolidacin podemos reducir el nmero de mquinas fsicas en un 500%. prestaciones a sus

Al reducir el nmero de mquinas fsicas se reduce tanto su consumo elctrico como su mantenimiento, que habitualmente supera el coste de la propia mquina. Disponibilidad de hipervisores El tener las mquinas encapsuladas en ficheros y desligadas del hardware donde se ejecutan permite gestionarlas con facilidad, movindolas de un host a otro para labores de mantenimiento, sin necesidad de apagarlas, o arrancndolas automticamente en otro host en caso de que falle el que las ejecuta. La virtualizacin reduce los tiempos de parada tanto planificados como no planificados, aumentando la productividad. Recuperacin de desastres empleando hipervisores La facilidad para mover mquinas virtuales de un host a otro no slo sirve para mejorar la disponibilidad, tambin simplifica enormemente las tareas de recuperacin de desastres.

La recuperacin de desastres se simplifica enormemente ya que las mquinas se pueden mover de un host a otro sin modificarlas.

En el siguiente cuadro se puede observar el contraste de un sistema sin virtualizar a uno virtualizado.

Emulacin de un sistema no nativo Las mquinas virtuales tambin pueden actuar como emuladores de hardware, permitiendo que aplicaciones y SOs concebidos para otras arquitecturas de procesador se puedan ejecutar sobre un hardware que en teora no soportan. As, esta tcnica permite que cualquier computadora pueda ejecutar software escrito para la mquina virtual. Slo la mquina virtual en s misma debe ser portada a cada una de las plataformas de hardware. Algunas mquinas virtuales emulan hardware que slo existe como una especificacin. Por ejemplo: la mquina virtual de Java, la mquina virtual del entorno .NET. y la Open Firmware. VMware VMware Inc., (VM de Virtual Machine) filial de EMC Corporation proporciona la mayor parte del software de virtualizacin disponible para ordenadores compatibles X86. Entre este software se incluyen VMware Workstation, y los gratuitos VMware Server y VMware Player. El software de VMware puede funcionar en Windows, Linux, y en la plataforma Mac OS X que corre en procesadores INTEL, bajo el nombre de VMware Fusion. El nombre corporativo de la compaa es un juego de palabras usando la interpretacin tradicional de las siglas VM en los ambientes de computacin, como mquinas virtuales (Virtual Machines). VMware es un sistema de virtualizacin por software. Un sistema virtual por software es un programa que simula un sistema fsico (un ordenador, un hardware) con unas caractersticas de hardware determinadas. Cuando se

ejecuta el programa (simulador), proporciona un ambiente de ejecucin similar a todos los efectos a un ordenador fsico (excepto en el puro acceso fsico al hardware simulado), con CPU (puede ser ms de una), BIOS, tarjeta grfica, memoria RAM, tarjeta de red, sistema de sonido, conexin USB, disco duro (pueden ser ms de uno), etc. Un virtualizador por software permite ejecutar (simular) varios ordenadores (sistemas operativos) dentro de un mismo hardware de manera simultnea, permitiendo as el mayor aprovechamiento de recursos. No obstante, y al ser una capa intermedia entre el sistema fsico y el sistema operativo que funciona en el hardware emulado, la velocidad de ejecucin de este ltimo es menor, pero en la mayora de los casos suficiente para usarse en entornos de produccin. VMware es similar a su homlogo Virtual PC, aunque existen diferencias entre ambos que afectan a la forma en la que el software interacta con el sistema fsico. El rendimiento del sistema virtual vara dependiendo de las caractersticas del sistema fsico en el que se ejecute, y de los recursos virtuales (CPU, RAM, etc.) asignados al sistema virtual. Mientras que VirtualPC emula una plataforma x86, Vmware la virtualiza, de forma que la mayor parte de las instrucciones en VMware se ejecutan directamente sobre el hardware fsico, mientras que en el caso de Virtual PC se traducen en llamadas al sistema operativo que se ejecuta en el sistema fsico. Versiones Gratuitas VMware Player Es un producto gratuito que permite correr mquinas virtuales creadas con productos de VMware. Las mquinas virtuales se pueden crear con productos ms avanzados como VMware Workstation, o con el propio VMware Player desde su versin 3.0 (las versiones anteriores no incluyen dicha funcionalidad). Desde la liberacin de VMware Player, han surgido pginas web donde es posible crear las mquinas virtuales, como Builder VMX Builder. Tambin es posible crear y redimensionar discos duros virtuales usando QEMU 10. Por ejemplo, con la orden siguiente se crear una imagen de disco de 2Gb que puede ser usado con VMware.

Es un emulador de procesadores basado en la traduccin dinmica de binarios (conversin del cdigo binario de la arquitectura fuente en cdigo entendible por la arquitectura husped). QEMU tambin tiene capacidades de Virtualizacin dentro de un sistema operativo, ya sea GNU/Linux, Windows, o cualquiera de los sistemas operativos admitidos, (de hecho es la forma ms comn de uso). Esta mquina virtual puede ejecutarse en cualquier tipo de Microprocesador o arquitectura (x86, x86-64, PowerPC, MIPS, SPARC, etc.). Est licenciado en parte con la LGPL y la GPL de GNU. El objetivo principal es emular un sistema operativo dentro de otro sin tener que reparticionar el disco duro, empleando para su ubicacin cualquier directorio dentro de ste.

10

qemu-img create -f vmdk mi-disco-duro-1.vmdk 2G VMware ha establecido una comunidad alrededor de sus productos gratuitos, donde proporciona acceso a una creciente lista de mquinas virtuales gratuitas, y de libre disposicin, con multitud de sistemas operativos y aplicaciones especficas pre configuradas y listas para ejecutar. Tambin existen herramientas gratuitas para crear VMx, montar, manipular y convertir discos y disquetes VMware, para que los usuarios de VMware Player puedan crear y mantener VMs de manera gratuita, incluso para uso comercial. VMware Server (antes GSX) Actualmente es gratuita, en la que tiene un mejor manejo y administracin de recursos; tambin corre dentro de un sistema operativo (host), est pensada para responder a una demanda mayor que el Workstation. Otra diferencia entre VMware Server y Workstation es que se pueden ejecutar de manera concurrente ms mquinas virtuales soportando servidores con hasta 32 procesadores y/o 64 GB de memoria, ofreciendo funcionalidad de administracin remota, soporta una API avanzada y funcionalidad de scripting y se puede ejecutar en modo headless. VMware ESXi Es una versin no permite instalar controladores (drivers) para hardware adicional (es decir, si el ESXi no posee los controladores el hardware no puede ser utilizado); no permite utilizar las funciones avanzadas de movimiento de maquinas virtuales encendidas (ON) de un equipo fsico a otro (VMOTION), ni hacerlo con el almacenamiento (STORAGEMOTION). Versiones Comerciales VMware ESX Server Esta versin es un sistema complejo de virtualizacin, que corre como SO dedicado al manejo y administracin de mquinas virtuales dado que no necesita un sistema operativo host sobre el cual sea necesario instalarlo. Pensado para la centralizacin y virtualizacin de servidores, esta versin no es compatible con una gran lista de hardware domstico,
El programa no dispone de GUI, pero existe otro programa llamado QEMU manager que hace las veces de interfaz grfica si se utiliza QEMU desde Windows. Tambin existe una versin para GNU/Linux llamado qemu-launcher. En Mac OS X puede utilizarse el programa Q que dispone de una interfaz grfica para crear y administrar las mquinas virtuales.

por ejemplo no reconoce los discos IDE como unidades de almacenamiento. Es muy til, ya que solamente ocupa 10Mb de RAM y 55 de Disco Duro, aproximadamente. Para su administracin, hay que instalar un software en una mquina remota, que se conecta por entorno web. Funcionamiento En el caso de la versin Workstation y Server, el funcionamiento es bastante similar a lo siguiente: Aplicacin --> OS (virtual) --> Hardware (virtual) --> VMware --> (OS host) --> hardware fsico. Esto afecta el rendimiento y desempeo de las mquinas virtuales, a diferencia de la versin ESX que funciona ms o menos de la siguiente manera. Aplicacin --> OS (virtual) --> Hardware (virtual) --> VMware --> hardware fsico. Pasos para instalacin de la Mquina Virtual con VMWare Debe hacer clic en el icono "New Virtual Machine"

Cuando aparezca la ventana "New Virtual Machine Wizard", dar clic en "Siguiente

Da a elegir el tipo de mquina virtual. Se marca la opcin "Typical" y luego "Siguiente"

Ahora nos deja elegir el SO que se instalar en la mquina virtual. Se puede elegir entre Microsoft Windows, Linux, Novell NetWare, Sun Solaris, etc, que no estn en la lista. Si por ejemplo se quiere instalar Microsoft Windows XP Professional, se debe marcar la opcin Microsoft Windows, y en la lista desplegable que hay abajo, se cliquea y se elige "Windows XP Professional", luego "Siguiente"

Ahora se elige el nombre que se le asignar a la mquina virtual, y dnde guardar los archivos de configuracin. Se recomienda poner el nombre a la mquina virtual y no tocar nada ms de ah y hacer clic en "Siguiente"

Ahora se elige el tipo de conexin a internet que tendr la mquina virtual. Si tenemos conexin directa con un mdem, se elige "Use bridged networking". O si est usando un router, se marca "Use network address translation (NAT)". NOTA: Si no se quiere que nuestra mquina virtual tenga acceso a Internet, se marca la opcin "Do not use a network connection". Luego clic en "Siguiente"

En la pantalla que aparece ahora, se configura el espacio en disco que se dar a la mquina virtual.- Se recomienda un mnimo de 3 o 4 GB para que Windows funcione bien. Luego se da clic en el botn "Finalizar"

Fin. Ya se ha creado la mquina virtual.

Configurar la mquina virtual Despus de haber creado la mquina virtual, se procese a configurar cuanta memoria RAM le asignaremos al S.O y de dnde se cargar la instalacin de ste. Para ello, en la zona "Devices",

Hacemos doble clic en "Memory" y le asignamos la memoria RAM que la mquina virtual utilizar para el sistema operativo instalado. Luego "OK". Antes de arrancar la mquina virtual, se debe elegir dnde cargar la instalacin del SO.

Si tiene el DVD del SO que vaya a instalar, lo coloca en la unidad lectora, o en caso de tener la imagen del SO que quiera instalar, se da doble clic en "CD-ROM" (Ubicado en la zona "Devices"). Se marca la opcin "Use ISO image:" (VMware slo soporta .ISO) y se da clic en el botn "Browse..." para elegir la imgen .ISO, y por ltimo hacemos clic en "OK". Luego hacemos clic en "Start this virtual machine"

Para Hacer Imgenes (SnapShots) Es muy til cuando "juguemos" con virus y dems, si Windows de la mquina virtual, se estropea, se puede volver a la imagen anterior que creamos. Para ello se pulsa la siguiente combinacin de teclas: "CTRL+M", abre una ventana, para hacer una imagen del Windows, debemos hacer clic en el icono "You Are Here" y clicamos en el botn "Take Snapshot..." y se crear una imagen.

Cuando queramos volver a ella por si ocurre algo, pulsamos de nuevo la combinacin "CTRL+M", hacemos clic en la imagen que se cre y se pulsa el botn "Go To" entonces VMware regresar a la imagen que creaste. Para eliminar una imagen, oprimir "Delete". Recomendaciones Cuando estemos ejecutando Windows en la mquina virtual, y el O.S. se haya cargado entero, hacemos clic en el men "VM" de VMware, y elegimos "Install VMware Tools..." Saldr una advertencia avisndonos de que slo se debe instalar cuando el sistema operativo se est ejecutando...etc... Pulsamos "Install" y en la mquina virtual, se instalar VMware Tools, que son herramientas para la mquina virtual. Nos dir de reiniciar la mquina virtual; hacemos clic en YES. Incluye drivers de pantalla, mouse, etc... Es muy recomendable instalarlo. Trucos Al haber terminado de instalar VMware Tools, se puede compartir ficheros del PC a la mquina virtual y viceversa. Para ello, se arrastra el archivo que quiera transferir y soltarlo en la mquina virtual. Si desea copiar un archivo de la mquina virtual a la PC,entonces pulsa la tecla CTRL y hace clic en el archivo y moverlo hasta dejarlo en el escritorio del PC. - Si los archivos son muy pesados en el tamao, dependiendo de tu memoria RAM tardar ms o menos en copiar. Otro truco es, que si queremos hacer el tpico "CTRL+ALT+SUPR" para iniciar "Administrador de Tareas" de Windows, en VMware deberemos pulsar la siguiente combinacin: "CTRL+ALT+INSERT" Para hacer una captura de pantalla de la mquina virtual, nos vamos al men "VM" de VMware y hacemos clic en la opcin "Capture Screen..."

Para capturar un vdeo, se debe volver al men "VM" y clickar en "Capture Movie...", se abrir una ventana para que guardemos el vdeo. Se puede elegir la calidad, alta, media y baja.

NOTA: - Para tomar posesin de la unidad virtual hay que dar un clic dentro de VMWare para entrar al otro OS y para salir hay que teclear CTRL+ALT. - Cuando apague la MV se libera la memoria RAM que estaba usando. -Para CTLR+ALT+SUPR en la virtual se usa CTRL+ALT+INSERT. -Para agrandar la pantalla usa CTRL+ALT+ENTER o F11 Pgina de VMWare = http://www.vmware.com/

VirtualBOX Oracle VM VirtualBox es un software de virtualizacin bajo la licencia GPL 2 para arquitecturas x86. Por medio de esta aplicacin es posible instalar SO adicionales, conocidos como sistemas invitados, dentro de otro sistema operativo anfitrin, cada uno con su propio ambiente virtual. Entre los sistemas operativos soportados (en modo anfitrin) se encuentran GNU/Linux, Mac OS X, OS/2 Warp , Microsoft Windows, y Solaris/OpenSolaris, y dentro de ellos es posible virtualizar los sistemas operativos FreeBSD, GNU/Linux, OPenBSD, OS/2 Warp, Windows, Solaris, MS-DOS y muchos otros.

Actualmente existe la versin propietaria Oracle VM VirtualBox, que es gratuita nicamente bajo uso personal o de evaluacin, y est sujeta a la licencia de "Uso Personal y de Evaluacin VirtualBox" (VirtualBox Personal Use and Evaluation License o PUEL) y la versin Open Source, VirtualBox OSE, que es software libre, sujeta a la licencia GPL. VirtualBox ofrece algunas funcionalidades interesantes, como la ejecucin de maquinas virtuales de forma remota, por medio del Remote Desktop Protocol (RDP), soporte iSCSI, aunque estas opciones no estn disponibles en la versin OSE. En cuanto a la emulacin de hardware, los discos duros de los sistemas invitados son almacenados en los sistemas anfitriones como archivos individuales en un contenedor llamado Virtual Disk Image, incompatible con los dems software de virtualizacin. Otra de las funciones que presenta es la de montar imgenes ISO 11 como unidades virtuales pticas de CD o DVD. Adems, tiene un paquete de controladores que permiten aceleracin en 3D, pantalla completa, hasta 4 placas de red Gigabit, integracin con teclado y mouse. A diferencia de otro virtualizadores que utilizan la combinacin crtl + alt para volver el teclado y el mouse a la mquina fsica, VirtualBox utiliza la tecla Ctrl de la derecha como tecla host, por defecto, esta funcin puede ser personalizada a otra tecla o combinacin de teclas por el usuario. Pasos para su instalacin Se ejecuta el programa y se abre la pantalla tal y como aparece:

Aparece la bienvenida e informa de que si

continuamos se instalara virtualbox en nuestro sistema, pulsamos next y en la siguiente pantalla deberemos aceptar el contrato de licencia, aceptamos y continuamos pulsando next de nuevo.

Imagen ISO es un archivo donde se almacena una copia o imagen exacta de un sistema de ficheros, normalmente un disco ptico. Se rige por el estndar ISO 9660 que le da nombre. Algunos de los usos ms comunes incluyen la distribucin de SO, tales como sistemas GNU/Linux, BSD o Live CDs.

11

En la siguiente pantalla nos dice la ubicacin donde se va a instalar as como el espacio que necesitara para su instalacin si dejamos esa por defecto solo tendremos que pulsar en next para pasar a la siguiente pantalla.

En esta pantalla se advierte que se van a copiar los archivos y se instalara el programa pulsamos en install y esperaremos el final de la instalacin.

Una ventana como esta nos dir cmo va la instalacin as que tendremos que esperar a que finalice. Esta es la ventana que nos avisa que el programa se ha instalado correctamente en nuestro sistema y que est listo para ser usado.

INSTALACION DE UN SISTEMA OPERATIVO CON VIRTUALBOX Cuando abrimos el programa no pedir que nos registremos solo hay que poner un nombre y una direccin de correo y confirmar.

El programa tiene un asistente que lo guiar en la instalacin del sistema virtual. En este caso se ha elegido el Windows vista ultmate. Para empezar se pulsa en nueva y se abre el asistente que nos guiara en la instalacin.

Pulsamos en siguiente para continuar

Ahora tendremos que dar un nombre al sistema que vamos a instalar y el sistema operativo que es y pulsamos en siguiente para continuar.

En la siguiente pantalla pide que se le asigne la cantidad de memoria RAM que se asignara a la maquina virtual. Es mejor que dejen el tamao recomendado. Pulsamos en siguiente para continuar

Ahora debemos crear el disco duro virtual en este caso lo crearemos nuevo

Al pulsar en nuevo entraremos en un asistente que nos guiara los pasos como en la imagen que se muestra a continuacin

Pulsamos en siguiente para llegar a la pantalla donde no pedir el tipo de imagen que queremos crear en este caso ser de expansin dinmica pulsamos en siguiente para continuar.

Ahora buscamos la ubicacin donde se crear el disco virtual y su tamao pulsando en seleccionar se nos abrir una nueva ventana. Una vez seleccionamos la ubicacin y pongamos el nombre solo queda guardar para volver a la pantalla anterior con los cambios hechos.

Una vez seleccionamos la ubicacin y pongamos el nombre solo quedara guardar para volver a la pantalla anterior

Con los cambios hechos. Pulsamos en siguiente para continuar.

Pulsamos en terminar para crear la imagen del disco duro virtual

Con esto se puede continuar con la imagen de disco creado, se pulsa siguiente para continuar

ya se tendr todo preparado en la siguiente pantalla se pulsa en terminar.

Ya hemos creado nuestra mquina virtual, esta ser la pantalla que aparece.

INSTALAR Windows Vista en la mquina virtual Se procede a configurar la unidad DVD donde se colocar el DVD del programa de windows. Se da en cd/dvd tal y como muestra la imagen.

En la pantalla que se abre, se selecciona la letra de la unidad donde hemos cargado la vista y se marca unidad CD/dvd y pulsamos OK

Ahora pulsa en iniciar. Tras ver la pantalla de bienvenida comenzara la instalacin del Windows vista Pongo tres capturas de la instalacin para que observen que se instala correctamente.

Ya est instalado y por ende listo para entrar al sistema virtual

Links para descarga http://www.taringa.net/posts/ downloads/5426246/VirtualB ox.html http://virtualbox.softonic.com/ http://virtualboxportable.softonic.com/ http://www.softonic.com/s/ma quina-virtual-vmware

Lista de los videotutoriales que pueden ser descargados para complementar lo visto en este documento. http://rapidshare.com/files/157239498/IntroducionVmware.rar http://rapidshare.com/files/157252016/1.rar http://rapidshare.com/files/157260352/2.rar http://rapidshare.com/files/157270505/3.rar http://rapidshare.com/files/157278090/4.rar http://rapidshare.com/files/157286023/5.rar

HILO DE EJECUCIN 12 Un thread (hilo de ejecucin), en sistemas operativos, es una caracterstica que permite a una aplicacin realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecucin comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situacin de autenticacin, etc. Esta tcnica permite simplificar el diseo de una aplicacin que debe llevar a cabo distintas funciones simultneamente.

Un hilo es bsicamente una tarea que puede ser ejecutada en paralelo con otra tarea. Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecucin de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar stos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado inmediatamente. Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin y el estado de la CPU (incluyendo el valor de los registros). El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga activo. Cuando el proceso finaliza, todos sus hilos de ejecucin tambin han terminado. Asimismo en el momento en el que todos los hilos de ejecucin finalizan, el proceso no existe ms y todos sus recursos son liberados. Algunos lenguajes de programacin tienen caractersticas de diseo expresamente creadas para permitir a los programadores lidiar con hilos de ejecucin (como Java o Delphi 13). Otros programas por no decir que la mayora desconocen la existencia de hilos
12

Fuente de consulta secundaria. http://es.wikipedia.org/wiki/Hilo_de_ejecuci%C3%B3n

Es un entorno de desarrollo de software diseado para la programacin de propsito general con nfasis en la programacin visual. En Delphi se utiliza como lenguaje de programacin una versin moderna de Pascal

13

de ejecucin y stos deben ser creados mediante llamadas de biblioteca especiales que dependen del sistema operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del C++). Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica (iconos, botones, ventanas), mientras otro hilo hace una larga operacin internamente. De esta manera el programa responde de manera ms gil a la interaccin con el usuario. Tambin pueden ser utilizados por una aplicacin servidor para dar servicio a mltiples clientes. Los hilos no pueden ejecutarse ellos solos; requieren la supervisin de un proceso padre para correr. Dentro de cada proceso hay varios hilos ejecutndose. Por ejemplo, Word puede tener un hilo en background chequeando automticamente la gramtica de lo que se est escribiendo, mientras otro hilo puede estar salvando automticamente los cambios del documento en el que se trabaja. Como Word, cada aplicacin (proceso) puede correr varios hilos los cuales estn realizando diferentes tareas. Esto significa que los hilos estn siempre asociados con un proceso en particular. Los hilos a menudo son conocidos o llamados procesos ligeros. Un hilo, en efecto, es muy similar a un proceso pero con la diferencia de que un hilo siempre corre dentro del contexto de otro programa. Por el contrario, los procesos mantienen su propio espacio de direcciones y entorno de operaciones. Los hilos dependen de un programa padre en lo que se refiere a recursos de ejecucin. La siguiente figura muestra le relacin entre hilos y procesos.

llamada Object Pascal. En sus diferentes variantes, permite producir archivos ejecutables para Windows, GNU/Linux y la plataforma .NET. Un uso habitual de Delphi, aunque no el nico, es el desarrollo de aplicaciones visuales y de bases de datos cliente-servidor y multicapas. Debido a que es una herramienta de propsito mltiple, se usa tambin para proyectos de casi cualquier tipo, incluyendo aplicaciones de consola, aplicaciones de web (por ejemplo servicios web, CGI, ISAPI, NSAPI, mdulos para Apache), servicios COM y DCOM, y servicios del SO. Entre las aplicaciones ms populares actualmente destaca Skype, un programa de telefona por IP. Delphi inicialmente slo produca ejecutables binarios para Windows: Delphi 1 para Win16 y con Delphi 2 se introdujo Win32. En la actualidad da ms posibilidades, como son: Delphi para Win32 Delphi para .NET Delphi para PHP C# para .NET C++

Existe una versin de Delphi para sistemas Unix y Linux, denominada Kylix (de la cual existe una versin gratuita, aunque limitada). Sin embargo Kylix fue congelado por Borland en su versin 3.00.

Un programa de flujo nico o mono-hilvanado (single-thread) utiliza un nico flujo de control (thread) para controlar su ejecucin. Muchos programas no necesitan la potencia o utilidad de mltiples flujos de control. Sin necesidad de especificar explcitamente que se quiere un nico flujo de control, muchos de los applets y aplicaciones son de flujo nico. Por ejemplo, usando Java para la aplicacin estndar de saludo: public class HolaMundo { static public void main( String args[] ) { System.out.println( "Hola Mundo!" ); } } Aqu, cuando se llama a main(), la aplicacin imprime el mensaje y termina. Esto ocurre dentro de un nico thread.

La clase Thread Es la clase que encapsula todo el control necesario sobre los hilos de ejecucin (threads). Hay que distinguir claramente un objeto Thread de un hilo de ejecucin o thread. Esta distincin resulta complicada, aunque se puede simplificar si se considera al objeto Thread como el panel de control de un hilo de ejecucin (thread). La clase Thread es la nica forma de controlar el comportamiento de los hilos y para ello se sirve de los mtodos que se exponen en las secciones siguientes. Mtodos de Clase Estos son los mtodos estticos que deben llamarse de manera directa en la clase Thread. currentThread() Este mtodo devuelve el objeto thread que representa al hilo de ejecucin que se est ejecutando actualmente. yield() Este mtodo hace que el intrprete cambie de contexto entre el hilo actual y el siguiente hilo ejecutable disponible. Es una manera de asegurar que nos hilos de menor prioridad no sufran inanicin. sleep( long )

El mtodo sleep() provoca que el intrprete ponga al hilo en curso a dormir durante el nmero de milisegundos que se indiquen en el parmetro de invocacin. Una vez transcurridos esos milisegundos, dicho hilo volver a estar disponible para su ejecucin. Los relojes asociados a la mayor parte de los intrpretes de Java no sern capaces de obtener precisiones mayores de 10 milisegundos, por mucho que se permita indicar hasta nanosegundos en la llamada alternativa a este mtodo. Mtodos de Instancia Aqu no estn recogidos todos los mtodos de la clase Thread, sino solamente los ms interesantes, porque los dems corresponden a reas en donde el estndar de Java no est completo, y puede que se queden obsoletos en la prxima versin del JDK, por ello, si se desea completar la informacin que aqu se expone se ha de recurrir a la documentacin del interfaz de programacin de aplicacin (API) del JDK. start() Este mtodo indica al intrprete de Java que cree un contexto del hilo del sistema y comience a ejecutarlo. A continuacin, el mtodo run() de este hilo ser invocado en el nuevo contexto del hilo. Hay que tener precaucin de no llamar al mtodo start() ms de una vez sobre un hilo determinado. run() El mtodo run() constituye el cuerpo de un hilo en ejecucin. Este es el nico mtodo del interfaz Runnable. Es llamado por el mtodo start() despus de que el hilo apropiado del sistema se haya inicializado. Siempre que el mtodo run() devuelva el control, el hilo actual se detendr. stop() Este mtodo provoca que el hilo se detenga de manera inmediata. A menudo constituye una manera brusca de detener un hilo, especialmente si este mtodo se ejecuta sobre el hilo en curso. En tal caso, la lnea inmediatamente posterior a la llamada al mtodo stop() no llega a ejecutarse jams, pues el contexto del hilo muere antes de que stop() devuelva el control. Una forma ms elegante de detener un hilo es utilizar alguna variable que ocasione que el mtodo run() termine de manera ordenada. En realidad, nunca se debera recurrir al uso de este mtodo. suspend() El mtodo suspend() es distinto de stop(). suspend() toma el hilo y provoca que se detenga su ejecucin sin destruir el hilo de sistema subyacente, ni el estado del hilo anteriormente en ejecucin. Si la ejecucin de un hilo se suspende, puede llamarse a resume() sobre el mismo hilo para lograr que vuelva a ejecutarse de nuevo.

resume() El mtodo resume() se utiliza para revivir un hilo suspendido. No hay garantas de que el hilo comience a ejecutarse inmediatamente, ya que puede haber un hilo de mayor prioridad en ejecucin actualmente, pero resume() ocasiona que el hilo vuelva a ser un candidato a ser ejecutado. setPriority( int ) El mtodo setPriority() asigna al hilo la prioridad indicada por el valor pasado como parmetro. Hay bastantes constantes predefinidas para la prioridad, definidas en la clase Thread, tales como MIN_PRIORITY, NORM_PRIORITY y MAX_PRIORITY, que toman los valores 1, 5 y 10, respectivamente. Como gua aproximada de utilizacin, se puede establecer que la mayor parte de los procesos a nivel de usuario deberan tomar una prioridad en torno a NORM_PRIORITY. Las tareas en segundo plano, como una entrada/salida a red o el nuevo dibujo de la pantalla, deberan tener una prioridad cercana a MIN_PRIORITY. Con las tareas a las que se fije la mxima prioridad, en torno a MAX_PRIORITY, hay que ser especialmente cuidadosos, porque si no se hacen llamadas a sleep() o yield(), se puede provocar que el intrprete Java quede totalmente fuera de control. getPriority() Este mtodo devuelve la prioridad del hilo de ejecucin en curso, que es un valor comprendido entre uno y diez. setName( String ) Este mtodo permite identificar al hilo con un nombre menmnico. De esta manera se facilita la depuracin de programas multihilo. El nombre mnemnico aparecer en todas las lneas de trazado que se muestran cada vez que el intrprete Java imprime excepciones no capturadas. getName() Este mtodo devuelve el valor actual, de tipo cadena, asignado como nombre al hilo en ejecucin mediante setName(). Diferencias entre hilos y procesos Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante informacin de estados, e interactan slo a travs de mecanismos de comunicacin dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos de forma directa. En muchos de los SO que dan facilidades a los hilos, es ms rpido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este fenmeno se debe a que los hilos comparten datos y espacios de direcciones, mientras que los procesos, al ser independientes, no lo hacen. Al cambiar de un proceso a otro, el SO (mediante el

dispatcher 14) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de contexto (context switch), en este caso pasar del estado de ejecucin (running) al estado de espera (waiting) y colocar el nuevo proceso en ejecucin. En los hilos, como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo perdido es casi despreciable. Al igual que los procesos, los hilos poseen un estado de ejecucin y pueden sincronizarse entre ellos para evitar problemas de compartimiento de recursos. Generalmente, cada hilo tiene una tarea especfica y determinada, como forma de aumentar la eficiencia del uso del procesador.

Estados de un hilo Los principales estados de los hilos son: Ejecucin, Listo y Bloqueado. No tiene sentido asociar estados de suspensin de hilos ya que es un concepto de proceso. En todo caso, si un proceso est expulsado de la memoria principal (RAM), todos sus hilos debern estarlo ya que todos comparten el espacio de direcciones del proceso. Cambio de estados

Creacin: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de instruccin y los argumentos del nuevo hilo. El hilo tendr su propio contexto y su propio espacio de la columna, y pasara a la final de los listos. Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros de usuario, contador de programa y punteros de pila). Ahora el procesador podr pasar a ejecutar otro hilo que est en la final de los Listos mientras el anterior permanece bloqueado. Desbloqueo: Cuando el suceso por el que el hilo se bloque se produce, el mismo pasa a la final de los Listos. Terminacin: Cuando un hilo finaliza se liberan tanto su contexto como sus columnas.

Ventajas de los hilos contra procesos Los hilos son generados a partir de la creacin de un proceso, por ende, un proceso es un hilo de ejecucin o Monohilo. Las ventajas de los hilos se dan en los Multihilos, que es cuando un proceso tiene mltiples hilos de ejecucin los cuales realizan actividades distintas, que pueden o no ser cooperativas entre s. Los beneficios de los hilos se derivan de las implicaciones de rendimiento, as:

14

Parte de un programa encargada de lanzar un proceso en el servidor de un entorno cliente/servidor.

1. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un proceso. Algunas investigaciones llevan al resultado que esto es as en un factor de 10. 2. Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se elimina un proceso se debe eliminar el BCP (Bloque de control del proceso, o PCB (Process Control Block)) 15 del mismo, mientras que un hilo se elimina su contexto y pila. 3. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso 4. Los hilos aumentan la eficiencia de la comunicacin entre programas en ejecucin. En la mayora de los sistemas en la comunicacin entre procesos debe intervenir el ncleo para ofrecer proteccin de los recursos y realizar la comunicacin misma. En cambio, entre hilos pueden comunicarse entre s sin la invocacin al

Es un registro especial donde el SO agrupa toda la informacin que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el SO crea el BCP correspondiente para que sirva como descripcin en tiempo de ejecucin durante toda la vida del proceso. Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el SO y por tanto elegible para competir por los recursos del sistema slo cuando existe un BCP activo asociado a l. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecucin del proceso y de la utilizacin de recursos. La informacin almacenada en un BCP incluye tpicamente algunos o todos los campos siguientes: Identificador del proceso (Process Identificator -PID-, de sus siglas en Ingls). Estado del proceso. Por ej. listo, en espera, bloqueado. Contador de Programa: Direccin de la prxima instruccin a ejecutar. Valores de registro de CPU. Se utilizan tambin en el cambio de contexto. Espacio de direcciones de memoria. Prioridad en caso de utilizarse dicho algoritmo para planificacin de CPU. Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos). Estadsticas del proceso. Datos del propietario (owner). Permisos asignados. Signals pendientes de ser servidos. (Almacenados en un mapa de bits)

15

Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseo de BCP, con el conjunto de metadatos necesarios para la administracin. Puede medir desde 32 bits a 1024. Su denominacin cambia segn el sistema operativo, por ej. en IBM se designa PSW por palabra de estado de proceso. Difiere significativamente entre los sistemas de procesamiento por lotes (BATCH) y los sistemas interactivos. Algunos sistemas de multiprogramacin incluyen informacin de mantenimiento con el propsito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos. Una vez creado, el BCP se rellena con los atributos definidos como parmetros que se hallan en la plantilla del proceso o que son especificados como parmetros de la llamada al SO crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestin se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente.

ncleo. Por lo tanto, si hay una aplicacin que debe implementarse como un conjunto de unidades de ejecucin relacionadas, es ms eficiente hacerlo con una coleccin de hilos que con una coleccin de procesos separados. Sincronizacin de hilos Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos. Cualquier modificacin de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos. Una ventaja de la programacin multihilo es que los programas operan con mayor velocidad en sistemas de computadores con mltiples CPUs (sistemas multiprocesador o a travs de grupo de mquinas) ya que los hilos del programa se prestan verdaderamente para la ejecucin concurrente. En tal caso el programador necesita ser cuidadoso para evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos alteran datos que otros tambin estn usando), y otros comportamientos no intuitivos. Los hilos generalmente requieren reunirse para procesar los datos en el orden correcto. Es posible que los hilos requieran de operaciones atmicas para impedir que los datos comunes sean cambiados o ledos mientras estn siendo modificados, para lo que usualmente se utilizan los semforos 16. El descuido de esto puede generar interbloqueo 17. Formas de multihilos Los sistemas operativos generalmente implementan hilos de dos maneras:

Multihilo apropiativo: permite al sistema operativo determinar cundo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenmeno conocido como inversin de prioridades y otros problemas.

Un semforo es una variable especial (o tipo abstracto de datos) que constituye el mtodo clsico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del cdigo fuente) en un entorno de multiprocesamiento (en el que se ejecutarn varios procesos concurrentemente). Los semforos pueden ser usados para diferentes propsitos, entre ellos: Implementar cierres de exclusin mutua o locks Barreras Permitir a un mximo de N threads (hilos) acceder a un recurso, inicializando el semforo en N Notificacin. Inicializando el semforo en 0 puede usarse para comunicacin entre threads sobre la disponibilidad de un recurso

16

Es el bloqueo permanente de un conjunto de procesos o hilos de ejecucin en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solucin general para los interbloqueos.

17

Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a un punto de detencin, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.

El soporte de hardware para multihilo se encuentra disponible desde hace relativamente poco tiempo. Esta caracterstica fue introducida por Intel en el Pentium 4, bajo el nombre de HyperThreading. Usos ms comunes

Los usos ms comunes son en tecnologas SMPP y SMS para la telecomunicaciones aqu hay muchsimos procesos corriendo a la vez y todos requiriendo de un servicio.

Por ejemplo, en un programa de hoja de clculo un hilo puede estar visualizando los mens y leer la entrada del usuario mientras que otro hilo ejecuta las rdenes y actualiza la hoja de clculo. Esta medida suele aumentar la velocidad que se percibe en la aplicacin, permitiendo que el programa pida la orden siguiente antes de terminar la anterior. Procesamiento asncrono

Trabajo interactivo y en segundo plano

Los elementos asncronos de un programa se pueden implementar como hilos. Un ejemplo es como los softwares de procesamiento de texto guardan archivos temporales cuando se est trabajando en dicho programa. Se crea un hilo que tiene como funcin guardar una copia de respaldo mientras se contina con la operacin de escritura por el usuario sin interferir en la misma. Aceleracin de la ejecucin

Se pueden ejecutar, por ejemplo, un lote mientras otro hilo lee el lote siguiente de un dispositivo. Estructuracin modular de los programas

Es un mecanismo eficiente para un programa que ejecuta una gran variedad de actividades separadas mediante hilos que realizan cada una de ellas.

Implementaciones Hay dos grandes categoras en la implementacin de hilos:


Hilos a nivel de usuario o ULT (user level thread). Hilos a nivel de kernel o KLT (kernel level thread).

Hilos a nivel de usuario (ULT) En una aplicacin ULT pura, todo el trabajo de gestin de hilos lo realiza la aplicacin y el ncleo o kernel no es consciente de la existencia de hilos. Es posible programar una aplicacin como multihilo mediante una biblioteca de hilos. La misma contiene el cdigo para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para planificar la ejecucin de hilos y para salvar y restaurar el contexto de los hilos. Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un mismo proceso. El kernel continua planificando el proceso como una unidad y asignndole un nico estado (Listo, bloqueado, etc.). Ventajas de los ULT

El intercambio de los hilos no necesita los privilegios del modo kernel, porque todas las estructuras de datos estn en el espacio de direcciones de usuario de un mismo proceso. Por lo tanto, el proceso no debe cambiar a modo kernel para gestionar hilos. Se evita la sobrecarga de cambio de modo y con esto el sobrecoste u overhead. Se puede realizar una planificacin especfica. Dependiendo de que aplicacin sea, se puede decidir por una u otra planificacin segn sus ventajas. Los ULT pueden ejecutar en cualquier sistema operativo. La biblioteca de hilos es un conjunto compartido.

Desventajas de los ULT

En la mayora de los sistemas operativos las llamadas al sistema (System calls) son bloqueantes. Cuando un hilo realiza una llamada al sistema, se bloquea el mismo y tambin el resto de los hilos del proceso. En una estrategia ULT pura, una aplicacin multihilo no puede aprovechar las ventajas de los multiprocesadores. El ncleo asigna un solo proceso a un solo procesador, ya que como el ncleo no interviene, ve al conjunto de hilos como un solo proceso.

Una solucin al bloqueo mediante a llamadas al sistema es usando la tcnica de jacketing, que es convertir una llamada bloqueante en no bloqueante.

Hilos a nivel de ncleo (KLT) En una aplicacin KLT pura, todo el trabajo de gestin de hilos lo realiza el kernel. En el rea de la aplicacin no hay cdigo de gestin de hilos, nicamente un API (interfaz de programas de aplicacin) para la gestin de hilos en el ncleo. Windows 2000, Linux y OS/2 utilizan este mtodo. Linux utiliza un mtodo muy particular en el que no hace diferencia entre procesos e hilos. Para Linux, si varios procesos creados con la llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales, el sistema operativo los trata como hilos, y lgicamente son manejados por el kernel. Ventajas de los KLT

El kernel puede planificar simultneamente mltiples hilos del mismo proceso en mltiples procesadores. Si se bloquea un hilo, puede planificar otro del mismo proceso. Las propias funciones del kernel pueden ser multihilo

Desventajas de los KLT

El paso de control de un hilo a otro precisa de un cambio de modo.

Combinaciones ULT y KLT Algunos sistemas operativos ofrecen combinacin de ULT y KLT, como Solaris. la

La creacin de hilos, as como la mayor parte de la planificacin y sincronizacin de los hilos de una aplicacin se realiza por completo en el espacio de usuario. Los mltiples ULT de una sola aplicacin se asocian con varios KLT. El programador puede ajustar el nmero de KLT para cada aplicacin y mquina para obtener el mejor resultado global. En un mtodo combinado, los mltiples hilos de una aplicacin se pueden ejecutar en paralelo en mltiples procesadores y las llamadas al sistema bloqueadoras no necesitan bloquear todo el proceso.

Taller 3 1. Instale cualquier mquina virtual, y probarla, esto se hace instalando cualquier sistema operativo que deseen. Para la entrega, se precisan pantallazos de lo que hacen, con la correspondiente explicacin. 2. Ejecute el sistema operativo instalado sobre la mquina virtual, teniendo presente que debe entregar pruebas de ello por medio de pantallazos. Abra en ambos el icono de programas al mismo tiempo, y anexe el pantallazo respectivo. 3. Instale algunos widgets en el sistema operativo nativo y el virtual (anexe pruebas). 4. Con base en sus conocimientos en programacin, desarrolle un programa que aplique el concepto de threads, y relacinelo con lo visto hasta ahora en clase. Este programa debe estar debidamente documentado, debe manejar por lo menos dos hilos. Usted lo puede desarrollar en el lenguaje que maneje. Nota. Este trabajo equivale a dos notas. La mquina virtual y el programa propiamente dicho.

También podría gustarte