Je trouve que dans RTOS uC/OS-II, il existe une tâche inactive qui s'exécute lorsqu'aucune autre tâche n'est prête à s'exécuter. Si une tâche inactive peut consommer des ressources, comment pouvons-nous la réduire?Réduire l'utilisation des ressources d'une tâche inactive
Répondre
Habituellement, la tâche inactive est l'endroit où le processeur est mis en mode de faible consommation (veille), si c'est un système de faible puissance et le processeur a un tel mode. Il s'agit généralement d'une instruction d'assemblage spécifique. Par exemple, sur l'ARM Cortex M3, vous devez exécuter l'instruction "WFI". Sur d'autres puces, il pourrait y avoir un registre spécifique en dehors du noyau qui gère la puissance (par opposition à une instruction). Notez qu'il existe souvent des conditions (exigences à satisfaire) avant d'entrer en mode basse consommation. Parfois, vous avez besoin d'avoir des interruptions verrouillées, parfois déverrouillées, avant d'aller dormir; Vérifiez la fiche technique de votre puce.
Habituellement, avant de passer en mode basse consommation, vous devez mettre hors tension tous les périphériques dont vous n'avez pas besoin. Encore une fois, vérifiez la fiche technique de votre puce. Aussi, si vous voulez utiliser une interruption pour vous réveiller, assurez-vous que le périphérique n'est pas éteint et que l'interruption est activée, sinon vous ne vous réveillerez pas. Dernier point: souvent lors du débogage (par exemple sous le contrôle d'un périphérique JTAG), des choses bizarres se produisent lors de l'entrée en mode basse consommation, donc vous voulez désactiver "dormir" dans la tâche inactive lors du débogage, et seulement lorsque vous utilisez sans le débogueur. Habituellement, il s'agit d'une décision à la compilation (#ifdef ...)
Une boucle inactive typique est susceptible d'exercer très peu de portes de processeur et consomme donc très peu de puissance dans le noyau, mais si elle est critique, vous pouvez invoquer un mode veille dans la boucle d'inactivité, de sorte qu'aucun code n'est exécuté - le noyau s'arrête juste. Cependant, il est probable que pour maintenir une réponse en temps réel, les périphériques restent alimentés et capables de générer des interruptions, de sorte que, dans la pratique, les avantages peuvent être minimes.
En termes d'autres ressources, la boucle inactive sera typiquement simplement une branche à l'instruction en cours; une instruction, pas de données; il ne peut pas être beaucoup plus petit que ça. Le code source de uC/OS-II est fourni, vous pouvez donc jeter un coup d'oeil!
Bien sûr, si vous avez étendu la tâche inactive en la modifiant directement ou en implémentant un hook, cette utilisation des ressources est entièrement sous votre contrôle, mais vous ne pouvez rien obtenir pour rien.
- 1. .NET Réduire au bac ET Réduire les ressources requises
- 2. Façon de réduire le dossier Ressources?
- 3. Inactive UIBarButtonItem
- 4. Planification avec des ressources variables
- 5. Réduire les ressources serveur et la compilation de php en C++
- 6. Gestion des ressources d'assemblage
- 7. Réduire l'échelle des images CSS
- 8. entrée si la fenêtre est inactive (Windows)
- 9. La fonction WPF Matrix3D.Rotate() est-elle inactive?
- 10. NSTimer callbacks lorsque l'application iPhone est inactive
- 11. Défilement automatique lorsque la souris est inactive
- 12. mongoDB carte/réduire moins réduire
- 13. DataGridViewComboBox - Afficher la valeur 'InActive' dans DataGridView
- 14. Limiter l'utilisation des ressources du service WCF
- 15. Exécution d'une action lorsque l'application est inactive
- 16. Animation inactive de type matrice pour Emacs
- 17. Filtrage des ressources m2eclipse
- 18. partage des ressources Discussion
- 19. Utilisation des ressources MySQL
- 20. Gestion des ressources WPF
- 21. Dernière optimisation des ressources
- 22. Gestion des ressources StringBuilder
- 23. Nettoyage des ressources
- 24. Vérification des ressources
- 25. Libérer des ressources d'application
- 26. Travailler avec des ressources
- 27. eXtreme Programming - Le prototypage en tant que tâche? Ou réduire les tâches que vous effectuez?
- 28. Quelles sont vos recommandations pour réduire le nombre de ressources (JavaScript et CSS) que DotNetNuke charge?
- 29. Réduire des milliers d'avertissements du compilateur
- 30. Réduire des projets dans l'Explorateur de solutions
qu'est-ce que vous essayez de réduire? une tâche inactive est essentiellement 'while (nothing_ready_to_run) {no_op; } 'il n'y a rien à optimiser. – msw
Une tâche inactive peut consommer de la mémoire, de l'alimentation ou des ressources d'E/S. Lequel a besoin d'être réduit? – Gabe
Mémoire et puissance. Intéressant de savoir que les ressources d'E/S sont utilisées pendant une tâche inactive. Comment est-il possible d'utiliser les ressources d'E/S? –