Bloque de control de procesos

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar

Para llevar a cabo la gestión de un proceso, es necesario que el sistema operativo guarde cierta información necesaria. Para ello, existe un registro especial que se conoce como el bloque de control del proceso BCP, o PCB en inglés (Process Control Block).

El BCP es creado por el Sistema operativo cada vez que aparece un nuevo proceso. Los procesos son conocidos para el sistema operativo y por tanto elegibles para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a ellos. Cuando el programa termina, el BCP es eliminado para dejar espacio libre en el registro, y usarlo para almacenar otros BCP.

El bloque de control de procesos difiere mucho de un sistema a otros, pero existen contenidos comunes:

  • Identificador del proceso: Identificar de forma unívoca al proceso en el sistema, generalmente se emplea un entero sin signo que se denomina PID (Process IDentifier)
  • Nombre del proceso.
  • Estado del proceso para el planificador de procesos: preparado, activo o bloqueado.
  • Contexto de la ejecución: valor de los registros del procesador, bits de estados, etc. Esto es, cada vez que se ejecuta el planificador y se realiza una conmutación de procesos, la información sobre en qué lugar se encontraba la ejecución del proceso se encuentra guardada aquí, así como el lugar en el que se paró la ejecución del anterior proceso (cada una en su respectivo BCP).
  • Aspectos relacionados con la administración de memoria: tales como el espacio de direcciones y la cantidad de memoria asignada a un proceso.
  • Aspectos relacionados con la administración de ficheros: tales como los ficheros con los que el proceso está actualmente operando.
  • Los procesadores en los que el proceso puede ejecutarse: en caso de soportar el sistema multiprocesador.
  • En el caso de un sistema operativo tipo UNIX: el proceso padre de dicho proceso y la relación de procesos hijos.
  • Estadísticas temporales: Tiempo de lanzamiento del proceso, tiempo en estado activo, etc.


En Linux, al PCB se le denomina Task Struct, se puede consultar dicha estructura en:

http://lxr.linux.no/#linux+v2.6.37.2/include/linux/sched.h#L1182

http://lxr.linux.no/linux+v3.0.4/include/linux/sched.h#L1220

En el núcleo de Minix, al PCB se le denomina Process table, puede consultarse su implementación en el siguiente enlace:

http://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/kernel/proc.h

En el xv6, la estructura es pequeña y se puede consultar en el siguiente enlace:

https://github.com/mit-pdos/xv6-public/blob/master/proc.h#L37

3.6. La conmutación de procesos