← Volver al temario

🏗️ Capítulo 2: Estructura del Sistema Operativo

🧩 Componentes del SO

Los principales módulos funcionales que componen un SO y que interactúan para proporcionar la funcionalidad completa al usuario incluyen:

  • Gestión de Procesos: Creación, terminación, suspensión, reanudación, y sincronización de procesos y comunicación entre ellos (IPC).
  • Gestión de Memoria Principal: Seguimiento de qué partes de la memoria están en uso, asignación y desasignación de espacio, y manejo de la paginación o segmentación.
  • Gestión de Archivos: Creación, borrado, modificación y mapeo de archivos a dispositivos de almacenamiento secundario. También incluye la gestión de permisos.
  • Gestión del Sistema de E/S: Oculta las peculiaridades de los dispositivos de *hardware* a los usuarios, proporcionando una interfaz uniforme para los *drivers* y el *spooling*.
  • Sistema de Protección: Mecanismos para controlar el acceso de los procesos o usuarios a los recursos definidos por el SO, garantizando la seguridad y la integridad.
  • Sistema de Intérprete de Comandos (Shell): Interfaz principal que permite al usuario interactuar con el SO, ejecutando comandos o programas a través de la línea de comandos o una interfaz gráfica.

⚙️ Estructuras del SO

Modelo Descripción Detallada Ventajas Ampliadas Inconvenientes Ampliados
Monolítico Todo el código del SO se compila en un único fichero ejecutable grande que se ejecuta enteramente en modo kernel (privilegiado). Los servicios se invocan a través de llamadas de función simples. Alta eficiencia y velocidad de ejecución, ya que las llamadas entre módulos son llamadas a funciones locales, sin *overhead* de cambio de contexto. Un único error (*bug*) en cualquier parte del código puede corromper el estado del núcleo y provocar un fallo total del sistema. Difícil de mantener y probar.
Micronúcleo El núcleo es extremadamente minimalista, conteniendo solo las funciones esenciales: primitiva de paso de mensajes (IPC), gestión de interrupciones y planificación de la CPU. Todos los demás servicios (sistemas de archivos, gestión de memoria virtual, *drivers*) se ejecutan como procesos independientes en modo usuario. Fiabilidad y Estabilidad: El fallo de un servidor (ej. un *driver*) no derriba al núcleo. Modularidad y Extensión: Los nuevos servicios se añaden sin recompilar el núcleo. Seguridad: Menos código ejecutándose en modo privilegiado. Rendimiento: El mayor inconveniente es la sobrecarga (*overhead*) debido al paso de mensajes (IPC) que se necesita para que los servicios se comuniquen entre sí y con el núcleo.
Capas El SO se divide en N capas. La capa L solo puede solicitar servicios de la capa L-1. El *hardware* está en la capa 0 y la interfaz de usuario en la capa N. Diseño modular y fácil depuración, ya que el fallo se localiza en la capa defectuosa. Cada capa tiene una interfaz bien definida. Rendimiento más lento debido a que una llamada al sistema puede requerir que la solicitud pase secuencialmente a través de varias capas antes de llegar al *hardware*.

📞 Llamadas al Sistema (*System Calls*)

  • Definición: El principal mecanismo de interfaz entre los procesos de usuario y el SO. Permite a los programas de usuario solicitar servicios directamente al núcleo, como acceso a E/S o creación de nuevos procesos.
  • Funcionamiento: Se implementan generalmente mediante una interrupción software (o instrucción especial) que cambia el modo de ejecución del procesador de modo usuario a modo kernel (privilegiado). Esto garantiza que el núcleo mantenga el control y pueda validar las peticiones antes de ejecutarlas. Se pasa información a través de registros de CPU o bloques en memoria.