43 votes

Pourquoi avons-nous besoin de swapper des tâches dans linux?

La tâche d'inactivité (un.k.un. swapper tâche) est choisie pour exécuter lorsque toutes les tâches exécutables dans la file d'attente d'exécution au moment de la planification des tâches. Mais qu'est-ce que l'utilisation de cette sorte de travail spécial? Une autre question est de savoir pourquoi je ne peux pas trouver ce thread/processus dans le "ps aux" sortie (PID=0) de l'utilisateur?

35voto

bitschnau Points 1197

La raison est historique et programatic. Le régime de ralenti tâche est la tâche en cours d'exécution, si aucune autre tâche est praticable, comme vous l'avez dit. Il a le plus faible possible, la priorité, c'est pourquoi elle est l'exécution de toute autre tâche est praticable.

Programatic raison: Cela simplifie le processus de planification d'un lot, parce que vous n'avez pas de soins sur le cas spécial: "Ce qui se passe si aucune tâche n'est praticable?", car il y a toujours au moins une tâche exécutable, la tâche d'inactivité. Aussi, vous pouvez compter la quantité de temps cpu utilisé par la tâche. Sans le ralenti de la tâche, la tâche qui obtient le cpu-temps représenté personne n'a besoin?

Raison historique: Avant, nous avions les processeurs qui sont en mesure de vous ou de passer en mode d'économie d'énergie, il A dû courir à pleine vitesse à tout moment. Il a publié une série de NOP-instructions, si pas de tâches exécutables. Aujourd'hui, la planification de la tâche inactive généralement pas du processeur grâce à HLT-instructions (halt), afin d'économiser de l'énergie. Donc, il y a une fonctionnalité en quelque sorte dans la tâche d'inactivité, de nos jours.

Dans Windows, vous pouvez voir la tâche d'inactivité dans la liste des processus, c'est le processus inactif.

17voto

Spence Points 15057

Le noyau linux maintient une liste d'attente de processus qui sont "bloqués" sur IO/mutex etc. Si il n'y a pas de processus exécutable, le processus inactif est placé dans la file d'attente d'exécution jusqu'à ce qu'il n'est pas interrompu par un groupe de sortir de la file d'attente.

La raison qu'il a une tâche est de sorte que vous pouvez mesurer (environ) de combien de temps le noyau est perdre en raison de blocs sur IO / les écluses. En outre, il rend le code beaucoup plus facile pour le noyau, comme le ralenti tâche est la même que chacune des tâches qu'il doit changer le contexte, au lieu d'un "cas particulier" de la tâche d'inactivité qui pourrait faire changer de noyau comportement plus difficile.

10voto

MarkR Points 37178

Il est en fait une tâche inactive par le processeur, mais il n'est pas tenu dans la tâche principale de la liste, c'est plutôt dans la cpu "struct rq" runqueue struct, comme une struct task_struct * .

Ce sont activés par le planificateur chaque fois qu'il n'y a rien de mieux à faire (sur les processeurs) et exécute certains spécifiques à l'architecture code de l'inactivité de l'uc dans un état de basse consommation.

2voto

user1082080 Points 11

Vous pouvez utiliser ps -ef et il liste les pas de processus qui sont en cours d'exécution. Dans le premier lien, il donnera la liste de la première pid - 0 qui est le swapper tâche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X