Qué es un proceso informático
En el mundo de la computación, el término proceso designa la instancia en ejecución de un programa. Cuando abres un navegador, un editor de texto o una aplicación de música, el sistema operativo crea un proceso para manejar ese programa. Cada proceso contiene el código del programa (las instrucciones) y su actividad actual, es decir, el estado de todos los datos con los que está trabajando en ese momento. Esta definición, recogida por el Linux Documentation Project, es fundamental para entender cómo los ordenadores realizan múltiples tareas de forma aparentemente simultánea. Un proceso no es el programa en sí, sino su ejecución viva: el programa es el archivo estático en el disco, mientras que el proceso es ese programa corriendo en la memoria y usando la CPU.
El sistema operativo asigna a cada proceso un identificador único llamado PID (Process ID). Este número permite al sistema llevar un control individual de cada proceso, saber qué recursos está utilizando y en qué estado se encuentra. Por ejemplo, cuando escribes el comando ps en Linux, ves una lista con los PID de todos los procesos activos. Sin este identificador, el sistema no podría distinguir entre dos copias del mismo programa ejecutándose al mismo tiempo. La asignación de PID es una de las primeras tareas del kernel al crear un proceso.

Características esenciales de los procesos
Una de las propiedades más importantes de los procesos es el aislamiento. Cada proceso se ejecuta en su propio espacio de direcciones virtuales. Esto significa que la memoria que utiliza un proceso no es accesible directamente por otro. Si un proceso falla o sufre un error grave, ese fallo no afecta a los demás procesos del sistema. Esta característica, documentada en las notas del Linux Documentation Project, es la base de la estabilidad de los sistemas operativos modernos. Por ejemplo, si el navegador web se cierra inesperadamente, el procesador de textos sigue funcionando sin problemas.
Además, el sistema operativo gestiona los recursos asignados a cada proceso: archivos abiertos, valores de los registros de la CPU, ubicación de la pila, etc. Esta información se guarda en una estructura llamada bloque de control de proceso (PCB, por sus siglas en inglés). El PCB es como la ficha personal de cada proceso. Cada vez que la CPU cambia de un proceso a otro, el sistema guarda el estado del proceso actual en su PCB y carga el estado del siguiente proceso. Esta operación se conoce como cambio de contexto (context switch). Sin este mecanismo, la multitarea sería imposible.

Tipos de procesos habituales
Los procesos se pueden clasificar de varias formas según su comportamiento y relación con el usuario y el sistema. A continuación se presenta una lista con los tipos más comunes:
- Procesos en primer plano (foreground): son aquellos que interactúan directamente con el usuario. Por ejemplo, un editor de texto o un reproductor de video. Estos procesos suelen recibir entrada del teclado, ratón o pantalla.
- Procesos en segundo plano (background): se ejecutan sin intervención directa del usuario. Por ejemplo, un antivirus escaneando archivos o un servicio de actualizaciones automáticas.
- Procesos hijo (child): son creados por otro proceso (llamado padre). Por ejemplo, al abrir una nueva pestaña en un navegador, el proceso principal del navegador crea un proceso hijo para esa pestaña.
- Procesos del sistema (kernel processes): son iniciados por el propio sistema operativo para realizar tareas internas, como la gestión de memoria o la administración de dispositivos. No están asociados a ninguna aplicación de usuario.
- Procesos zombies o huérfanos: un proceso zombie es aquel que ha terminado su ejecución pero cuyo padre no ha recogido su estado de salida. Un proceso huérfano es aquel cuyo padre ha terminado antes que él; entonces el sistema lo adopta y lo gestiona.
Esta clasificación ayuda a entender cómo el sistema operativo organiza la ejecución y cómo los procesos se relacionan entre sí. En los sistemas multitarea, como Linux o Windows, coexisten procesos de todos estos tipos simultáneamente.

Estados de un proceso
Durante su ciclo de vida, un proceso pasa por varios estados. El conocimiento de estos estados es esencial para comprender cómo la CPU asigna tiempo de ejecución. La siguiente tabla resume los estados principales según la documentación de Dive into Systems:
| Estado | Descripción |
|---|---|
| Running | El proceso está siendo ejecutado por la CPU en ese instante. |
| Ready | El proceso está listo para ejecutarse, pero la CPU está ocupada con otro proceso. Espera su turno en la cola de listos. |
| Waiting (o Blocked) | El proceso está esperando un evento externo, como la finalización de una operación de entrada/salida o la llegada de datos. No puede ejecutarse hasta que ese evento ocurra. |
| Stopped | El proceso ha sido detenido por una señal, normalmente por el usuario o por el sistema para depuración. |
| Zombie | El proceso ha terminado su ejecución, pero aún conserva su entrada en la tabla de procesos porque el proceso padre no ha leído su código de salida. |
Estos estados y las transiciones entre ellos son gestionados por el planificador (scheduler) del sistema operativo. La eficiencia del planificador determina la capacidad de respuesta del sistema. Por ejemplo, cuando un proceso pasa a estado Waiting, el planificador selecciona otro proceso de la cola de listos para ejecutar, maximizando el uso de la CPU.

