miércoles, 31 de agosto de 2016

MAQUINAS VIRTUALES


MAQUINAS VIRTUALES
En informática una máquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real.
Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual".
Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en nuestra computadora y sin miedo a que se des configure el sistema operativo primario.

Tipos de Máquinas Virtuales
 Las máquinas virtuales se pueden clasificar en dos grandes categorías según su funcionalidad y su grado de equivalencia a una verdadera máquina:
• Máquinas virtuales de sistema (en inglés System Virtual Machine). También llamadas máquinas virtuales de Hardware, permiten a la máquina física subyacente multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de Software que permite la virtualización se la llama monitor de máquina virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el Hardware o bien sobre un sistema operativo ("host operating system").
 • Máquinas virtuales de proceso (en inglés Process Virtual Machine). A veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente 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 ejecución independiente de 1 Tal y como puede verse reflejado en la definición de máquina virtual, en este texto nos estamos focalizando en las máquinas virtuales de sistema. Existen otro tipo de máquinas virtuales, como por ejemplo las máquinas virtuales de proceso o los emuladores. 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.

 Aplicaciones de las Máquinas Virtuales de Sistema
Varios sistemas operativos distintos pueden coexistir sobre la misma computadora, en sólido aislamiento el uno del otro, por ejemplo para probar un sistema operativo nuevo sin necesidad de instalarlo directamente. La máquina virtual puede proporcionar una arquitectura de instrucciones que sea algo distinta de la verdadera máquina. Es decir, podemos simular Hardware. Varias máquinas virtuales –cada una con su propio sistema operativo 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 máquina de manera completamente aislada y compartiendo los recursos de una única computadora.
 La consolidación 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 virtualización es una excelente opción hoy día, ya que las máquinas actuales (Laptops, desktops, servidores) en la mayoría de los casos están siendo "subutilizados" (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 máquinas en una ya existente permite un ahorro considerable de los costos asociados (energía, mantenimiento, espacio, etc). La gran mayoría de máquinas virtuales, como por ejemplo KVM, Virtualbox o VMWare, permiten instalar prácticamente cualquier sistema operativo como por ejemplo Linux, Android, Mac OS X, Windows, Chrome OS, etc. Sin embargo existen otras máquinas virtuales, como por ejemplo Virtual PC, Hiper-V o Parallels, que están principalmente destinadas a virtualizar Windows. Cada uno de los sistemas operativos que virtualizamos es completamente independiente de los otros sistemas operativos. De este modo en el caso que una de las máquinas virtuales deje de funcionar, el resto seguirá funcionando sin ningún tipo de problema.
 Una vez instalado un sistema operativo en la máquina virtual, tenemos que usar el sistema operativo virtualizado del mismo modo que lo usaríamos si lo hubiéramos instalado en nuestro ordenador. Una máquina virtual dispone de todos los elementos de que dispone un ordenador real. Dispone de disco duro, memoria RAM, unidad de CDROM, tarjeta de red, tarjeta de vídeo, etc, pero a diferencia de un ordenador real estos elementos en vez de ser físicos son virtuales. Todos los elementos de una máquina virtual se encapsulan en un conjunto de archivos. Esto permite que podamos copiar un sistema operativo virtual de un ordenador a otro o que podemos realizar copias de seguridad sin ningún tipo de problema, de forma fácil y rápida.

Diferentes Máquinas Virtuales
  1.  VirtualBox
  2.  VMware
  3.  Virtual PC
  4.  KVM
  5.  Xen
  6.  BOCHS de licencia GPL.
  7.  QEMU de licencia GPL.
  8.  Virtuozzo, software propietario
  9.  Mac on Linux
  10.  Basilisk II
  11.  SheepShaver

martes, 9 de agosto de 2016

PROCESOS E HILOS


En esta entrada vamos a ver las diferentes maneras de como trabajar con Threads en Java (o hilos en español). Sino tienes muy claro el concepto de la multitarea te recomendamos que te leas primero la entrada de Multitaréa e Hilos, fácil y muchas ventajas aunque en esta entrada también veremos (en menor detalle) los conceptos y las ventajas de la multitarea.
En esencia la multitarea nos permite ejecutar varios procesos a la vez; es decir, de forma concurrente y por tanto eso nos permite hacer programas que se ejecuten en menor tiempo y sean más eficientes. Evidentemente no podemos ejecutar infinitos procesos de forma concurrente ya que el hardware tiene sus limitaciones, pero raro es a día de hoy los ordenadores que no tengan más de un núcleo por tanto en un procesador con dos núcleos se podrían ejecutar dos procesos a la vez y así nuestro programa utilizaría al máximo los recursos hardware. Para que veáis la diferencia en un par de imágenes, supongamos que tenemos un programa secuencial en el que se han de ejecutar 4 procesos; uno detrás de otro, y estos tardan unos segundos:

En Java para utilizar la multitarea debemos de usar la clase Thread (es decir que la clase que implementemos debe heredar de la clase Thread) y la clase Thread implementa la Interface Runnable. En el siguiente diagrama de clase mostramos la Interface Runnable y la clase Thread con sus principales métodos:

En esta entrada no vamos a ver como utilizar todos los métodos de la clase Thread, pero os los mostramos para que sepáis que existen y a parte por su nombre podéis intuir su funcionalidad.
En esta entrada vamos a poner un ejemplo para que veáis las ventajas de la multitarea, viendo como se ejecutaría un programa sin utilizar la multitarea y otro utilizándola.
En este ejemplo vamos a simular el proceso de cobro de un supermercado; es decir, unos clientes van con un carro lleno de productos y una cajera les cobra los productos, pasándolos uno a uno por el escaner de la caja registradora. En este caso la cajera debe de procesar la compra cliente a cliente, es decir que primero le cobra al cliente 1, luego al cliente 2 y así sucesivamente. Para ello vamos a definir una clase “Cajera” y una clase “Cliente” el cual tendrá un “array de enteros” que representaran los productos que ha comprado y el tiempo que la cajera tardará en pasar el producto por el escaner; es decir, que si tenemos un array con [1,3,5] significará que el cliente ha comprado 3 productos y que la cajera tardara en procesar el producto 1 ‘1 segundo’, el producto 2 ‘3 segundos’ y el producto 3 en ‘5 segundos’, con lo cual tardara en cobrar al cliente toda su compra ‘9 segundos’.
EJEMPLO DE PROCESOS E HILOS:
VER VIDEO: https://www.youtube.com/watch?v=ZoCk8w86JlU


SYMBIAN OS


SYMBIAN OS

El célebre sistema operativo cuyo principal benefactor era Nokia que durante años dominó en el mercado estando en los terminales de los principales fabricantes, y que acabó desapareciendo el año pasado tras no haberse sabido adaptar a la era de los smartphones y las pantallas táctiles.

INICIOS DE SYMBIAN


Para empezar a hablar de la historia de Symbian, nos tenemos que remontar muchos años atrás, mucho más allá de los inicios de los smartphones con pantalla táctil, allá por el 2007. Tenemos que retroceder hasta 1998 y hablar de EPOC. EPOC era un sistema operativo desarrollado por Psion principalmente para PDAs. Concretamente, hablamos de EPOC32, que fue escrito en C++ y cuyo desarrollo comenzó durante mediados de los 90, y del cual hubo cinco actualizaciones. Todo esto cambió en junio de 1998, cuando Psion Software se convirtió enSymbian Ltd. una empresa conjunta entre Psion y fabricantes comoEricsson, Motorola y Nokia, por lo que a partir de la sexta actualización, EPOC32 pasó a ser conocido como Symbian OS.





VICTIMA DE LA ERA DE LOS SMARTPHONES

Tras una pausa más larga de lo que nos hubiera gustado, hemos vuelto. Esta semana volvemos a traer otra edición de Sistemas operativos muertos. Tras haber visto MeeGoBada y WebOS, esta semana traemosla historia de Symbian, el célebre sistema operativo cuyo principal benefactor era Nokia que durante años dominó en el mercado estando en los terminales de los principales fabricantes, y que acabó desapareciendo el año pasado tras no haberse sabido adaptar a la era de los smartphones y las pantallas táctiles. ¿Listos para un viaje atrás en el tiempo?

CAIDA DE SYMBIAN: LA ERA DEL IPHONE
En enero de 2007, Steve Jobs asombró al mundo con el iPhone de la compañía Apple. Bueno, en realidad para muchos no fue un amor a primera vista para muchos, y no fue hasta el iPhone 3G cuando verdaderamente se vió la importancia de lo que acabábamos de ver. Symbian quizás fue una de las que no logró ver el valor potencial que tenía la plataforma creada por Apple, al igual que le pasó a Steve Ballmer. Esto es un hecho por el que pocos pueden ser culpados, el no ver la tendencia que iba a marcar, sino que se debe culpar por el hecho de no haberla seguido.




Y esto es precisamente lo que le pasó a Symbian, al igual que a BlackBerry: no sólo no supo adaptarse a los tiempos, sino que no siguió la corriente ganadora que marcó el iPhone desde un principio, a diferencia de otros como Android. Este pensamiento arrastró también a Nokia de forma indirecta cuando, en junio de 2008, la compañía ahora propiedad de Microsoft adquirió Symbian Ltd., acordando la compra con sus restantes socios. Bajo este acuerdo Nokia se convirtió en el más importante contribuyente de la firma y, a su vez fue fundada una organización sin ánimo de lucro denominada Symbian Foundation.
La Symbian Foundation fue creada con varios propósitos: dar a conocer, coordinar y asegurar compatibilidad entre diferentes versiones de Symbian y diferentes dispositivos. También actuó como un enlace para la comunidad, aportando servicios clave a sus miembros como la colección, escritura y distribución y distribución de código Symbian, ya que la fundación solo aportaba las herramientas y nunca escribía ningún tipo de código. Esto nos recuerda en cierto modo a lo que vemos hoy en día con Android y AOSP (Android Open Source Project) cuyas funciones no son muy diferentes a lo que hacía la Symbian Foundation.

Evidentemente, el tirón que tenía Symbian no iba a perderlo de la noche a la mañana, al igual que Nokia, uno de sus principales benefactores, ya quehasta finales de 2010 serían líderes en ventas a nivel mundial, siendo superados a principios de 2011 por iOS. Pero no había dudas en cuanto a la situación: era un síntoma definitivo de caída, tras la superación por parte de Android en Europa, dejando atrás a iOS y Symbian. El resto de camino que quedaba era cuesta abajo y sin frenos, y los siguientes meses serían muestra de ello, por mucho que Symbian y Nokia hicieran por remediarlo.
En 2010, Symbian^3 (Symbian OS 9.5) fue presentado y liberado al público y, aunque las pantallas táctiles era evidentemente el camino a seguir, no había todavía una base de usuarios masiva de dispositivos táctiles para que los desarrolladores comercializar. De hecho, aunque había planeado una actualización a Symbian^4, ésta nunca llegó. Además, seguía habiendo un grave problema de fragmentación ya que había algunas aplicaciones que funcionaban en los S60 quinta edición, pero no funcionaban en Symbian^3.

Sin embargo, el último clavo en el ataúd estaba aún por llegar, e iba a venir por aquella compañía que en su día apostó por Symbian cuando todas las demás desistieron, comprando Symbian en su totalidad. El 11 de febrero de 2011, Nokia anunció una colaboración con Microsoft que permitiría a Nokia tener Windows Phone como su plataforma móvil para smartphones de forma primaria, dejando a Symbian en plano secundario. Esto fue desastroso para Symbian, ya que una investigación realizada en junio de ese mismo año indicaba que casi un 40% de desarrolladores que trabajaban con Symbian abandonarían próximamente la plataforma. Era un barco que se hundía y no había nada que hacer para remediarlo.
A partir de aquí, Nokia comenzó a cerrar filas, cesando el 5 de abril de 2011 cualquier cesión de software Symbian de forma libre y reduciendo su colaboración a un pequeño grupo de partners en Japón. Más adelante, en diciembre de 2011, Nokia sustituye la denominación Symbian por Nokia Belle hacia el público como parte de sus planes de unificación de marcas. Sin embargo, el sistema operativo Symbian seguiría llamándose como tal de forma interna y de cara a los desarrolladores para no provocar confusión, como un símbolo de resistencia a su próxima desaparición.

Desafortunadamente, este lavado de cara no motivó a los desarrolladores para nada y durante el 2012 no hubo noticias de relevancia del sistema operativo que en su día arrasó en el mercado. Cero. Nada. Y si algo necesita un sistema operativo (o cualquier cosa, dicho sea de paso) es publicidad, sea buena o mala, y que los focos de atención estén pendientes de él. Symbian había perdido hasta eso y otros jugadores en el tablero habían ocupado su lugar. Lo único que le quedaba era ver cuando Nokia decidía prescindir de sus servicios y jubilar a Symbian.
En enero de 2013, sin embargo, hubo una cierta sorpresa, seguido de una nota aclaratoria que explicaba el por qué de esta sorpresa: Nokia presentaba el Nokia 808 Pureview, un Symbian con una espectacular cámara de 41 megapíxeles, siendo el primero en su clase en ofrecer una lente Carl Zeiss con la tecnología PureView, precursor de lo que veríamos con el Lumia 1020. Pero este móvil llegaba con una mala noticia bajo el brazo, y es que sería el último modelo de la compañía con este sistema operativo, y por tanto, el último teléfono con Symbian.

Con el apartado del hardware despachado, sólo quedaba por saber que pasaría con el software, ya que tanto Symbian y MeeGo todavía tenían soporte para subir nuevos contenidos a su tienda y actualizarlos. Esto finalizó el 1 de enero de este año, a pesar de que Elop anunció que Symbian recibiría soporte hasta 2016, cortando el acceso a Symbian de contenido nuevo o actualizaciones de lo que ya hubiera en la tienda de aplicaciones, aunque sí podías descargar lo que hubiera ya disponible para esas plataformas. Symbian había muerto.



ACTUALIDAD  DE SYSMBIAN

Podríamos decir que Symbian tuvo una segunda vida como está teniendo webOS, o sufrió una especie de reencarnación como la que vimos en Bada con Tizen o MeeGo con el smartphone Jolla, o incluso que vivió en una granja a las afueras de la ciudad. Pero sería engañarles. Symbian fue un producto que, aunque dió lo que los usuarios demandaban en su día, no supo adaptarse a los tiempos y por tanto fue víctima de su propia negativa a evolucionar.

Además, dentro de la historia de Symbian, no debemos olvidar a quién arrastró en su caída: Nokia, una empresa que era líder en el sector, y que acabó vendida a Microsoft por (al menos bajo mi opinión) un precio insuficiente. Podemos echarle las culpas a su negativa a usar pantallas táctiles hasta que fue demasiado tarde, o su software lento y fragmentado, cuando lo más correcto sería echarle la culpa a todo el conjunto. Este negocio va de innovación y progreso y, resumiendo, Symbian no supo estar a la altura de las circunstancias.