Question Défauts de page sans échange de fichier?


J'ai trouvé la question évidente et aussi c'est plus grand frère chez ServerFault.

Mais ma question est différente: si les défauts de page sont les moments où le système d'exploitation doit charger quelque chose du fichier SWAP, pourquoi est-ce que je reçois des défauts de page même si je l'ai complètement désactivé?

Ou ai-je mal compris ce qu'est une faute de page?


4
2018-01-21 13:39


origine




Réponses:


Un peu vieux, mais vérifiez ce Article MSDN.

Il décrit les deux types de défauts de page.

Défauts durs sont ce que vous pensez - ce sont là où les données ne sont pas en mémoire vive et doivent être extraites du fichier d'échange. Ils paralysent les performances (10 000 fois plus lent que l'accès RAM pour les disques durs mécaniques).

Défauts légers, cependant, sont déclenchés par des pages que le programme demande à zéro (demande zéro pages), quand une page est écrite pour la première fois (s'il s'agissait d'une copie sur une page d'écriture) ou si la page est déjà en mémoire ailleurs (généralement lorsqu'il est partagé entre plusieurs processus). Ce ne sont pas si mauvais pour la performance.

Donc, vous pouvez vous attendre à continuer doux défauts de page, même sans fichier de page.


5
2018-01-21 14:03



En outre, certains systèmes * nix ne chargent pas des programmes entiers au démarrage. Les sections sont chargées selon les besoins (via un défaut de page) lorsqu'une partie non résidente est appelée. Je ne sais pas si Windows fait aussi cela, je soupçonne pas de la quantité de RAM que les applications prennent au démarrage. - Brian Knoblauch
Windows exige de la pagination des exécutables et des bibliothèques - il est juste que beaucoup d’entre eux décident d’y aspirer une tonne d’autres ressources au démarrage. En outre, les programmes de compression exe tels que UPX interrompent la pagination de la demande car le stub UPX doit désormais décompresser l'intégralité de l'exécutable en RAM avant de pouvoir déclencher le chargeur. - afrazier


Ce qui vous manque, c'est qu'une erreur de page n'implique pas nécessairement un fichier d'échange. Vous pouvez également mapper des fichiers arbitraires en mémoire; c'est-à-dire dire au système d'exploitation de sauvegarder une région mémoire avec (une partie de) un fichier donné. Cela signifie que lorsque le programme accède à une page de mémoire dans cette région qui n'a pas encore été chargée, il est lu à partir de la position correspondante dans le fichier; et lorsqu'une page de mémoire est écrite (en supposant que la région est accessible en écriture), les données sont finalement réécrites dans le fichier d'origine, et non dans le swap.

Dans les systèmes d'exploitation modernes, cette technique est utilisée pour charger le code exécutable (des exécutables et des bibliothèques). Vous devez donc vous attendre à ce que les erreurs de lecture se produisent même sans fichier d'échange.


6
2018-01-21 15:07