Componentes del Sistema Operativo.


Componentes del sistema operativo

Un sistema operativo (SO) es la capa de software que actúa como intermediario entre el hardware y los programas de usuario. Su función principal es gestionar recursos y proporcionar abstracciones que faciliten la programación y el uso del sistema. El núcleo del sistema operativo (kernel) interactúa directamente con el hardware, mientras que hacia arriba ofrece interfaces y servicios a los programas y a los usuarios.

Para entender cómo funciona, conviene analizar los principales componentes del sistema operativo y sus responsabilidades.


Gestión del procesador

El procesador es el recurso más crítico, y el sistema operativo debe asignarlo de manera eficiente entre los procesos que compiten por él. Esta gestión incluye:

  • Tratamiento de interrupciones: el kernel debe atender interrupciones de hardware (teclado, disco, red) y de software (excepciones, llamadas al sistema). Una interrupción implica salvar el estado de ejecución, ejecutar el manejador correspondiente y restaurar el contexto para continuar la ejecución normal.
  • Funciones básicas de memoria y DMA: el sistema gestiona accesos de bajo nivel a memoria y controla los módulos de acceso directo a memoria (DMA), que permiten a los dispositivos mover datos sin intervención directa de la CPU.

Gestión de procesos

Un proceso es un programa en ejecución junto con su contexto (registros, memoria, estado). El sistema operativo se encarga de:

  • Creación de procesos: reserva estructuras de control (PCB – Process Control Block), asigna memoria y recursos.
  • Planificación: decide qué proceso se ejecuta en la CPU en cada instante, utilizando algoritmos como Round Robin, SJF o Prioridades.
  • Destrucción de procesos: libera recursos cuando el proceso finaliza o es terminado.

La planificación eficiente es esencial para garantizar rendimiento y equidad en sistemas multiusuario y multitarea.


Gestión de memoria

El sistema operativo administra la memoria principal, que es un recurso escaso y compartido. Sus funciones incluyen:

  • Mantenimiento del mapa de memoria libre: estructuras para saber qué bloques están ocupados o disponibles.
  • Asignación y liberación: dar memoria a procesos cuando la necesitan y recuperarla cuando terminan.
  • Técnicas avanzadas: segmentación, paginación y memoria virtual, que permiten abstraer la memoria física y ofrecer espacios de direcciones independientes para cada proceso.

Gestión de entrada/salida (E/S)

La interacción con periféricos es esencial. El sistema operativo debe:

  • Proporcionar acceso uniforme a dispositivos heterogéneos mediante controladores y llamadas al sistema.
  • Gestionar protocolos de comunicación y registros de hardware, ocultando detalles a los programas de usuario.
  • Sincronizar E/S y CPU, permitiendo solapamiento de operaciones mediante interrupciones y DMA.

Esto permite que el programador vea dispositivos muy diferentes (discos, impresoras, red) bajo una interfaz homogénea.


Gestión de archivos y directorios

El sistema de archivos es una de las abstracciones más visibles. Sus responsabilidades son:

  • Manejar archivos y directorios como unidades lógicas en lugar de bloques físicos en disco.
  • Administración del almacenamiento secundario: gestión del espacio libre, metadatos, permisos y control de acceso.
  • Operaciones básicas: crear, eliminar, abrir, cerrar, leer y escribir archivos.

Los directorios permiten organizar la información jerárquicamente y mejorar la eficiencia en la búsqueda y gestión.


Seguridad y protección

Un sistema operativo debe garantizar que los usuarios y procesos no accedan a recursos sin autorización. Esto incluye:

  • Identificación de usuarios: credenciales de acceso y autenticación.
  • Gestión de privilegios: asignación de permisos sobre ficheros, dispositivos y memoria.
  • Detección de violaciones: impedir accesos indebidos o intrusiones mediante mecanismos de auditoría y control.

La seguridad es crítica en entornos multiusuario y en sistemas conectados a redes.


Comunicación y sincronización de procesos

En sistemas multitarea, los procesos deben cooperar y comunicarse:

  • Comunicación entre procesos (IPC): tuberías, colas de mensajes, memoria compartida o sockets.
  • Sincronización: mecanismos como semáforos, monitores o variables de condición que evitan condiciones de carrera y garantizan acceso seguro a recursos compartidos.
  • Comunicación entre máquinas: soporte para redes distribuidas.

Estos mecanismos son fundamentales en sistemas concurrentes y distribuidos.


Interfaz de llamadas al sistema

El sistema operativo ofrece llamadas al sistema (system calls) que encapsulan las funciones críticas.

  • Actúan como capas de abstracción entre el hardware y los programas de usuario.
  • Incluyen utilidades como open(), read(), write(), fork() o exec() en sistemas POSIX.
  • Pueden existir varias interfaces en un mismo sistema, aunque el usuario solo interactúa con una a la vez.

Esto permite que los programas se desarrollen sin tener que manipular directamente el hardware.


Intérpretes de comandos

Los intérpretes o shells son programas que permiten al usuario interactuar con el sistema operativo:

  • Pueden ser de texto (Bash, zsh, PowerShell) o gráficos (GUI como GNOME Shell o Windows Explorer).
  • Ejecutan comandos, gestionan procesos, scripts y permiten automatización.
  • Aunque se pueden instalar varios, en un momento dado solo se usa uno de forma interactiva.