Gestión de Procesos
Definición
Un proceso es una instancia de un programa en ejecución que posee su propio espacio de memoria, estado y contexto. Requiere recursos del sistema como CPU, memoria, dispositivos de entrada y salida, así como mecanismos de comunicación y control.
Un programa, por el contrario, es un conjunto de instrucciones pasivo almacenado en disco que se convierte en proceso únicamente cuando el sistema operativo lo carga y ejecuta.
Conceptos Fundamentales
- Programa: Conjunto de instrucciones escritas en un lenguaje de programación que permanecen inactivas hasta que son ejecutadas. Ejemplo: un archivo .exe antes de ser abierto.
- Proceso: Programa en ejecución que necesita recursos del sistema. Es activo, ocupa memoria y es administrado por el sistema operativo.
• Diferencias entre Programa y Proceso
- El programa es pasivo, el proceso es activo.
- Un programa se convierte en proceso al ser cargado en memoria.
- Un proceso necesita recursos y posee un contexto de ejecución.
Ciclo de Vida de un Proceso
• Estados del Proceso
- Nuevo (New): El proceso está siendo creado.
- Listo (Ready): Se encuentra cargado en memoria esperando turno en la CPU.
- Ejecutando (Running): La CPU está ejecutando el proceso.
- Esperando/Bloqueado (Waiting): El proceso espera por un recurso o evento externo.
- Terminado (Terminated): Finalizó su ejecución.
• Transiciones entre Estados
- Nuevo → Listo: proceso preparado para ejecutar.
- Listo → Ejecutando: el planificador asigna CPU.
- Ejecutando → Esperando: requiere un recurso externo.
- Esperando → Listo: el recurso está disponible.
- Ejecutando → Listo: interrupción del planificador.
- Ejecutando → Terminado: finaliza ejecución.
Estructura de un Proceso (PCB)
El Process Control Block (PCB) es la estructura que contiene toda la información necesaria para administrar un proceso.
• Componentes del PCB
- PID: Identificador único del proceso.
- Estado del proceso: Estado dentro del ciclo de vida.
- Contador de programa: Próxima instrucción a ejecutar.
- Registros: Información temporal usada por el proceso.
- Información de planificación: Prioridad, tiempos de CPU.
- Gestión de memoria: Segmentos/páginas asignados.
- Entrada/Salida: Dispositivos y archivos asociados.
- Recursos asignados: Recursos de hardware/software utilizados.
- Comunicación entre procesos: Pipes, colas de mensajes, etc.
Planificación de Procesos
La planificación determina qué proceso será ejecutado por la CPU.
• Algoritmos de Planificación
- FCFS (First Come First Served): Atiende en orden de llegada.
- SJF (Shortest Job First): Ejecuta primero el proceso más corto.
- Round Robin: Usa un quantum para repartir tiempo de CPU.
- Prioridad: Ejecuta primero los procesos con mayor prioridad.
Sincronización de Procesos
La sincronización evita condiciones de carrera en el acceso a recursos compartidos.
• Mecanismos de Sincronización
- Semáforos: Controlan acceso mediante
wait()ysignal(). - Monitores: Garantizan acceso ordenado a variables compartidas.
- Mutex: Permiten exclusión mutua en secciones críticas.
• Problemas Comunes
- Condiciones de carrera.
- Necesidad de orden y exclusión mutua.
Interbloqueo
Ocurre cuando varios procesos quedan esperando indefinidamente recursos retenidos por otros.
• Condiciones del Interbloqueo
- Exclusión mutua.
- Retención y espera.
- No apropiación.
- Espera circular.
• Manejo del Interbloqueo
- Prevención mediante reglas del sistema.
- Algoritmo del banquero.
- Detección y recuperación.
Tipos de Procesos
- Independientes: No dependen de otros procesos ni comparten recursos.
- Interdependientes: Comparten recursos y requieren comunicación.
- Procesos de Usuario: Iniciados por aplicaciones del usuario.
- Procesos del Sistema: Generados por el sistema operativo.
- Procesos en Primer Plano: Requieren interacción directa con el usuario.
- Procesos en Segundo Plano: Se ejecutan sin intervención del usuario.
Creación y Eliminación de Procesos
• Creación
- Linux/UNIX:
fork() - Windows:
CreateProcess()
• Eliminación
- Voluntaria: usuario o proceso decide terminar.
- Forzada: el sistema operativo finaliza un proceso.
Jerarquía de Procesos
- Padre: Proceso que crea otro.
- Hijo: Proceso generado por el padre.
Los sistemas suelen formar árboles jerárquicos de procesos.
Asignación de Recursos
El sistema operativo administra los recursos que utiliza un proceso:
- CPU mediante el scheduler.
- Memoria mediante segmentación o paginación.
- Entradas y salidas mediante controladores.
Glosario
- Proceso: Programa en ejecución.
- Programa: Conjunto de instrucciones almacenadas.
- PCB: Estructura con información del proceso.
- PID: Identificador único de un proceso.
- Foreground/Background: Procesos en primer y segundo plano.
- Scheduler: Planificador de CPU.
- Semáforo: Variable usada para sincronización.
- Mutex: Exclusión mutua.
- Interbloqueo: Espera circular entre procesos.