Diferencia entre revisiones de «Modelos de Diseño de Sistemas Operativos»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(ampliación de so monolitico)
(2.8. Modelos de Diseño de SSOO)
 
(No se muestran 137 ediciones intermedias de 38 usuarios)
Línea 1: Línea 1:
= Modos de operación del procesador =
+
= 2.8. Modelos de Diseño de SSOO =
  
Para entender los modelos de diseño de los sistemas operativos, tenemos que hacer referencia a los modos de ejecución del procesador. El modo de ejecución del procesador indica que conjunto de instrucciones y a qué recursos del procesador se puede acceder en un cierto instante de tiempo.
+
== Modos de operación del procesador ==
  
En la actualidad, un procesador ofrece como mínimo dos modos de operación que son:
+
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.
  
* Modo supervisor, que permite la ejecución de todo el conjunto de instrucciones que ofrece el procesador.
+
Los procesadores ofrecen, como mínimo, dos modos de funcionamiento del procesador:
* Modo usuario, que tiene algunas restricciones de acceso a aspectos del procesador o de ejecución de instrucciones.
 
  
= Núcleo del sistema operativo =
+
* '''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.
  
El núcleo del sistema operativo, también conocido por la terminología inglesa ''kernel'', se trata de la parte más esencial del sistema operativo. El núcleo de un sistema operativo opera en modo supervisor. Al operar en dicho modo un error de programación en el núcleo del sistema operativo puede resultar 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 inglés por ''kernel panic''.
+
* '''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.
  
= Tipos de Sistemas Operativos =
+
== Núcleo del sistema operativo ==
  
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:
+
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.
  
* Monolíticos
+
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]''.
* Micronúcleos
 
  
No obstante, existen tipologías híbridas o que acentúan algunos aspectos, que también detallamos en esta sección.
+
== Tipos de Sistemas Operativos ==
  
http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/OS-structure2.svg/1024px-OS-structure2.svg.png
+
Los sistemas operativos se pueden clasificar en base a la cantidad de funcionalidades propias del sistema operativo que se implementan en su núcleo. En general distinguimos dos tipos de sistemas operativos:
  
== Sistemas operativos Monolíticos ==
+
* '''Monolíticos:''' gestionan los cuatro componentes fundamentales del sistema operativo en modo supervisor, esto incluye, la planificación de procesos, la administración de la memoria principal, la gestión de E/S y el administrador de ficheros.
  
Los sistema operativos monolíticos se caracterizan por emplear un núcleo que implementa la planificació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 supervisor.
+
* '''Micronúcleos:''' implementan en su núcleo únicamente la planificación de procesos, la gestión de interrupciones (la parte básica fundamental de la gestión de E/S que necesariamente se tiene que realizar en modo privilegiado) y la comunicación entre procesos. Por tanto, la administración de memoria principal, la gestión de la E/S y la gestión de ficheros se realiza en modo usuario. En este tipo de sistema operativo hay procesos especiales propios del sistema operativo que implementan dichas funcionalidades en modo usuario y se denominan ''proceso servidor''.
  
Los sistemas operativos monolíticos son los predominantes hoy día, algunos ejemplos son:
+
Además, contamos con una clasificación intermedia:
 +
 
 +
* '''Híbrido:''' a mitad de camino entre monolítico y micronúcleo, incluyen 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 implementar más componentes del sistema operativo que permiten la gestión del computador en el espacio del núcleo, es decir, en modo privilegiado.
 +
 
 +
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 el núcleo lleva al traste con la ejecución del sistema.
 +
 
 +
<!-- Hay que reparar esto [[Archivo:OS-structure2b(EDITADO).svg‎ |880px| Comparativa de distribución de funcionalidades entre distintos tipos de SO]] -->
 +
 
 +
=== Sistemas operativos Monolíticos ===
 +
 
 +
Los sistemas operativos monolíticos se caracterizan por implementar en el núcleo los cuatro componentes fundamentales del sistema operativo, que son la planificació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.
 +
 
 +
