Un proceso es simplemente un programa en ejecuci贸n. Cuando ejecutas tu programa en C (por ejemplo con ./programa en Linux), el sistema operativo crea una instancia del programa y le asigna recursos como memoria, tiempo de CPU y acceso a dispositivos.
En otras palabras, el archivo ejecutable es solo c贸digo almacenado en disco, mientras que el proceso es ese c贸digo activo en memoria y siendo gestionado por el sistema operativo.
Cada proceso tiene un identificador 煤nico llamado PID (Process ID) que el sistema utiliza para administrarlo.
Caracter铆sticas de un Proceso
Un proceso no es solo el c贸digo del programa. El sistema operativo mantiene varias estructuras de datos para controlarlo.
-
C贸digo ejecutable
Contiene las instrucciones del programa compilado que el procesador ejecuta paso a paso. -
Memoria asignada
Incluye diferentes regiones de memoria utilizadas por el proceso:- Segmento de c贸digo: donde est谩 el programa.
- Segmento de datos: variables globales y est谩ticas.
- Heap: memoria din谩mica (
malloc,calloc,free). - Stack: variables locales y llamadas a funciones.
-
Contexto del proceso
Representa el estado actual del proceso en la CPU, incluyendo:- valores de los registros
- contador de programa (PC)
- puntero de pila
-
Recursos del sistema
Un proceso puede utilizar:- archivos abiertos
- sockets de red
- dispositivos de entrada/salida
Identificaci贸n de Procesos en Sistemas Unix/Linux
En sistemas basados en Unix (como Linux), cada proceso tiene un PID.
En C puedes obtener el PID del proceso actual con:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Mi PID es: %d\n", getpid());
return 0;
}