Introducción a los sistemas operativos

Un sistema operativo (SO) es el software fundamental de cualquier equipo. Su misión principal es doble: gestionar con eficacia los recursos de hardware (CPU, memoria, almacenamiento) y ofrecer una interfaz para que tanto los usuarios como las aplicaciones puedan comunicarse con la máquina.

Objetivos y Funciones Principales

El sistema operativo actúa como un puente indispensable entre los componentes físicos de hardware y el software de aplicación, persiguiendo metas fundamentales:

  • Objetivos Principales:
    • Comodidad y Abstracción: Ocultar la complejidad técnica del hardware, ofreciendo al usuario y al programador interfaces claras y sencillas (como sistemas de ficheros o llamadas al sistema).
    • Eficiencia: Administrar y repartir de forma óptima los recursos disponibles de la CPU, la memoria y los periféricos entre los distintos programas concurrentes.
    • Control y Seguridad: Proteger el sistema frente a accesos no autorizados, fallos de software y garantizar la integridad de los datos corporativos.

  • Funciones Principales:
    • Gestión de Procesos: Creación, planificación, sincronización y finalización de los procesos y tareas ejecutados por la CPU.
    • Gestión de Memoria: Asignación y liberación dinámica de bloques de memoria RAM para cada aplicación en ejecución, protegiendo los espacios de direccionamiento.
    • Gestión de Almacenamiento y Sistemas de Archivos: Organización, lectura, escritura y control de permisos de los ficheros en discos duros, SSDs y soportes externos.
    • Control de Dispositivos (Drivers): Intermediación estandarizada entre el núcleo del sistema y los controladores de los periféricos de E/S.

Componentes Básicos de un Sistema Operativo

Arquitectónicamente, un sistema operativo moderno se estructura en capas bien definidas que separan los privilegios de ejecución:

  • El Núcleo (Kernel): El corazón del sistema operativo. Se ejecuta en modo privilegiado (modo núcleo) y tiene control absoluto sobre el hardware, gestionando las interrupciones, la CPU, la memoria y la comunicación de bajo nivel.
  • Llamadas al Sistema (System Calls): El mecanismo de interfaz programática mediante el cual las aplicaciones de usuario solicitan servicios privilegiados al núcleo del sistema operativo.
  • Intérprete de Comandos y Entorno de Usuario (Shell / GUI): Capa externa que permite al usuario interactuar con el sistema mediante comandos de texto (consola/terminal) o interfaces gráficas intuitivas (escritorios virtuales, ventanas e iconos).
  • Controladores de Dispositivos (Drivers): Módulos de software específicos que traducen las órdenes generales del núcleo en señales comprensibles para un componente físico de hardware concreto.

Evolución Histórica de los Sistemas Operativos

Los sistemas operativos han evolucionado de la mano de las generaciones de hardware para resolver las crecientes necesidades de automatización y potencia:

  • Primeras Décadas (Años 50): Sin sistemas operativos propiamente dichos. Las máquinas ejecutaban los trabajos de forma secuencial y manual mediante tarjetas perforadas (procesamiento por lotes o batch processing).
  • Años 60 y 70 (Multiprogramación y Tiempos Compartidos): Surgen sistemas como UNIX, permitiendo que la CPU alternara rápidamente entre múltiples tareas en ejecución (multitarea) y que varios usuarios accedieran al ordenador simultáneamente (multiusuario).
  • Años 80 y 90 (Informática Personal y Entornos Gráficos): Popularización de sistemas operativos orientados al usuario final con interfaces gráficas avanzadas (MS-DOS, primeros Windows, Mac OS y la expansión global de Linux).
  • Era Actual (Cloud, Móviles y Virtualización): Sistemas operativos altamente distribuidos, adaptados a arquitecturas móviles (Android, iOS), contenedores ligeros, entornos hipervisores en la nube y computación en red masiva.

Actividad práctica

Objetivo:

Identificar los componentes activos del sistema operativo y analizar la gestión de procesos en un entorno real.

