Introducción a los Sistemas Operativos
Un Sistema Operativo (SO) es el conjunto de programas que actúan como intermediarios entre el usuario y el hardware. Su misión es gestionar los recursos (CPU, memoria, discos) y proveer un entorno seguro para las aplicaciones. Es el "puente" entre el software y el hardware físico.
1. Componentes del Sistema de Cómputo
El SO gestiona un ecosistema complejo de hardware:
- CPU (Unidad Central de Procesamiento): El cerebro que ejecuta instrucciones. Actualmente existen procesadores multinúcleo para tareas paralelas.
- GPU (Gráficos) y TPU (Tensores): Unidades especializadas; la TPU es clave hoy en día para Inteligencia Artificial.
- RAM y ROM: Memoria volátil de acceso rápido (RAM) y memoria de solo lectura con firmware esencial (ROM).
- Periféricos: Dispositivos de entrada (teclado), salida (monitor) y almacenamiento (SSD/HDD).
2. Estructura Interna del SO
El diseño del SO determina su rendimiento y seguridad. Existen varios modelos:
Modelos de Estructura
Monolítico: Todo el SO corre como un único programa en modo kernel. Es muy rápido, pero si falla un driver, puede colapsar todo el sistema (Ej. MS-DOS, Unix antiguo).
Microkernel: Solo las funciones esenciales (procesos, memoria) están en el núcleo. El resto son módulos externos. Es más seguro y estable, pero más lento por la comunicación entre módulos (Ej. Minix, QNX).
Híbrido: Combina velocidad del monolítico y modularidad del microkernel. Es el estándar actual en la industria (Ej. Windows 10/11, macOS, Linux modernos).
Modular: Carga funcionalidades dinámicamente según se necesiten.
Clasificación Completa
Por Tareas: Monotarea (MS-DOS) vs Multitarea (Windows, Linux).
Por Usuarios: Monousuario (PC Personal) vs Multiusuario (Servidores, Redes).
Tiempo Real (RTOS): Para sistemas críticos con tiempos de respuesta garantizados (Aviones, Medicina).
Embebidos: Optimizados para hardware específico y funciones limitadas (IoT, Autos, Microondas).
Para saber más:
Profundiza en la arquitectura de los SO modernos:
Tipos de Núcleos/Kernel (Wikipedia)
Gestión de Procesos
Un Proceso es una entidad activa; es un programa en ejecución que incluye el contador de programa, registros y variables. El Sistema Operativo es responsable de su creación, planificación y terminación.
Estados y Ciclo de Vida
Un proceso no se ejecuta instantáneamente, pasa por una serie de estados:
- Nuevo: El proceso se está creando.
- Listo (Ready): Espera en memoria a ser asignado a la CPU.
- Ejecución (Running): Tiene el control de la CPU.
- Bloqueado (Waiting): Espera un evento externo (como E/S).
- Terminado: Finaliza su ejecución y libera recursos.
PCB: El Bloque de Control de Proceso
Es la estructura de datos vital donde el SO almacena toda la información del proceso:
- PID: Identificador único.
- Estado: (Listo, Ejecución, etc.)
- Contador de Programa: Dirección de la siguiente instrucción.
- Información de Memoria: Límites y punteros.
- Información de E/S: Lista de dispositivos asignados.
Planificación de la CPU (Scheduling)
El planificador decide qué proceso toma la CPU. Los algoritmos principales son:
- FCFS (First-Come, First-Served): El primero que llega se atiende.
- SJF (Shortest Job First): Prioriza el trabajo más corto.
- Round Robin: Asigna turnos de tiempo (quantum) fijos a cada proceso.
- Prioridad: Ejecuta primero los procesos más importantes (ej. sistema).
Sincronización y Problemas (Deadlocks)
Cuando varios procesos comparten recursos, pueden surgir problemas:
Condición de Carrera: El resultado depende de quién llegue primero.
Semáforos y Mutex: Mecanismos para controlar el acceso a recursos compartidos y evitar conflictos.
Interbloqueo (Deadlock): Situación donde dos o más procesos se bloquean mutuamente esperando recursos que el otro tiene.
Para saber más:
Documento detallado sobre definición y gestión:
Definición y Gestión de Procesos (StuDocu)
Gestión de Memoria
La memoria principal (RAM) es un recurso crítico y volátil. La gestión de memoria se encarga de asignar espacio a los procesos, proteger sus datos y optimizar el rendimiento global del sistema.
Técnicas de Asignación
- Particionamiento Fijo: La memoria se divide en trozos de tamaño fijo. Es simple pero causa fragmentación interna.
- Particionamiento Dinámico: Se asigna exactamente la memoria que el proceso necesita. Puede causar fragmentación externa.
- Paginación: Divide la memoria física en "Marcos" y la lógica en "Páginas" del mismo tamaño. Permite que un proceso no necesite memoria contigua.
Memoria Virtual y Swapping
Memoria Virtual: Técnica que permite ejecutar programas más grandes que la memoria física disponible, usando el disco duro como una extensión de la RAM.
Swapping (Intercambio): Si la RAM se llena, el SO mueve procesos completos inactivos al disco ("Swap Out") y los trae de vuelta ("Swap In") cuando se necesitan.
Algoritmos de Reemplazo de Páginas
Cuando la memoria está llena y se necesita cargar una nueva página, el SO debe decidir cuál sacar:
- FIFO: Saca la página más antigua.
- LRU (Least Recently Used): Saca la página que hace más tiempo no se usa (muy eficiente).
- Óptimo: Saca la página que no se usará por más tiempo (teórico).
Fragmentación
Interna: Espacio desperdiciado dentro de un bloque asignado.
Externa: Huecos libres entre procesos, demasiado pequeños para ser usados.
Para saber más:
Presentación completa sobre gestión de memoria:
Sistemas Operativos: Gestión de Memoria (SlideShare)
Gestión de Almacenamiento
El sistema de archivos es el componente del SO encargado de administrar la memoria secundaria (Discos Duros, SSD). Su función es proporcionar mecanismos para el almacenamiento seguro, persistente y organizado de la información.
Jerarquía de Datos
El SO abstrae la complejidad física del disco presentando una estructura lógica:
- Campo: Elemento básico de datos.
- Registro: Colección de campos relacionados.
- Archivo: Colección de registros tratados como una unidad.
- Base de Datos: Colección de datos relacionados.
Sistemas de Archivos Populares
- NTFS (Windows): Soporta archivos grandes, permisos de seguridad (ACLs), encriptación y recuperación de errores (Journaling).
- EXT4 (Linux): Estándar en Linux y Android. Reduce la fragmentación y maneja grandes volúmenes de datos eficientemente.
- FAT32: Alta compatibilidad (USB, Consolas) pero limitado a archivos de máximo 4GB.
Organización y Acceso
Directorios: Estructura jerárquica (árbol) para organizar archivos.
Ruta (Path): Dirección única de un archivo (ej: C:\Usuarios\Docs).
Métodos de Acceso: Secuencial (leer en orden) o Directo/Aleatorio (saltar a una posición específica).
Gestión de Espacio en Disco
El SO debe saber qué bloques están libres y cuáles ocupados. Utiliza técnicas como:
- Lista de espacios libres.
- Mapa de bits.
- Asignación contigua, enlazada o indexada.
Para saber más:
Documentación sobre la gestión de almacenamiento:
S.O. Gestión de Almacenamiento (Scribd)