2.2 Arquitecturas

Antes de iniciar con la definición de la arquitectura de los sistemas, comenzaremos por entender qué es el Sistemas Operativo. 
Un Sistema Operativos es un programa con instrucciones específicas para poder manejar el software a través del hardware, es decir, el SO nos permite manejar las diversas aplicaciones que se instalaron en el ordenador. 


Muchas veces se confunde al SO con los paquetes de aplicaciones que utilizamos comúnmente como son: procesadores de texto, editores de imagen, entre otras. El sistema operativo puede tener una interfaz gráfica que es el que comercialmente se utiliza, o puede ser con una interfaz de comandos la cual es más compleja. 
La arquitectura de sistemas es un conjunto de instrucciones en las cuales se incluye los modos de direccionamiento, registros y formatos de de direcciones y datos aportados por el procesador. 
Entre las arquitecturas más importantes, por decir de algún modo, se encuentran la de 32 bits y la de 64 bits. 
En arquitectura de computadoras, 16 bits, 32 bits o 64 bits es un adjetivo usado para describir enteros, direcciones de memoria u otras unidades de datos que comprenden hasta 16 bits, 32 bits o 64 bits de ancho. Se utilizan para referirse a una arquitectura de procesador basadas en registros, bus de direcciones o bus de datos que permiten procesar (interna y externamente) datos de ese ancho. Cada familia de procesadores tiene una capacidad distinta de reconocer los datos, por lo tanto no se puede poner un conjunto de instrucciones distintas en ellos. Esto sucede cuando la capacidad de la arquitectura del sistema es mayor al rendimiento del procesador pero siendo a la inversa, esto es posible. 
La principal diferencia entre la arquitectura de 32 bits con la de 64 bits es que mientras la primera realiza ciclos de 32 bits, la segunda realiza el doble de ciclos al momento que la otra, permitiendo así, la lectura de más datos en mayor velocidad y un mayor rendimiento. 
Tenemos también un ejemplo importante como lo es Windows que en su direccionamiento de memoria RAM, la arquitectura de 32 bits permite sólo 4GB de los cuales sólo podremos utilizar 3.25Gb y en la segunda arquitectura nos permite ocupar hasta 192 Gb. 



Ambas arquitecturas se refieren al almacenamiento. La arquitectura de 32 bits guarda hasta 32 bits de algo, así mismo la de 64 bits, guarda 64 bits de algo en el mismo tiempo que el anterior ya que los registros de éste son de mayor tamaño. Aunque un sistema tenga arquitectura de 64 bits no necesariamente se van a ocupar al máximo esta capacidad de almacenamiento. Todo depende de la compatibilidad con el procesador. 

BITS 64 

Si micro arquitectura describe las instrucciones poniales de 64 ponys o lo que es igual a 8 octetos (64 bits). 
La arquitectura de las computadoras describe datapath, enteros, direcciones de memoria, u otras unidades de 64 bits. 
64 bits significa el uso de código con direcciones virtuales de 64 bits. 

BITS DE 32 

Este término se usa para micro arquitectura de CPU y ALU para describir registros, bus de datos, bus de direcciones o instrucciones. 
En la arquitectura de las computadoras se ocupa describir enteros, direcciones de memoria, sistemas operativos u otras unidades de este. 
Los buses de datos y de direcciones son usualmente más anchos que 32 bits, a pesar de que éstas se almacenen y manipulen internamente en el procesador como cantidades de 32 bits. 

Conclusión. 

Cuando nos referimos a la arquitectura de un sistema, nos referimos a la capacidad de almacenamiento que tiene éste. Debemos tener en cuenta que para la arquitectura de un sistema debemos tener un procesador compatible, es decir, que si tenemos un sistema de 64 bits no podemos tenerlo en un procesador de 32 bits ya que no es compatible. Sin embargo, si tenemos un procesador de 64 bits si podemos utilizar en él un sistema de 32 bits ya que éste es más pequeño y por lo tanto puede ser compatible. 
También tenemos que para ocupar al máximo nuestro sistema en un procesador debemos ayudarnos también con un sistema operativo adecuado para ambos. Es por eso que se relaciona nuestro hardware con el sistema (32 bits o 64 bits), y así mismo, con el sistema operativo de nuestro agrado. 


¿Qué es una máquina virtual?