Tareas:

  1. Abre el Administrador de Tareas (en Windows) o el Monitor del Sistema / comando top o htop (en Linux/macOS) para visualizar los procesos en ejecución.
  2. Identifica qué porcentaje de uso de CPU y memoria RAM está consumiendo el sistema operativo frente al software de aplicación.
  3. Investiga qué tipo de núcleo (por ejemplo, núcleo monolítico como Linux o micronúcleo) utiliza el sistema operativo de tu equipo principal.
  4. Reflexiona sobre qué ocurriría a nivel de estabilidad si una aplicación de usuario ordinaria tuviera acceso directo sin restricciones al modo núcleo (kernel space) del sistema.
Haz clic aquí para ver las soluciones y explicaciones

1 y 2. Visualización de procesos (CPU y RAM)

Al abrir el monitor de sistema de tu sistema operativo, verás una lista dinámica de procesos. Generalmente, en una situación de uso normal (con el navegador web y algunas aplicaciones abiertas):

  • CPU: El sistema operativo (procesos del sistema, gestor de ventanas, servicios en segundo plano) suele consumir un porcentaje bajo (entre el 1% y el 5%), mientras que los picos más altos se deben a las aplicaciones de usuario activas (como navegadores web, entornos de desarrollo o reproductores multimedia).
  • Memoria RAM: El sistema operativo reserva una cantidad fija o proporcional para su núcleo y cachés esenciales, pero la mayor parte de la memoria física suele estar repartida entre las aplicaciones pesadas de usuario (navegadores y suites de oficina encabezan habitualmente este consumo).

  • PID: Identificador del proceso (Process ID). Es el número único que asigna el sistema operativo para reconocer y gestionar cada proceso en ejecución.
  • USER: Usuario propietario que ha lanzado y está ejecutando el proceso.
  • PR: Prioridad del proceso (Priority). Indica la prioridad con la que el planificador del núcleo (scheduler) asigna tiempo de CPU.
  • NI: Valor de amabilidad o cordialidad (Nice). Es un modificador numérico que permite ajustar la prioridad del proceso (los valores más altos restan prioridad para dejar que otros procesos usen la CPU).
  • VIRT: Memoria virtual (Virtual Memory). Cantidad total de memoria virtual reservada por el proceso (incluye RAM, código, datos y memoria intercambiada o mapeada).
  • RES: Memoria residente (Resident Memory). Cantidad de memoria física RAM real que el proceso está consumiendo en ese preciso instante.
  • SHR: Memoria compartida (Shared Memory). Parte de la memoria física que el proceso comparte con otros programas (por ejemplo, bibliotecas o librerías del sistema).
  • S: Estado del proceso (Status). Indica la situación actual en la que se encuentra (por ejemplo, S de sleeping o dormido, y R de running o ejecutándose activamente).
  • %CPU: Porcentaje de uso del procesador. Parte del tiempo de CPU que este proceso específico está consumiendo en el intervalo de actualización.
  • %MEM: Porcentaje de uso de la memoria RAM. Proporción de la memoria física total que utiliza este proceso.
  • TIME+: Tiempo de CPU acumulado. Tiempo total de procesamiento que la CPU ha dedicado a este proceso desde que fue iniciado (expresado en minutos, segundos y centésimas).
  • COMMAND: Nombre del comando, programa o aplicación que dio origen y está ejecutando el proceso.

3. Investiga qué tipo de núcleo (por ejemplo, núcleo monolítico como Linux o micronúcleo) utiliza el sistema operativo de tu equipo principal.

Dependiendo del equipo principal que utilices, el núcleo (kernel) se archiva principalmente en dos grandes arquitecturas:

  • Linux (y Android): Utiliza un núcleo monolítico. Todos los servicios del sistema operativo (gestión de memoria, planificación de procesos, controladores de dispositivos, red) corren en el mismo espacio de memoria privilegiado, lo que ofrece un rendimiento muy alto y optimizado.
  • Windows: Utiliza un núcleo de tipo híbrido (una evolución que combina elementos monolíticos y de micronúcleo para equilibrar rendimiento y modularidad).
  • macOS / iOS: Utilizan XNU, un núcleo híbrido basado en la tecnología Mach ( micronúcleo) y componentes de BSD (monolítico).
