| Artículos | 01 JUN 2006

Virtualización

Tags: Histórico
O cómo disponer de más de un ordenador virtual sobre uno físico
Eugenio Barahona.
Con el desarrollo de los sistemas operativos modernos se han ido, poco a poco, virtualizando algunos recursos del hardware del ordenador como, por ejemplo, la memoria. Pero, &#191;qu&#233; quiere decir virtualizar? En pocas palabras, podr&#237;amos decir que consiste en conseguir que algo inexistente parezca algo real, algo f&#237;sico. Y en el campo de los sistemas operativos, una acepci&#243;n posible consistir&#237;a en la serie de tecnolog&#237;as, tanto hardware como software, que permiten que sobre un mismo ordenador se ejecuten varios sistemas operativos de forma concurrente, de manera que cada uno de ellos opere como si estuviese corriendo sobre un hardware que no comparte con ning&#250;n otro.<br>Desde hace a&#241;os han existido soluciones software que consegu&#237;an ejecutar unos sistemas operativos dentro de otros, o que incluso virtualizaban arquitecturas de microprocesador totalmente distintas de la del host en que se ejecutaba el software de virtualizaci&#243;n. Sin embargo, hasta ahora, no exist&#237;a un soporte hardware dise&#241;ado espec&#237;ficamente para conseguir un mejor rendimiento del software que corr&#237;a sobre los ordenadores virtuales que se generaban con este tipo de productos. Recientemente, tanto Intel como AMD, han desarrollado diversos mecanismos de apoyo por hardware a las tareas de virtualizaci&#243;n, por lo que tan s&#243;lo es cuesti&#243;n de tiempo que aparezcan los primeros sistemas operativos con este tipo de soporte o bien soluciones de otro tipo que simplemente crear&#237;an m&#225;quinas virtuales sobre las que se instalar&#237;a el o los sistemas operativos que el usuario desee.<br><br>Terminolog&#237;a b&#225;sica<br>Los principales conceptos que hay que comprender en el campo de la virtualizaci&#243;n son el de host y cliente o invitado. El primero de ellos hace referencia a un sistema operativo o a un software concreto que dispone de la capacidad de crear m&#225;quinas virtuales sobre una plataforma f&#237;sica, haciendo posible que el software invitado (normalmente un sistema operativo completo) crea que se est&#225; ejecutando sobre un ordenador completo sobre el que puede controlar todos los recursos de su hardware. El host no tiene que ser un sistema operativo, ya que puede tratarse de una aplicaci&#243;n que sea la que toma el control del sistema cuando &#233;ste arranca, proporcionando al usuario una interfaz m&#237;nima que le permita seleccionar qu&#233; m&#225;quinas virtuales desea arrancar junto con el sistema operativo asociado a la misma. Sin embargo, tambi&#233;n es posible desarrollar sistemas operativos que dispongan de servicios de virtualizaci&#243;n de la plataforma hardware, abriendo la puerta, por ejemplo, a la posibilidad de arrancar un sistema operativo desde dentro de otro sin que ambos se interfieran.<br><br>AMD<br>Este fabricante de procesadores ha publicado, de momento, una especificaci&#243;n denominada IOMMU que detalla el funcionamiento de los mecanismos de virtualizaci&#243;n de los recursos de entrada/salida que va a implementar en sus nuevos productos. Esta documentaci&#243;n se centra especialmente en c&#243;mo proteger zonas de memoria frente a accesos de tipo DMA, ya que dichos accesos son iniciados y controlados normalmente por hardware externo al microprocesador y se efect&#250;an a trav&#233;s de los buses del sistema, como PCI o el nuevo PCI Express. La tecnolog&#237;a en la que est&#225; trabajando AMD tambi&#233;n hace posible que dispositivos hardware que no son capaces de gestionar m&#225;s de 4 GB de memoria f&#237;sica, puedan acceder a las direcciones de memoria situadas m&#225;s all&#225; de dicho l&#237;mite mediante un sistema de remapeo de direcciones.<br>A pesar de que el bus AGP est&#225; en retroceso, AMD ha incluido un soporte especial para la tabla GART (Graphics Address Remapping Table) que defin&#237;a dicho bus y que permit&#237;a que los procesadores gr&#225;ficos direccionasen texturas almacenadas en la memoria principal del ordenador. De esta forma, los usuarios que empleen un procesador AMD con soporte de virtualizaci&#243;n apoyado por hardware, podr&#237;an, al menos en teor&#237;a, usarlo sobre una placa base relativamente antigua dotada de bus AGP.<br>Sin embargo, quiz&#225; la funci&#243;n m&#225;s cr&#237;tica en un entorno virtualizado sea la que hace posible que un sistema operativo invitado pueda gestionar directamente los recursos de un determinado dispositivo hardware. Esta cuesti&#243;n es importante y en absoluto trivial, ya que hemos de tener en cuenta que podr&#237;a darse una situaci&#243;n en la que m&#225;s de un sistema operativo estuviese ejecut&#225;ndose al mismo tiempo sobre un mismo hardware, todo ello gestionado a trav&#233;s de un software supervisor. Es por ello imprescindible disponer de mecanismos que ordenen y gestionen de forma correcta los accesos que las diversas m&#225;quinas virtuales realizan al hardware que comparten entre s&#237;.<br>Un sistema que soporte IOMMU asigna a cada dispositivo f&#237;sico un dominio de protecci&#243;n y un conjunto concreto de tablas de p&#225;ginas del procesador. Cuando un dispositivo intenta leer o escribir en la memoria del sistema, dicho acceso se intercepta, se determina el dominio de protecci&#243;n al que se ha asignado el dispositivo y se usan las entradas de la tabla TLB (Translation Lookaside Buffer) asociadas a dicho domino para decidir si se permite el acceso y, adem&#225;s, para calcular la direcci&#243;n de memoria f&#237;sica a la que se acceder&#225;.<br>En general puede decirse que el concepto que subyace bajo IOMMU es el de una unidad de gesti&#243;n de memoria muy similar a la integrada en casi todos los microprocesadores modernos, salvo en que realiza traducciones de direcciones de memoria y protecci&#243;n mediante p&#225;gina de memoria frente a accesos realizados desde perif&#233;ricos en lugar de los efectuados por el procesador, los cuales los gestiona la MMU de dicho elemento.<br><br>Algunos l&#237;mites de la propuesta de AMD<br>Sin embargo, IOMMU tambi&#233;n tiene dos limitaciones importantes. La primera consiste en que no proporciona a los dispositivos f&#237;sicos una indicaci&#243;n precisa sobre si ha fallado una operaci&#243;n de acceso a memoria. La segunda viene dada por la arquitectura Hypertransport que emplean los procesadores actuales de AMD para comunicarse entre s&#237; y con otros dispositivos perif&#233;ricos. Ya que un sistema de tipo AMD64 puede contener varios nodos, conectados entre s&#237; a trav&#233;s de Hypertransport, cada uno de dichos nodos debe soportar IOMMU para que as&#237; se protejan todos los accesos a memoria que realicen los perif&#233;ricos independientemente del nodo sobre el que se ejecuten finalmente. Esto es as&#237; debido a que la IOMMU s&#243;lo tiene acceso al tr&#225;fico de datos que pasa a trav&#233;s del nodo en que reside f&#237;sicamente, no pudiendo acceder al tr&#225;fico de datos que tiene lugar en otros nodos de un sistema multiprocesador.<br>Pero, &#191;c&#243;mo se controla por software la IOMMU? El control de este elemento f&#237;sico lo ha implementado AMD mediante una serie de comandos que se escriben en un buffer circular que reside en la memoria del sistema. Cuando se escribe un comando en dicha zona de memoria, el software escribe un nuevo valor en un registro del hardware que indica donde est&#225; situado el &#250;ltimo elemento del buffer circular. La IOMMU detecta dicha escritura y, acto s

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información