Los Sistemas Operativos y su Distribución – Parte III

Tercera parte en la que hablamos acerca de la forma de distribución de los Sistemas Operativos. Aquí vamos a hacer hincapié en la nube, la grid y daremos una breve introducción a la virtualización.

Si quieren pueden pasar por:

La Nube y la Grid

En posts anteriores enunciamos los conceptos tradicionales en el marco de los sistemas operativos. Pero la evolución de la tecnología en las ultimas décadas favoreció el surgimiento de nuevos modelos de computación distribuida. Es el caso de la computación en la nube (cloud computing) y computación en la grid (grid computing). La administración de recursos se hizo mas compleja pues se agrega una arquitectura de software para lograr la abstracción que se pretende en la interacción con estos sistemas y el usuario.

El uso de grid computing, se inicia a principios de los 90s como respuesta a una necesidad planteada desde el mundo científico, facilitando la integración de recursos computacionales. Es una forma de computación distribuida que fue ganando adeptos en universidades, grandes centros de investigación y laboratorios.

Cloud computing, también llamada computación en la nube, es un paradigma que surge con el objetivo de ofrecer servicios de computación a través de Internet. Hasta aquí no queda muy claro cual es la diferencia entre ambos modelos: al fin y al cabo, ambos ofrecen servicios por Internet.

Mas allá de las diferencias planteadas por Foster et al, ambos son modelos de computación distribuida.

Un sistema operativo para la nube (OS cloud computing), también llamado sistema opera­tivo virtual, esta diseñado para administrar los recursos de este entorno, de acuerdo al modelo de prestación. La virtualización, de uso habitual en el contexto de la nube, también define nuevas pautas para la creación, operación y mantenimiento de las maquinas virtuales, servidores e infraestructura.

Una forma de definir la grid es mediante un conjunto de clusters geográficamente dispersos comunicados por redes de alta velocidad y con una infraestructura de software para permitir la interacción e interoperación. Este software es llamado middleware.

¿Es el middleware un sistema operativo? Administra recursos y permite trabajar en forma remota con diferentes grados de abstracción. De acuerdo a la definición tradicional de sistemas operativos, podría entrar en esa categoría. Pero este middleware es complejo de configurar, exigiendo un importante grado de especialización, difícil de conseguir en ambientes no científicos. Ademas esta orientado a administrar un subconjunto de recursos, no todos los recursos.

Sea el contexto que planteemos, la definición mas amplia acerca de que es un sistema operativos, lo generalizamos aceptando que es el software que administra los recursos de una manera eficiente y facilita su acceso con un alto grado de transparencia.

Una introducción a la virtualización

Virtualizar es un termino que se ha incorporado en nuestro cotidiano. Es el mecanismo por el cual se logra aquello que existe solo aparentemente y no es real.

La virtualización es un termino directamente relacionado con la abstracción. Y no es un término ajeno al mundo de los sistemas operativos. En este ámbito, no es un algo nuevo.

La primera versión de un sistema operativo que soportaba maquinas virtuales es de 1972: VM/370 (Virtual Machine Facility/370). Pero el concepto ya se venia investigando en la década del 60.

La virtualización es una capa de abstracción sobre el hardware para obtener una mejor utilización de los recursos y flexibilidad. Permite que haya múltiples maquinas virtuales (MV) o entornos virtuales (EV), con distintos (o iguales) sistemas operativos corriendo en forma aislada. Cada MV tiene su propio conjunto de hardware virtual (RAM, CPU, NIC, etc.) sobre el cual se carga el SO huésped (guest). Virtualización se transformo en la solución para este mundo de integración que se describió en posts anteriores.

Ante situaciones tales como las que se enuncian a continuación, la virtualización se constituye en una solución:

  • Existencia de muchas maquinas servidores, poco usados
  • Convivencia con aplicaciones heredadas (legacy) que no pueden ejecutarse en nuevo hardware o sistema operativo
  • Testeo de aplicaciones no seguras
  • Ejecución con recursos limitados o específicos
  • Necesidad de usar un hardware con el que no se cuenta
  • Simulación de redes de computadoras independientes.
  • Ejecución de varios y distintos sistemas operativos simultáneamente.
  • Testing y monitoreo de performance
  • Facilidad de migración.
  • Ahorrar energía (tendencias de green IT, o tecnología verde)

Entre otras ventajas, la facilidad de uso se evidencia en el hecho de que las maquinas virtuales están encapsuladas en archivos, lo que las hace fácil de almacenar y de copiar. Sistemas completos (aplicaciones ya configuradas, sistemas operativos, hardware virtual) pueden moverse rápidamente de un servidor a otro.