Para ver la información del sistema puedes ejecutar el comando uname -a (en Windows: systeminfo 
Para conocer la familia y nombre del sistema operativo puedes leer el archivo de configuración del sistema ejecutando:
cat /etc/os-release

4. Reflexión sobre la estabilidad y el modo núcleo (kernel space)

Si una aplicación de usuario ordinaria (como un editor de texto o un videojuego) tuviera acceso directo y sin restricciones al modo núcleo, la estabilidad y la seguridad del sistema colapsarían de inmediato por los siguientes motivos:

  • Falta de aislamiento: Un error de programación, un puntero nulo o un fallo de memoria en una aplicación cualquiera podría sobrescribir regiones de memoria críticas reservadas para otros programas o para el propio núcleo.
  • Pantallas azules / Cuelgues constantes: Cualquier software con un pequeño "bug" provocaría la caída total del sistema operativo (kernel panic o pantallazo azul) en lugar de cerrarse de forma aislada.
  • Vulnerabilidad de seguridad: Cualquier aplicación maliciosa o troyano podría modificar directamente los registros de hardware, acceder sin permiso a los discos duros o espiar el tráfico de red de forma descontrolada al no existir barreras de privilegios (anillo 0 vs anillo 3 de la CPU).

Preguntas de reflexión:

  1. ¿Qué diferencia técnica crítica existe entre el espacio de usuario (user space) y el espacio de núcleo (kernel space) en la arquitectura de un sistema operativo?
  2. ¿Cómo interviene el planificador de procesos (scheduler) del sistema operativo para repartir de forma equitativa el tiempo de la CPU entre decenas de aplicaciones simultáneas?
  3. ¿Qué ventajas operativas supuso la transición histórica desde los sistemas operativos de procesamiento por lotes monousuario hacia los entornos multitarea y multiusuario?
  4. ¿Por qué las llamadas al sistema (system calls) son un mecanismo de seguridad obligatorio cuando una aplicación de usuario necesita leer un archivo del disco duro?
  5. ¿De qué manera los sistemas operativos modernos gestionan la memoria virtual para permitir que se ejecuten programas cuya demanda de RAM supera la capacidad física instalada?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué diferencia técnica crítica existe entre el espacio de usuario y el espacio de núcleo en un sistema operativo?

El espacio de usuario es el entorno aislado donde se ejecutan las aplicaciones cotidianas con privilegios limitados por seguridad. El espacio de núcleo (kernel space) es la zona de ejecución altamente privilegiada donde reside el núcleo del SO, con acceso directo y total al hardware, instrucciones de procesador especiales y memoria física, evitando que un fallo en el software de usuario colapse la máquina entera.


2. ¿Cómo interviene el planificador de procesos del sistema operativo para repartir el tiempo de la CPU?

El planificador (scheduler) utiliza algoritmos avanzados de prioridades y turnos (como round-robin o colas multinivel) para asignar minúsculas fracciones de tiempo de procesador (milisegundos) a cada proceso activo de forma alternada. Gracias a la velocidad extrema de la CPU, genera la ilusión en el usuario de que múltiples programas se están ejecutando exactamente al mismo tiempo (multitarea concurrente).


3. ¿Qué ventajas operativas supuso la transición desde los sistemas por lotes hacia los entornos multitarea y multiusuario?

Permitió eliminar los largos tiempos de espera inactivos en el procesamiento de datos, optimizando de forma drástica el rendimiento económico de los costosos equipos informáticos. Además, facilitó la interacción en tiempo real entre el usuario y la máquina, permitiendo ejecutar múltiples tareas simultáneamente y compartir recursos de hardware centralizados entre muchos usuarios conectados a la vez.


4. ¿Por qué las llamadas al sistema son un mecanismo de seguridad obligatorio para acceder a recursos de hardware?

Porque actúan como una puerta de entrada controlada y validada. Si una aplicación común quisiera leer un archivo o enviar datos por red sin pasar por una llamada al sistema gestionada por el núcleo, podría corromper la memoria, acceder a datos confidenciales de otros usuarios o desestabilizar los controladores físicos, comprometiendo la seguridad global del equipo.


5. ¿De qué manera los sistemas operativos modernos gestionan la memoria virtual para superar las limitaciones físicas de la RAM?

Mediante la técnica de paginación, el sistema operativo divide la memoria en bloques fijos llamados páginas. Cuando la memoria RAM física se satura, el SO traslada temporalmente las páginas de datos menos utilizadas hacia un espacio reservado en el disco secundario (archivo de paginación o partición swap), cargándolas de nuevo en la RAM de manera transparente y automática en cuanto el proceso vuelve a necesitarlas.