Diferencia entre revisiones de «Modelos de Diseño de Sistemas Operativos»
(→Modos de operación del procesador) |
(→Núcleo del sistema operativo) |
||
Línea 13: | Línea 13: | ||
== Núcleo del sistema operativo == | == Núcleo del sistema operativo == | ||
− | El núcleo del sistema operativo, también conocido por la terminología inglesa ''kernel'', es la parte más esencial del sistema operativo. | + | El núcleo del sistema operativo, también conocido por la terminología inglesa ''kernel'', es la parte más esencial del sistema operativo. Es la parte del código del sistema operativo que se ejecuta en modo privilegiado del procesador. |
− | + | Al operar en dicho modo, un error de programación en el núcleo del sistema operativo resulta en un error fatal del cual el sistema sólo puede recuperarse mediante el reinicio del sistema. A tal error fatal también se le conoce en los sistemas operativos UNIX por la locución inglesa ''[http://es.wikipedia.org/wiki/Kernel_panic kernel panic]'' y en los sistemas operativos Windows por el nombre de ''[http://www.google.es/url?sa=t&source=web&cd=1&ved=0CCwQFjAA&url=http%3A%2F%2Fes.wikipedia.org%2Fwiki%2FPantalla_azul_de_la_muerte&ei=s02WTqvCCMjHtAaxuJyBBA&usg=AFQjCNE2tZra15VdohxjrhSogTQZOVedKg Pantallazo azul o BSOD]''. | |
== Tipos de Sistemas Operativos == | == Tipos de Sistemas Operativos == |
Revisión del 14:02 14 nov 2017
Contenido
3.1. Modelos de Diseño de SSOO
Modos de operación del procesador
Para entender los diseños de sistemas operativos existentes, tenemos que hacer referencia a los modos de ejecución del procesador. El modo de ejecución del procesador determina qué conjunto de instrucciones y a qué recursos del procesador se puede acceder.
Los procesadores ofrecen, como mínimo, dos modos de funcionamiento del procesador:
- Modo privilegiado, que permite la ejecución de todo el conjunto de instrucciones que ofrece el procesador. Es el modo en el que se ejecuta el núcleo de un sistema operativo.
- Modo no privilegiado, que permite acceder a un subconjunto de las instrucciones que ofrece el procesador, es el modo en el que se ejecutan los procesos.
Núcleo del sistema operativo
El núcleo del sistema operativo, también conocido por la terminología inglesa kernel, es la parte más esencial del sistema operativo. Es la parte del código del sistema operativo que se ejecuta en modo privilegiado del procesador.
Al operar en dicho modo, un error de programación en el núcleo del sistema operativo resulta en un error fatal del cual el sistema sólo puede recuperarse mediante el reinicio del sistema. A tal error fatal también se le conoce en los sistemas operativos UNIX por la locución inglesa kernel panic y en los sistemas operativos Windows por el nombre de Pantallazo azul o BSOD.
Tipos de Sistemas Operativos
Los sistemas operativos se pueden clasificar en base a la cantidad de funcionalidad implementada en su núcleo. En general distinguimos dos tipos de sistemas operativos:
- Monolíticos: gestionan los cuatro componentes fundamentales del sistema operativo en modo supervisor, esto incluye, planificación de procesos, administración de la memoria principal, gestión de E/S y el administrador de ficheros.
- Micronúcleos: realizan la planificación de procesos, la gestión de interrupciones (una de las partes fundamentales de la gestión de E/S) y la comunicación entre procesos, en modo supervisor. La administración de memoria y la gestión de la E/S se realizan en modo usuario, a partir de procesos del sistema operativo especial que se denominan proceso servidor.
- Híbrido: a mitad de camino entre monolítico y micronúcleo, incluye la gestión de dispositivos de E/S en modo supervisor con el fin de mejorar el rendimiento del sistema.
En número de líneas de código, el núcleo monolítico es mayor que el micronúcleo, al gestionar más recursos del computador en modo supervisor.
Los sistemas operativo monolíticos ofrecen mejor rendimiento que los micronúcleos, pero los micronúcleos son más fiables, pues un fallo de programación en un gestor de dispositivo no lleva al traste con la ejecución del sistema.
Sistemas operativos Monolíticos
Los sistemas operativos monolíticos se caracterizan por emplear un núcleo que implementa la planificación de procesos, el sistema de comunicación de procesos, el sistema de sincronización de procesos, la administración de la memoria principal, la administración de ficheros y la gestión de los dispositivos de entrada/salida. Por tanto, a mayor funcionalidad implementada en el núcleo, mayor número de líneas de código que se ejecutan en modo privilegiado.
Los sistemas operativos monolíticos son los predominantes hoy día, algunos ejemplos son:
- Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD.
- Sistemas operativos GNU/Linux.
- DOS, tales como MS-DOS y DR-DOS.
Como inconveniente, al emplear un núcleo que incluye gran parte de las funcionalidades básicas del sistema operativo, dispone de un alto número de líneas de código ejecutándose en modo privilegiado. Por ello, un error de programación en el núcleo puede provocar un kernel panic. Además, el hecho de añadir nuevas funcionalidades provocaría una nueva recompilación del núcleo llevando a reiniciar el sistema para que se apliquen los nuevos cambios.
Como principal ventaja, los sistemas operativo monolíticos ofrecen un alto rendimiento puesto que las peticiones entre los diferentes componentes se reducen a invocaciones de funciones.
Sistemas operativos Micronúcleo
Se caracterizan por disponer de un núcleo que implementa únicamente:
- Planificación de procesos
- Mecanismo de comunicación entre procesos
- Gestión de interrupciones
Además, existen procesos servidores que están fuera del núcleo, que se ejecutan en modo no privilegiado del procesador, y que implementan la:
- Administración de memoria principal
- Administración de ficheros
- Gestión de dispositivos de entrada/salida.
Siguiendo este esquema, cuando un proceso cualquiera solicita un servicio a través de una llamada al sistema, el micronúcleo canaliza la petición al proceso servidor correspondiente. Dicha comunicación se realiza mediante mensajería.
La principal ventaja de los sistemas operativos micronúcleo es que, al ejecutar menos líneas de código en modo privilegiado, de manera intuitiva son más fiables. Otras ventajas son que se garantiza el aislamiento de las partes que están fuera del núcleo, como los módulos son independientes unos de otros, si cae alguno de ello los demás no se ven afectados y pueden seguir funcionando.
Sin embargo, el principal problema que presentan es el rendimiento, puesto que cualquier petición requiere mensajería, que lleva consigo un coste extra debido a la construcción de los mensajes, el reparto y la interpretación. Son estos problemas relacionados con el rendimiento los que hacen que no existan sistemas operativos micronúcleo desplegables en productivo, a excepción de Minix 2, que tiene propósitos educativos. Otro ejemplo de micronúcleo es Symbian OS.
Sistemas operativos Híbridos
Los núcleos híbridos se encuentran entre los monolíticos y los micronúcleo. La mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows. XNU, el núcleo de Mac OS X, también es un micronúcleo modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach. DragonFlyBSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.
Algunos ejemplos de núcleos híbridos:
- Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT
- XNU (usado en Mac OS X)
- DragonFlyBSD
- ReactOS
Hay gente que confunde el término «núcleo híbrido» con los núcleos monolíticos que pueden cargar módulos después del arranque, lo que es un error. «Híbrido» implica que el núcleo en cuestión usa conceptos de arquitectura o mecanismos tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la ejecución de ciertos componentes del sistema operativo en espacio de usuario.
Exonúcleos, Piconúcleos y Nanonúcleos
Son casos excepcionales, no aplican a sistemas operativos de propósito general.
Además, contamos con sistemas operativos pico y nanonúcleos de propósito específico que se puede considerar un subtipo de Micronúcleo.
Este tipo de sistemas operativos permiten al proceso acceder a ciertos recursos del sistema directamente, sin intervención del sistema operativo. Es propio de entornos de propósito específico, donde el fabricante del sistema operativo y de las aplicaciones son el mismo. No permiten la instalación de aplicaciones de terceros. Son propio de sistemas estancos. Propio de industria aeronáutica, automoción y aeroespacial.
Los Exokernel o exonúcleo son sistemas caracterizados principalmente por tener aplicaciones de usuarios capaces de acceder a recursos del sistema sin necesidad de realizar llamadas al sistema. Se da en sistemas operativos de tiempo real, de propósito específico. Generalmente empleados en industria aeronáutica, automotriz y telecomunicaciones.
Unikernel
Las aplicaciones de usuario se ejecutan en modo supervisor, dentro del espacio del núcleo del Sistema Operativo. Por tanto, la totalidad del código se ejecuta en modo supervisor. Los procesos no invocan llamadas al sistema, pues tienen acceso directo a los recursos del sistema. El argumento para este diseño es el rendimiento. Sólo es aplicable a sistemas de propósito específicos.
Otro material a consultar
El estudiante puede encontrar el siguiente material de interés para complementar sus conocimientos:
- Debate entre Linus Torvalds, creador del núcleo Linux, que sigue el paradigma monolítico y Andrew S. Tanembaum, creador de Minux, que sigue el modelo micronúcleo: http://oreilly.com/catalog/opensources/book/appa.html (en inglés).
3.2. Virtualización