Faire fonctionner Win9x avec plus de 1Go de RAM

D'après certaines rumeurs, Win9x ne fonctionnerait qu'avec moins de 256Mo de RAM. En réalité, généralement les problèmes interviennent quand au moins 1Go de RAM est présent... mais il existe de solutions.

Le problème :

Même si, à l'origine, Windows 9x a été conçu pour fonctionner avec 2Go de RAM, il faut avouer que la rareté de la mémoire vive à l'époque a empêché Microsoft d'assurer une compatibilité parfaite avec de telles quantités de mémoires. Tâchons de décrire le problème sans nous perdre en conjectures techniques, d'une part parce que ce n'est guère passionnant, et d'autre part parce que je n'ai pas les connaissances suffisantes pour décrire avec exactitude les mécanismes internes de la gestion de la mémoire virtuelle sous Windows 9x...

Disons simplement que Windows 9x ne donne pas directement accès à la mémoire physique aux programmes : il utilise une couche d'abstraction. Toute cette opération est prise en charge par le gestionnaire de mémoire virtuelle : vmm.vxd. Grâce à cette technique, il peut allouer plus de mémoire qu'il n'en existe réellement, en utilisant de l'espace disque comme mémoire virtuelle. Cela permet par exemple d'exécuter des programmes très gourmands, qui nécessitent plusieurs gigaoctets de RAM, sur une petite machine qui ne dispose que de 256Mo. Le résultat, c'est que l'exécution de ce genre de programme est assez lente (car Windows doit constamment échanger des données entre la mémoire physique et le disque) mais que cela fonctionne.

La mémoire virtuelle totale gérée par Windows atteint 4Go, répartis comme suit :
- 4Mo sont réservés au DOS
- le reste, jusqu'à 2Go, est alloué à l'exécution des programmes
- le gigaoctet suivant (de 2Go à 3Go) est partagé entre les programmes et Windows lui-même (Gdi, .dll...)
- le dernier gigaoctet (de 3Go à 4Go) est lui aussi partagé entre les programmes et Windows, qui l'utilise pour les sessions virtuelles DOS et qui y stocke à la fois les pilotes, le kernel, les programmes qui nécessitent un accès direct à la mémoire et le cache disque (vcache.vxd)

Lors de la conception de Windows 9x, ce dernier gigaoctet suffisait amplement pour assurer toutes ces missions mais désormais, les disques sont plus volumineux et les pilotes nécessitent plus d'adresses virtuelles. Les cartes graphiques y sont pour beaucoup : la mémoire vidéo qu'elle emporte nécessite autant d'adresses virtuelles dans cette zone. Or, si Windows n'a aucune difficulté à allouer 64Mo ou 128Mo de mémoire vidéo, il est beaucoup plus difficile pour lui de stocker 512Mo voire 1Go de mémoire vidéo dans un espace de 1Go qu'il doit également utiliser pour d'autres tâches... C'est pourquoi, sauf à utiliser un patch spécifique (cf. infra), Windows 9x ne peut pas fonctionner avec des cartes vidéos disposant de 1Go ou plus de mémoire vidéo...

D'autant que certains périphériques, tels que les ports AGP, occupent eux aussi cet espace virtuel. Il est donc fréquent qu'il déborde... et vous vous retrouvez alors avec un magnifique message "mémoire insuffisante", alors même que votre mémoire (physique cette fois) est totalement désoeuvrée.

Mais alors, pourquoi ce problème se pose t-il seulement lorsque de grandes quantités de mémoire sont présentes ? me direz vous.

Et bien tout simplement parce que le cache virtuel (vcache.vxd), qui lui aussi partage le dernier espace virtuel de 1Go, a été conçu pour être dynamique, c'est-à-dire que plus la quantité de mémoire vive présente est importante, plus il occupe d'adresses virtuelles. Sur un plan théorique, cela permet d'obtenir une amélioration des performances, mais malheureusement, cela occasionne souvent un débordement de la mémoire virtuel qui empêche Windows de démarrer.

Pour en savoir plus, les anglophones peuvent se rendre sur le sujet de MSFN dédié à cette question.

Les solutions :

Plusieurs choix s'offrent à vous pour résoudre où éviter le problème.

Retirer une barrette de RAM :

C'est une solution sommaire mais souvent radicale : si vous avez plusieurs barrettes, retirez-en une et vous devriez voir le problème disparaître sous vos yeux.

Néanmois, si vous utilisez un dual-boot, vous y renoncez également sous vos autres systèmes d'exploitation. Heureusement, d'autres solutions existent.

