miércoles, 10 de septiembre de 2014


Sistemas monolíticos

Los sistemas monolíticos son aquellos en los que su centro es un grupo de estructuras fijas, las cuales funcionan entre sí.

En los Sistemas Operativos Monolíticos, existen módulos grandes en el núcleo, los cuales interactúan entre sí, para poder tener esta estructura, las diferentes partes del kernel son compiladas por capas.

Los sistemas monoliticos se describen en 3 procesos principales:

- Un Programa principal que invoca el procedimiento de servicio solicitado.

- Un Conjunto de procedemientos de servicio que llevan a cabo las llamadas del sistema.

- Un Conjunto de procedimientos de utilería que ayudan a los procedimientos del servicio.

En teoria un procedimiento dado puede invocar a ciertos servicios los cuales a su vez se verán ayudados por programas de utilería los cuales extraeran información importante para este.

SISTEMAS MONOLÍTICOS
Es una colección de procedimientos que se pueden llamar entre sí, cada procedimiento tiene una interfaz bien definida en términos de parámetros y resultados.
Un sistema monolítico está compuesto por un grupo de estructuras fijas las cuales funcionan entre sí. Existen módulos grandes en el kernell, los cuales interactúan entre sí, para poder tener una estructura, las diferentes partes del Kernell son compiladas por capas. Se encarga del funcionamiento del PC como son comunicación entre procesos, planificación y gestión del espacio de direcciones.



 

 
 
 
Sistemas por capas

El primer sistema que tuvo esta estructura fue el sistema THE construido en la Technische Hogeschool Eindhoven de los Países Bajos por E. W. Dijkstra (1968) y sus estudiantes. El sistema THE era un sencillo sistema por lotes para una computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27  bits (los bits eran costosos en esos tiempos).

Más arriba de la capa 0, el sistema consistía en procesos secuenciales, cada uno         de los cuales podía programarse sin tener que preocuparse por el hecho de que múltiples procesos se estuvieran ejecutando en un solo procesador. En otras palabras, la capa 0 se encargaba de la multiprogramación básica del CPU.

 

 

La capa 1 administraba la memoria, repartiendo espacio para los procesos en la memoria principal y en un tambor de 512K palabras que servía para contener partes de los procesos (páginas) para las que no había espacio en la memoria principal. Más arriba de la capa 1, los procesos no tenían que preocuparse por si estaban en la memoria o en el tambor; el software de esa capa se encargaba de que se colocaran en la memoria las páginas en el momento en que se necesitaban.  
La capa 2 manejaba la comunicación entre cada proceso y la consola del operador. Por encima de esta capa cada proceso tenía efectivamente su propia consola de operador.

La capa 3 se encargaba de administrar los dispositivos de E/S y de colocar en buffers las corrientes de información provenientes de y dirigidas a ellos. Más arriba de la capa 3 cada proceso podía tratar con dispositivos de E/S abstractos con propiedades  bonitas,  en  lugar de dispositivos reales con muchas  peculiaridades. 

En  la  capa  4  se encontraban los programas de usuario, los cuales no tenían que preocuparse por la administración de procesos, memoria, consola o E/S. El proceso del operador del sistema estaba en la capa 5.

Una  forma  más  generalizada del  concepto  de  capas  estuvo  presente  en  el  sistema  MULTICS. En vez de  estar  organizado  en capas,  MULTICS  estaba  organizado  como  una  serie  de anillos concéntricos, siendo los interiores más privilegiados que los exteriores.

Aunque todo el sistema operativo formaba parte del espacio de direcciones de cada proceso de usuario en MULTICS, el hardware permitía designar  procedimientos  individuales  (en  realidad,  segmentos  de  memoria)  como  protegidos  contra lectura, escritura o ejecución.

