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?
Répondre
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.
- 1. Comment savoir depuis combien de temps un processus a été exécuté?
- 2. Linux: comment détecter comment un processus a été démarré
- 3. Combien de temps un script a-t-il été exécuté?
- 4. Linux Kernel Threads - scheduler
- 5. Findout pendant combien de temps un travail a été exécuté dans Quartz
- 6. Comment linux scheduler décide un processus en temps réel, interactif, par lots
- 7. Comment une vue sait-elle qu'il a été renvoyé devant?
- 8. Affirmer une action de rappel a été exécuté avec nUnit
- 9. comment déterminer quand un script a été chargé et exécuté
- 10. Comment un module noyau Linux sait-il quand son fichier a été ouvert?
- 11. Quartz Scheduler: temps d'exécution du trigger incohérents
- 12. Comment désinscrire un apk sur lequel zipalign a été exécuté?
- 13. Test si ICommand a été exécuté
- 14. Détermine si un processus a été suspendu
- 15. Comment vérifier si un travail de minuterie a été exécuté
- 16. Linux Scheduler sur NUMA et SMP
- 17. Est-ce que quelqu'un sait comment Square a été implémenté?
- 18. Comment TableModel sait que la valeur a été modifiée?
- 19. Contention du processeur (temps d'attente) pour un processus sous Linux
- 20. Comment Mocha sait-il que cela a été fait?
- 21. "Impossible de filtrer une requête une fois une tranche a été prise"
- 22. Comment vérifier si une touche a été enfoncée sous Linux?
- 23. Comment puis-je savoir quel code a été exécuté?
- 24. Temps d'inactivité d'un processus sous Linux
- 25. Comprendre la tranche de temps et le temps d'exécution
- 26. Déclenchement de processus/création de processus Linux
- 27. Obfuscation de code Android avec ProGuard ... comment sait-on qu'il a été obfusqué?
- 28. Fonction qui renvoie, dynamiquement, combien de code a été exécuté?
- 29. Vérifiez si une propriété a été définie dans la classe
- 30. Aspect: « temps d'exécution » sur la commande every linux exécuté
Oui. C'est vraiment tout ce qu'il y a à faire. – zwol
pourriez-vous élaborer s'il vous plaît. – Rahul
Sauf si vous posez une question plus spécifique. – zwol