2009-10-02 7 views
2

J'ai posé une question connexe 'Difference between process group id and job id in Unix', mais j'ai un doute qui n'a pas été répondu. Dans cette réponse, il a été écrit que l'ID du travail est construit dans les données liées à shell (le noyau n'a rien à voir avec cela), donc le premier plan/arrière-plan est la compréhension du shell, mais quand il fait ps x ou "R" respectivement comme processus de premier plan et d'arrière-plan, mais ps est exécuté par le noyau, donc comment le noyau sait-il que le travail est en arrière plan/premier plan.ID de travail sous UNIX doute

+0

Normalement, 'ps' est un processus tout comme le shell est un processus. Il existe différents endroits où 'ps' peut obtenir l'information - souvent le système de fichiers'/proc' est utilisé, ou il peut utiliser '/ dev/kmem' directement. –

Répondre

1

Les ID de tâche sont définitivement des fonctionnalités de coque.

Cependant, le système d'exploitation a la notion d'ID de groupe de processus terminal actuel, qui est également utilisé par le shell pour faciliter le contrôle des travaux. Les processus qui ont le même ID de groupe de processus que le processus terminal actuel reçoivent un signal de clavier tel que SIGINT et sont capables de faire des E/S sur le terminal. Ces processus sont des processus de premier plan. Si l'ID du groupe de processus est différent, le processus est un processus d'arrière-plan. La commande ps affiche + lorsque le processus est un processus de premier plan dans cette notion. Il n'a toujours pas besoin de savoir quoi que ce soit sur le contrôle de travail tel qu'il est implémenté par le shell.

+0

Comment shell informe le noyau du processus terminal actuel? Son utilisation exec pour exécuter la fonction. Quelle autre routine est impliquée pour faire cela? – avd

0

Je ne dirais pas que 'noyau n'a rien à voir' puisque le shell utilise des routines dans le noyau pour atteindre ses objectifs.

La coque décide si un processus est premier plan ou arrière-plan, mais le noyau doit être conscient de trop, et peut signaler l'état des processus lorsque la coque demande.

+0

Quelles sont les routines du noyau utilisées par shell? – avd

+0

Je pense que nous pourrions dire que le shell utilise * any * routine du noyau utile. Le noyau peut être considéré comme une bibliothèque de routines pour accéder aux disques, à l'affichage, aux périphériques d'E/S, etc. Chaque fois que le shell (ou tout programme exécutable) doit accéder au matériel, il utilise une routine noyau. Le nouveau matériel peut nécessiter des pilotes spéciaux, mais les nouvelles versions du noyau continuent d'ajouter * du support pour le matériel sous la forme de nouvelles routines. – pavium

+0

J'ai besoin d'une routine exacte, je suis en train de mettre en œuvre mon propre shell, s'il vous plaît dites à son urgence – avd