Skip to content

Tema 1: Estructuras y Arquitecturas de Sistemas Operativos

📝 Resumen Ejecutivo

En esta sesión se cierra el Bloque 1 de la asignatura. Se transiciona de la historia y conceptos básicos (Tema 1) hacia la arquitectura interna (Tema 2), analizando cómo se organizan los componentes del núcleo (Kernel). Se exploran modelos desde el monolítico hasta los sistemas distribuidos y la virtualización, concluyendo con una visión evolutiva de los SO (desde los Mainframes hasta la Nube y la IA).


🗝️ Conceptos Clave

  • Sistema Monolítico: Arquitectura donde todo el código y funcionalidades residen en un solo proceso y espacio de dirección.
  • Sistema en Capas (Layered): Organización jerárquica (anillos) donde cada capa confía solo en la inferior.
  • Virtualización: Uso de software (hipervisor) para imitar hardware y ejecutar múltiples SO simultáneamente.
  • Exokernel: Arquitectura experimental que elimina la abstracción, dando a las aplicaciones acceso directo a recursos físicos particionados.
  • Kernel: Programa fundamental que gestiona todos los recursos del equipo, evitando que las aplicaciones hablen directamente con el hardware.
  • Blockchain: Mencionado como evolución de sistemas distribuidos (registros inalterables y descentralizados).

📚 Desarrollo del Temario

1. Funciones Fundamentales del Sistema Operativo (Base del Tema 1)

Antes de entender la estructura, recordamos qué gestiona esa estructura. El SO actúa como intermediario entre el usuario/aplicaciones y el hardware.

  • Gestión de Procesos: Un proceso es un programa en ejecución. El SO gestiona su creación, terminación, y comunicación.
  • Gestión de Memoria: Administra la memoria RAM (volátil) y física, asignando espacios a procesos y liberándolos al terminar.
  • Gestión de Archivos: Abstracción de datos en forma de directorios y ficheros. Usa "rutas" (\(path\)) para localizarlos.
  • El Shell: Intérprete de comandos que permite la interactividad. No es parte del SO en sí, pero usa sus características extensivamente.

2. Arquitecturas y Modelos de Diseño (Tema 2)

El profesor destaca que ningún sistema moderno es "puro", pero se basan en estos modelos fundamentales:

A. Sistemas Monolíticos

  • Definición: Funciona como una "única piedra". Todo el código y funcionalidades están en un solo proceso.
  • Ejemplo Clásico: UNIX.
  • ¡OJO AL DATO!: Aunque es un bloque único, sí admite carga dinámica de módulos (drivers) para mejorar la modularidad sin dejar de ser monolítico. Esto es pregunta de examen/test.

B. Sistemas en Capas (Layered)

  • Definición: El sistema se divide en niveles jerárquicos.
  • Funcionamiento: La Capa \(N\) solo se comunica con la Capa \(N-1\). Esto facilita la depuración y la protección (anillos de seguridad).
  • Estructura típica: Hardware Kernel Memoria E/S Interfaz de Usuario.

C. Microkernel y Exokernel

  • Microkernel: Reduce el núcleo al mínimo indispensable, moviendo servicios (como sistemas de archivos) al espacio de usuario para mayor estabilidad.
  • Exokernel:
    • Concepto: Elimina la abstracción entre SO y aplicaciones.
    • Función: Se dedica a asignar (multiplexar) recursos reales de hardware a máquinas virtuales.
    • Diferencia: No se usa en sistemas comerciales (ni Windows ni Linux lo usan). Su objetivo es el rendimiento puro permitiendo que la aplicación gestione su propia abstracción.

D. Sistemas Distribuidos y Cliente-Servidor

  • Cliente-Servidor: Modelo estándar donde los clientes (móviles, PC) hacen peticiones a servidores (Linux/Windows Server) a través de red.
  • Sistemas Distribuidos: Conjunto de ordenadores independientes que se presentan al usuario como un sistema único. Comparten recursos (CPU, disco) para maximizar eficiencia.
    • Tendencia: Blockchain se menciona como un tipo de sistema distribuido (registro inalterable descentralizado).

