3  Estructuras del sistema operativo

Luego de repasar la evolución histórica de los sistemas operativos, es momento de adentrarnos en su interior y analizar cómo se diseñan estructuralmente. A continuación, presentamos 4 modelos arquitectónicos implementados en la práctica: estructura monolítica, estructura en capas, sistemas cliente-servidor, máquinas virtuales.

3.1 Estructura monolítica

Es la estructura de los primeros sistemas operativos, constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra.

En la estructura monolitica todas las rutinas están entrelazadas

Al existir miles de rutinas o procedimientos que se pueden llamar entre sí, el sistema es muy difícil de entender y poco escalable.

3.2 Estructura en capas

La estructura jerárquica llega como una evolución natural de los sistemas operativos. A medida que crecieron las necesidades de los usuarios y aumentó la complejidad de las aplicaciones, se hizo necesaria una mejor organización del software. La estructura jerárquica organiza el sistema operativo en pequeñas partes o capas, cada una de las cuales tiene una función específica y depende de las capas inferiores para realizar sus tareas. Uno de los ejemplos más conocidos de estructura jerárquica es el modelo THE (Technische Hogeschool, Eindhoven ) desarrollado por Edsger Dijkstra, y se presenta de la siguiente manera:

En la estructura jerárquica el sistema se divide en capas

3.2.1 Descripción de las capas y funciones.

En la estructura jerárquica, el sistema operativo se divide en capas, donde cada capa proporciona servicios a la capa superior y utiliza los servicios de la capa inferior. La capa más baja interactúa directamente con el hardware, y la capa más alta proporciona la interfaz de usuario.

Capas de la estructura jerárquica
Capa Función
Capa 5. Control de programas de usuarios Gestiona la ejecución y control de los programas de los usuarios, proporcionando una interfaz para la interacción con el sistema operativo.
Capa 4. Gestión de archivos Proporciona servicios de sistema de archivos, como la creación, eliminación y manipulación de archivos. Controla el acceso a los datos almacenados en disco.
Capa 3. Control de E/S Controla los dispositivos de hardware a través de controladores. Gestiona las operaciones de entrada/salida y la comunicación con los periféricos.
Capa 2. Controlador CLI Gestiona la interacción con la consola del operador, permitiendo la entrada y salida de comandos y datos.
Capa 1. Gestión de la memoria Maneja la asignación y el control de la memoria. Proporciona servicios como la asignación de memoria y el intercambio de memoria..
Capa 0. Planificación del procesador Controla la ejecución de procesos y la planificación de tareas. Gestiona la creación, terminación y sincronización de procesos.
Capa -1. Hardware. Interactúa directamente con el hardware físico del sistema, incluyendo la CPU, la memoria y los dispositivos de E/S.

3.3 Estructura máquina virtual

En la estructura de máquina virtual, el sistema operativo (denominado a veces monitor de máquina virtual o hipervisor) presenta a cada usuario o proceso la ilusión de poseer una máquina completa para su uso exclusivo​.

Es decir, replica virtualmente la máquina real en múltiples instancias, de forma que sobre cada máquina virtual se puede incluso ejecutar un sistema operativo distinto como si corriera en hardware dedicado. Este enfoque separa dos conceptos típicamente unidos en otros sistemas: la multiprogramación (compartir el hardware entre varios procesos) y la máquina extendida (las comodidades y servicios que brinda un SO al usuario)​.

Una máquina virtual es capaz de replicar el hardware de la máquina real

Los sistemas de máquina virtual proporcionan un excelente aislamiento: un fallo en un sistema operativo huésped o en sus aplicaciones no afecta directamente a las demás VMs. Además, permiten aprovechar mejor el hardware al consolidar múltiples sistemas en uno solo físico, y son la base de tecnologías modernas como los hipervisores (VMware, Hyper-V, VirtualBox, etc.) y los contenedores ligeros.

3.4 Estructura cliente - servidor

El modelo cliente-servidor es una arquitectura de software en la que se distinguen dos roles principales: los servidores, que ofrecen servicios o recursos, y los clientes, que solicitan y utilizan dichos servicios. La comunicación entre clientes y servidores se realiza, en la mayoría de los casos, mediante el intercambio de mensajes.

En el modelo cliente - servidor, el cliente envía peticiones al servidor

Cuando un proceso cliente necesita un servicio, construye un mensaje en el que especifica la petición y lo envía al proceso servidor correspondiente. El servidor, al recibir el mensaje, realiza la tarea solicitada y envía de vuelta la respuesta.

La comunicación de cliente-servidor ser realiza por medio de mensajes.

Es importante notar que “cliente-servidor” en este contexto se refiere a la organización interna del SO, no necesariamente a servicios de red (aunque el concepto es análogo). Un ejemplo puede ser las llamadas al sistema, cuando un programa usa la llamada open() para abrir un archivo, en este caso el kernel actua como servidor por medio de las llamadas al sistema.