La tabla de procesos es una estructura de datos del núcleo que describe el estado de un proceso (junto con el área U del proceso). Contiene campos que siempre deben estar disponibles para el kernel.
Contiene los siguientes campos:
- campo de estado (que identifica el estado del proceso)
- campos que permiten al núcleo ubicar el proceso y su área u en la memoria
- UID para determinar varios privilegios de proceso
- PID para especificar relaciones entre procesos (por ejemplo, bifurcación)
- descriptor de evento (cuando el proceso está en estado de suspensión)
- parámetros de programación para determinar el orden en que el proceso pasa a los estados "kernel en ejecución" y "usuario en ejecución"
- campo de señal para señales enviadas al proceso pero aún no manejadas
- temporizadores que dan tiempo de ejecución del proceso en modo kernel y modo usuario
- campo que proporciona el tamaño del proceso (para que el núcleo sepa cuánto espacio asignar para el proceso).
En resumen, la tabla de procesos brinda información sobre los procesos al kernel.
La tabla de procesos en Linux (como en casi todos los demás sistemas operativos) es simplemente una estructura de datos en la memoria RAM de una computadora. Contiene información sobre los procesos que maneja actualmente el sistema operativo.
Esta información incluye información general sobre cada proceso
- identificación del proceso
- propietario del proceso
- prioridad del proceso
- variables de entorno para cada proceso
- el proceso padre
- punteros al código de máquina ejecutable de un proceso.
Una información muy importante en la tabla de procesos es el estado en que se encuentra actualmente cada proceso. Esta información es esencial para el sistema operativo, ya que permite el llamado multiprocesamiento, es decir, la posibilidad de ejecutar virtualmente varios procesos en una sola unidad de procesamiento (CPU).
El sistema operativo utiliza la información de si un proceso está actualmente ACTIVO, DORMIDO, EN EJECUCIÓN, etc. para manejar la ejecución de los procesos.
Además, hay información estadística como cuándo se EJECUTÓ el proceso por última vez para permitir que el programador del sistema operativo decida qué proceso debe ejecutarse a continuación.
Entonces, en resumen, la tabla de procesos es el elemento organizativo central para que el sistema operativo maneje todos los procesos iniciados.
Puede encontrar una breve introducción en este hilo:
https://web.archive.org/web/20190817081256/http://www.linuxforums.org/forum/kernel/42062-use-process-table.html
Y wikipedia también tiene buena información sobre los procesos:
http://en.wikipedia.org/wiki/Process_management_(informática)#Process_description_and_control
http://en.wikipedia.org/wiki/Process_table
Cada proceso está representado en el sistema operativo por un bloque de control de procesos - también conocido como bloque de control de tareas - que contiene lo siguiente
Process management
Registers
Program counter
Program status word
Stack pointer
Process state
Priority
Scheduling parameters Process ID
Parent process
Process group
Signals
Time when process started CPU time used
Children’s CPU time
Time of next alarm
Memory management
Pointer to text segment info
Pointer to data segment info
Pointer to stack segment info
File management
Root directory Working directory File descriptors User ID
Group ID
Para obtener más información, https://www.technologyuk.net/computing/computer-software/operating-systems/