22 diciembre 2014

Primera parte Máquina virtual

Las computadoras modernas se encuentran entre las estructuras de ingeniería más avanzadas, esto es posible debido a su habilidad de manejar grados de complejidad bastante altos. Según Smith y Nair, en el capítulo uno del libro publicado el año 2005 titulado “Maquinas virtuales: Plataformas versátiles para sistemas y procesos, los sistemas computacionales contienen muchos chips de silicona, cada uno con miles de millones de transistores, los cuales se encuentran interconectados y combinados con dispositivos de entrada y salida de alta velocidad, además de infraestructura de redes para conformar las plataformas sobre las cuales el software puede operar. Los sistemas operativos, los programas de aplicación y las bibliotecas, los gráficos y el software de red, cooperan para proporcionar un ambiente poderoso para la gestión de datos, educación, comunicación, entretenimiento y muchas otras aplicaciones. La clave del manejo de la complejidad en los sistemas computacionales es su división en grados de abstracción separados por interfaces bien definidas. Los grados de abstracción permiten los detalles de implementación en los niveles más bajos de un diseño que puede ser simplificado o ignorado, por tanto simplificando el diseño de componentes en los niveles más altos. Los detalles de un disco duro compuesto por sectores y pistas, por ejemplo, son abstraídos por el sistema operativo de modo tal que el disco aparenta a la aplicación software como un conjunto de archivos de tamaño variable. Un programador de aplicaciones puede entonces crear, escribir y leer archivos, sin conocer la manera en la que está construido y organizado el disco duro.

La investigadora González, en la tesis de maestría publicada el año 2010 titulada “Gestor de máquinas virtuales”, complementa lo mencionado señalando que los niveles de abstracción son organizados en una jerarquía, los niveles más bajos se ejecutan en el hardware y los niveles más altos en el software. Al hablar de virtualización las personas se interesan en los niveles cercanos a la frontera hardware/software. En los niveles del hardware, todos los componentes son físicos, tienen propiedades reales y sus interfaces son definidas de manera que varias partes puedan conectarse físicamente. En los niveles del software, los componentes son lógicos, con menos restricciones basadas en las características físicas. Existen niveles donde el software está separado de la máquina en la que corre. El software de computadora es ejecutado por una máquina. Desde la perspectiva del sistema operativo, una máquina está compuesta en su mayoría por el hardware, incluyendo uno o más procesadores que ejecutan un conjunto específico de instrucción, memoria real, y dispositivos de entrada y salida. Sin embargo no se restringe el uso del término “máquina” a sólo los componentes de hardware de una computadora. Desde el punto de vista de programas de aplicación por ejemplo, la máquina es una combinación del sistema operativo y las partes del hardware accesibles a través de instrucciones binarias a nivel de usuario. Por otra parte, las interfaces bien definidas permiten que las tareas de diseño de las computadoras estén separadas para que los diseñadores del software y hardware puedan trabajar de manera más o menos independiente.

A finales de los años 1950, en palabras de Cuevas Resendiz y sus colegas, en la tesis de grado publicada el año 2011 con el título “Virtualización de Servidores mediante Solaris Containers”, comenzaron a surgir publicaciones sobre las posibles soluciones para mejorar el aprovechamiento de los equipos de cómputo y satisfacer las necesidades computacionales de la época, pero fue hasta la publicación de Christopher Strachey, el primer profesor de Computación en la Universidad de Oxford y director del Grupo de Programación, titulada “Tiempo compartido en computadoras grandes y veloces”, en el año 1959, donde formalmente se dio a conocer el concepto de “sistema de tiempo compartido”, que es uno de los conceptos que precedieron a la virtualización, en dicha publicación también se abordaba el tema de la multiprogramación, que es una técnica que permitiría a un programador desarrollar un programa en su propia consola, mientras que otro programador realizaba pruebas, de esta forma se evitaba la espera habitual de los periféricos. La multiprogramación, así como otras ideas innovadoras, comenzaron a impulsar a una nueva serie de equipos. En el año 1972 la famosa empresa “Maquinaria de Negocios Internacionales (IBM)” anuncia el primer sistema operativo, el VM/370 destinado para la virtualización en los mainframes System/370. Este sistema era capaz de ejecutar varias máquinas virtuales con más memoria virtual y además del intercambio de información entre las máquinas interconectadas.

Las máquinas virtuales tenían la misma arquitectura que el equipo System/370 y eran gestionadas por un componente llamado “monitor de máquina virtual”, el cual se ejecutaba en el hardware real, cada máquina virtual fue capaz de ejecutar una instalación única del sistema operativo de IBM de manera estable.

Cuevas y sus colegas, en la tesis referenciada anteriormente, continúan mencionando que la IBM incorporó mainframes de alto rendimiento, los cuales se volvieron de uso común pero les hacía falta la posibilidad de realizar múltiples tareas, es por esto que desarrollaron un método para crear múltiples particiones lógicas, en estas particiones se ejecutarían varias aplicaciones y procesos al mismo tiempo, que finalmente se les conocieron como “máquinas virtuales”, las cuales trabajaban independientemente una de las otras, y cada una utilizando los recursos proporcionados por el mainframe. Dado que en aquella época los mainframes eran recursos caros, la virtualización permitía aprovechar de una manera eficiente el equipo y con ello recuperar la inversión que se hacía con la compra de estos equipos. En la década de los años 1980, dejando a un lado el uso compartido y centralizado del modelo de mainframe, las organizaciones aprovecharon la llegada de las maquinas x86, y comenzaron a implementar sistemas distribuidos; con esto comenzó una nueva era de las micro-computadoras, aplicaciones cliente-servidor, y la computación distribuida, donde los enormes y potentes mainframes multitarea de un solo hardware y de tamaño bastante grande se comenzaron a cambiar por servidores arquitectura x86.

No hay comentarios:

Publicar un comentario