Conceptos Fundamentales de Procesos, Hebras y Estados en Sistemas Operativos
Clasificado en Informática
Escrito el en español con un tamaño de 6,36 KB
¿Qué es un Proceso en un Sistema Operativo?
Un proceso se define como un programa en ejecución. Es, fundamentalmente, un conjunto de instrucciones correspondientes a un programa que son ejecutadas por la CPU (Unidad Central de Procesamiento).
Mientras que un programa es una entidad pasiva que contiene instrucciones y especifica los recursos que necesitará, un proceso es una entidad activa que incluye, además de las instrucciones, los datos actuales y un estado de ejecución. Un programa se convierte en un proceso cuando se carga para su ejecución y reside (parcial o totalmente) en la memoria RAM.
Dependiendo del Sistema Operativo (SO), a los procesos también se les puede denominar flujos de control o tareas. El término hilo o hebra generalmente se refiere a una unidad de ejecución más pequeña dentro de un proceso.
Estructura de Datos del Proceso: El BCP
Cada vez que se ejecuta un programa, además de ubicar en memoria las instrucciones y sus datos asociados, el SO asocia una estructura de datos única a este proceso. Esta estructura, conocida como Bloque de Control de Proceso (BCP), identifica al proceso frente a los demás y es crucial para controlar su correcta ejecución.
El BCP contiene información vital para cada proceso, incluyendo:
- Estado actual del proceso: Indica si el proceso está en ejecución, preparado para ejecutarse o bloqueado esperando algún evento.
- Identificador del proceso (PID): Un número único asignado a cada proceso por el SO.
- Ubicación en memoria: La dirección o direcciones de memoria donde se encuentra cargado el proceso (código, datos, pila).
- Recursos utilizados: Información sobre los recursos de hardware (HW) y software (SW) que el proceso necesita o está utilizando (ej. archivos abiertos, dispositivos de E/S).
- (Información adicional como prioridad, credenciales de usuario, contadores, etc., también suele incluirse)
Hebras (Threads)
Una Hebra (o Hilo) representa un punto de ejecución dentro de un proceso. Se considera un subproceso que comparte recursos del proceso padre que lo creó (como el espacio de memoria), pero consume algunos recursos propios (como su propia pila y estado de ejecución). Un proceso puede contener una o múltiples hebras ejecutándose concurrentemente.
Estados de los Procesos
Los estados por los que pasa un proceso son gestionados internamente por el Sistema Operativo. Podemos clasificarlos principalmente en dos categorías:
Estados Activos
Son aquellos estados en los que el proceso compite activamente por obtener tiempo de CPU.
- Ejecución (Running): El estado en que se encuentra un proceso cuando tiene el control del procesador y sus instrucciones se están ejecutando.
- Preparado (Ready): El estado de los procesos que están listos para ser ejecutados (tienen todos los recursos necesarios excepto la CPU) pero están esperando a que el planificador les asigne el procesador.
- Bloqueado (Blocked / Waiting): El estado de los procesos que no pueden ejecutarse temporalmente porque están esperando que ocurra algún evento externo (ej. finalización de una operación de E/S, recepción de una señal, liberación de un recurso).
Estados Inactivos (Suspendidos)
Son estados donde los procesos no pueden competir por el procesador, generalmente porque han sido movidos de la memoria principal al almacenamiento secundario (swapping), pero pueden volver a un estado activo.
- Suspendido Bloqueado (Suspended Blocked / Suspended Waiting): Procesos que estaban en estado Bloqueado y fueron suspendidos. Permanecen esperando el evento original, y además, deben ser cargados nuevamente en memoria para pasar a Preparado.
- Suspendido Preparado (Suspended Ready): Procesos que estaban en estado Preparado y fueron suspendidos. Están listos para ejecutarse tan pronto como sean cargados de nuevo en la memoria principal y el planificador les dé la CPU.
Planificación de Procesos y Cambio de Contexto
Planificador y Multiprogramación
El Planificador (Scheduler) es la parte del Sistema Operativo encargada de seleccionar cuál será el siguiente proceso (o hebra) que pasará al estado de Ejecución. La técnica de gestionar y ejecutar múltiples procesos de forma concurrente, compartiendo la CPU entre ellos, se conoce como multiprogramación.
Los procesos transitan por los diferentes estados mencionados, y estas transiciones son controladas por el SO basándose en eventos y en las decisiones del planificador.
El Algoritmo de planificación define la estrategia o criterio que utiliza el planificador para seleccionar el siguiente proceso a ejecutar (ej. FIFO, Round Robin, Prioridades).
Dispatcher y Cambio de Contexto
El Dispatcher es el módulo del SO encargado de realizar efectivamente el cambio de control de la CPU de un proceso a otro, según lo decidido por el planificador. Este proceso se denomina cambio de contexto (Context Switch).
Un cambio de contexto consiste en:
- Guardar el estado actual del proceso que está dejando la CPU (registros, contador de programa, etc.) en su respectivo BCP.
- Restaurar el estado del nuevo proceso que va a ejecutarse, cargando la información desde su correspondiente BCP en los registros de la CPU.
Los cambios de contexto son operaciones que consumen tiempo y recursos. Se realizan típicamente cuando:
- Un proceso finaliza su ejecución.
- Un proceso pasa al estado Bloqueado (ej. por una E/S).
- Un proceso es expulsado de la CPU por el planificador (ej. fin de su quantum de tiempo en Round Robin, o llegada de un proceso de mayor prioridad).
- Se produce una interrupción.