2010-02-17 5 views
0

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

+1

Hooooooooooooooooomework? –

+0

Non, question d'entrevue. – Swapna

Répondre

1

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.

+0

Mais le processus ne fait pas une sortie propre - c'est pourquoi l'OS ne l'a pas libéré en premier lieu? – Swapna

+2

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

1

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.

+2

Dans le monde réel cependant, des bugs arrivent. – leeeroy

+0

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

+0

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. –

1

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.

Questions connexes