Quelle est la différence entre un "travail" et un "processus"?
Quelle est la différence entre un "travail" et un "processus"?
Réponses:
Un processus est un programme en cours d'exécution avec son propre espace d'adressage.
Un travail est un concept utilisé par le shell: tout programme démarré de manière interactive qui ne se détache pas (c’est-à-dire qui n’est pas un démon) est un travail. Si vous exécutez un programme interactif, vous pouvez appuyer sur CtrlZpour le suspendre. Ensuite, vous pouvez le redémarrer au premier plan (avec fg
) ou en arrière-plan (avec bg
).
Pendant que le programme est suspendu ou s’exécute en arrière-plan, vous pouvez démarrer un autre programme. Deux tâches seraient alors exécutées. Vous pouvez également lancer un programme en cours d'exécution en arrière - plan en ajoutant un « & » comme ceci: program &
. Ce programme deviendrait un travail de fond. Pour répertorier tous les travaux que vous exécutez, vous pouvez utiliser jobs
.
Pour plus d'informations sur les tâches, voir cette section de la page de manuel bash.
ls | sort
est un travail, mais chaque commande s'exécute en tant que processus enfant d'un processus de sous-shell différent. Ceci est un exemple de travail composé de plusieurs processus. Comment votre définition d'un travail peut-elle expliquer qu'un travail peut comporter plusieurs processus?
UNIX a des concepts distincts "processus", "groupe de processus" et "session".
Chaque shell que vous obtenez lors de la connexion devient le responsable de sa propre session et de son groupe de processus et définit le groupe de processus de contrôle du terminal sur lui-même.
Le shell crée un groupe de processus dans la session en cours pour chaque "travail" qu'il lance et place chaque processus démarré dans le groupe de processus approprié. Par exemple, ls | head
est un pipeline de deux processus que le shell considère comme une tâche unique et qui appartiendra à un nouveau groupe de processus unique.
Un processus est un (ensemble de) threads d'exécution et d'autres contextes, tels qu'un espace d'adressage et une table de descripteur de fichier. Un processus peut démarrer d'autres processus; ces nouveaux processus appartiendront au même groupe de processus que le parent sauf si d'autres actions sont entreprises. Chaque processus peut également avoir un "terminal de contrôle", qui démarre comme son père.
Le shell a le concept de travail "de premier plan" et de "travail de fond". Les travaux en avant-plan sont des groupes de processus avec le contrôle du terminal, et les travaux en arrière-plan sont des groupes de processus sans contrôle du terminal.
Chaque terminal a un groupe de processus de premier plan. Lorsqu’un travail est affiché au premier plan, le shell le définit comme groupe de processus d’avant-plan du terminal; Lorsqu'il place une tâche en arrière-plan, le shell définit le groupe de processus de premier plan du terminal sur un autre groupe de processus ou lui-même.
Les processus peuvent lire et écrire sur leur terminal de contrôle s'ils font partie du groupe de processus de premier plan. Sinon, ils reçoivent SIGTTIN
et SIGTTOU
signale les tentatives de lecture et d’écriture sur le terminal, respectivement. Par défaut, ces signaux interrompent le processus, même si la plupart des shells masquent le SIGTTOU
travail en arrière-plan pour pouvoir écrire sur le terminal sans interruption.
En informatique, un Job est une unité de travail ou une unité d'exécution (qui exécute ledit travail). Un composant d'un travail (en tant qu'unité de travail) est appelé une tâche ou une étape (si elle est séquentielle, comme dans un flot de travaux). En tant qu’unité d’exécution, un travail peut être identifié de manière concrète avec un processus unique, lequel peut à son tour comporter des sous-processus (processus enfants; le processus correspondant au travail étant le processus parent) qui exécutent les tâches ou les étapes qui composent le travail du serveur. emploi; ou avec un groupe de processus; ou avec une référence abstraite à un processus ou à un groupe de processus, comme dans le contrôle de travail Unix.
Les définitions ci-dessus sont très techniques, mais l’opérateur souhaitait peut-être une clarification supplémentaire au jour le jour. Je pense qu'un travail est un processus planifié. Lorsque nous traitons de processus en général, il n’ya pas nécessairement la notion d’horaire, mais lorsque nous utilisons le mot "travail", nous entendons toujours qu’il est planifié ou répétitif comme une boucle, c’est comme un travailleur.