Estructura de los Sistemas Operativos

- Sistemas monolíticos.
       Descripción:  sin estructura definida. Se componen  de un conjunto de procedimientos, donde cada uno de ellos puede llamar a todos los demás. 
       Proceso para requerir un servicio del S. O.: el programa de usuario coloca los parámetros necesarios en los lugares previamente definidos, y seguidamente ejecuta una llamada al supervisor (se cambia de modo usuario a modo supervisor), transfiriendo el control al S. O. que examina  dichos parámetros y determina el procedimiento que debe invocar. Cuando se complete la llamada devuelve el control al programa de usuario.
S. O. con una pequeña estructura de niveles:




- Sistemas en estratos.
       Descripción: se organiza en una jerarquía de estratos, estando construido cada uno de  ellos sobre el otro que tiene menor jerarquía que él.
         Ejemplos:
          A. THE (Dijkstra, 1968): sistema de procesamiento por lotes.



         B. MULTICS: anillos concéntricos alrededor del hardware, donde los internos son  más privilegiados que los externos. 




- Máquinas virtuales.
         Descripción: crea ilusiones (máquinas virtuales) de la máquina real, permitiendo que en cada máquina virtual se ejecute un S. O. distinto. El programa de control es el que se ejecuta directamente sobre el propio hardware y ofrece al nivel inmediatamente superior varias máquinas virtuales.


 - Modelo Cliente-Servidor.
         Descripción:  su objetivo es minimizar el kernel desplazando el código de todos sus servicios a estratos lo más superiores posibles. Para ello, la mayoría de sus funciones se implementan como procesos de usuario, denominados  procesos servidores, de forma que cuando un proceso de usuario llamado proceso cliente, necesita un servicio del S.O. lo que hace es enviar un mensaje al proceso servidor correspondiente, que  realiza el trabajo y devuelve la respuesta.
          El kernel lo único que hace es implementar la comunicación entre clientes y servidores 
y entre servidores y el hardware.



- Estructura orientada al objeto.
          Descripción: se basan en una colección de objetos, donde las funciones del sistema son un tipo de  objeto (ficheros, dispositivos, etc). La interacción entre dichos objetos viene determinada por las  capacidades que cada uno tenga para actuar con el otro.
          El kernel es el responsable del mantenimiento de las definiciones de los tipos de objetos soportados y  del control de los privilegios de acceso a los mismos. Cuando un programa desee realizar una operación sobre un objeto determinado, deberá ejecutar  una llamada al sistema, indicando qué derechos tiene para poder utilizarlo y qué operación intenta llevar a cabo. Como resultado de dicha llamada, el sistema validará la petición y, si puede ser aceptada, permitirá la realización de dicha operación