2014-04-22 2 views
2

Je n'arrive pas à comprendre Comment Linux Scheduler sait que le processus a été exécuté pour une tranche de temps définie. L'interruption de la minuterie continue-t-elle à arriver pendant l'exécution du processus? Prenons un scénario, HZ vaut 100, donc il y aura un tick toutes les 10 millisecondes. Supposons maintenant qu'il n'y a que des processus avec la même priorité, donc les deux devraient avoir une chance égale, donc si la tranche de temps est de 4 ms, les deux processus seront exécutés pendant autant de temps. Mon doute est comment scheduler saura que le processus a consommé ses 4 ms?Comment Linux Scheduler sait qu'un processus a été exécuté pour une tranche de temps définie?

+3

Oui. C'est vraiment tout ce qu'il y a à faire. – zwol

+0

pourriez-vous élaborer s'il vous plaît. – Rahul

+0

Sauf si vous posez une question plus spécifique. – zwol

Répondre

2

La minuterie du noyau est toujours en cours d'exécution et interrompt les processus. Dans le cadre de ses tâches de gestion, le noyau tient compte du nombre de tranches de temps complètes (et partielles) qu'un processus consomme. Maintenant, il y a beaucoup de choses qui vont faire qu'un processus abandonne une partie d'une tranche de temps. Ces événements sont généralement appelés événements de blocage (bien que tous les événements de blocage n'abandonnent pas le reste d'une tranche de temps et ne renvoient pas de contrôle au noyau). Chaque fois que vous appelez le sleep ou que vous attendez une entrée de l'utilisateur ou un E/S réseau ou disque, le noyau ne tourne pas simplement dans une boucle consommant le reste de votre tranche de temps avant de passer à la tâche suivante. Au lieu de cela, il ajoute la durée de la tranche partiellement consommée à votre banque d'informations de processus et passe au processus dans sa liste. Ensuite, lorsque l'événement sur lequel vous attendiez se produit, votre processus est mis en file d'attente pour devenir actif à la prochaine opportunité et recevoir une nouvelle tranche à temps plein. Cela continue jusqu'à ce que le processus se termine par n'importe quel moyen.

Questions connexes