Los sistemas operativos de propósito general son predominantemente monolíticos hoy día, algunos ejemplos son:
  
 
* Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD.  
 
* Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD.  
* Sistemas operativos GNU/Linux.
+
* Sistemas operativos GNU/Linux, y por tanto, Android también.
 
* DOS, tales como MS-DOS y DR-DOS.
 
* DOS, tales como MS-DOS y DR-DOS.
  
Como inconveniente, al emplear un núcleo en el que gran parte de las funcionalidades básicas del sistema operativo están implementadas en el núcleo, de manera intuitiva, al disponer de mayor número de líneas de código que se ejecutan en modo supervisor, un error de programación en el núcleo puede provocar un ''kernel panic''. Además el echo 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 inconveniente, este tipo de sistemas 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. Por ejemplo, un bug en el núcleo de un sistema operativo monolítico obliga a tener que reiniciar el sistema. En un sistema operativo monolítico, el código del núcleo se incluye en un único fichero binario que se carga en memoria principal en tiempo de arranque, por tanto, si se instala una nueva imagen, es necesario reiniciar el sistema operativo para que se inicie con la nueva versión que incluye la imagen actualizada.
  
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.
+
Como principal ventaja, los sistemas operativos monolíticos ofrecen un alto rendimiento puesto que las peticiones entre los diferentes componentes se reducen a invocaciones de funciones.
  
== Sistemas operativos Micronúcleo ==
+
=== Sistemas operativos Micronúcleo ===
  
Los sistemas operativos se caracterizan por disponer de un núcleo que implementa únicamente:
+
Se caracterizan por disponer de un núcleo que implementa únicamente:
  
 
* Planificación de procesos
 
* Planificación de procesos
Línea 45: Línea 57:
 
* Gestión de interrupciones
 
* Gestión de interrupciones
  
Además, existen procesos servidores que están fuera del núcleo, que se ejecutan en modo usuario del procesador, y que implementan la:
+
Además, existen procesos servidores que se ejecutan en modo no privilegiado del procesador - que, por supuesto, se ejecutan fuera del espacio del núcleo del sistema operativo - y que implementan los siguientes componentes:
  
 
* Administración de memoria principal
 
* Administración de memoria principal
Línea 53: Línea 65:
 
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.
 
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 supervisor, de manera intuitiva son más fiables.
+
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. Generalmente, si un proceso servidor tiene un bug en su código que hace que entre en una condición de error, se puede relanzar sin tener que reiniciar el sistema por completo.
  
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.
+
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, y que generalmente únicamente tiene propósitos educativos y/o propósitos muy específicos.
  
== Sistemas basados en Maquinas Virtuales ==
+
Algunos ejemplos de sistemas operativos micronúcleos son:
  
Implementan el material (hardware) en el software. Algunos sistemas operativos ofrecen técnicas de paravirtualizacion
+
* Symbian OS, hoy día en desuso.
 +
* Minix, en sus versiones 2 y 3.
  
Paravirtualización: técnica de programación que ofrecen algunos SO anfitrión para facilitar la virtualización y el rendimiento de maquinas virtuales. Ofrecen llamadas directas al sistema
+
=== Sistemas operativos Híbridos ===
o acceso a una API especial del anfitrión para acceder directamente a los recursos. Observamos que se deposita una gran confianza en los procesos de la VM por motivos de rendimiento.
 
  
 +
«Híbrido» implica que el núcleo en cuestión usa conceptos de arquitectura 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.
  
 +
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), 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.
 +
* ReactOS.
  
* Ventajas de las Maquinas Virtuales
+
No hay que confundir el concepto «núcleo híbrido» con el soporte de módulos cargables después del arranque que está disponible en núcleos monolíticos.
  
** Ahorro de coste material
+
=== Unikernel ===
** Se pueden tener diferentes SO en un mismo sistema.
 
** Se adopta a las necesidades de usuario.
 
** Se puede deslocalizar la maquina virtual (deslocalizacion: migrar a otro SO sin sufrir ningun cambio )
 
  
 +
