Gestión de Procesos
Un proceso es una instancia de un programa en ejecución, con su propio espacio de memoria y contexto[254].
Un programa es pasivo (instrucciones en disco), mientras que un proceso es activo (requiere CPU y recursos)[467]. Al ejecutar un archivo `.exe`, el programa se convierte en proceso[473].
Process Control Block (PCB)
Es la estructura de datos vital para gestionar el proceso[508]. Contiene:
- PID: Identificador único del proceso[510].
- Estado: Situación actual (Nuevo, Listo, etc.)[511].
- Contador de Programa: Dirección de la próxima instrucción[512].
- Registros y Memoria: Datos temporales y segmentos asignados[512, 514].
Tipos de Procesos
| Clasificación | Descripción | Ejemplo |
|---|---|---|
| Independientes vs. Interdependientes | Los independientes no comparten recursos. Los interdependientes se comunican y comparten datos[270, 271]. | Word (Indep) vs Navegador (Inter) |
| Usuario vs. Sistema | Iniciados por aplicaciones vs iniciados por el SO para mantenimiento[274, 276]. | Spotify vs Winlogon |
| Primer vs. Segundo Plano | Interacción directa (visible) vs ejecución oculta (background)[280, 282]. | Juego activo vs Antivirus |
Ciclo de Vida del Proceso
Un proceso transita por 5 estados fundamentales[476]. Las transiciones son controladas por el planificador:
- Nuevo: Se crea el proceso[477].
- Listo (Ready): En memoria, esperando turno de CPU[478].
- Ejecución (Running): La CPU ejecuta sus instrucciones[479].
- Bloqueado (Waiting): Espera un evento (E/S) o recurso[480].
- Terminado: Finaliza su ejecución[481].
Hilos (Threads)
Un hilo es la unidad más pequeña de procesamiento. Comparte memoria con su proceso padre, lo que reduce la sobrecarga[346, 350].
Modelos de Hilos
- Nivel Usuario: Gestionados por librerías, sin intervención del kernel. Rápidos pero no aprovechan multinúcleo[357].
- Nivel Kernel: Gestionados por el SO. Permiten paralelismo real pero tienen más sobrecarga[359].
- Híbrido: Combina ambos para equilibrar eficiencia y rendimiento[360].
Algoritmos de Planificación
El objetivo es maximizar el uso de la CPU. Se usan métricas como TR (Tiempo Retorno) y TE (Tiempo Espera)[109, 111].
FCFS (First-Come, First-Served)
Orden de llegada. Simple, pero sufre "efecto convoy" (procesos largos bloquean a los cortos)[128].
Round Robin (RR)
Asigna un tiempo límite (Quantum) a cada proceso. Equitativo, pero con sobrecarga si el quantum es pequeño[138].
SJF (Shortest Job First)
Atiende primero al proceso más corto. Optimiza los tiempos de espera[529].
Prioridad
Ejecuta procesos según su importancia. Puede causar "hambre" (starvation) a procesos de baja prioridad[532, 405].
Sincronización y Problemas
Vital para procesos que comparten recursos. Sin ella, ocurren conflictos graves[401].
| Problema | Definición |
|---|---|
| Condición de Carrera | El resultado depende del orden incorrecto de ejecución en una sección crítica[403]. |
| Interbloqueo (Deadlock) | Dos o más procesos se bloquean esperando recursos que el otro tiene[404]. |
| Productor-Consumidor | Problema clásico donde se debe evitar que se llene el buffer (productor) o se lea vacío (consumidor)[412]. |
Soluciones
- Semáforos: Variables enteras para controlar acceso[407].
- Mutex: Exclusión mutua estricta para secciones críticas[408].
Referencias Bibliográficas
- [15-63, 254-320] Rueda Fajardo, E. (2025). Unidad 1 y 2: Intro y Procesos. Universidad de Pamplona.
- [340-444] Rueda Fajardo, E. (2025). Hilos en Sistemas Operativos. Universidad de Pamplona.
- [445-582] Rueda Fajardo, E. (2025). Gestión de Procesos. Universidad de Pamplona.
- [98-159] Rueda Fajardo, E. (2025). Cálculo de Tiempos de Planificación. Universidad de Pamplona.