Groupe 5: Expliquer des indications cryptiques
Beaucoup de mémoire – mais quand même réservée entièrement?
Tout système d'exploitation a certes besoin de la mémoire pour
l'administration. Lorsque vous regarderez la situation sous Linux, on va
obtenir une image étonnante: Presque tous la mémoire est réservée même si les
processus en cours ne l'expliquent pas!
Effectuer le logiciel free dans un terminal va
produire la sortie suivante:
Dans cet exemple on a seulement 65 Moctets à sa disposition et 3,8 Goctets sont
réservés (voir la ligne marquée par Mem)!
Mais les apparences sont trompeuses. Ceci qui était «réservée» contient des
tampons de disque et de cache: Il y a court de 200 Moctets réservés pour des
tampons de disque et 2,5 Goctets pour la mémoire de tampon.
Lorsqu'on les déduit de l'occupation des mémoires (voir la ligne en dessous),
il produira une situation entièrement différente: On a finalement 2,8 Goctets
à sa disposition, et il y a seulement ras de 1 Goctets de mémoire occupés. Mais
qu'est-ce qu'il est qui se passe dans la coulisse si un logiciel demandera un
bloc de mémoire?
Linux y vérifie si la réserve qu'il tient sous le coude suffit pour servir la
demande. Dans ce cas il n'y a rien à faire pour le système et un bloc de
mémoire est simplement réservé.
Lorsque la réserve ne suffit plus, le système commence à libérer ses caches et
tampons pour obtenir d'espace suffisant pour le nouveau bloc de mémoire. Il y
va libérer ceux dont contenu était lu et donc est en accord avec les données
sur le disque, et lorsqu'il y a assez de mémoire libérée, elle est réservée. Il
faudrait de récrire des caches et tampons contenant des données modifiées pour
les libérer, mais il a toujours la perte de temps en conséquence – mais
lorsqu'il n'y a rien d'autre à la disposition, il faudra libérer ceux aussi
pour obtenir assez de mémoire.
Mais Linux ne va pas libérer touts ses tampons et caches, parce qu'il a
toujours besoin de quelques tampons pour effectuer l'accès au disque. Linux va
donc délocaliser des données sur le disque si la mémoire libre se fait
trop rare.
Vous voyez donc que Linux ne «mange» pas la mémoire libre, mais seulement la réserve temporairement, et lorsqu'un logiciel a besoin de la mémoire, il l'obtient sans problèmes – sauf si l'entière mémoire (soit la mémoire centrale et la mémoire de délocalisation) est bondée. Dans ce cas des demandes de mémoire vont tourner court à force et on ne peut plus démarrer des logiciels. Il y faut terminer quelques processus pour démarrer des autres – et particulièrement en conjonction avec des ordinateurs virtuels dont mémoire centrale est allouée dynamiquement Linux pourrait commencer à terminer des processus lorsqu'une part de sa mémoire est privée par l'hyperviseur.
en haut