La dinámica en el caso de los sistemas operativos consiste en un software anfitrión (host) y un software huésped (guest).

Algunas maquinas virtuales en realidad son emuladas. La emulación provee toda la funcionalidad del procesador deseado a través de software. Se puede emular un procesador sobre otro tipo de procesador. Tiende a ser lenta.

La virtualización simula un procesador físico en distintos contextos, donde cada uno de ellos corre sobre el mismo procesador.

En este contexto se hace imprescindible un “manejador/monitor de maquinas virtuales” (VMM, virtual machines monitor) lo que se llama un hipervisor (hypervisor).

En el ámbito de los sistemas operativos, un hipervisor es una plataforma de virtualización que permite múltiples sistemas operativos corriendo en un host al mismo tiempo. El hipervisor interactua con el HW, realiza la multiprogramación y presenta una o varias maquinas virtuales al sistema operativo.

Hay distintos tipos de hipervisor:

  • Hipervisor tipo 1: Se ejecuta en modo kernel. Cada VM se ejecuta como un proceso de usuario en modo usuario. Es decir que hay modo kernel virtual y modo usuario virtual.
  • Hipervisor tipo 2: Se ejecuta como un programa de usuario sobre un sistema opera­tivo host. Este host es quien se ejecuta sobre el HW.



A continuación se listan las características de una maquina virtual, enunciadas en 1974 por Popek y Goldberg:

  • Equivalencia / Fidelidad: un programa ejecutándose sobre un VMM debería que tener un comportamiento idéntico al que tendría ejecutándose directamente sobre el hardware subyacente.
  • Control de recursos / Seguridad: El VMM tiene que controlar completamente y en todo momento el conjunto de recursos virtualizados que proporciona a cada guest.
  • Eficiencia / Performance: Una fracción estadísticamente dominante de instrucciones tienen que ser ejecutadas sin la intervención del VMM, o en otras palabras, directamente por el hardware.

Pero analicemos que ocurre a nivel de las instrucciones. Para ello merece hacerse un pequeño repaso.

Una interrupción es un evento que altera la secuencia de instrucciones ejecutada por un procesador. Diferenciamos interrupciones enmascarables de no enmascarables.

La interrupción enmascarable es ignorada por la unidad de control por el tiempo que permanezca en ese estado.

La interrupción no enmascarable sera siempre recibida y atendida por la CPU. Solo unos pocos eventos críticos (como fallos del hardware) pueden generar interrupciones no enmascarables.

Las excepciones son causadas por errores de programación o condiciones anómalas que deben ser manejadas por el kernel. Algunas son detectadas por el procesador y otras son pro- gramadas. Entre los tipos de excepción están los traps.

Recordemos ademas que generalizando en cuanto a modos de ejecución, en modo super­visor se puede ejecutar cualquiera de las instrucciones que acepta el procesador. En modo usuario, no. Veamos un ejemplo. En VM/370, hay una maquina CMS (Conversational Monitor System) para cada usuario, con “la ilusión” del hardware completo. Una aplicación sobre CMS hace una system call, y CMS la “atrapa” (es un trap).Y se lo comunica a la MVV.



En la virtualización, el sistema operativo guest (ejecutándose en modo usuario) emitirá una instrucción privilegiada que no debe ser ignorada.

INTEL 386 ignoraba las instrucciones privilegiadas que se invocaban en modo usuario. Las maquinas virtuales se ejecutan en modo usuario. Cuando se ejecuta una instrucción privilegiada no debe ignorarse, y debe ser captada por la VMM. Las instrucciones no privilegiadas deben ejecutarse nativamente (es decir, eficientemente). Popek y Goldberg hicieron un importante aporte al mundo de la virtualización con la definición de instrucciones sensibles e instrucciones privilegiadas. Las instrucciones sensibles siempre generan una excepción y pasan el control al VMM. Las instrucciones privilegiadas generan una interrupción.

Una arquitectura es virtualizable si todas las instrucciones sensibles son privilegiadas.

Cuando se inicia un guest, se ejecuta alli hasta que haga una excepción, que debe ser atrapada por el hipervisor.

En el hipervisor tipo 1 cuando la VM ejecuta una instrucción sensible, se produce un trap que procesa el hipervisor.

En los modelos distribuidos que se utilizan hoy en dia, la virtualización se ha transformado en un elemento clave, por sus características de aislamiento, fácil administración y ahorro de energía, entre otras ventajas.



En la próxima hablaremos de los sistemas operativos en red.

2 pensamientos en “Los Sistemas Operativos y su Distribución – Parte III”

  1. Pingback: Los Sistemas Operativos y su Distribución – Parte V

  2. Pingback: Cliente/Servidor – Parte I

Dejá un comentario