Estructura de un Sistema Operativo Linux

Conceptos clave, capas de abstracción y la modularidad que hace de Linux una arquitectura donde casi todo es intercambiable.

Diapositivas del Tema

Accede a la presentación completa para repasar offline.

Ver Diapositivas

Capítulo I: Fundamentos del Sistema Operativo

¿Qué es realmente un SO? Es el jefe que organiza el caos dentro del computador. Coordina todos los recursos y proporciona una interfaz entre el hardware y las aplicaciones.

"Un sistema operativo es el software que gestiona los recursos del hardware y proporciona servicios a los programas de aplicación."

Silberschatz, Galvin & Gagne
Hardware = Cuerpo

Los componentes físicos: CPU, RAM, disco, tarjeta gráfica. Son los músculos y órganos del computador.

SO = Cerebro

Coordina todo y toma decisiones. Sin él, solo hay electrónica esperando órdenes... no hay programas, ni archivos, ni interfaz.

Funciones principales del SO

1Gestión de Procesos

Controla qué programa usa la CPU en cada momento.

2Gestión de Memoria

Asigna y protege la RAM para cada aplicación.

3Gestión de Archivos

Organiza el almacenamiento y la estructura de directorios.

4Control de E/S

Maneja dispositivos y periféricos (teclado, disco, red).

Los tres niveles del sistema

Cada capa solo puede comunicarse con la capa adyacente. El usuario nunca interactúa directamente con el hardware.

Nivel 1
Espacio de Usuario

Navegador web, terminal, editores de texto.

Nivel 2
Kernel

Gestión de procesos, memoria y controladores (drivers).

Nivel 3
Hardware

CPU, RAM, disco duro/SSD, tarjeta de red.

Flujo de comunicación

  1. La aplicación solicita un recurso.
  2. El kernel recibe la solicitud.
  3. El kernel verifica permisos.
  4. El hardware ejecuta la operación.
  5. El resultado vuelve a la app.

"El sistema operativo es el intermediario entre el usuario y el hardware."

Tanenbaum

Capítulo II: Hardware y Kernel

El gran problema: El hardware NO sabe ejecutar Word, Chrome ni Python. Solo entiende electricidad y operaciones matemáticas básicas. Alguien tiene que traducir lo que los programas quieren hacer. Ese alguien es el KERNEL.

Componentes fundamentales del hardware

CPU

Procesador central que ejecuta instrucciones.

RAM

Memoria volátil de acceso rápido.

Disco

Almacenamiento persistente (HDD/SSD).

GPU

Procesamiento gráfico y paralelo.

Tarjeta de Red

Conectividad Ethernet/WiFi.

Dispositivos E/S

Teclado, ratón, monitor, impresora.

El Kernel: el corazón del sistema

Es el núcleo del sistema operativo. Es el único que puede hablar directamente con el hardware.

El Árbitro

Decide quién usa los recursos.

El Policía

Protege y hace cumplir las reglas.

El Administrador

Gestiona todos los recursos.

Funciones fundamentales del Kernel

Gestión de Procesos

La CPU solo puede ejecutar una cosa a la vez. El kernel divide el tiempo en microfragmentos (Time Slices), cambia rápidamente entre procesos (Context Switching) y crea la ilusión de ejecución simultánea.

Gestión de Memoria

Cada programa cree que tiene su propio espacio privado. La RAM es compartida; el kernel divide y protege cada espacio. Si un programa invade otra memoria → Segmentation Fault.

Controladores (Drivers)

El kernel no sabe manejar cada impresora del mundo. Para eso usa drivers: traductores específicos para cada dispositivo. Sin driver = no hay dispositivo.

Arquitectura del Kernel Linux

Linux es Monolítico: todo el núcleo vive en el mismo espacio de memoria.

🧱 Monolítico (Linux)
  • Todo en kernel space
  • Alto rendimiento, menos overhead
  • Comunicación directa entre componentes
  • Un error puede afectar todo el sistema
🧩 Microkernel (MINIX)
  • Solo lo esencial en kernel
  • Mayor seguridad y estabilidad
  • Mayor overhead de comunicación
  • Más difícil de implementar

"Linux es un paso atrás a los años 70. Los microkernels han ganado."

Tanenbaum (1992)

"Los microkernels son más complicados. Los algoritmos distribuidos no son más simples."

Torvalds (1992)
Linux también es Modular: puede cargar módulos dinámicamente. Añades soporte sin reiniciar, menor consumo de memoria base. Combina lo mejor de ambos mundos.

Capítulo III: Modos de Ejecución y System Calls

¿Por qué dos modos? Para que un error en Chrome no tumbe todo el sistema. Las apps no pueden dañar el kernel.

Modo Kernel vs Modo Usuario

Modo Kernel

Acceso total al hardware. Solo el kernel y sus módulos viven aquí. Acceso directo a memoria, puertos e interrupciones. Si algo falla → Kernel Panic.