Una maquina virtual viene a ser un Software que emula a un Ordenador.
Una máquina virtual (MV) o virtual machine (VM) es una implementación de software de una máquina física 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 físico. Crea un entorno virtual entre el sistema operativo y el hardware para que el usuario final pueda ejecutar aplicaciones en una máquina abstracta. Por decirlo de manera más sencilla, una máquina virtual es una aplicación que simula el funcionamiento de una máquina real sobre la que se pueden instalar sistemas operativos, aplicaciones, navegar de forma segura, imprimir desde alguna aplicación, usar los dispositivos USB, etc. La máquina virtual se comporta exactamente igual que un ordenador físico y contiene su propia CPU virtual, memoria, disco duro y tarjeta de interfaz de red. Una máquina virtual se compone exclusivamente de software y no contiene ninguna clase de componente de hardware.
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".
Concepto de virtualización


Virtualizar significar aparentar que algo con una forma tiene otra. Virtualizar un ordenador significa aparentar que se trata de múltiples ordenadores o de un ordenador completamente diferente. Virtualización tambien puede significar conseguir que varios ordenadores parezcan uno solo. A este concepto se le suele denominar agregación de servidores (server aggregation) o grid computing.


Tipos de virtualización


La virtualización se puede hacer desde un sistema operativo Windows, ya sea XP, Vista u otra versión que sea compatible con el programa que utilicemos, en el que virtualizamos otro sistema operativo como Linux o viceversa, que tengamos instalado Linux y queramos virtualizar una versión de Windows.
Virtualización de hardware
Virtualización asistida por Hardware son extensiones introducidas en la arquitectura de procesador x86 para facilitar las tareas de virtualización al software ejecutándose sobre el sistema. Si cuatro son los niveles de privilegio o anillos de ejecución en esta arquitectura, desde el cero o de mayor privilegio, que se destina a las operaciones del kernel de SO, al tres, con privilegios menores que es el 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 virtualización.

La virtualización de almacenamiento


Se refiere al proceso de abstraer el almacenamiento lógico del almacenamiento físico, y es comúnmente usado en SANs ("Storage Area Network" Red de área de almacenamiento).Los recursos de almacenamiento físicos son agregados al "storage pool" (almacén de almacenamiento), del cual es creado el almacenamiento lógico.
Máquina virtual
Básicamente una máquina virtual (MV) o virtual machine (VM) como más nos gusta llamarlas a nosotros es una implementación de software de una máquina física ya sea un servidor o una pc. Estas máquinas virtuales utilizan recursos físicos como cpu, memoria y disco rígido del equipo físico donde corren los cuales le permiten a la misma correr un sistema operativo.

Tipos de máquinas virtuales


Ejemplo de máquina virtual de hardware, mediante vmware.


La JVM es un ejemplo de máquina virtual de proceso.
Máquinas virtuales de hardware
Las máquinas virtuales de hardware también llamadas máquinas virtuales de sistema, son aplicaciones que tratan de emular directamente el hardware. Las llamadas al hardware del sistema operativo instalado serán capturadas y convertidas en llamadas al sistema del hardware emulado. En general, la emulación del hardware recibe el nombre de virtualización. Al emularse directamente el hardware, el usuario tiene la impresión de que la máquina sobre la que está trabajando es totalmente independiente. Estas maquinas virtuales, 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 software


Las máquinas virtuales de software también llamadas como máquinas virtuales de proceso, este tipo de máquinas virtuales se sitúan por encima del sistema operativo y tratan de aislar a las aplicaciones del entorno sobre el que se ejecutan. 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 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 máquina virtual de Java o la máquina virtual del entorno .NET son dos claros ejemplos de máquinas virtuales software.
Técnicas de implementación de las maquinas virtuales

Emulación del hardware subyacente (ejecución nativa) o Virtualización completa


La virtualización completa utiliza un hipervisor para compartir el hardware subyacente.
La virtualización completa, también llamada virtualización nativa, es otra interesante técnica de virtualización. Este modelo utiliza una máquina 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 través 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 máquina virtual puede ejecutar cualquier sistema operativo soportado por el hardware subyacente. Así los usuarios pueden ejecutar dos o más sistemas operativos distintos simultáneamente en computadoras "privadas" virtuales.
Emulación de un sistema no nativo
Las máquinas virtuales también 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 teoría no soportan. Algunas máquinas virtuales emulan hardware que sólo existe como una especificación. Por ejemplo:
• La máquina virtual P-Code que permitía a los programadores de Pascal crear aplicaciones que se ejecutasen sobre cualquier computadora con esta máquina virtual correctamente instalada .
• La máquina virtual de Java .
• La máquina virtual del entorno .NET .

Paravirtualización


