it-swarm-es.tech

¿Cuál es la diferencia entre un trabajo y un proceso?

¿Cuál es la diferencia entre un "trabajo" y un "proceso"?

48
Olivier Lalonde

Un proceso es cualquier programa en ejecución con su propio espacio de direcciones.

Un trabajo es un concepto utilizado por Shell: cualquier programa que inicies interactivamente que no se separe (es decir, que no sea un demonio) es un trabajo. Si está ejecutando un programa interactivo, puede presionar CtrlZ para suspenderlo Luego puede volver a iniciarlo en primer plano (usando fg) o en segundo plano (usando bg).

Mientras el programa está suspendido o ejecutándose en segundo plano, puede iniciar otro programa; luego tendría dos trabajos ejecutándose. También puede iniciar un programa que se ejecute en segundo plano agregando un "&" como este: program &. Ese programa se convertiría en un trabajo de fondo. Para enumerar todos los trabajos que está ejecutando, puede usar jobs.

Para obtener más información sobre trabajos, consulte esta sección de la página de manual de bash.

47
Shawn J. Goff

UNIX tiene conceptos separados "proceso", "grupo de procesos" y "sesión".

Cada Shell que obtiene al iniciar sesión se convierte en el líder de su propia nueva sesión y grupo de procesos, y establece el grupo de proceso de control del terminal en sí mismo.

El Shell crea un grupo de procesos dentro de la sesión actual para cada "trabajo" que inicia, y coloca cada proceso que comienza en el grupo de procesos apropiado. Por ejemplo, ls | head es una tubería de dos procesos, que Shell considera un solo trabajo, y pertenecerá a un único y nuevo grupo de procesos.

Un proceso es una (colección de) subproceso de ejecución y otro contexto, como el espacio de direcciones y la tabla de descriptores de archivos. Un proceso puede iniciar otros procesos; estos nuevos procesos pertenecerán al mismo grupo de procesos que el padre a menos que se tomen otras medidas. Cada proceso también puede tener un "terminal de control", que comienza igual que su padre.

Shell tiene el concepto de trabajos "en primer plano" y trabajos "en segundo plano". Los trabajos en primer plano son grupos de procesos con control del terminal, y los trabajos en segundo plano son grupos de procesos sin control del terminal.

Cada terminal tiene un grupo de procesos en primer plano. Al llevar un trabajo al primer plano, el Shell lo establece como el grupo de proceso en primer plano del terminal; al poner un trabajo en segundo plano, el Shell establece el grupo de procesos en primer plano del terminal en otro grupo de procesos o en sí mismo.

Los procesos pueden leer y escribir en su terminal de control si están en el grupo de procesos en primer plano. De lo contrario, reciben las señales SIGTTIN y SIGTTOU cuando intentan leer y escribir en el terminal, respectivamente. Por defecto, estas señales suspenden el proceso, aunque la mayoría de los shells enmascaran SIGTTOU para que un trabajo en segundo plano pueda escribir en el terminal sin interrupciones.

30
ephemient

En informática, un Trabajo es una unidad de trabajo o unidad de ejecución (que realiza dicho trabajo). Un componente de un trabajo (como unidad de trabajo) se denomina tarea o paso (si es secuencial, como en una secuencia de trabajos). Como unidad de ejecución, un trabajo puede identificarse concretamente con un solo proceso, que a su vez puede tener subprocesos (procesos hijos; el proceso correspondiente al trabajo es el proceso padre) que realiza las tareas o pasos que comprenden el trabajo del trabajo; o con un grupo de proceso; o con una referencia abstracta a un proceso o grupo de procesos, como en el control de trabajo de Unix.

Fuente

Buenos ejemplos

1
Premraj