Multiprocesamiento y gestión de recursos
Los sistemas operativos modernos utilizan multiprocesamiento para ejecutar varios procesos al mismo tiempo, mejorando la utilización de la CPU y reduciendo la latencia. Según las notas de Stanford CS140, tanto Linux como Windows implementan técnicas de multiprocesamiento que permiten que, aunque el ordenador tenga un solo núcleo, los procesos se alternen tan rápido que el usuario percibe una ejecución simultánea. En sistemas con múltiples núcleos o procesadores, varios procesos pueden ejecutarse realmente al mismo tiempo.
La gestión de recursos incluye el seguimiento de la memoria asignada, los archivos abiertos y los permisos. Cada proceso tiene un límite de recursos definido por el sistema. Si un proceso intenta consumir más memoria de la permitida, el sistema puede terminarlo o denegarle la solicitud. Esta gestión evita que un proceso acapare todos los recursos y degrade el rendimiento del resto.

Herramientas para observar procesos
En sistemas Linux y UNIX, el comando ps (process status) es la herramienta estándar para listar los procesos en ejecución y sus PID en tiempo real. Como se menciona en un artículo de FreeCodeCamp, con opciones como ps aux se puede obtener una vista detallada de todos los procesos del sistema, incluyendo el usuario que los ejecuta, el porcentaje de CPU y memoria que consumen, y el tiempo de ejecución. Otra herramienta útil es top, que muestra una lista dinámica y actualizada continuamente. En Windows, el Administrador de tareas cumple una función similar. Conocer estas herramientas permite a los administradores y desarrolladores diagnosticar problemas de rendimiento o detectar procesos que se hayan quedado colgados. Puedes consultar una guía completa sobre el comando ps en FreeCodeCamp.
Ejemplos prácticos de procesos en la vida cotidiana
Imagina que enciendes tu ordenador y abres el navegador web, un editor de documentos y un reproductor de música. El sistema operativo crea al menos tres procesos: uno para cada aplicación. Cada proceso tiene su propio PID, su espacio de memoria y su estado. Mientras escribes en el editor, el proceso del navegador puede estar en estado Waiting esperando que cargue una página, y el reproductor de música está en estado Running reproduciendo audio. Si el navegador se congela, puedes cerrarlo sin que el editor o el reproductor se vean afectados, gracias al aislamiento entre procesos.
Otro ejemplo es cuando ejecutas un script en segundo plano desde la terminal. En Linux, puedes lanzar un proceso en segundo plano añadiendo & al final del comando. Ese proceso se ejecuta sin bloquear la terminal, permitiéndote seguir trabajando mientras el script realiza cálculos. El sistema operativo se encarga de asignarle tiempo de CPU de forma justa.
En servidores, los procesos son aún más críticos. Un servidor web como Apache o Nginx crea múltiples procesos (o hilos) para atender peticiones de usuarios simultáneamente. Cada petición genera un proceso hijo que maneja la comunicación con el cliente. Si uno de esos procesos falla, los demás continúan funcionando, garantizando la disponibilidad del servicio.
Conclusión: la importancia de los procesos en los sistemas modernos
Los procesos son la unidad fundamental de ejecución en cualquier sistema operativo moderno. Su definición, características de aislamiento y gestión de recursos permiten la multitarea eficiente y estable que damos por sentada. Desde el simple acto de abrir una aplicación hasta la compleja administración de servidores, los procesos están en el centro de todo. Entender sus estados, tipos y cómo observarlos es una habilidad valiosa para cualquier persona que trabaje con tecnología, ya sea como desarrollador, administrador de sistemas o usuario avanzado.
Referencias
Linux Documentation Project – The Linux Kernel: Processes. Disponible en: tldp.org/LDP/tlk/kernel/processes.html
Stanford CS140 – Operating Systems: Processes. Disponible en: scs.stanford.edu/14wi-cs140/notes/processes-print.pdf
Dive into Systems – Processes. Disponible en: diveintosystems.org/book/C13-OS/processes.html
FreeCodeCamp – Linux List Processes: How to Check Running Processes. Disponible en: freecodecamp.org/news/linux-list-processes-how-to-check-running-processes/