La paravirtualización comparte el proceso con el SO alojado (Guest OS).
La paravirtualización es otra técnica popular que cuenta con algunas similitudes con la virtualización completa. Este método utiliza un hipervisor para compartir el acceso al hardware subyacente pero integra código que está al tanto de la virtualización en el propio sistema operativo. Esta aproximación evita la necesidad de recompilar y capturar ya que los propios sistemas operativos cooperan en el proceso de virtualización. , la paravirtualización precisa que los sistemas operativos alojados sean modificados por el hipervisor, lo que es una desventaja. Pero la paravirtualización ofrece un rendimiento próximo al de un sistema no virtualizado. Del mismo modo que con la virtualización completa, es posible soportar varios sistemas operativos diferentes de manera concurrente.

Virtualización en el nivel del sistema operativo



La virtualización en el nivel del sistema operativo aísla a los servidores.
Esta técnica consiste en dividir una computadora en varios compartimentos independientes de manera que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del usuario, el sistema en su conjunto actúa como si realmente existiesen varios servidores ejecutándose en varias máquinas distintas. Dos ejemplos son las zonas de Solaris (Solaris Zones) y la técnica de Micro Partioning de AIX. La virtualización en el nivel del sistema operativo, utiliza una técnica diferente a las que hemos visto. Esta técnica virtualiza los servidores encima del propio sistema operativo. Este método soporta un solo sistema operativo y simplemente aísla los servidores independientes. La virtualización en el nivel del sistema operativo requiere cambios en el núcleo del sistema operativo, la ventaja es un rendimiento igual a la ejecución nativa.

Ventajas de las máquinas virtuales


La capacidad de aprovechar al máximo el hardware disponible ofrece una gran cantidad de posibilidades a nivel empresarial y a nivel doméstico.
• Consolidación de servidores: Convertir muchos servidores físicos en virtuales. De este modo se aprovecha el hardware disponible de la mejor manera posible.
• Recuperación ante desastres: Las máquinas virtuales se pueden salvar muy fácilmente, y además su estado se puede almacenar, por lo que en caso de desastre se puede recuperar la información con rapidez.
• Pruebas de aplicaciones: En muchas ocasiones se necesita un entorno limpio para probar una aplicación. Usar una máquina virtual permite instalar un sistema operativo desde cero, probar la aplicación y luego eliminar la máquina.
• Ejecución de entornos completos sin instalación ni configuración: La posibilidad de descargar máquinas virtuales desde Internet permite ahorrar tiempo en instalaciones y configuraciones. Existen muchas máquinas virtuales con servidores LAMP (Linux, Apache, mySQL y PHP) completos listos para ser usados, máquinas con gestores de contenidos, wikis, etc., gratuitos y funcionales desde el primer momento.
• Aplicaciones portátiles: Con el uso de las máquinas 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 maquinas virtuales


Una de las razones por que las máquinas virtuales, no son la panacea de la computación, es que agregan gran complejidad al sistema en tiempo de ejecución. La principal desventaja de la máquina virtual, es que en la aplicación de algunos proceso tendrá como efecto la lentitud del computador, es decir, la computadora en la cual se esta ejecutando este proceso debe tener una capacidad bastante notable “debe ser de gran capacidad o potente”.
Los lenguajes basados en máquina virtual, poseen una desventaja es que efectivamente son más lentos que los lenguajes completamente compilados, debido a la sobrecarga que genera tener una capa de software intermedia entre la aplicación y el hardware de la computadora, sin embargo, Esta desventaja no es demasiado crítica.

Lista de hardware con soporte para Virtualización


• AMD-V (anteriormente llamado Pacifica)
• ARM TrustZone
• Boston Circuits gCore (grid-on-chip) con núcleos 16 ARC 750D y módulo de virtualización de hardware Time-machine.
• Freescale PowerPC MPC8572 y MPC8641D
• IBM System/370, System/390 y mainframes ZSeries
• Intel VT (anteriormente llamado Vanderpool)
• SPARC de Sun Microsystems

Listado de algunas maquinas virtuales


Máquinas virtuales de proceso

• Common Language Runtime - C#, Visual Basic .NET, J#, Managed C++
• EiffelStudio para el lenguaje de programación Eiffel
• Lenguaje de programación Erlang
• Forth virtual machine - Forth
• Glulx - Glulx, Z-code

Máquinas virtuales de sistema

• VThere (de Sentillion, Inc. )
• ATL (A MTL Virtual Machine)
• Bochs emulador de PC x86 y AMD64, portátil y open source
• CoLinux Open Source Linux inside Windows
• Denali, uses paravirtualization of x86 for running para-virtualized PC operating systems.
• FAUmachine

Máquinas virtuales a nivel de sistema operativo

• OpenVZ
• Virtuozzo
• FreeVPS
• Linux-VServer

No hay comentarios.:

Publicar un comentario