Tema 0: Introducción y Estructura de Sistemas Operativos Avanzados
📝 Resumen Ejecutivo
Esta sesión establece las bases de la asignatura, definiendo el Sistema Operativo (SO) como un gestor de recursos y una máquina extendida. Se detalla el sistema de evaluación (fuerte peso en la práctica) y se jerarquiza la importancia del temario, destacando la programación en Linux y Shell Scripting como el núcleo crítico. Finalmente, se revisan las estructuras arquitectónicas de Windows y Linux.
🚨 ¡OJO AL DATO! - Estrategia de Examen
El profesor ha revelado información crítica que no está explícita en las diapositivas sobre cómo priorizar tu estudio:
- Jerarquía de Importancia (Ranking del Profesor):
- Nivel 5 (Máximo): Bloques 3 y 4 (Shell de Linux y Programación del sistema en Linux). Aquí es donde debes enfocar la mayoría de tu energía.
- Nivel 4: Bloque 2 (Administración y Llamadas al sistema).
- Nivel 3: Bloque 5 (Programación en Windows).
- Nivel 2: Bloque 1 (Introducción e Historia).
- Consejo de Oro para el Examen: En la parte práctica (código), no se evaluará la sintaxis perfecta (puntos y comas olvidados), sino la lógica y que el código tenga sentido. Se busca que entiendas lo que haces, no que memorices de forma robótica.
📚 Desarrollo del Temario
1. Sistema de Evaluación y Estructura del Curso
El curso se divide en 5 bloques temáticos que cubren desde la historia hasta la programación de sistemas en Windows y Linux.
Desglose de la Evaluación Final: El examen consta de 3 secciones (Total 10 puntos): * Test (4 puntos): 8 preguntas de selección simple. Dato clave: Las respuestas erróneas no restan. ¡Contesta todas!. * Desarrollo (1 punto): 1 pregunta teórica sobre un concepto visto en clase. * Práctica (5 puntos): 2 ejercicios prácticos de desarrollo (scripting o código C).
Tiempos estimados por el profesor: 20 min para el test, 20 min para desarrollo y 60 min para la práctica.
2. Introducción al Sistema Operativo (Tema 1)
El SO se define bajo dos prismas principales que a veces cumplen objetivos contradictorios:
- Como Máquina Extendida: Abstrae la complejidad del hardware, ofreciendo una interfaz más sencilla y potente.
- Como Gestor de Recursos: Administra de forma eficiente y protegida el procesador (CPU), memoria, y dispositivos de E/S.
Funciones Clave del Diseño: * Gestión de Procesos: Creación, comunicación, parada y planificación. * Gestión de Memoria: Diferenciación entre memoria de kernel y usuario, y gestión de memoria virtual. * Gestión de Ficheros: Jerarquía de directorios, permisos y tipos. * Seguridad: Gestión de usuarios y roles.
Evolución Histórica: * 1ª Gen (1945-55): Válvulas, lenguaje máquina, sin SO real. * 2ª Gen (1955-65): Transistores, Mainframes, Procesamiento por lotes (Batch). * 3ª Gen (1965-80): Circuitos integrados, Multiprogramación (clave), Tiempo compartido. Nacen UNIX y versiones tempranas de lo que hoy conocemos. * 4ª Gen (1980-Presente): PC, Sistemas Distribuidos, GUI (Interfaz Gráfica), SO modernos (Linux, Windows).
3. Estructura del Sistema Operativo (Tema 2)
No todos los SO se construyen igual. La arquitectura define cómo se relacionan los componentes internos:
- Sistemas Monolíticos: "El gran bloque". No hay estructura interna rígida; todas las partes del kernel pueden hablar entre sí. Alto rendimiento, pero un fallo puede colgar todo el sistema (Ej: Linux tradicional, aunque ahora es modular).
- Sistemas en Capas: Jerarquía estricta. Una capa solo habla con la inmediatamente inferior o superior. Más organizado, menos eficiente.
- Microkernel (Micro-núcleo): Filosofía de "mínimo privilegio". El núcleo solo hace lo básico (planificación, memoria básica) y el resto (drivers, sistema de archivos) corre en espacio de usuario. Más estable (si falla un driver, no cae el sistema), pero más lento por la comunicación constante. (Ej: Base de la arquitectura Windows NT/Minix).
- Cliente-Servidor / Distribuidos: Componentes que solicitan y ofrecen servicios, a menudo a través de red.
4. Llamadas al Sistema y Modos de Ejecución (Tema 3)
Esta es la frontera entre tus programas y el hardware.
- Concepto: Una aplicación de usuario nunca accede al hardware directamente. Solicita el acceso al Kernel mediante una Llamada al Sistema (System Call).
- Modo Usuario vs. Modo Núcleo:
- Usuario: Donde corren tus apps (limitado, seguro).
- Núcleo: Donde corre el SO (acceso total al hardware).
- El cambio de uno a otro (context switch) es costoso pero necesario para la protección y estabilidad.
APIs Principales:
* Linux (POSIX): fork() (crear proceso), exec() (ejecutar), open/read/write (ficheros).
* Windows (Win32/64): CreateProcess, ReadFile, WriteFile.
* Nota: Aunque los nombres cambian, la funcionalidad subyacente (crear, leer, escribir, matar proceso) es análoga.
5. Windows vs. Linux: Arquitecturas (Tema 4)
Comparativa de alto nivel sobre cómo se organizan internamente:
| Característica | Linux (Monolítico Modular) | Windows (Híbrido / Microkernel modificado) |
|---|---|---|
| Núcleo | Monolítico (gran rendimiento). | Microkernel con Ejecutor. |
| Abstracción HW | Drivers integrados en el kernel/módulos. | HAL (Hardware Abstraction Layer) aísla el HW del SO. |
| Procesos | Jerarquía Padre-Hijo (init es el padre de todos). |
Basado en Objetos y Handles. Uso intensivo de Hilos (Threads). |
| Subsistemas | Directo. | Subsistemas para compatibilidad (Win32, POSIX, OS/2). |
6. Shell y Automatización (Temas 5 y 6) - 🔥 IMPORTANCIA ALTA
Entramos en la zona "Core" de la asignatura. Se estudiarán los intérpretes de comandos para interactuar con el SO sin interfaz gráfica.
- Linux (Bash): Potente para scripting, tuberías (pipes
|), redirecciones (>,<) y gestión de procesos. - Windows (PowerShell): Evolución de la consola tradicional (
cmd). Basada en objetos .NET, no solo texto. UsaCmdlets(ej:Get-Process).
Ejemplo de Automatización (Clase): El profesor explicó un caso de uso real de un Shell Script en DevOps: Un script que detecta un commit de código, lanza automáticamente un trigger para compilar el software, genera el artefacto (ejecutable) y lo despliega. Esto se puede hacer tanto en Bash como en PowerShell.
Herramienta recomendada: Para los usuarios de Windows, el profesor recomienda instalar WSL (Windows Subsystem for Linux) para realizar las prácticas de Linux cómodamente sin máquinas virtuales pesadas.
7. Conceptos "Pasapalabra" (Glosario Rápido)
Durante la dinámica de clase se definieron conceptos que suelen caer en preguntas tipo test:
- Buffer: Memoria temporal para datos en tránsito.
- Controlador (Driver): Software que hace de intérprete entre SO y Hardware.
- Demonio (Daemon): Proceso en segundo plano sin intervención del usuario.
- Firmware: Software básico integrado en el chip de hardware.
- Hilo (Thread): Unidad de ejecución dentro de un proceso (paralelismo ligero).
- Interrupción: Señal que detiene la CPU para atender un evento urgente.
- Journaling: Técnica de sistemas de archivos para evitar corrupción de datos tras fallos.
- Kernel (Núcleo): El corazón del SO.
🧠 Preguntas de Autoevaluación
- Diferencia clave: Explica por qué se dice que el Sistema Operativo actúa como una "Máquina Extendida" y da un ejemplo de una abstracción que proporcione.
- Arquitectura: ¿Cuál es la principal ventaja de un diseño Microkernel frente a uno Monolítico en términos de estabilidad del sistema? ¿Y su desventaja en rendimiento?
- Mecanismo: Describe paso a paso qué sucede cuando un programa de usuario (ej: Word) necesita guardar un archivo en el disco duro. ¿Interactúa Word directamente con el disco?
- Práctica: Si quisieras automatizar una tarea que requiere manipular objetos complejos del sistema (no solo texto plano) en un entorno Microsoft, ¿elegirías Bash o PowerShell? ¿Por qué?