4 Estructura de los sistemas operativos
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.
4.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.
Al existir miles de rutinas o procedimientos que se pueden llamar entre sí, el sistema es muy difícil de entender y poco escalable.
A pesar de su falta de modularidad, los sistemas monolíticos fueron comunes en los primeros SO por su simplicidad y eficiencia. Al compilarse todas las rutinas en un solo binario, se evita la sobrecarga de conmutar entre componentes o de realizar llamadas inter-proceso costosas. Muchos sistemas monolíticos se implementaron a medida para un hardware específico, logrando así un rendimiento muy optimizado.
Sin embargo, presentan desventajas claras: escasa flexibilidad para adaptarse a nuevos entornos o dispositivos y ausencia de aislamiento interno, de modo que un fallo en una rutina del kernel puede comprometer todo el sistema.
4.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:
4.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.
| 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. |
Una ventaja clave de la estructura en capas es que mejora la confiabilidad: un fallo en una capa alta (por ejemplo, un manejador de dispositivos) no debería propagarse a capas inferiores críticas. Además, facilita la evolución del sistema, ya que se puede modificar o reemplazar una capa completa sin reescribir todo el SO, siempre que se conserve la interfaz con las capas adyacentes.
4.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).

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.
4.4 Estructura cliente - servidor
El modelo cliente-servidor es una arquitectura de sistemas operativos y aplicaciones donde las tareas se reparten entre proveedores de recursos o servicios, llamados servidores, y los consumidores de esos servicios, llamados clientes.
En este diseño, el núcleo del sistema operativo se reduce a una mínima expresión –el microkernel– que solo implementa funciones básicas esenciales (como planificación de CPU, comunicación interprocesos y gestión de interrupciones). La mayor parte de servicios del SO se ejecutan en espacio de usuario como procesos independientes, denominados servidores, y el resto de procesos actúan como clientes que solicitan esos servicios

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.