Detalles de los procesos
100%

Procesos · Lección 3

Detalles de los procesos

Aprende qué estado y recursos distinguen un proceso en ejecución de un programa almacenado en disco.

Un programa es código ejecutable y datos almacenados en un archivo. Un proceso es un contexto de ejecución activo: incluye código mapeado, memoria, credenciales, descriptores de archivos abiertos, estado de señales, información de planificación y uno o más hilos. El mismo programa puede tener muchas instancias de procesos independientes.

Instancias de programas y PID

Por ejemplo, inicia cat sin operandos en dos terminales. Cada instancia espera una entrada y tiene su propio ID de proceso:

$ pgrep -a cat
18420 cat
18457 cat

Ambos procesos ejecutan el mismo programa, pero pueden tener flujos de entrada, contenidos de memoria, credenciales, directorios de trabajo y ciclos de vida distintos. Un PID identifica un proceso activo cada vez y puede reutilizarse después de que ese proceso termine.

¿Qué distingue dos instancias en ejecución del mismo programa?

Estado que mantiene el kernel

El kernel conserva la información necesaria para planificar y controlar cada proceso, incluida:

  • identificadores del proceso y de su padre;
  • credenciales de usuario y grupo;
  • mapas de memoria virtual;
  • descriptores de archivos abiertos y directorio actual;
  • disposiciones de señales y señales pendientes;
  • política de planificación, prioridad y estado de ejecución;
  • datos contables como el tiempo de CPU.

Algunos recursos subyacentes pueden compartirse. Los procesos relacionados pueden compartir memoria mapeada, y los hilos de un proceso comparten un espacio de direcciones y muchos recursos de todo el proceso. Por tanto, un proceso proporciona límites de aislamiento sin implicar que cada byte u objeto del kernel sea físicamente privado.

¿Qué componente mantiene el estado de planificación y credenciales de los procesos de Linux?

Planificación de CPU y memoria

Los hilos ejecutables compiten por tiempo de CPU. El planificador del kernel elige qué hilo se ejecuta en qué CPU según la clase de planificación, prioridad, afinidad de CPU, carga y política. Esto no promete que todos los procesos reciban una parte igual.

Cada proceso suele ver un espacio de direcciones virtual. El kernel y el hardware asocian direcciones virtuales con memoria física u otro almacenamiento de respaldo, aplican protecciones y pueden compartir páginas cuando corresponde. Por tanto, una cifra de memoria de ps o top no representa automáticamente la cantidad de RAM física exclusiva atribuible a ese proceso.

¿Qué selecciona el planificador de Linux?

Salida del proceso y liberación de recursos

Cuando un proceso termina, el kernel libera la mayoría de sus recursos privados, cierra los descriptores restantes y registra información de terminación para su padre. Un pequeño registro en la tabla de procesos puede permanecer como zombi hasta que el padre recupere el estado de salida. Esto significa que «el proceso ha terminado de ejecutarse» y «todo rastro ha desaparecido de la tabla» no siempre ocurren al mismo tiempo.

¿Por qué puede un proceso terminado permanecer brevemente como zombi?

Lección completada

Has completado Detalles de los procesos

Ahora puedes describir un proceso como algo más que un archivo de programa.

  • Distingue el código ejecutable almacenado de una instancia de proceso activa.

  • Identifica el estado y los recursos mantenidos por el kernel.

  • Relaciona la planificación con hilos ejecutables, no con repartos iguales.

  • Reconoce que el estado de salida puede permanecer hasta que el padre lo recoja.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Procesos