Modo Usuario

Acceso limitado. Todas las aplicaciones viven aquí. No pueden tocar hardware directamente. Si algo falla → solo se cierra el programa.

Cambio de modo

  1. La app solicita un servicio (syscall).
  2. La CPU cambia a modo kernel.
  3. El kernel ejecuta la operación.
  4. Retorna a modo usuario.

"El modo dual de operación protege al SO de programas de usuario erróneos."

Silberschatz et al.

System Calls: las llamadas al sistema

Las aplicaciones NO pueden hablar directamente con el hardware. Usan System Calls: solicitudes formales al kernel. Son el único puente legal hacia el núcleo. Linux tiene ~300 system calls diferentes.

Procesos
  • fork() — Crear proceso
  • exec() — Ejecutar programa
Archivos
  • open() — Abrir archivo
  • close() — Cerrar archivo
Datos
  • read() — Leer datos
  • write() — Escribir datos

Ejemplo: abrir un archivo

  1. El programa llama a open().
  2. Se invoca la syscall al kernel.
  3. El kernel verifica permisos.
  4. El archivo se abre → retorna descriptor o error.

Capítulo IV: Interfaz de Usuario y Entorno Gráfico

Lo que hace único a Linux: La interfaz gráfica NO es obligatoria. Puedes tener un servidor sin interfaz o un escritorio completamente personalizado.

Espacio de Usuario, CLI y Shell

CLI

Interfaz basada en texto. No es retro: es poderosa. Automatización de tareas, administración de servidores, control total del sistema.

Shell

El intérprete. Recibe lo que escribes, traduce comandos a instrucciones y ejecuta syscalls. Sin shell, la terminal sería una pantalla vacía.

Shells en Linux
  • Bash — Default
  • Zsh — Moderno
  • Fish — User-friendly

La Pila Gráfica de Linux

Cuando queremos ventanas, mouse y botones, aparece esta arquitectura:

X11 (Clásico)

Sistema gráfico con +30 años. Funciona con modelo cliente-servidor: el Servidor X controla pantalla, teclado y ratón; las aplicaciones le piden que dibuje cosas.

Wayland (Moderno)

El reemplazo moderno de X11. Más simple, más seguro, más eficiente. El compositor habla directamente con el kernel y la GPU. Es el futuro.

Comparación X11 vs Wayland

Característica X11 Wayland
Edad +30 años Moderno
Arquitectura Cliente-servidor Más directa
Seguridad Más débil Más fuerte
Complejidad Muy compleja Más simple
Rendimiento Bueno Mejor en animaciones
Soporte legado Excelente En transición

Entornos de Escritorio

Un entorno de escritorio es un paquete completo que incluye apariencia visual, paneles, menú, gestor de ventanas y aplicaciones básicas. NO son sistemas operativos — son capas visuales que viven encima del servidor gráfico.

GNOME

Minimalista, moderno, GTK. Muy usado en Ubuntu y Fedora.

KDE Plasma

Altamente personalizable, Qt, muy visual y completo.

XFCE

Ligero, clásico, ideal para equipos antiguos.

MATE

Basado en GNOME 2. Tradicional, ligero-moderado.

Cinnamon

Basado en GNOME, tipo Windows. Usado en Linux Mint.

Gestores de Ventanas

En Linux puedes cambiar el gestor de ventanas o el entorno completo. En Windows y macOS la interfaz es fija. Aquí está la diferencia cultural.

Flotantes (Tradicionales)

Ventanas que flotan libremente en la pantalla. Ej: Openbox, Fluxbox.

Tiling (Mosaico)

Ventanas se organizan automáticamente en pantalla. Ej: i3, Sway, Hyprland.

Hyprland: Compositor/gestor de ventanas moderno basado en Wayland. Tipo tiling, muy visual y animado. NO es un entorno de escritorio completo — tú construyes el resto manualmente. Es para usuarios avanzados.

Conclusión

Kernel

Controla hardware

Protección

Reglas de seguridad

Aplicaciones

Espacio seguro

Puente

Software ↔ Hardware

Linux no es solo "otro sistema".

Es una arquitectura modular donde casi todo es intercambiable. Y eso cambia completamente la forma de entender los sistemas.

Galería de Videos

El Kernel de Linux (Computerphile)
¿Qué es un Kernel? (Red Hat)

Referencias Bibliográficas

  • Silberschatz, A., Galvin, P. B. & Gagne, G. (2018). Operating System Concepts, 10th Edition. Wiley.
  • Tanenbaum, A. S. (2015). Modern Operating Systems, 4th Edition. Pearson.
  • Love, R. (2010). Linux Kernel Development, 3rd Edition. Addison-Wesley.
  • Ward, B. (2021). How Linux Works, 3rd Edition. No Starch Press.
  • Kernel.org. (2025). The Linux Kernel Archives. Sitio Oficial