1. Introducción
Un proceso es un programa en ejecución. Es importante tener en cuenta que un proceso asocia un programa con una actividad. Un programa es una lista de instrucciones (por ejemplo, un archivo ejecutable con extensión *.exe). Cuando este programa se ejecuta, se carga en la memoria RAM y se ejecutan sus instrucciones. En ese momento, tenemos un programa en actividad, es decir, un proceso cargado en memoria.
Contexto de un Proceso
Cuando más de un proceso se ejecuta de forma concurrente en el sistema, todos necesitan que el Sistema Operativo les proporcione los recursos necesarios (espacio de memoria, espacio en la memoria virtual, etc.). El Sistema Operativo, junto con la Unidad de Control y Procesamiento (UCP o CPU), se encarga de sincronizar los recursos en un orden adecuado.
El contexto o estructura de datos de un proceso se define como la información necesaria para especificar completamente su estado actual. Esto incluye toda la información que debe guardarse cuando un proceso pierde la posesión de la CPU y restaurarse cuando se le vuelve a conceder. Este contexto es único para cada proceso y lo identifica de forma única en el sistema. A este contexto se le denomina bloque de control de proceso o BCP.
Bloque de Control de Proceso (BCP)
El BCP (o Descriptor de Proceso) contiene la información que siempre está en la memoria principal durante la existencia del proceso. El BCP contiene la información relativa a un proceso que requiere el sistema operativo para gestionarlo:
- Identificador de proceso: Se suele usar un número único denominado PID (process identification). También puede añadirse el identificativo del proceso padre (PPID). El proceso Init, en sistemas UNIX, tiene un PID de 1.
- Prioridad: Indica la prioridad de ejecución del proceso, gestionada por el planificador.
- Estado: Depende de su actividad dentro del sistema (preparado, en ejecución, suspendido).
- Información de gestión de memoria: Guarda información referente al uso de memoria física (RAM) y la ubicación de datos e instrucciones del proceso.
- Recursos utilizados: Recursos hardware y software necesarios para la ejecución del proceso (impresora, archivos, etc.).
Estados de un Proceso
Los cinco estados de un proceso son:
- Ejecución: El proceso está actualmente en ejecución.
- Listo: El proceso está listo para ser ejecutado, esperando la asignación del planificador.
- Bloqueado: El proceso no puede ejecutar hasta que se produzca un suceso, como una operación de Entrada/Salida.
- Nuevo: El proceso recién fue creado y aún no fue admitido por el sistema operativo.
- Terminado: El proceso fue expulsado del grupo de procesos ejecutables.
Transiciones de Estado
- Creación -> Preparado: Al crear un proceso, entra en la cola de procesos preparados.
- Preparado -> En Ejecución: El planificador le asigna el turno al proceso y este toma posesión del procesador.
- En Ejecución -> Preparado: El proceso abandona la CPU involuntariamente (fin de su tiempo o proceso de mayor prioridad).
- En Ejecución -> Espera: El proceso cede voluntariamente el procesador, esperando un evento externo.
- Espera -> Preparado: Tras el evento externo, el proceso vuelve a la cola de preparados.
- En Ejecución -> Terminación: El proceso termina al ejecutar su última instrucción.
Creación de un Proceso
- Se crea el BCP, asignándole un PID, prioridad y recursos (excepto la CPU).
- Se inserta el BCP en la tabla de procesos.
- Se carga el proceso en la memoria virtual.
- Con todos los recursos asignados (menos la CPU), el estado del BCP cambia a «preparado».
Cambio de Contexto
En un sistema multitarea, cuando se para la ejecución de un hilo (o proceso) para dar paso a otro, se realiza un cambio de contexto. Esto implica dos pasos:
- Selección del siguiente proceso: Realizada por el planificador, que elige un proceso de la cola de preparados según una política de planificación (FCFS, Round Robin, etc.).
- Cambio de contexto: Realizado por el dispatcher, que guarda el contexto del proceso saliente y establece el contexto del proceso entrante.
El tiempo de conmutación de contexto es un gasto extra para el sistema.