Limiter virtuellement la RAM à 1Go :

Il s'agit de la solution la plus simple à mettre en oeuvre. Elle consiste à modifier le fichier C:\Windows\System.ini afin de limiter la quantité de mémoire vive détectée par Windows. Si Windows ne voit pas plus d'un Gigaoctet, le conflit disparaît, et vous pouvez profiter de Windows 9x sur votre machine dotée de 8Go...

Voici comment procéder :

ouvrez le fichier system.ini avec le bloc-note ou tout autre éditeur de texte

Copiez les valeurs suivantes dans les blocs correspondant :

[386Enh]
MaxPhysPage=48000

[VCache]
MaxFileCache=40000

Si vous voulez optimiser tout ça, vous pouvez éventuellement adapter ces valeurs en les augmentant légèrement jusqu'à trouver le maximum fonctionnel chez vous.

Si vous installez directement Windows sur un ordinateur doté de 1Go de RAM ou plus, vous ne pourrez pas poursuivre l'installation. Vous devrez soit retirer une barrette de RAM, installer Windows, procéder aux modifications nécessaires puis réinsérer votre barrette, soit installer Windows et modifier les valeurs du fichier system.ini grâce à une disquette de boot chaque fois que vous rencontrerez le message "mémoire insuffisante".

Evidemment, l'inconvénient de cette technique réside dans le fait que la mémoire étant cachée, elle n'est pas utilisée par Windows. Vous ne profitez donc pas de vos barettes de RAM durement acquises sous Windows 9x, mais en cas de dual-boot, elles restent utilisables par vos autres OS.

Utiliser un patch :

Le recours à un patch est pratique, toutefois, le patch le plus efficace est payants...soyez prévenus.

Le patch de Xeno86 :

Ce patch altère le fichier vcache.vxd, responsable de la gestion du cache. Rappelez-vous, le pilote Vcache est dynamique. La taille du cache est donc calculée en fonction de la quantité de mémoire physique disponible, ce qui cause des erreurs lorsque trop de mémoire est présente.

Ce correctif limite le montant maximum du cache attribué dynamiquement à un maximum de 384mo. Généralement, cette réduction libére suffisamment de mémoire virtuelle pour permettre à Windows de fonctionner. Ce patch évite ainsi d'avoir à modifier le fichier system.ini manuellement mais ne limite pas la quantité de mémoire utilisée.

S'il fonctionne, c'est donc une solution satisfaisante : vous bénéficiez de l'ensemble de votre RAM physique. Il peut d'ailleurs être utile d'utiliser ce patch même si Windows démarre correctement, car en tout état de cause, une taille de cache trop grande peut nuir aux performances.

L'ennui, c'est que si la quantité de mémoire est trop importante, ou que l'encombrement de la mémoire virtuelle ne provient pas seulement du cache, la modification du Vcache peut se révéler insuffisante. Ce correctif n'est donc pas une solution universelle.

Le patch de R.Loew :

Attention, ce correctif est facturé une dizaine d'euros par son auteur. Il constitue toutefois une des solutions les plus satisfaisantes. En effet, il ne se contente pas de modifier le vcache, mais adapte également le gestionnaire de mémoire virtuelle (vmm.vxd) afin que ce dernier accepte plus d'un gigaoctet de RAM.

S'agissant d'un programme commercial, son fonctionnement est assez obsur et il m'est impossible de vous le décrire en détail. Néanmoins, sachez que grâce à lui, vous pourrez profiter d'1Go, de 2Go ou même de 3Go de RAM, le tout étant pleinement accessible et exploité par Windows. Comme sous XP ou l'ensemble des systèmes d'exploitations 32bits, la seule limite se trouve alors autour de 3,2Go (au-delà, la mémoire physique n'est plus détectée ni utilisée)...

Autant vous dire qu'il est très agréable de faire tourner Windows 9x avec plus de 2Go de RAM... cependant, l'achat d'un logiciel est un choix personnel qui vous appartient. Il ne s'agit pas de publicité : le but est simplement de mentionner une des solutions permettant de mettre un terme aux ennuis que peuvent rencontrer les utilisateurs de Windows 9x lorsqu'il possède une grande quantité de mémoire vive.

Si vous désirez en savoir plus sur ce logiciel, qui s'installe sur les Windows 98, 98 SE et Me français, et éventuellement en essayer la démo, vous pouvez consulter le site de son auteur : R.Loew.

Conclusion :

Voilà, vous devriez être en mesure de trouver une solution à vos difficultés. N'oubliez pas de sauvegarder votre système avant de le modifier et tout devrait bien se passer !