Flux RSS - La vie du site - Nouveautés et mises à jour
Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

Mémoire virtuelle de Windows

La mémoire virtuelle de Windows est la somme des tailles la mémoire RAM augmentée de la taille du fichier pagefile.sys (un fichier servant à étendre, de manière virtuelle, la taille de la mémoire).

Pour son origine (son invention), voir Pagination.

La « mémoire virtuelle » de Windows est constituée de la RAM augmentée de la taille d'un fichier d'échange (fichier de pagination) présent physiquement sur un volume (un disque dur ou un disque SSD), ce qui permet à Windows d'étendre « virtuellement » son espace d'adressage lorsque des besoins s'en font sentir. Le fichier d'échange ne doit pas être confondu avec une quelconque « mémoire cache ».

Le « fichier d'échange » de Windows est un fichier présent physiquement sur un volume (un disque dur, une clé USB, un SSD) et qui permet à Windows d'étendre « virtuellement » la mémoire centrale de l'ordinateur (la mémoire RAM), lorsque des besoins s'en font sentir.

La mémoire virtuelle dont dispose Windows est la taille de la RAM + la taille du fichier d'échange (pagefile.sys)

Ne pas oublier que :

Le traitement des instructions (l'exécution des programmes) et les manipulations des données, se font exclusivement dans la mémoire RAM.

Sous Windows, de nombreux programmes peuvent s'exécuter (en apparence) simultanément. Windows lui-même est, en réalité, un vaste ensemble de programmes s'exécutant tous (en apparence) en même temps.

Réellement en temps réel ? Réellement en même temps ?

Les notions de « en même temps » et de « temps réel » sont totalement fausses dans le monde PC ! Ce ne sont qu'apparences.

L'ordinateur de type PC (à architecture Intel / Windows) n'exécute qu'une instruction à la fois (ou deux à huit à la fois, en 2012, dans les systèmes multi-coeur / multi-thread).

En réalité, chaque « programme » dispose de l'ordinateur durant une tranche de temps (quelques millisecondes - quelques « cycles horloge ») puis c'est au programme suivant d'en disposer etc. dans un système de « partage de temps ». Les PC à architecture Intel / Windows fonctionnent en « temps partagé » (« Time sharing »), comme les bons vieux IBM 360 des années 1966 !

Les PC ne sont pas des systèmes temps réel ni préamptifs - un programme qui n'a rien à faire n'est pas mis dans un état d'attente (idle), il lui est attribué du temps processeur, comme aux autres, dont il ne fait rien ! Le tout est pondéré par un système de « priorités » qui permet d'allouer un peu plus de cycles à des processus prioritaires et un peu moins à des processus marginaux.

Lorsque vous lancez un nouveau programme, ou lorsqu'un programme « prend la main » pour s'exécuter parce que c'est son tour, il doit se trouver dans la RAM. S'il n'y a pas de place dans la RAM, des portions des autres programmes présents dans la RAM, et dont ce n'est pas le tour de s'exécuter, sont découpés arbitrairement en bloc de 4KO appelés « pages », et ces « pages » sont « vidées/virées » dans le « fichier d'échange », également appelé « mémoire paginée » (PageFile.sys). Un algorithme optimise cette opération en tenant compte de divers paramètres dont la priorité. La mémoire RAM ainsi libérée est mise à disposition de l'application-demandeuse pour ses cycles d'exécution. Lorsque c'est à nouveau le tour de l'application qui avait été « virée » de s'exécuter, le processus recommence et les « pages » virées de l'application « remontent » en RAM. Ce fonctionnement est connu sous divers noms mais nous retiendrons « Swap-in / Swap-out » et « Roll-in / Roll-out ».

S'il y a réellement besoin de réel temps réel (par exemple en contrôle de processus industriel, acquisition de données, génération de signaux, etc.) il faut ajouter du matériel spécifique à l'appareil sous Windows (cartes d'acquisition/génération de signaux et base de temps externe prioritaire avec son API asservissant Windows).

Voir les articles :

Dossier (collection) : Temps réel

Processus - Notion
Processus - Ordonnanceur
Overhead du context switching
Algorithme du tourniquet (tour de rôle)
Priorité des processus et affinité - Notion de priorité
Priorité des processus et affinité - Notion d'affinité
Processus - Commutation de contexte - Context Switching (on fait tourner le manège - Round Robin)


S'il y a des erreurs de pages c'est qu'il manque de la mémoire RAM

Accédez au « Gestionnaire de tâches de Windows » en enfonçant, simultanément, les trois touches « Alt + Ctrl + Suppr ».

Clavier - appui simultané sur les 3 touches : Alt et Ctrl (ou Cntrl ou Control) et Suppr (ou Sup ou Delete)
Clavier - appui simultané sur les 3 touches : Alt et Ctrl (ou Cntrl ou Control) et Suppr (ou Sup ou Delete)

Afficher la colonne « Erreur de pages » (ou « Défaillance de pages »)

  • Anciennes versions de Windows :
    Dans l'onglet « processus », la colonne « Erreur de pages » (ou « Défaillance de pages ») est affichée par défaut. Si elle ne l'est pas, faites un clic droit Souris - Clic droit dans une zone quelconque des titres de colonnes Mémoire virtuelle (PageFile.sys) de Windows cochez la case « Erreur de pages » puis validez.
  • Nouvelles versions de Windows :
    Sélectionnez l'onglet « Détails » Mémoire virtuelle (PageFile.sys) de Windows faites un clic droit Souris - Clic droit dans une zone quelconque des titres de colonnes Mémoire virtuelle (PageFile.sys) de Windows cliquez sur « Sélectionner des colonnes » Mémoire virtuelle (PageFile.sys) de Windows cochez la case « Erreur de pages » Mémoire virtuelle (PageFile.sys) de Windows validez.

La colonne « Erreur de pages » (ou « Défaillance de pages ») signale non pas des erreurs (le mot est mal choisi) mais le nombre d'utilisations du fichier d'échange (1 swap-out=une utilisation, un swap-in=une utilisation), donc le nombre de fois ou le « fichier d'échange » (le fichier PageFile.sys) a « sauvé la mise » à votre système qui manque de RAM (et on s'apperçoit bien qu'il est utilisé des centaines de millions de fois donc que son emplacement (sur un disque SSD) est un accélérateur substentiel de Windows, mais que, surtout, IL MANQUE DE LA RAM. La capture d'écran suivante est faite sur une machine dotée de 24 GO de RAM, mais très lourdement utilisée.

On comprend immédiatement que le manque de RAM provoque des centaines de millions d'accès disque et donc un ralentissement très sensible des performances de l'ordinateur. Ce n'est pas augmenter la taille du fichier de mémoire paginée qui va améliorer les choses. C'est l'ajout de mémoire RAM.

Simultanément, le bricolage de la taille du cache disque (son augmentation) peut allourdir encore plus ce ralentissement.

Le processus de mémoire virtuelle de Windows : astucieux mais pis-aller.

Le processus de « Mémoire virtuelle » de Windows est astucieux car il permet d'exploiter des applications très gourmandes en mémoire RAM sans avoir à acheter des barrettes de mémoire (pourtant de moins en moins coûteuses) et sans provoquer une situation de blocage total en cas de manque de RAM. Si le fichier d'échange (le fichier PageFile.sys) n'existe pas (vous pouvez tester le cas en supprimant l'utilisation du fichier d'échange dans les propriétés système) et si la RAM est faible, un crash système (BSOD) vous prévient du manque de mémoire (RAM + pagination) avec un message « Mémoire virtuelle insuffisante ».

Ce processus est aussi la signature de l'inconsistance de Windows qui ne sait pas gérer la mémoire et qui, véritable usine à gaz de trucs inutiles ralentissant la machine (voir, par exemple : Les services à désactiver dans les différentes versions de Windows), nécessite des plates-formes de plus en plus puissantes pour en faire de moins en moins. Windows est incapable de gérer des objets en dehors de sa mémoire RAM et fait tout monter en RAM pour camoufler sa lourdeur. Ne lui parlez pas de fichier indexé : un index est alors entièrement monté en mémoire etc. ...

Sous Windows NT/2000 et XP, le fichier swap se nomme : pagefile.sys

Sous Windows 98, 98se, 98Me, le fichier swap se nomme : Win386.swp

Son emplacement est au choix de l'utilisateur mais, par défaut, il se trouve sur le volume système C:, ce qui n'est pas une bonne idée. Le fichier de mémoire virtuelle, comme tous les fichiers temporaires, devrait être dirigé vers un volume (une partition) dédiée à cela (de manière à pouvoir effectuer un nettoyage aisé). D'autre part, bien que nous recommandions, pour toutes les partitions de Windows, à partir de NT4, d'être en NTFS, nous recommandons, pour la partition recevant les fichiers temporaires et le swapfile, d'être en FAT32 « seulement ». Ce système de gestion de fichiers est beaucoup plus rapide que NTFS.

La vitesse du fichier d'échange est effroyablement lente par rapport à la vitesse de la RAM de l'ordinateur. Si l'on entend le disque dur fonctionner sans cesse il est temps d'acheter de la RAM pour votre ordinateur - ce sera un formidable coup d'accélération de Windows et de l'ordinateur sans avoir à changer d'ordinateur (et sans avoir à changer de disque dur, après avoir perdu toutes ses données, lorsqu'il succombera aux millions d'accès à la minute imposés par trop peu de RAM).

La taille du fichier d'échange (pagefile.sys) est généralement laissée au bon soin, automatiques, de Windows, mais ceci pose un problème : le fichier d'échange est alors de taille variable et ne cesse de croître puis rapetisser - il fini très vite par ressembler à un patchwork et il faut le défragmenter sinon il ralenti encore plus Windows !

Défragmenter le fichier pagefile.sys :

PAGEFILE.SYS NE PEUX PAS ÊTRE DÉFRAGMENTÉ
Il est impossible de défragmenter pagefile.sys.

L'une des limitations imposée à tous les outils, y compris ceux de défragmentation, est qu'ils n'auront jamais accès aux fichiers ouverts par Windows. Dès le démarrage de Windows certains fichiers, qui vont être utilisés durant toute la session de travail, le sont en mode d'accès exclusif (y compris lors d'un démarrage en mode sans échec). Jamais aucun logiciel de défragmentation, gratuit ou commercial, ne pourra défragmenter pagefile.sys.

PageDefrag (de SysInternals - Mark Russinovitch)

Exception : utilisez PageDefrag (de Mark Russinovich - SysInternals), uniquement si vous êtes sous Windows client XP 32 bits ou Windows Server 2003 32 bits.
Technet Microsoft - SysInternals

Sur les autres versions de Windows (Windows 64 bits et versions 32 bits de Windows Vista, 7, 8 et suivantes.), PageDefrag ne fonctionne pas et pagefile.sys ne peut pas être défragmenté, même en démarrant en mode sans échec.

Astuce pour défragmenter pagefile.sys

Le seul moyen de défragmenter pagefile.sys est de monter le disque en secondaire (ou en disque externe) et de lancer une défragmentation de ce disque. A ce moment là, tous les fichiers, y compris les ruches du Registre Windows, pagefile.sys et hiberfil.sys sont défragmentés. Après cette opération, on remonte le disque primaire (système) et on peut constater une accélération de Windows si le fichier pagefile.sys était très fragmenté.

Astuce pour empêcher pagefile.sys de se fragmenter : calcul d'une taille fixe

Donner au fichier de mémoire virtuelle pagefile.sys de Windows une taille fixe. Le problème de fragmentation et de ralentissement est évacué. La taille de ce fichier doit alors être suffisante pour qu'il n'y ait pas de débordement, ce qui provoquerait le crash d'une application, voire le crash de tout le système.

Pour déterminer la taille du pagefile.sys dont vous avez besoin, ce qui est dépendant de votre matériel (RAM & Disques), de vos applications et de la manière de vous en servir :

  • réglez votre mémoire virtuelle en mode automatique (taille gérée par le système)
  • observez, régulièrement (2 fois par jour durant une semaine) les nombres indiqués par Windows (taille allouée actuellement et taille maximale)
  • défragmentez le disque sur lequel se trouve le fichier de mémoire virtuelle (monté en disque secondaire ou externe)
  • remontez-le en primaire et redémarez
  • allouez à votre pagefile.sys une taille fixe (taille personnalisée) avec pour taille minimum la taille moyenne observée et comme maximum, la taille maximum observée (sans que cela ne puisse dépasser 4096 MO sur les systèmes 32 bits et sous Windows XP).

L'intérêt de la taille fixe de pagefile.sys est que :

  1. Windows ne perd plus son temps à augmenter / réduire la taille d'un fichier, par essence changeant
  2. ce fichier n'est plus fractionnable (il n'y a plus de ralentissement dues à la fragmentation de ce fichier et vous n'avez plus besoin de le défragmenter pour tenter d'améliorer la vitesse de Windows)

Deux règles imbéciles pour calculer la taille optimale du pagefile.sys

  1. Une règle, purement empirique (totalement invérifiable), sur la taille de pagefile.sys consisterait à donner, comme taille maximum, 2,5 fois la taille de la mémoire RAM de votre ordinateur (sans que cela ne dépasse 4096 MO sous Windows XP). Si votre utilisation de l'ordinateur est centrée sur des travaux de type traitement de textes et tableurs, avec des documents de petite taille, la taille de la mémoire virtuelle pourra être plus petite que si vous utilisez des logiciels comme PhotoShop sur des images de très grandes dimenssions en très haute résolution, ou des logiciels de montage vidéo etc.

  2. Un tableau purement empirique, une pure construction de l'esprit, souvent rencontré, qui n'a rien de réaliste et ne repose sur rien. Ce tableau est connu et répété sur bien des forums de discussion. Il propose une taille fixe conseillée, pour pagefile.sys, de manière totalement arbitraire, sans aucun sens pratique ni théorique.

    Ce tableau, très connu, est complètement faux !
    Taille de la RAMTaille conseillée de manière arbitraire
    1 GO2,5 GO (4096 MO max sur une machine 32 bits)
    1,5 GO3, 75 GO (4096 MO max sur une machine 32 bits)
    2 GO
    5 GO (4096 MO max sur une machine 32 bits)
    4 GO10 GO (4096 MO max sur une machine 32 bits)
    6 GO15 GO
    8 GO16 GO
    10 GO16 GO
    12 GO16 GO
    14 GO16 GO
    16 GO16 GO

La seule bonne méthode de calcul de la taille de pagefile.sys

La taille du fichier pagefile.sys ne répond à aucune règle de calcul de taille, ni de conseils, par nature totalement faux. Elle est totalement et uniquement dépendante :

  • de votre ordinateur
  • de votre usage de votre ordinateur
  • des applications utilisées

La seule bonne méthode de calcul de la taille du fichier de mémoire virtuelle de Windows (pagefile.sys) est celle des essais et erreurs (et regardez le gestionnaire des tâches pour avoir la taille mémoire réellement utilisée par chaque processus et au total).

Relire le paragraphe ci-dessus : « Astuce pour empêcher pagefile.sys de se fragmenter : calcul d'une taille fixe. »

Le bon emplacement du fichier de mémoire virtuelle de Windows

  • De préférence, créer une partition dans laquelle ce fichier est placé.
  • De préférence, cette partition serait mieux placée sur un disque dur physique différent du système (sinon, on perd du temps en déplacement des têtes de lecture).
  • Si un disque SSD est présent, mettre la mémoire virtuelle sur le volume SSD, ce qui augmentera sensiblement les performance de l'appareil sous Windows.

Comment modifier la taille du fichier de mémoire virtuelle de Windows

Attention - pour modifier la taille du fichier pagefile.sys vous devez avoir les droits administratifs - si vous faites cette manipulation sous un compte « limité », rien n'est pris en compte.

Pour allouer une taille et un emplacement à la mémoire virtuelle, il faut accéder aux « Propriétés système ». :

  • Lancement direct de « Propriétés système »
    Sous toutes les versions de Windows, exécuter la commande SYSDM.CPL @0,3
  • Sous Windows XP, Vista
    Démarrer Mémoire virtuelle (PageFile.sys) de Windows Panneau de configuration Mémoire virtuelle (PageFile.sys) de Windows Performances et maintenance Mémoire virtuelle (PageFile.sys) de Windows Système Mémoire virtuelle (PageFile.sys) de Windows Onglet « Avancé » Mémoire virtuelle (PageFile.sys) de Windows Clic sur le bouton « Paramètres » dans Performances Mémoire virtuelle (PageFile.sys) de Windows Onglet « Avancé » Mémoire virtuelle (PageFile.sys) de Windows Clic sur le bouton « Modifier » dans Mémoire virtuelle Mémoire virtuelle (PageFile.sys) de Windows Clic sur le volume qui doit contenir votre fichier « PageFile » (généralement C:) Mémoire virtuelle (PageFile.sys) de Windows Sélectionnez « Taille gérée par le système » (ou « Taille personnalisée » et saisir vos nombres) Mémoire virtuelle (PageFile.sys) de Windows Clic sur le bouton « Définir » Mémoire virtuelle (PageFile.sys) de Windows Ok Appliquer Mémoire virtuelle (PageFile.sys) de Windows Ok Mémoire virtuelle (PageFile.sys) de Windows Fermer et redémarrer.
  • Sous Windows 7 et suivants
    Démarrer Mémoire virtuelle (PageFile.sys) de Windows Panneau de configuration Mémoire virtuelle (PageFile.sys) de Windows Afficher par petites icônes Mémoire virtuelle (PageFile.sys) de Windows Système Mémoire virtuelle (PageFile.sys) de Windows Paramètres Système Avancés Mémoire virtuelle (PageFile.sys) de Windows Clic sur le bouton « Paramètres » dans Performances Mémoire virtuelle (PageFile.sys) de Windows Onglet « Avancé » Mémoire virtuelle (PageFile.sys) de Windows Clic sur le bouton « Modifier » dans Mémoire virtuelle Mémoire virtuelle (PageFile.sys) de Windows Décocher la case « Gestion automatique du fichier d'échange pour les lecteurs » Mémoire virtuelle (PageFile.sys) de Windows Clic sur le volume qui doit contenir votre fichier « PageFile » (généralement C:) Mémoire virtuelle (PageFile.sys) de Windows Sélectionnez « Taille gérée par le système » (ou « Taille personnalisée » et saisir vos nombres) Mémoire virtuelle (PageFile.sys) de Windows Clic sur le bouton « Définir » Mémoire virtuelle (PageFile.sys) de Windows Ok Mémoire virtuelle (PageFile.sys) de Windows Ok Mémoire virtuelle (PageFile.sys) de Windows Ok Mémoire virtuelle (PageFile.sys) de Windows Fermer et redémarrer.

Mémoire virtuelle (PageFile) de Windows : Panneau de configuration> Système
Mémoire virtuelle (PageFile) de Windows : Panneau de configuration Mémoire virtuelle (PageFile.sys) de Windows Système

Mémoire virtuelle (PageFile) de Windows : Paramètres Système Avancés
Mémoire virtuelle (PageFile) de Windows : Paramètres Système Avancés

Mémoire virtuelle (PageFile) de Windows : Clic sur le bouton "Paramètres" dans Performances
Mémoire virtuelle (PageFile) de Windows : Clic sur le bouton « Paramètres » dans Performances

Mémoire virtuelle (PageFile) de Windows : Onglet "Avancé"> Clic sur le bouton "Modifier" dans Mémoire virtuelle
Mémoire virtuelle (PageFile) de Windows : Onglet « Avancé » > Clic sur le bouton « Modifier » dans Mémoire virtuelle

Mémoire virtuelle (PageFile) de Windows : Faire les réglages personnalisés ou mettre en gestion automatique
Mémoire virtuelle (PageFile) de Windows : Faire les réglages personnalisés ou mettre en gestion automatique
Mémoire virtuelle de Windows - Windows, avec sa mémoire virtuelle, protège certains virus

Les algorithmes de gestion de la mémoire virtuelle de Windows (le fichier pagefile.sys) optimisent le remplissage de ce fichier. Lorsqu'un programme en cours d'exécution doit être éjecté momentanément de la RAM pour laisser de la place à un autre, seules les données sur lesquelles vous travaillez, et les variables, sont envoyées dans la mémoire virtuelle (le fichier pagefile.sys). Le code en lui-même du programme, invariable, se trouve déjà sur disque, dans le fichier où le programme est installé. C'est de là qu'il sera recherché/rechargé lorsque le programme remontera en mémoire pour reprendre son tour d'exécution. C'est la raison pour laquelle Windows empêchera toujours de toucher aux fichiers des programmes en cours d'exécution (Windows les ouvre avec un privilège d'accès exclusif).

Si le programme est un virus, il « bénéficiera » de la même « protection » (virus vs malwares). C'est pourquoi les antivirus et antimalwares vous annonceront parfois, pour parfaire une décontamination (selon les virus ou parasites [parasitewares] trouvés), qu'ils ont besoin de redémarrer l'ordinateur. Là, dans la liste de redémarrage de Windows, l'antivirus ou antimalwares a inscrit des travaux à faire en premier et va exécuter ces travaux de fin de décontamination avant de permettre le démarrage/redémarrage de tout le reste.

Vous ne devez pasdémarrer / redémarrer Windows en mode de diagnostic (dit mode " sans échec ") pour lancer un antivirus ou un antimalware s'il ne vous le demande pas, car cet outil cherche certains virus en mémoire, lorsqu'ils cherchent à s'exécuter (mode « on-execution ». Si l'ordinateur démarre en mode de diagnostic (mode " sans échec "), certains virus, qui se camouflent sur disque, ne seront pas détectés. Ils sont obligés de se dévoiler pour se lancer, en cherchant à s'activer en mémoire. Si un outil de sécurité est spécifiquement écrit pour être utilisé en mode de diagnostic (mode " sans échec "), nous vous le signalerons dans son mode d'emploi.

Le mode d'accès « on-execution » des outils de sécurité permet aussi :

  • De gagner du temps en n'analysant que ce qui cherche à s'exécuter, donc uniquement du code exécutable, au lieu d'analyser tout et n'importe quoi.
  • D'éviter le problème connu qui fait dire qu'il ne faut jamais avoir plus d'un antivirus ou antimalwares simultané. Cet ancien mode de fonctionnement des outils de sécurité, qui faisait intercepter, en mode exclusif, les fichiers tentant de s'ouvrir (« hook - hooker - hooking »), pour les analyser, pouvait provoquer des situations de blocages mutuels infinis entre plusieurs outils de sécurité intervenant simultanément sur le même fichier.

Accessoirement, vous pouvez lancer une seconde fois un antivirus ou antimalwares à la demande (on-demand), en mode de diagnostic (mode " sans échec "), par acquit de conscience, mais certains antivirus le vérifient et refuseront de se lancer dans ce mode. Lorsque Windows est démarré en mode de diagnostic (mode " sans échec "), il est lancé dans une configuration minimum. Tout ce qui tente, habituellement, de s'activer et s'exécuter durant le démarrage de Windows, et qui ne fait pas partie du noyau minimum de Windows (le kernel), est ignoré (n'est pas lancé).

Seuls les malwares de classe « Root » (« Rootkit »), qui ont réussi à s'incruster dans le noyau de Windows (le kernel), ne peuvent être évités lors d'un démarrage en mode « sans échec ». Ils font désormais partie du noyau de Windows et disposent des privilèges les plus élevés, ceux de Windows (« Ring 0 »).

Les niveaux de privilèges dans un système d'exploitation : ring0, ring1, ring2, ring3, ring 0, ring 1, ring 2, ring 3
Les niveaux de privilèges dans un système d'exploitation : Ring0 (Ring 0), Ring1 (Ring 1), Ring2 (Ring 2), Ring3 (Ring 3)

Certains virus s'installent encore plus « haut » : dans le « bootstrap » du disque de démarrage (le « bootstrap » est exécuté avant le chargement de Windows), voire dans le BIOS qui est exécuté en tout premier, à la mise sous tension de l'ordinateur.

Les microprogrammes UEFI, qui remplacent les BIOS depuis 2012, sont suspectés de beaucoup d'intrusions franchement malveillantes et attentatoires à la vie privée et aux libertés individuelles dont :

Qui contrôle le BIOS/l'UEFI contrôle l'ordinateur
donc contrôle son utilisateur

Mémoire virtuelle de Windows - Windows, avec sa mémoire virtuelle, protège certains virus
Mémoire virtuelle de Windows - Mémoire virtuelle de Windows