Les applications sont-elles supprimées de la RAM lorsqu'elles sont fermées?

2

J'ai remarqué que lorsque vous ouvrez un programme, fermez-le, puis ouvrez-le à nouveau, il semble s'ouvrir beaucoup plus rapidement la deuxième fois.

Est-ce parce que la deuxième fois c'est déjà dans la RAM?

En d'autres termes, je suppose qu'une fois qu'un programme est fermé, son espace mémoire est marqué comme inutilisé. Si ce programme est rouvert avant que son ancien espace mémoire ne soit utilisé, doit-il recharger le programme dans son intégralité à partir du disque?

doyen
la source
1
C'est la différence entre mémoire libre et mémoire inactive. Tous deux peuvent naviguer selon les besoins, mais ce dernier contient déjà des données pouvant être réutilisées.
Daniel Beck
1
Vous obtiendrez des réponses vagues et laineuses parce que vous avez posé une question vague et laineuse. La réponse à cette question dépend du système d'exploitation, mais vous n'avez pas spécifié de système d'exploitation. Le comportement sur un ancien Unix avec des programmes "sticky text" diffère du comportement sur Windows NT, qui est différent du comportement sur Linux, qui est différent des comportements sur BSD et MacOS, qui est différent du comportement sur Solaris. - parce que leurs architectures de gestion de mémoire cache et de gestion de la mémoire sont toutes légèrement différentes, voire grossières.
JdeBP
@JdeBP Fair Point. Je suppose que je cherchais la réponse à l'OS 101, ou du moins certaines idées que je n'avais pas prises en compte, comme la mise en cache de disque mentionnée ci-dessous.
Dean

Réponses:

1

En général, lorsqu'une application ferme / termine, le stockage occupé est instantanément libéré. ​​Si vous redémarrez l'application, il sera de nouveau chargé à partir du disque, dans le "nouveau" stockage.

La plus grande exception à cette règle concerne certains "téléphones intelligents", où parfois, lorsque vous "terminez" une application, elle n'est pas réellement terminée immédiatement, elle est simplement "en arrière-plan" pendant un certain temps, en supposant que vous puissiez la redémarrer dans un proche avenir. futur. Mais si vous n'utilisez pas l'application pendant un certain temps, le système d'exploitation et le stockage récupéré le finissent. (Pour autant que je sache, ce schéma n'est pas utilisé sur des ordinateurs Microsoft ou Apple classiques, mais uniquement sur des téléphones.)

Une autre exception, un peu plus technique, réside dans le fait que même si le programme est terminé et que son stockage est libéré, l’image disque du programme (ou du moins une partie de celle-ci) peut exister dans le "cache" du disque et être plus facilement accessible. une seconde fois que la première fois. Cela peut être la cause de ce que vous percevez comme un démarrage plus rapide la deuxième fois.

Il y a une autre raison plus simple pour ce démarrage plus rapide, cependant. Lorsque vous fermez une application et que vous la redémarrez immédiatement, il existe un "trou" dans la mémoire qui convient parfaitement à votre programme. Si vous le démarrez plus tard, après avoir exécuté d’autres tâches, le système d’exploitation doit s’efforcer de trouver le stockage disponible, ce qui signifie souvent qu’il doit "extraire" d’autres données dans la RAM, ce qui prend du temps.

Daniel R Hicks
la source
3
"En général, lorsqu'une application ferme / termine le stockage occupé, il est instantanément libéré. ​​Si vous redémarrez l'application, il sera de nouveau chargé à partir du disque, dans le" nouveau "stockage." Ceci est faux pour tout système moderne qui utilise un mappage de mémoire pour charger des fichiers binaires paresseux.
billc.cn
Ce serait essentiellement la "mise en cache" des données du disque. Mais notez que le chargement réel du texte du programme est une petite partie de la préparation d’un programme en vue de son exécution. La liaison avec le RTE et la préparation des zones de données constituent la plus grande partie.
Daniel R Hicks
(Mais vous avez raison - j'avais oublié cette particularité.)
Daniel R Hicks le
@ DanH Ce que vous dites est complètement faux pour tout système d'exploitation moderne. Et c'est évidemment une manière stupide de faire les choses. Lorsqu'un programme est chargé, vous en avez deux copies, une en cours d'exécution et une dans le cache du disque - un gaspillage de mémoire complètement inutile. Sur les systèmes d'exploitation modernes, il n'y a pas de cache disque séparé, la majeure partie de la mémoire physique est un cache de page.
David Schwartz
Juste pour sourire, j'ai ouvert Firefox, sans rien faire d'autre que de le laisser aller à sa page d'accueil (Google). firefox.exe est de 925 Ko, mais sa taille virtuelle est de 269 000 Ko et son fonctionnement est de 84 000 Ko. Le texte du programme ne représente donc qu'une très petite partie des besoins en stockage. De même pour Solataire: exe - 859K, taille virtuelle 183 000K, poste de travail 47 000K.
Daniel R Hicks
4

Il n'est pas plus utilisé ou utilisé lorsque le programme est ouvert que lorsque le programme est fermé. La mémoire est utilisée si elle contient des informations utiles. Il contient des informations utiles tant pendant l'exécution du programme que lorsque le programme n'est plus en cours d'exécution.

En fait, la plupart des systèmes d'exploitation ne considèrent même pas si le programme est en cours d'exécution. Pourquoi garder quelque chose en mémoire si on n'y accède pas simplement parce qu'un programme est en cours d'exécution? Et pourquoi supprimer quelque chose de la mémoire simplement parce qu'aucun programme exécuté à cet instant ne l'utilise?

Les systèmes d'exploitation passent par l'accès aux données. Bien entendu, la mémoire contenant des données inaccessibles est considérée comme libre.

David Schwartz
la source