Las aplicaciones 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 privilegiado. Los procesos no invocan llamadas al sistema pues tienen acceso directo a los recursos del computador. El argumento para este diseño es el rendimiento a cambio de sacrificar la fiabilidad. Sólo es aplicable a sistemas de propósito muy específico.
  
 +
== Otro material a consultar ==
  
* Desventajas de las Maquinas Virtuales
+
El estudiante puede encontrar el siguiente material de interés para complementar sus conocimientos:
 
** Rendimiento  (KVM +  paravirtualizacion 10%)
 
** Punto unico de fallos
 
  
= Otro material a consultar =
+
* 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).
  
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 | Virtualización]]

Revisión actual del 20:40 2 mar 2020

2.8. 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 funcionalidades propias del sistema operativo que se implementan 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, la planificación de procesos, la administración de la memoria principal, la gestión de E/S y el administrador de ficheros.
  • Micronúcleos: implementan en su núcleo únicamente la planificación de procesos, la gestión de interrupciones (la parte básica fundamental de la gestión de E/S que necesariamente se tiene que realizar en modo privilegiado) y la comunicación entre procesos. Por tanto, la administración de memoria principal, la gestión de la E/S y la gestión de ficheros se realiza en modo usuario. En este tipo de sistema operativo hay procesos especiales propios del sistema operativo que implementan dichas funcionalidades en modo usuario y se denominan proceso servidor.

Además, contamos con una clasificación intermedia:

  • Híbrido: a mitad de camino entre monolítico y micronúcleo, incluyen 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 implementar más componentes del sistema operativo que permiten la gestión del computador en el espacio del núcleo, es decir, en modo privilegiado.

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 el núcleo lleva al traste con la ejecución del sistema.


Sistemas operativos Monolíticos

Los sistemas operativos monolíticos se caracterizan por implementar en el núcleo los cuatro componentes fundamentales del sistema operativo, que son la planificació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.

Los sistemas operativos de propósito general son predominantemente monolíticos hoy día, algunos ejemplos son:

  • Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD.
  • Sistemas operativos GNU/Linux, y por tanto, Android también.
  • DOS, tales como MS-DOS y DR-DOS.

Como inconveniente, este tipo de sistemas 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. Por ejemplo, un bug en el núcleo de un sistema operativo monolítico obliga a tener que reiniciar el sistema. En un sistema operativo monolítico, el código del núcleo se incluye en un único fichero binario que se carga en memoria principal en tiempo de arranque, por tanto, si se instala una nueva imagen, es necesario reiniciar el sistema operativo para que se inicie con la nueva versión que incluye la imagen actualizada.

Como principal ventaja, los sistemas operativos 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 se ejecutan en modo no privilegiado del procesador - que, por supuesto, se ejecutan fuera del espacio del núcleo del sistema operativo - y que implementan los siguientes componentes:

  • 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. Generalmente, si un proceso servidor tiene un bug en su código que hace que entre en una condición de error, se puede relanzar sin tener que reiniciar el sistema por completo.

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, y que generalmente únicamente tiene propósitos educativos y/o propósitos muy específicos.

Algunos ejemplos de sistemas operativos micronúcleos son:

  • Symbian OS, hoy día en desuso.
  • Minix, en sus versiones 2 y 3.

Sistemas operativos Híbridos

«Híbrido» implica que el núcleo en cuestión usa conceptos de arquitectura 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.

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), 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.
  • ReactOS.

No hay que confundir el concepto «núcleo híbrido» con el soporte de módulos cargables después del arranque que está disponible en núcleos monolíticos.

Unikernel

Las aplicaciones 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 privilegiado. Los procesos no invocan llamadas al sistema pues tienen acceso directo a los recursos del computador. El argumento para este diseño es el rendimiento a cambio de sacrificar la fiabilidad. Sólo es aplicable a sistemas de propósito muy específico.

Otro material a consultar

El estudiante puede encontrar el siguiente material de interés para complementar sus conocimientos:


3.2. Virtualización