Un sistema operativo es el software encargado de ejercer el control y coordinar el uso del
hardware entre diferentes programas de aplicacin y los diferentes usuarios. El sistema operativo se encarga de crear el vnculo entre los recursos materiales, el usuario y las aplicaciones (procesador de texto, videojuegos, etctera). Cuando un programa desea acceder a un recurso material, no necesita enviar informacin especfica a los dispositivos perifricos, simplemente enva la informacin al sistema operativo, el cual la transmite a los perifricos correspondientes a travs de su driver (controlador). Si no existe ningn driver, cada programa debe reconocer y tener presente la comunicacin con cada tipo de perifrico. Internamente, los sistemas operativos varan enormemente en su composicin, ya que se organizan a lo largo de muchas lneas diferentes. Sin embargo, stas tienen muchas caractersticas comunes. En relacin a la estructura de un sistema operativo, existen dos conceptos muy importantes: multiprogramacin y tiempo compartido (o multitarea).
Multiprogramacin Multiprogramacin es un trmino que significa que muchos programas que no estn relacionados unos con otros pueden residir en la memoria de una computadora y tomar turnos usando la unidad central de procesamiento, cualquiera usuario que haya usado Windows, Unix o Linux ha experimentado un entorno de multiprogramacin porque estos sistemas pueden ejecutar un largo nmero de programas de usuario aparentemente de manera simultnea en una sola unidad central de procesamiento. La seccin que permite la multiprogramacin en un sistema operativo se denomina KERNEL, ste software consiste en un nmero de procedimientos que llevan a cabo funciones como crear tareas, decidir cul tarea correr en un momento dado, proveyendo un mecanismo para cambiar al procesador de una tarea a otra y provee formas primitivas de acceso controlado a recursos compartidos. Uno de los aspectos ms importantes es la capacidad para multiprogramar. En general, un solo usuario no puede mantener la CPU o los dispositivos de E/S ocupados continuamente. La multiprogramacin incrementa el uso de la CPU organizando los trabajos (cdigos y datos) de modo que la CPU siempre tenga uno que ejecutar. Cuando un trabajo tiene que esperar, el sistema operativo conmuta a otro trabajo, y as sucesivamente. Los sistemas multiprogramados proporcionan un entorno en el que se usan de forma eficaz los diversos recursos del sistema, como por ejemplo la CPU, la memoria y los perifricos, aunque no proporcionan la interaccin del usuario con el sistema informtico.
TIMESHARING El tiempo compartido (o multitarea) es una extensin lgica de la multiprogramacin. En los sistemas de tiempo compartido, la CPU ejecuta mltiples trabajos conmutando entre ellos, pero las conmutaciones se producen tan frecuentemente que los usuarios pueden interactuar con cada programa mientras ste est en ejecucin. Dado que usuario suministra directamente instrucciones al sistema operativo o a un programa, se requiere que exista comunicacin directa entre el usuario y el sistema, por ejemplo, al utilizar un dispositivo de entrada, como un teclado, el tiempo de respuesta debe ser pequeo (menor a 1 segundo). Este tipo de sistema operativo permite que muchos usuarios compartan simultneamente la computadora. Dado que el tiempo de ejecucin de cada accin tiende a ser pequeo, slo es necesario un tiempo pequeo de CPU para cada usuario. Puesto que el sistema cambia rpidamente de un usuario al siguiente, cada usuario tiene la impresin de que el sistema completo est dedicado a l, incluso aunque est siendo compartido por muchos usuarios. Cada usuario tiene, al menos, un programa distinto en memoria. Un programa cargado en memoria y en ejecucin se denomina proceso. El sistema operativo debe asegurar un tiempo de respuesta razonable, lo que en ocasiones se hace a travs de un mecanismo de intercambio, donde los procesos se intercambian entrando y saliendo de la memoria al disco. Un mtodo ms habitual de conseguir este objetivo es la memoria virtual, una tcnica que permite la ejecucin de un proceso que tiene suficiente memoria. A continuacin se describen una de las estructuras que presentan los actuales Sistemas Operativos para satisfacer las necesidades que de ellos se quiere obtener. sta no es la nica estructura, pero nos darn una idea de algunos diseos que se han llevado a la prctica.
Estructura de un sistema operativo. Analizando la historia de los Sistemas Operativos notamos que se puede considerar que stos surgen desde finales de los 50's con una arquitectura bastante obsoleta comparada con la de la actualidad. Para poder construir un Sistema Operativo se deben tener en cuenta dos tipos de requisitos, los cuales son: Requisitos de usuario: Un sistema fcil de usar y de aprender, seguro, rpido y adecuado para el uso que se le necesita dar. Requisitos del software: Considera el continuo mantenimiento, forma de operacin, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad. El objetivo de la estructuracin es buscar una organizacin interna que facilite la comprensin, incremente la portabilidad, extensin y favorezca el mantenimiento de los Sistemas Operativos.
Mquinas virtuales Una mquina virtual (MV) o virtual machine (VM) es una implementacin de software de una mquina fsica ya sea un servidor o una pc. Es un contenedor de software perfectamente aislado que puede ejecutar sus propios sistemas operativos y aplicaciones como si fuera un ordenador fsico. Crea un entorno virtual entre el sistema operativo y el hardware para que el usuario final pueda ejecutar aplicaciones en una mquina abstracta. Por decirlo de manera ms sencilla, una mquina virtual es una aplicacin que simula el funcionamiento de una mquina real sobre la que se pueden instalar sistemas operativos, aplicaciones, navegar de forma segura, imprimir desde alguna aplicacin, usar los dispositivos USB, etc. La mquina virtual se comporta exactamente igual que un ordenador fsico y contiene su propia CPU virtual, memoria, disco duro y tarjeta de interfaz de red. Una mquina virtual se compone exclusivamente de software y no contiene ninguna clase de componente de hardware. Una caracterstica esencial de las mquinas virtuales es que los procesos que ejecutan estn limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual". Concepto de virtualizacin Virtualizar significar aparentar que algo con una forma tiene otra. Virtualizar un ordenador significa aparentar que se trata de mltiples ordenadores o de un ordenador completamente diferente. Virtualizacin tambin puede significar conseguir que varios ordenadores parezcan uno solo. A este concepto se le suele denominar agregacin de servidores (SERVER AGGREGATION) o GRID COMPUTING. 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 se utilice, en el que se virtualiza otro sistema operativo como Linux o viceversa, por ejemplo que se tiene instalado Linux y se quiere virtualizar una versin de Windows. 1. Virtualizacin de hardware. Virtualizacin asistida por Hardware son extensiones introducidas en la arquitectura de procesador x86 para facilitar las tareas de virtualizacin al software ejecutndose 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, con privilegios menores que es 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. 2. La virtualizacin de almacenamiento Se refiere al proceso de abstraer el almacenamiento lgico del almacenamiento fsico, y es comnmente usado en SANS ("Storage rea 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. 3. Mquina virtual Bsicamente una mquina virtual (MV) o virtual machine (VM) como ms nos gusta llamarlas a nosotros es una implementacin de software de una mquina fsica ya sea un servidor o una pc. Estas mquinas virtuales utilizan recursos fsicos como CPU, memoria y disco rgido del equipo fsico donde corren los cuales le permiten a la misma correr un sistema operativo. Tipos de mquinas virtuales 1. Mquinas virtuales de hardware Las mquinas virtuales de hardware tambin llamadas mquinas virtuales de sistema, son aplicaciones que tratan de emular directamente el hardware. Las llamadas al hardware del sistema operativo instalado sern capturadas y convertidas en llamadas al sistema del hardware emulado. En general, la emulacin del hardware recibe el nombre de virtualizacin. Al emularse directamente el hardware, el usuario tiene la impresin de que la mquina sobre la que est trabajando es totalmente independiente. Estas mquinas virtuales, permiten a la mquina fsica subyacente multiplicarse 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"). 2. Mquinas virtuales de software Las mquinas virtuales de software tambin llamadas como mquinas virtuales de proceso, este tipo de mquinas virtuales se sitan por encima del sistema operativo y tratan de aislar a las aplicaciones del entorno sobre el que se ejecutan. 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 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. La mquina virtual de Java o la mquina virtual del entorno .NET son dos claros ejemplos de mquinas virtuales software.
Tcnicas de implementacin de las mquinas virtuales a. Emulacin del hardware subyacente (ejecucin nativa) o Virtualizacin completa. La virtualizacin completa, tambin llamada virtualizacin nativa, es otra interesante tcnica de virtualizacin. Este modelo utiliza una mquina virtual que media entre el sistema operativo invitado y el hardware nativo. "Mediar" es la palabra clave aqu porque la VMM est entre el sistema el sistema operativo invitado y el hardware real. Algunas instrucciones protegidas deben capturarse y manejarse dentro del HIPERVISOR ya que el hardware subyacente no es propiedad de un sistema operativo sino que es compartido a travs del HIPERVISOR. Son 2 tipos de HIPERVISORES: El tipo 1: se ejecuta directamente sobre el hardware. El tipo 2: se ejecuta sobre otro sistema operativo. 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. b. Emulacin de un sistema no nativo. Las mquinas virtuales tambin pueden actuar como emuladores de hardware, permitiendo que aplicaciones y sistemas operativos concebidos para otras arquitecturas de procesador se puedan ejecutar sobre un hardware que en teora no soportan. Algunas mquinas virtuales emulan hardware que slo existe como una especificacin. Por ejemplo: La mquina virtual P-CODE que permita a los programadores de Pascal crear aplicaciones que se ejecutasen sobre cualquier computadora con esta mquina virtual correctamente instalada. La mquina virtual de Java. La mquina virtual del entorno .NET.
Ventajas de las mquinas virtuales. La capacidad de aprovechar al mximo el hardware disponible ofrece una gran cantidad de posibilidades a nivel empresarial y a nivel domstico. Consolidacin de servidores: Convertir muchos servidores fsicos en virtuales. De este modo se aprovecha el hardware disponible de la mejor manera posible. Recuperacin ante desastres: Las mquinas virtuales se pueden salvar muy fcilmente, y adems su estado se puede almacenar, por lo que en caso de desastre se puede recuperar la informacin con rapidez. Pruebas de aplicaciones: En muchas ocasiones se necesita un entorno limpio para probar una aplicacin. Usar una mquina virtual permite instalar un sistema operativo desde cero, probar la aplicacin y luego eliminar la mquina. Ejecucin de entornos completos sin instalacin ni configuracin: La posibilidad de descargar mquinas virtuales desde Internet permite ahorrar tiempo en instalaciones y configuraciones. Existen muchas mquinas virtuales con servidores LAMP (Linux, Apache, MySQL y PHP) completos listos para ser usados, mquinas con gestores de contenidos, wikis, etc., gratuitos y funcionales desde el primer momento. Aplicaciones porttiles: Con el uso de las mquinas virtuales se pueden tener Pcs completos listos para usar en dispositivos USB, lo que puede ser de mucha utilidad para tener un entorno privado y usarlo en cualquier PC.
Desventajas de las mquinas virtuales. Una de las razones por que las mquinas virtuales, no son la panacea de la computacin, es que agregan gran complejidad al sistema en tiempo de ejecucin. La principal desventaja de la mquina virtual, es que en la aplicacin de algunos proceso tendr como efecto la lentitud del computador, es decir, la computadora en la cual se est ejecutando este proceso debe tener una capacidad bastante notable debe ser de gran capacidad o potente. Los lenguajes basados en mquina virtual, poseen una desventaja es que efectivamente son ms lentos que los lenguajes completamente compilados, debido a la sobrecarga que genera tener una capa de software intermedia entre la aplicacin y el hardware de la computadora, sin embargo, Esta desventaja no es demasiado crtica.
Lista de hardware con soporte para Virtualizacin AMD-V (anteriormente llamado Pacifica). ARM TRUSTZONE. IBM System/370, System/390 y mainframes ZSERIES. Intel VT (anteriormente llamado VANDERPOOL). SPARC de SUN Microsystems. Listado de algunas mquinas virtuales. Mquinas virtuales de proceso. COMMON LANGUAGE RUNTIME - C#, Visual Basic .NET, J#, Managed C++ EIFFELSTUDIO para el lenguaje de programacin Eiffel Lenguaje de programacin ERLANG Forth virtual machine Forth GLULX - GLULX, Z-code
Mquinas virtuales de sistema. VTHERE (de SENTILLION, Inc.). ATL (A MTL Virtual Machine). BOCHS emulador de PC x86 y AMD64, porttil y open SOURCE. COLINUX Open Source Linux inside Windows. Denali, uses PARAVIRTUALIZATION of x86 for running para-virtualized PC operating systems. FAUMACHINE.
Mquinas virtuales a nivel de sistema operativo. OPENVZ. VIRTUOZZO. FREEVPS. Linux-VSERVER.