3. La Virtualización

Tema central de la clase. Permite ejecutar múltiples SO en un solo hardware físico.

  • Herramientas Recomendadas por el Profesor:
    • VMware / VirtualBox: Estándares para PC.
    • WSL (Windows Subsystem for Linux): Emulador dentro de Windows 10/11. Nota del profesor: Sirve para el 95% de la asignatura, pero se recomienda tener una máquina virtual Linux real.
    • Parallels: Para ejecutar Windows sobre Mac (mencionado como "delito" para los puristas de Mac, pero útil).
    • Proxmox / QNAP: Para virtualización en servidores o NAS.
  • Consejo Práctico: Se recomienda encarecidamente virtualizar un Ubuntu (Linux) para las prácticas de shell script y programación en C que vendrán.

4. Evolución Histórica (Solución al Problema de Clase)

Se presentó la evolución de las arquitecturas frente a los requisitos del hardware. El profesor sugiere usar tablas comparativas para resumir esto en trabajos académicos (TFG/TFM).

Era Décadas Arquitectura Dominante Hito Tecnológico Ejemplo SO
1. Mainframes 50s-70s Monolítica centralizada Maximizar uso de CPU/Memoria OS/360
2. Microprocesador 80s-90s Multitarea Protección de memoria, Modo Usuario/Kernel MS-DOS Win 95, UNIX
3. RISC / Multiproceso 90s-00s Modular / Hilos Gestión de hilos, núcleos simétricos Solaris, Linux, Win NT
4. Multicore / 64-bit 00s-10s Virtualización Hipervisores, soporte nativo 64-bits Win XP/7, Mac OS X
5. Nube / Móvil / IA 10s-Hoy Heterogénea / Distribuida Cloud Computing, IoT, Contenedores Android, Win 10/11, Cloud Linux

Nota sobre Windows vs Linux: * Windows: Nació como interfaz gráfica para MS-DOS (1985), consolidándose en el mercado doméstico y empresarial con una filosofía cerrada y comercial. * Linux: Nació como proyecto personal de Linus Torvalds (1991), basado en UNIX con filosofía Open Source (GPL). Domina en servidores y supercomputadoras.


5. Instrucciones para la Actividad 1 (Investigación MacOS)

  • Tipo: Individual, Teórica.
  • Tema: Arquitectura y características de macOS.
  • Requisito Crítico: No hacer "copy-paste". El profesor busca tu punto de vista personal y argumentación, no solo datos técnicos.
  • Formato: Normas APA obligatorias para citas y bibliografía (penalización de -2 puntos si falta).
  • Extensión: No es necesario que sea tesis doctoral (6-7 páginas de contenido es aceptable), pero debe tener profundidad.

🧠 Preguntas de Autoevaluación (Basadas en el Quiz de clase)

  1. ¿Puede un sistema monolítico cargar drivers dinámicamente?
    • Respuesta: Sí. Aunque el núcleo es un solo binario, los SO modernos monolíticos (como Linux) permiten cargar módulos bajo demanda para mejorar la flexibilidad.
  2. ¿El Exokernel se utiliza comúnmente en sistemas comerciales como Windows 10?
    • Respuesta: No. Es una arquitectura de investigación/experimental que elimina abstracciones; Windows utiliza una arquitectura híbrida (basada en microkernel modificado).
  3. ¿La gestión de memoria virtual es exclusiva de los microkernels?
    • Respuesta: No. La memoria virtual es una característica esencial presente en sistemas monolíticos, en capas y microkernels.
  4. En una arquitectura en capas, ¿puede la Capa 1 comunicarse directamente con la Capa 3?
    • Respuesta: No. Por definición, una capa solo debe comunicarse con la inmediatamente superior o inferior para mantener la jerarquía y seguridad.