Lorsqu'un programme avec des theards, des mutex, des données partagées, des gestionnaires de fichiers plante à cause d'une trop grande allocation de mémoire, toutes les ressources sont libérées. Comment récupérez-vous?Gestion des ressources par Linux
Répondre
Si vous voulez dire, comment pouvez-vous revenir en arrière et libérer les ressources qui ont été allouées par le processus maintenant écrasé, eh bien, vous n'avez pas à le faire. Lorsque le processus quitte (2) ou meurt par un signal, toutes les ressources allouées par le système d'exploitation seront récupérées. C'est le travail du noyau.
Mais le processus ne fait pas une sortie propre - c'est pourquoi l'OS ne l'a pas libéré en premier lieu? – Swapna
Peu importe que la sortie se produise à la suite d'un appel système ou d'un signal, elle exécute le même code noyau et effectue le même nettoyage. C'est le travail du noyau et si ça n'arrive pas, ça s'appelle une fuite, c'est à peu près aussi sérieux qu'un bogue du noyau, et il faut retirer une version, poster des alertes de sécurité, et généralement lancer toutes sortes d'hystérie de mise à jour d'urgence. – DigitalRoss
Vous récupérez en vérifiant les résultats des fonctions d'acquisition de ressources et en ne permettant pas que des erreurs non contrôlées se produisent en premier lieu.
Dans le monde réel cependant, des bugs arrivent. – leeeroy
Essayez/attraper sur l'allocation de mémoire peut vous aider à fermer en toute sécurité cependant. À moins que le tueur OOM ne vous arrive en premier. – Xorlev
malloc n'échoue jamais sous Linux. Linux tue juste l'application quand elle essaie d'utiliser la mémoire inexistante. Un try/catch ne va pas aider avec ça. –
Toutes les ressources appartenant au processus sont nettoyées. Les seules exceptions sont les sysv mémoires/messages/sémaphores à messages partagés - qui, même s'ils ont été créés par le processus, ne lui appartiennent pas.
- 1. Gestion des ressources WPF
- 2. Gestion des ressources d'assemblage
- 3. Gestion des ressources StringBuilder
- 4. Gestion des ressources de code
- 5. Gestion des exceptions/gestion des ressources dans Jersey JAX-RS
- 6. Gestion des fichiers laissés par le code C++ sous Linux
- 7. Projets Solaris 9 (gestion des ressources)
- 8. Gestion des ressources indolore dans Java
- 9. Gestion des ressources partagées entre classes?
- 10. Gestion de projet - tableau des ressources
- 11. Gestion des ressources de chaînes Java
- 12. Gestion des ressources et suppression du contrôle de version
- 13. Gestion des ressources via les drapeaux de compilation
- 14. Gestion des ressources pour un grand nombre d'icônes dupliquées
- 15. Gestion et gestion des noms de fichiers de ressources de chaîne
- 16. Modèle de prêt/gestion automatique des ressources en Java
- 17. Pourquoi l'ordre de gestion des ressources est-il important?
- 18. Gestion des ressources partagées dans l'application multithread shared_ptr?
- 19. Gestion des ressources de chaîne dans une application Java - singleton?
- 20. Trouver l'utilisation des ressources (CPU et mémoire) par les threads d'un processus dans unix (solaris/linux)
- 21. Recommander des livres Linux + Java, ressources pour le développeur .NET
- 22. Goupilles GPIO Gestion des interruptions dans linux (bras)
- 23. Gestion des exceptions en C sans C++ sous Linux
- 24. Localisation ASP.NET - l'utilisation des ressources par défaut
- 25. Comment libérer des ressources utilisées par HttpPostedFileBase?
- 26. trouver des ressources par attribut unique
- 27. .NET: Obtenir des ressources par réflexion
- 28. Ajouter des ressources à Jetty par programmation
- 29. Gestion de ressources reposantes dans Rails 3
- 30. Gestion de mémoire dynamique sous Linux
Hooooooooooooooooomework? –
Non, question d'entrevue. – Swapna