El BCP de informática o Bloque de control del proceso, en ingles PCB (Process Control Block), se refiere a un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a algún proceso en particular. Por tanto, cada vez que un proceso se crea, el sistema operativo crea el BCP, que va a servir como descripción en tiempo de ejecución durante toda la vida del proceso.
Una vez que el BCP es creado, se llena con los atributos definidos como parámetros encontrados en la plantilla del proceso o especificados como parámetros de la llamada al sistema operativo (crear_proceso). Despué de esto, el sistema operativo por lo general asigna valores a otros campos.
Al terminar el proceso, el BCP creado para este, se borra y el registro se puede usar para otros procesos. Cuando hay un BCP asociado a algún proceso, entonces este será conocido para el sistema operativo y elegible para competir por los recursos del sistema. Este BCP corresponde a una estructura de datos con campos destinados a registrar los diferentes aspectos de la ejecución del proceso y el uso de recursos.
¿Qué es un proceso y cuáles son sus partes?
Cuando hablamos de un proceso nos referimos a un programa en ejecución, cuya estructura puede variar según el sistema operativo. En general se trata de un código ejecutable, datos y todo lo que se necesita para poder identificarlo dentro del sistema, este se encuentra conformado por los siguientes componentes:
- Código ejecutable.
- Datos asociados que el proceso requiere, donde se incluyen variables globales, constantes, inicializadas, no inicializadas y variables de sólo lectura.
- Contexto de ejecución del programa.
- Pila o stack, encargada de registrar las llamadas a procedimientos y los parámetros pasados a estos en bloques, variables locales de rutina invocada, y la dirección de la siguiente instrucción a ejecutar cuando termine la llamada. Para esto el sistema operativo se encarga de asignar dicha zona de memoria, justo al cargar el proceso en la memoria principal. En caso de auto llamadas recursivas, la pila podría desbordarse.
- Montículo o heap, corresponde a una zona de memoria asignada por el sistema operativo destinada a datos en tiempo de ejecución. Esta puede aumentar o disminuir en tiempo de ejecución del proceso.
Información almacenada en un BCP
Ahora bien, cuando el procesador inicia la ejecución de un proceso, en cualquier instante puntual de tiempo, a lo largo de la ejecución de dicho proceso, éste se puede caracterizar por un conjunto de elementos denominados contexto de ejecución, y corresponde a la información que se almacena en un BCP, esta puede abarcar algunos o todos los campos que se indican a continuación:
- Identificación del proceso (Process Identificator, sus siglas en inglés PID): es única para el proceso y es lo que permite distinguirlo del resto de procesos, pudiendo almacenar el identificador del proceso padre que lo creó y el identificador del usuario, dependiendo del sistema.
- Estado del proceso: si el proceso está actualmente en ejecución o en otro estado, como listo, suspendido, parado o zombi. Los estados varían según el tipo de sistema operativo.
- Información de planificación: se refiere a cómo de prioritarios son el resto de los procesos, y es el evento por el cual el proceso va a esperar mientras está bloqueado. Solo en caso de que se use dicho algoritmo para planificación de CPU.
- Punteros a memoria: en estos se incluyen todos los punteros al código del programa y datos referentes a este proceso, cualquier bloque de memoria compartido con otros procesos o si el proceso usa memoria virtual. A su vez almacena punteros a la pila y el montículo del proceso. Así que describe los segmentos de memoria que han sido asignados al proceso, mostrando los espacios de direcciones o los límites de memoria asignados al proceso.
- Datos de contexto: se encuentran presentes en el registro del procesador mientras el proceso este en ejecución. Esto permite almacenar el valor de todos los registros del procesador, las banderas de estado, señales, entre otras. En resumen, corresponden a todos los datos necesarios para poder ejecutar un proceso en el momento que el sistema operativo lo indique.
- Información de estado E/S y recursos asignados: aquí se incluyen las peticiones de E/S pendientes, dispositivos de E/S asignados a ese proceso, una lista de ficheros en uso, entre otros. Así como una lista de recursos asignados donde involucran descriptores de archivos y sockets abiertos.
- Comunicación entre procesos: cuenta con distintos indicadores, señales y mensajes relacionados con la comunicación entre dos procesos independientes.
- Información de auditoría: aquí es posible incluir la cantidad de tiempo de procesador y de tiempo de reloj utilizados, así como también los límites de tiempo, registros contables, entre otros como las estadísticas del proceso y valores de registro de CPU que también es usado en el cambio de contexto. Y los datos del propietario (owner).
- Signals pendientes: que se encuentren almacenados en un mapa de bits.
Es importante aclarar que todo lo señalado en la lista es solo indicativo, pues cada sistema operativo tiene su propio diseño BCP, conformado por metadatos necesarios para la administración. Un BCP puede medir desde 32 bits hasta 1024 bits, y su denominación dependerá del sistema operativo.
No obstante, esta información es suficiente para poder interrumpir un proceso en ejecución y que pueda ser reanudado más tarde como si no hubiera existido ninguna interrupción. En pocas palabras, el BCP es clave ya que permite que el sistema operativo de soporte a múltiples procesos, así como también proporcionar multiprogramación.
En algunos sistemas cada proceso tiene asignado un BCP que está almacenado en una lista enlazada denominada tabla de procesos. Pero en otros sistemas el BCP está almacenado dentro del mismo proceso junto con el resto de los datos.
Además, al conjunto del programa, datos, pila, montículo y BCP se les llama imagen de proceso. Por su parte, para poder ejecutar o reanudar la ejecución de un proceso solo debes cargar la imagen del proceso en memoria principal o en memoria virtual.
Esperamos que el artículo haya sido de tu agrado, y que te haya funcionado para conocer más acerca de lo que es el BCP de informática, conociendo cómo funciona la iniciación de un proceso dentro de un sistema informático.