2017-08-22 3 views
0

J'ai essayé de chercher sur le net mais je n'ai pas trouvé de réponse parfaite pour ça? Quel est le nom de la procédure qui est suivie pour éviter cette situation où l'autre fonction de travail attendra pour toujours cette boucle infinieComment linux gère quand une fonction contenant une boucle infinie est mise en file d'attente dans la file d'attente de travail?

+0

Votre question n'est pas particulièrement claire, pensez à la reformuler légèrement. peut-être donner un exemple. Quelle situation, précisément, essayez-vous d'éviter? –

+0

Avez-vous googlé «chien de garde NMI»? – myaut

Répondre

0

si on parle de processus boucle infinie ou pas de boucle infinie linux ne s'en soucie pas. le mot-clé que vous cherchez est 'preemption' et qui peut être recherché dans n'importe quel livre

s'il y a une boucle infinie n'abandonnant pas le cpu dans le noyau lui-même, c'est une erreur de programmation. ceci est repéré avec «chien de garde».

0

Linux permet à chaque thread d'exécution de s'exécuter uniquement pour un quantum spécifié avant de pouvoir être remplacé par un autre. Peu importe que le processus soit dans une boucle infinie, le noyau a ici le pouvoir. En aparté (et je suppose que c'est toujours le cas avec les noyaux actuels), les threads qui abandonnent le CPU avant que leur quantum ne soit pleinement utilisé peuvent recevoir des améliorations de priorité temporaires du noyau en récompense d'un bon comportement.

+0

Si une file d'attente de travail exécute la fonction worker dans le même thread que la file d'attente de travail plutôt que de créer un nouveau thread pour la fonction worker, peut-elle être permutée en utilisant la préemption? –