Diferencia entre revisiones de «Bloque de control de procesos»
De Wiki de Sistemas Operativos
Línea 22: | Línea 22: | ||
http://lxr.linux.no/#linux+v2.6.37.2/include/linux/sched.h#L1182 | 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 | http://lxr.linux.no/linux+v3.0.4/include/linux/sched.h#L1220 | ||
Revisión del 16:16 6 oct 2011
Para llevar a cabo la gestión de un proceso, es necesario que el sistema operativo guarde cierta información necesaria. A ésta estructura se le conoce como el bloque de control del proceso o PCB (Process Control Block).
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).
- 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.
- 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.
- En caso de soportar el sistema multiprocesador, los procesadores en los que el proceso puede ejecutarse.
- 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