En tanto el esquema por capas del sistema THE era en realidad sólo una ayuda para el diseño, ya que todas las partes del programa en última instancia se vinculaban en un solo programa objeto, en MULTICS el mecanismo de anillo estaba muy presente en el momento de la ejecución y el hardware obligaba a ajustarse a él. La ventaja del mecanismo de anillo es que fácilmente puede extenderse para estructurar los subsistemas de usuario. Por ejemplo, un profesor podría escribir un programa para probar y calificar los programas de los estudiantes y ejecutar este programa en el anillo n, con los programas de los estudiantes ejecutándose en el anillo n + 1 para que los estudiantes no puedan modificar sus calificaciones.

Microkernels
Microkernel: es un tipo de núcleo de un sistema operativo que provee un conjunto de primitivas o llamadas mínimas al sistema para implementar servicios básicos como espacios de direcciones, comunicación entre procesos y planificación básica. Todos los otros servicios (gestión de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.
El paradigma del micronúcleo, tuvo una gran relevancia académica durante los años ochenta y principios de los noventa, dentro de lo que se denominó self healing computing, esto es, sistemas independientes que fuesen capaces de superar por si mismos errores de software o hardware. En un principio pretendía ser una solución a la creciente complejidad de los sistemas operativos.
Las principales ventajas de su utilización son la reducción de la complejidad, la descentralización de los fallos (un fallo en una parte del sistema no se propagaría al sistema entero) y la facilidad para crear y depurar controladores de dispositivos. Según los defensores de esta tendencia, esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware.
Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las ventajas de Zero Copy y la integración con las aplicaciones. Además, los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria. Sus detractores le achacan también y fundamentalmente, mayor complejidad en el código, menor rendimiento y limitaciones en diversas funciones.

 

Máquinas virtuales

El corazón del sistema, conocido como monitor de máquina virtual, se ejecuta en el hardware solo y realiza la multiprogramación, proporcionando no una, sino varias máquinas virtuales a la siguiente capa superior, como se muestra en la Figura 7. Sin embargo, a diferencia de otros sistemas operativos, estas máquinas virtuales no son máquinas extendidas, con archivos y otras características bonitas; más bien, son copias exactas del hardware solo, incluido el modo de kernel/usuario, E/S, interrupciones y todo lo demás que la máquina real tiene.



Puesto que cada máquina virtual es idéntica al verdadero hardware, cada una puede ejecutar cualquier sistema operativo que se ejecutaría directamente en el   hardware   solo. Diferentes  máquinas virtuales pueden, y con frecuencia lo hacen, ejecutar diferentes         sistemas operativos. Algunos ejecutan uno de los descendientes de OS/360 para procesamiento por lotes o de transacciones, mientras que otros ejecutan un sistema interactivo monousuario llamado CMS (Sistema de Monitoreo de Conversaciones) para usuarios de tiempo compartido.

El concepto de máquina virtual se usa mucho hoy día en un contexto diferente: la ejecución de viejos programas para MS-DOS en una Pentium (u otra CPU Intel de 32 bits). Al diseñar la Pentium y su software, tanto Intel como Microsoft se dieron cuenta de que habría una gran de- manda por ejecutar software viejo en el nuevo hardware. Por esta razón, Intel proveyó un modo 8086 virtual en la Pentium. En este modo, la máquina actúa como una 8086 (que es idéntica a una 8088 desde la perspectiva del software) incluido direccionamiento de 16 bits con un límite de 1 MB.
Modelo cliente-servidor
 

Una  tendencia  en  los  sistemas  operativos  modernos  es  llevar  aún  más  lejos  esta  idea  de trasladar  código  a  capas  superiores  y  quitarle  lo  más  que  se  pueda  al  sistema  operativo,  dejando un  kernel  mínimo.  El  enfoque  usual  consiste  en  implementar la  mayor  parte  de  las  funciones del sistema operativo en procesos de usuario. Para solicitar un servicio,  como  leer  un  bloque de un archivo, un proceso de usuario (ahora llamado proceso cliente) envía la solicitud a un proceso servidor, el cual realiza el trabajo y devuelve la respuesta.

 Lo único que  el  kernel  hace  es  manejar la comunicación entre los clientes y los servidores.  Al dividir el sistema  operativo en partes, cada una de las cuales sólo se encarga de una faceta del sistema, como el servicio de archivos, de procesos, de terminales o de memoria, cada parte puede ser pequeña y manejable. Además, dado que todos los servidores se ejecutan como procesos en modo de usuario, y no en modo de kernel, no tienen acceso directo al hardware. Por tanto, si se activa un error en el servidor de archivos, es posible que el servicio de archivos se caiga, pero normalmente esto no hará que se caiga toda la máquina.

 




 

Exorkernels
Exokernel: se refiere a un sistema creado con fines de investigación en el Instituto Tecnológico de Massachusetts sobre Opens y otros sistemas operativos similares. Su propósito es crear una especie de capa de software para otros sistemas virtuales.


 
 
Historia
El concepto de exonúcleo fue introducido en torno a los finales de 1994, pero aún en 2005 los exonúcleos siguen siendo un gran esfuerzo en investigación y no son usados en ningún sistema operativo comercial popular. Un sistema operativo que sigue la filosofía exonúcleo es Nemesis, escrito por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informática. El MIT también ha desarrollado varios sistemas exonúcleo, como el ExOS.

Exokernel es un sistema puesto a la solicitud de control.

Un sistema operativo se interpuso entre las aplicaciones y el hardware físico. Por lo tanto, su estructura tiene un impacto dramático en el desempeño y el alcance de las aplicaciones que pueden construirse en él.

Desde su creación, el campo de los sistemas operativos ha estado tratando de identificar una estructura apropiada: los intentos anteriores incluyen el conocido monolítico y micro-kernel de los sistemas operativos, así como más exóticos basados en la lengua y la máquina virtual de sistemas operativos. Exokernels da un giro total con forme a lo que es micro-kernel y monolítico. Un exokernel elimina la noción de que un sistema operativo debe proporcionar abstracciones en las que se construyen las aplicaciones. En cambio, se concentra exclusivamente en la seguridad de multiplexación pura de hardware: desde las primitivas básicas de hardware, la aplicación a nivel de las bibliotecas y los servidores pueden aplicar directamente el sistema operativo tradicional abstracciones, especializados para la conveniencia y la velocidad.

Estructura de un sistema de exokernel. Que utilizan las aplicaciones de su propia biblioteca del sistema operativo (LibOS), que a su vez el uso exokernel para asignar recursos de hardware y liberar.
El más reciente exokernel es XOK, que se ejecuta en el hardware de una PC, y ExOS, nuestra primera biblioteca del sistema operativo (libos). ExOS La biblioteca ofrece un nivel de usuario extensibles y aplicación de un sistema operativo UNIX. La mayoría de las aplicaciones UNIX como gcc, perl, telnet y compilar y trabajar sin cambios con ExOS. Además, las mediciones de rendimiento de las aplicaciones demuestran que ExOS realiza por lo menos, así como OpenBSD y FreeBSD y mucho mejor cuando se usa la libos especializados. Por ejemplo, el Cheetah servidor web incorporado en la parte superior de XOK realiza ocho veces más rápido que el de autoevaluación o de cosecha.

El exokernel cuenta con un sistema de kernel extensible el cual se centra en una reducción de servicios de núcleo, eliminando aquellos que pueden ser implementados posteriormente fuera del núcleo, esto se hace para conseguir sistemas extremadamente adaptables. No voy a entrar en detalle de cómo funciona precisamente los sistemas con kernel extensible.

Siguiendo con el exokernel es un nuevo modelo de construcción de SSOO consistente en reducir la función del kernel del sistema a la multiplexación segura de los recursos físicos. Un exokernel suministra a las aplicaciones el mismo interfaz que suministra el hardware, no se realiza ninguna virtualizacion ni abstracción del mismo. Consiguientemente, los exokernels son por naturaleza sistemas centralizados.

A pesar de su reducida funcionalidad, la asignación y revocación de recursos está implementada dentro del núcleo, aunque las aplicaciones pueden participar en las políticas de asignación y revocación (se emplea asignación y revocación explícita).