Monday, October 26, 2009

Las ventajas de la virtualización


Las computadoras usan un sistema operativo normalmente, pero a veces queremos utilizar alguno otro sin perder, por supuesto, el sistema que normalmente usamos. Un ejemplo de esto es querer usar Linux dentro de una PC con Windows. Una opción es instalar en otra partición del disco duro el nuevo sistema operativo e intentar usar un programa para correr la partición deseada al prender la computadora. Esto conlleva la necesidad de cierta pericia técnica para no errar y de pronto quedarse sin poder arrancar en ninguna de las particiones que tiene el disco duro. La segunda opción es usar un programa de virtualización, que permite instalar "virtualmente" valga la redundancia, un nuevo sistema operativo, que corre en una ventana pero que no requiere de crear una partición para el nuevo sistema que se está instalando. Digamos que todo corre en un ventana con un sistema operativo que corre, para decirlo coloquialmente, en modo virtual, es decir, está pero no está, algo muy parecido a los espejos. Cuando uno se asoma al espejo se ve nuestra imagen, pero ¿estamos en el espejo o no estamos?

Otro ejemplo de la virtualización es precisamente el lenguaje de programación Java y por supuesto, la máquina virtual que lo hace funcionar. Java es una computadora diseñada toda en software. Así, los creadores de esta "máquina" pueden generar código (llamado en ocasiones código-p o pseudocódigo), y correr las aplicaciones que ahí se generen. La ventaja es que los creadores de Java han creado la misma máquina virtual para diferentes sistemas operativos y entonces, al menos en principio, una aplicación escrita en Java en Windows debe correr sin cambios en la misma máquina virtual en una Mac, o en Linux, por ejemplo.

Sun MicroSystems tiene un programa gratuito llamado VirtualBox, el cual puede bajarse de este sitio y permite poder instalar virtualmente otros sistemas operativos. De esta manera nos libramos de tener que lidiar con particiones, de cómo "bootear" el equipo, etc. Todo lo resuelve el software que en una ventana nos muestra el nuevo sistema operativo instalado como si de verdad lo hubiésemos instalado directamente en nuestro disco duro, (aunque estrictamente los sistemas que virtualizan "instalan" programas que necesitan, entre otras cosas, esto no se ve ni afecta al sistema operativo que "hospeda", por decirlo de alguna manera, al sistema que se pretende virtualizar.

Pues bien, hace tiempo hablé ya de los microcontroladores "Pic", de una empresa que se hace llamar Microchip. Las entradas a estos artículos pueden verse aquí, aquí y aquí también. Aprendí lo elemental para programar estos microcontroladores, que son computadoras completas en un chip, sin lugar a dudas. Para ello usaba una tarjeta de entrenamiento, en donde ponía el microcontrolador (programado en otro dispositivo vía usb) y alambraba las patas a los leds o displays o los elementos electrónicos que fuesen necesarios. Probaba mi programa y si algo fallaba tenía que ver qué estaba mal, volver a reprogramar el pic y quizás cambiar algún cable que estaba mal puesto, etc.

Pensando en esto y en un proyecto que llevo meses cocinando, se me ocurrió que tenía que hacerme de una tarjeta de entrenamiento como la que usé en mi curso para así crear mis prototipos. Pero entonces pensé: ¿qué tal si hay un emulador, un simulador, un programa que haga virtual esta tarjeta entrenadora? Si es así, me ahorraría el costo de la misma y el prototipo podría hacerse fácilmente en la computadora misma. Se probaría ahí y los cambios que hubiesen que hacerse, sería mucho más sencillos de realizar.

Encontré entonces Proteus, quizás el mejor programa de virtualización de los chips Pic, aunque puede emular otras familias de microcontroladores. La gracia de esto es que en Proteus se pueden poner los elementos electrónicos que se desean probar, hacer las conexiones dando clicks y uniendo con cables virtuales las patas del procesador con los circuitos como el display LCD o los leds, por ejemplo. Pero Proteus va más allá, pues puede crear incluso el circuito impreso del prototipo. Proteus simula un "protoboard", que es una tableta en donde se pueden colocar elementos de la electrónica y probarlos. Muchos desarrollos, sino es que todos, pasan por lo general por estos protoboards (ver figura).

Desafortunadamente Proteus es más costoso que una tarjeta de entrenamiento como ésta. Oscila su precio por ahí de los 650 dólares, y desde luego, es más versátil que hardware como el que he mencionado. Así que hice una búsqueda en Internet y encontré que hay otros emuladores y virtualizadores (que es lo mismo), de microcontroladores Pic. Hallé uno interesante y versátil, el Real Pic Simulator, que por tan sólo 29 dólares, permite simular lo que haríamos en una tarjeta entrenadora como la que usé, con la ventaja de no necesitar cables, displays, pinzas, desarmadores, etc. Los elementos más comunes en la simulación de prototipos usando Pic's están al alcance del usuario en este programa. El software contiene un debugger y un programa para trazar lo que va haciendo el software que pretendemos que corra en el microcontrolador Pic.

He empezado pues mi prototipo con este sistema, aunado al compilador que usé en el curso que tomé hace tiempo. Todo es compatible y pienso que es un buen esquema de desarrollo. Desde luego, cuando este prototipo esté funcionando, habrá que hablar con algún ingeniero en electrónica para -precisamente- ya pasar de la virtualización a la realidad y así ver un prototipo funcional. Seguiremos informando.

3 comments:

Ernesto said...

En ambientes de servidores, la virtualización permite utilizar mejor el hardware al mantener poco ociosos los CPU.

Otra ventaja es la posibilidad de migrar máquinas virtuales "en caliente" de un servidor físico a otro para dar servicio al hardware, sin interrumpir el servicio.

Servidores como DHCP o DNS es bueno virtualizarlos porque casi no consumen recursos y si se caen, símplemente sacas una copia del respaldo y los pones en otro hardware en cuestión de minutos.

Yo uso VirtualBox de Sun. Antes usaba un Parallels viejito pero con la actualización a Snow Leopard ya no funcionó.

Saludos,
Ernesto

gsur said...

La electrónica digital es fascinante y mas cuando empiezas a entender como funciona, por esa razón quiero colaborar recomendando otro software para diseño y prueba de circuitos digitales que se llama Digital Works, la versión que yo utilice hace ya algunos años era gratuita pero investigando nuevamente sobre esta herramienta en su sitio tienen una versión demo que se puede descargar en http://www.electronics-lab.com/downloads/schematic/002/index.html espero les sirva, desde mi punto de vista es un software sencillo pero con lo suficiente para realizar varios proyectos e incluso no se si esta versión tenga ejemplos, pero en versiones pasadas incluian varios ejemplos desde basicos hasta avanzados.

Jesús said...

A mi me encanta el Virtual Box. Windows XP corre excelente sobre el Leopard. Mi hermano se puso a experimentar y logró poner el Windows 3.1 en una máquina virtual. Nos trajo muchos recuerdos. Recomendado para un rato de ocio