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.
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).
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).




