Les OS ne devraient pas faire de resource tracking.
Les programmes devraient avoir été bien conçu du départ,
et c'est tout.
Car un OS actuel ne peut se fier aux programmes et fait du resource tracking.
Et les programmes ne peuvent se fier aux OS, et libèrent manuellement.
Donc pour être sûr qu'il n'y aura aucun problème, on doit l'implémenter - et on l'implémente
effectivement - dans l'OS et dans les programmes.
Ce qui ralentit l'exécution. La gestion du resource tracking ou un free() peut paraître
mineur, mais quand on pense à tous ceux qui vont être exécutés lors de l'utilisation
de l'OS, ça devient différent.
Un OS ne devrait pas le gérer, mais fournir un programme pour repérer les fuites mémoire.
Ca obligerait les programmeurs à bien coder directement. Et ça marcherait bien partout,
c'est sûr.
D'un autre côté utiliser le resource tracking est plus simple. Alors on pourrait compter dessus,
et oublier tous les free() et autres routines de libération.
Ca peut même paraître une meilleure solution, car elle est plus flemmarde, mais
soit on aura moins de contrôle du côté du programmeur, - quand on veut libérer une
ressource parcequ'on a pas une mémoire illimitée. -
On ne pourra pas désallouer explicitement comme avant.
Il faut modifier free() de manière à ce qu'elle court-circuite le resource-tracking
, elle libère MAIS elle annule la libération automatique... --> free() devient plus lente...
Et pour la libération des ressources non désallouées explicitement, soit on va faire
une routine neuve, d'où des doublons dans le code, soit on va utiliser free(). Qui elle-même
enlève à chaque fois la ressource de la liste des ressources à libérer.
Maintenant, on fait ça sur un système qui fait ça sans arrêt. Multi-tâches, à grande échelle,
utilisant le C++, beaucoup de ressources dynamiques... on perd de la vitesse.
Et ça demande d'avoir parfaitement confiance en l'OS. Si il y a un problème où que ce soit
du style l'erreur bête qui arrive tout le temps, pas assez d'optimisation sur free(), on va
VRAIMENT en baver pour se débarasser d'une ressource, par rapport à un système simple
où tout repose sur nos épaules.
