La légende : Vista ne gère que 3 Go
Windows 98 ne gère que 64 Mo de RAM ?
Les légendes des limitations de Windows ont la vie dure. Par exemple, il a longtemps circulé une rumeur selon laquelle Windows 98 ne gère que 64 Mo de RAM. Un problème de Windows ? Non, pas du tout, simplement un problème de gestion de cache : sur les anciens systèmes, la mémoire RAM cachable dépend de ce qu’on appelle le TAG RAM. Et le TAG RAM était petit sur les cartes mères Pentium, ce qui limitait la mémoire cachable à 64 Mo. Au-dessus, la mémoire cache n’était pas utilisée et les performances diminuaient.
La gestion de 4 Go de RAM, une question qui fait mal. En 2008, la mémoire a perdu tellement de valeur que cette quantité, considérée il y a quelques années comme un rêve, est devenue courante. Mais il y a un problème : alors que les processeurs 32 bits devraient parfaitement gérer une telle quantité de mémoire, on voit souvent la phrase « Windows Vista ne gère que 3 Go de RAM ». Est-ce vrai ? Pourquoi cette limitation ? Est-ce que les autres OS sont touchés ? Faut-il passer en 64 bits ? Nous allons essayer, dans ce dossier, de répondre à ces questions, d’un point de vue théorique d’abord, d’un point de vue pratique dans un dossier qui suivra.
Pour rappel, une partie des questions abordées dans ce dossier proviennent de vos questions : l’article a été précédé par une série d’actualités dont une vous demandait votre avis.
- 4 Go : Windows 7, ça se passe comment ? (6)
- 4 Go : nous avons besoin de vous (5)
- 4 Go : Et Linux, ça se passe comment ? (4)
- 4 Go : Mac OS X, 32 ou 64 bits ? (3)
- 4 Go : Windows 64 bits est la solution ? (2)
- 4 Go : et Windows 32 bits ? (1)
La gestion des entrées/sorties
IA-16, IA-32, IA-32e ?
Quand on parle d’architecture IA-16, IA-32 ou IA-32e, on fait référence à l’architecture du processeur (IA signifie Intel Architecture). Chez Intel, les processeurs IA-16 sont les modèles x86 16 bits (8088, 8086, 80186, 80188 et 80286). L’IA-32 (x86 32 bits) a démarré avec le 80386 et est encore utilisée actuellement. L’IA-32e est le nom officiel de l’extension 64 bits chez Intel (Pentium 4, Core 2, etc.). Notons que l’IA-64 existe mais qu’il ne s’agit pas d’une architecture x86, les processeurs IA-64 sont les Itaniums.
Pour répondre à la question, Windows Vista et les autres Windows 32 bits grand public gèrent parfaitement 4 Go de RAM — limite généralement admise des systèmes 32 bits sur x86 — mais seuls 3 Go (et des poussières) sont utilisés. Le problème vient de la gestion des périphériques de l’architecture x86 (et des autres architectures récentes).
MMIO et PMIO
En x86 (que ce soit en IA-16, IA-32 ou IA-32e), la gestion des périphériques s’effectue de deux façons : en PMIO ou en MMIO (selon les cas). En PMIO (Port Mapped I/O), l’accès s’effectue via des instructions spécifiques (IN et OUT en assembleur) qui permettent d’accéder au périphérique. Typiquement, il s’agit de l’accès à un port série, par exemple. Une autre série de périphériques (la carte graphique, par exemple) utilisent par contre ce qu’on appelle du MMIO (memory Mapped I/O). Avec cette technique, l’accès au périphérique se fait à travers une fenêtre dans l’espace d’adressage du processeur, qui permet d’accéder à la mémoire du périphérique (comme par exemple la mémoire vidéo). Expliquons.
Une sorte de tunnel
Prenons les bases : en MMIO, une partie de l’espace d’adressage du processeur est utilisée pour accéder à un périphérique. L’ensemble est configuré pour créer une sorte de tunnel : les données écrites dans les zones réservées sont en faites écrites dans la mémoire du périphérique. En conséquence, la partie de l’espace d’adressage utilisée pour les périphériques n’est pas utilisable pour un accès à de la mémoire. Avec cette technologie, on réutilise le bus mémoire pour l’accès aux périphériques, ce qui permet de simplifier le design du microprocesseur.
Chez Intel
Intel utilise la technologie MMIO depuis le début du x86 : sur un 8086, qui disposait d’un bus mémoire sur 20 bits (1 Mo de mémoire vive), on ne disposait par exemple que de 640 ko utilisables — d’où la phrase attribuée à Bill Gates, probablement apocryphe, « 640K ought to be enough for anybody » —. Sur un 80286, doté d’un bus mémoire sur 24 bits (16 Mo), le problème était moins visible et sur un processeur 32 bits (dès le 80386 chez Intel) qui dispose d’un espace d’adressage sur 32 bits (4 Go adressables), le problème paraissait à l’époque insignifiant. À la sortie de ce processeur, 4 Mo de RAM étant considéré comme un luxe, Intel n’a pas modifié sa gestion de la mémoire et c’est logique : le MMIO a le gros avantage d’être économe en transistors.
La solution
Il faut bien comprendre une chose : cet espace d’adressage utilisé par les périphériques est généralement invisible, de par son mode de fonctionnement : les périphériques sont placés dans le haut de l’espace d’adressage et la mémoire dans le bas. Une métaphore permettant d’expliquer ce concept est celle de l’échelle : imaginons que l’espace d’adressage est une grande échelle, composée de 4 milliards de barreaux. Quand vous installez une barrette de mémoire (1 Go, par exemple), elle va commencer à monter par le bas, en utilisant tous les barreaux. On a donc 1 Go de RAM utilisé dans le bas de la mémoire. La partie dédiée aux périphériques, elle, commence par le haut de l’échelle. Si on a besoin de 1 Go de RAM pour les périphériques, c’est le haut de l’espace d’adressage qui sera utilisé. On aura donc (si on part du bas de l’échelle) : 1 Go utilisé pour la mémoire, 2 Go de l’espace d’adressage qui ne sont pas utilisés puis 1 Go de l’espace d’adressage réservé pour les périphériques. Si on passe à 3 Go de mémoire, aucun problème : on a 3 Go de mémoire puis 1 Go pour les périphériques. Mais si on veut passer à 4 Go, ça coince : il n’y a plus assez d’espace d’adressage disponible. Et comme l’accès aux périphériques est plus important que la mémoire vive, cette dernière sera tronquée. Dans les faits, le processeur gère bien 4 Go d’espace d’adressage, mais cet espace est à partager entre la mémoire vive et l’adressage des périphériques.
La mémoire utilisée par les périphériques
Avant de nous intéresser aux astuces qui permettent de récupérer une partie de la mémoire (et pourquoi ce n’est pas généralisé), attardons-nous un moment sur les périphériques qui ont besoin de cette mémoire.
La carte graphique, le plus gros problème
Le périphérique qui prend (généralement) le plus de mémoire est la carte graphique. Contrairement à une idée reçue, toute la mémoire vidéo n’est pas mappée en mémoire vive mais uniquement une partie : si votre carte graphique à 4 Go de RAM, elle ne prendra pas 4 Go de mémoire vive (ce qui serait quelque peu problématique). En fait, la quantité dépend de la mémoire vidéo, mais les cartes ne peuvent pas utiliser plus de 512 Mo. Typiquement, les cartes graphiques équipées de 512 Mo de mémoire (une capacité classique actuellement) nécessitent un espace d’adressage de 256 Mo en mémoire vive. Notons que les cartes AMD nécessitent un peu plus de mémoire que les cartes NVIDIA (à quantité de mémoire vidéo identique) : le contrôleur HD audio présent dans les Radeon de la série 3000 et 4000 nécessite un peu de mémoire pour son fonctionnement. La quantité est par contre négligeable : 64 ko.
En théorie
Prenons la théorie : sur une carte mère à base de chipset i965, Intel indique les valeurs suivantes (au maximum). 1 Mo pour la mise en cache du BIOS, 19 Mo pour la configuration de l’APIC, 40 Mo pour la gestion du DMI (lien interbridge), 17 Mo pour l’espace de configuration du FSB, 256 Mo pour la configuration des cartes PCI-Express, 512 Mo pour la carte graphique et la gestion du northbridge et une quantité qui peut varier dynamiquement pour les cartes PCI. Au total, la quantité de mémoire réservée peut donc atteindre 845 Mo. Avec un maximum de 4 096 Mo de mémoire physique (et adressable), on dispose donc au minimum de 3 251 Mo (3,17 Go) de mémoire utilisable en pratique. Attention, si la carte graphique utilise de la mémoire partagée (TurboCache, HyperMemory compris) ou si une carte PCI nécessite un espace d’adressage supplémentaire, la capacité peut encore diminuer.
En pratique
Pour vérifier les valeurs, nous avons pris une de nos machines de test :chipset P45, Core 2 Duo, Radeon HD 4870. On retrouve donc : 256 Mo + 128 ko + 64 ko (audio) pour la carte graphique, 37 ko pour les contrôleurs externes (RAID, Ethernet, FireWire), 1 Mo et 34,25 ko pour les composants liés à l’ICH10 et enfin 262 Mo et 473 ko pour la gestion de la carte mère (compteurs, BIOS, gestions des I/O, etc.). Soit au total 519 Mo et 736,25 ko utilisés par les périphériques dans l’espace d’adressage de la mémoire vive. On est donc loin du maximum possible.
Le PAE : plus de 4 Go de RAM en 32 bits
Bien évidemment, même si en 1985 (sortie du 80386), la limite de 4 Go paraissait lointaine, il n’a fallu que quelques années pour y arriver dans le monde des serveurs et des supercalculateurs. En 1995, Intel sort le Pentium Pro, premier processeur commercialisé à supporter une nouvelle fonction, le PAE — Physical Address Extension —, qui permet d’utiliser plus de 4 Go de RAM sur un processeur 32 bits. Notons que les Pentium ES (les versions de développement) étaient aussi compatibles PAE.
Bus mémoire sur 36 bits
Le PAE propose en fait un bus mémoire sur 36 bits au lieu des 32 bits habituels. Avec cette valeur, et pour peu que l’OS soit compatible (nous verrons ce qu’il en est dans la suite), il est possible de prendre en charge 64 Go de RAM. Pour éviter de devoir réécrire les programmes, le fonctionnement du PAE est assez particulier : il s’agit en fait d’un système à base de pages (comme du temps du 8086 et de son bus de 20 bits). En pratique, les programmes ne peuvent toujours utiliser que 4 Go de RAM (adresse sur 32 bits), mais le système s’arrange pour que l’ensemble reste transparent : l’application A pourra donc utiliser 4 Go de RAM et l’application B aussi, et l’OS va gérer le tout.
Le problème du PAE
Le principal problème du PAE vient du fait que si les programmes ne doivent pas être réécrits (ils se considèrent toujours sur un processeur avec un bus mémoire sur 32 bits), les pilotes (et l’OS) doivent être mis à jour. Le cas typique est celui de Windows NT (2000, XP, Vista et Seven) : même si l’OS supporte le PAE, les pilotes ne sont pas nécessairement compatibles. Et si vous utilisez un pilote classique sur un OS en mode PAE, ça peut poser des problèmes. Nous l’avons vu dans les pages précédentes, le MMIO utilisé dans les processeurs place une partie de l’espace d’adressage des périphériques dans l’espace d’adressage de la mémoire et cette zone est placée dans la partie haute de la mémoire. En mode PAE, elle est donc placée dans le haut des 64 Go au lieu d’être dans le haut des 4 Go. C’est là que le bât blesse : si un pilote n’est pas adapté au mode PAE, il va aller chercher ses données au mauvais endroit. On se retrouve donc au mieux avec un pilote qui ne sait pas accéder à son périphérique (si la machine a moins de 4 Go) et au pire avec un pilote qui va écrire dans un espace peut-être utilisé par une application. Notons que comme les cartes graphiques sont les périphériques qui utilisent le plus la zone MMIO, ce sont les pilotes de ce type qui posent le plus de problèmes
Qui supporte le PAE ?
Officiellement, chez Intel, seuls les processeurs « serveur » et les modèles 64 bits supportent le PAE. En pratique, tous les processeurs Intel depuis le Pentium Pro sont compatibles PAE à l’exception, notable, des Pentium-M en bus 400 MHz (les Banias et les Dothan de la première génération). Chez AMD, tous les processeurs sont compatibles depuis les K7 (Athlon) alors que le C7 est compatible chez Via mais pas le C3. Attention tout de même à un point : AMD se limite à 34 bits sur les K7, contre 36 bits chez Intel.
Le 64 bits, une solution
Avril 2003, AMD annonce l’Opteron, premier processeur 64 bits en x86. Sauf que comme Intel n’a pas aimé tout de suite le 64 bits (normal, c’est AMD) et que Microsoft a préféré attendre un CPU Intel compatible, le premier Windows 64 bits en x86 date d’avril 2005.
64 Go à 1 To de mémoire
Sans entrer dans les détails du 64 bits, les processeurs compatibles ont un gros avantage : un bus d’adresse sur 36 ou 40 bits (et non pas 64 bits). Concrètement, il est possible de gérer au moins 64 Go de mémoire en 64 bits et parfois 1 To (selon le processeur). Attention, Windows limite dans la pratique à 128 Go. Notons que tous les processeurs 64 bits gèrent aussi le mode PAE.
Les processeurs 64 bits
Chez AMD, le 64 bits est disponible sur les K8 et les K10, c’est-à-dire les Opterons, les Athlon 64 et les Phenom. Les versions d’entrée de gamme (Sempron) sont généralement compatibles (s’ils sont basés sur un core K8) même si des modèles uniquement 32 bits existent. Chez Intel, tous les modèles « desktop » actuels sont compatibles actuellement (Core 2 Duo, Core 2 Quad, Core i7 et Celeron). Pour les modèles plus anciens, c’est différent : une partie des Pentium 4 Prescott sont compatibles, ainsi que les Pentium D. Pour les Celerons, la majorité des modèles sortis après le Pentium 4 Prescott sont compatibles. Dans les portables, c’est différent : les Pentium-M et les Core Duo ne sont pas 64 bits, seuls les Core 2 Duo (et Core 2 Quad) le sont. Enfin, les Atom 230 et 330 (desktop) sont compatibles alors que les N270 et les Z5xx ne sont que 32 bits.
Les OS 64 bits, c’est courant
Au niveau des systèmes d’exploitation, le 64 bits existe, mais n’est pas majoritaire. Les adeptes du libre sont les mieux équipés : Linux est compatible 64 bits depuis longtemps et la majorité des distributions existent en 64 bits. Pour ceux qui préfèrent les Mac, point de salut : même si Tiger et Leopard exécutent du code 64 bits (sous certaines conditions), l’OS en lui-même reste en 32 bits, il faudra attendre Snow Leopard pour un système 64 bits. Reste le cas de Windows : les versions serveur existent en version 64 bits depuis un moment, mais le grand public n’a réellement accès au 64 bits que depuis Vista. Il existe bien un Windows XP 64 bits (basés sur le noyau de Windows 2003, NT 5.2) mais il est réservé à un usage professionnel. Attention, même si Vista existe en version 64 bits, seules les versions Professionnelles et Ultimate prennent en charge 128 Go de RAM. La version Home Basic se limite à 8 Go alors que la Home Premium (la version la plus courante) prend en charge 16 Go.
Windows et la gestion du PAE
Comme nous l’avons vu, le PAE est une technologie assez courante. Disponible sur une grande partie des processeurs, elle devrait permettre de gérer plus de 4 Go de RAM sur les OS 32 bits, mais dans la pratique il n’en est rien. Intéressons-nous aux différents Windows.
Premier cas, pas de gestion
Prenons un cas simple, Windows 95 et ses successeurs (comme Windows Me). Avec ces systèmes, le PAE n’est pas pris en charge et il est donc impossible de dépasser 4 Go de RAM. En pratique, on se limite même à un peu moins : l’espace requis par la MMIO est toujours d’actualité.
Second cas : le PAE est pris en charge et utilisé
Le second cas est celui de Windows 2000 et de Windows XP avant le Service Pack 2 : le PAE est pris en charge et peut être utilisé. Avec ces deux systèmes, la mémoire officiellement prise en charge est de 4 Go (sur les versions à usage personnel) et les 4 Go de RAM sont entièrement disponibles. Microsoft utilise le PAE pour déplacer l’espace requis par la MMIO dans une zone supérieure (à la limite haute du processeur, 16 ou 64 Go). Attention tout de même à un point : le PAE doit être activé manuellement dans le boot.ini (en plaçant un /PAE derrière le nom du système à démarrer) et un processeur compatible doit être utilisé. Avec ces deux systèmes, on a donc 4 Go de RAM physique et un espace d’adressage plus grand que ces 4 Go.
Troisième cas : le PAE est pris en charge et n’est pas utilisé
Sous Windows XP Service Pack 2 (et 3) et Vista, Microsoft active d’office le PAE mais ne l’utilise pas. Pourquoi activer le PAE ? Parce que le NX bit, une technologie introduite avec le SP2, nécessite l’activation du PAE pour fonctionner (le NX bit utilise le bit 63 de la table de page, qui n’existe qu’en mode PAE et pas en 32 bits classique). Pourquoi ne pas l’utiliser ? Parce que Microsoft s’est rendu compte que certains pilotes ne vérifiaient pas si le PAE était activé et considéraient qu’il ne l’était pas. Dans ce cas précis, le pilote allait écrire dans une zone où il pensait trouver l’espace d’adressage d’un périphérique, mais où se trouvaient en fait des données, ce qui provoque évidemment des problèmes. Les pilotes de cartes graphiques sont les plus touchés par ce problème, en partie parce qu’ils utilisent énormément les zones gérées en MMIO. En pratique, sous Windows XP SP2, SP3 et Windows Vista, on dispose donc de 4 Go d’espace d’adressage et donc une mémoire vive limitée.
Le cas Vista
Sous Windows XP, la mémoire vive disponible dépend des périphériques : si vous en avez peu et une carte graphique simple, la mémoire disponible sera plus élevée que si vous avez six cartes d’extensions et deux cartes graphiques. Sous Windows Vista, avant le SP1, le comportement est différent : Microsoft réserve automatiquement la mémoire et limite la mémoire vive disponible à 3,12 Go. Sous Windows Vista SP1, Microsoft a encore modifié le comportement : le fonctionnement reste le même, mais le système affiche bien 4 Go de RAM (au lieu de 3,12 Go auparavant). Un bon moyen d’éviter les récriminations des clients qui n’ont pas leurs 4 Go de RAM…
En 64 bits
Le denier cas est le plus simple : le 64 bits. En 64 bits, la limitation à 4 Go n’est plus de la partie, même s’il en existe d’autres. La première vient du CPU : le bus d’adresse varie de 36 à 40 bits sur les CPU 64 bits (avec un maximum théorique de 52 bits), soit entre 64 Go et 1 To. Pour les systèmes, Windows se limite en théorie à 128 Go mais en pratique, la quantité maximale de mémoire dépend de la version du système : un Vista Ultimate ou Business et un XP 64 bits se limite bien à 128 Go alors qu’un Vista Home Premium ne peut pas dépasser 16 Go et un Vista Home Basic s’arrête à 8 Go. En pratique, Microsoft place la limite maximale à la limite réellement utilisable sur une machine : Windows peut en théorie utiliser 1 To mais aucune machine ne dispose que de cette quantité de mémoire et la firme n’a pu tester que sur des machines avec 128 Go.
Quelle mémoire pour les softs ?
Un autre point à vérifier est la mémoire physique réellement disponible pour une application. Contrairement à ce que l’on pourrait croire au premier abord, un PC doté de 4 Go de RAM ne permet pas nécessairement à une application de disposer de 4 Go de mémoire pour son usage.
Le cas Windows
Windows (par défaut) divise la mémoire utilisable par un programme en deux zones : une de 2 Go pour le programme et une autre de 2 Go pour le noyau de Windows. Il est possible, depuis Windows NT 4.0, de changer l’attribution et de passer à 3 Go pour les applications et 1 Go pour le système. Attention, avec cette option (le /3GB dans le boot.ini), la mémoire vive est limitée à 16 Go, même en mode PAE (c’est essentiellement un problème sur les gros serveurs encore sous un Windows 32 bits). Notons que seules certaines applications sont compatibles (elles sont dites « LargeAddresseAware ») car elles nécessitent d’avoir été programmée de façon spécifique, avec une gestion des pointeurs sur 32 bits et que le programmeur doit avoir explicitement compilé son application avec le support de la technologie. Point à prendre le compte, la gestion sous Windows en 64 bits est différente : la mémoire reste divisée en deux parties, mais nettement plus grandes : 8 To pour le système et 8 To pour les applications. Petite différence entre les versions 32 et 64 bits, les applications LAA disposent de 4 Go sous Windows 64 bits, ce dernier ne se réservant pas une partie de l’adressage 32 bits (étant donné qu’il travaille en 64 bits).
On se retrouve donc avec plusieurs cas : sous Windows 32 bits, une application peut disposer de 2 Go (cas classique) ou de 3 Go (avec l’option /3GB). Sous Windows 64 bits, les applications ont 2 Go (32 bits), 4 Go (applications 32 bits LAA) ou 8 To (applications 64 bits).
Les applications LargeAddressAware
Un exemple classique d’applications où l’option intéressante est Suprême Commander : ce jeu est compilé (dans ses dernières versions) pour utiliser le LargeAddressAware et un joueur sous Windows 64 bits dispose donc de plus de mémoire pour le jeu qu’un joueur resté sous Windows 32 bits. Dans la pratique, il est donc possible de tirer parti de cette différence : dans une partie très longue, le jeu à une certaine tendance à planter s’il n’a plus de mémoire disponible et un joueur sous Windows 64 bits a plus de mémoire, donc va planter plus tard qu’un joueur sous Windows 32 bits et donc gagner. D’autres jeux, comme Flight Simulator X, sont aussi tout à fait à même de profiter du gain en mémoire disponible.
Transformer un programme
Point intéressant, il est possible de transformer un programme classique en une version capable de prendre en charge la mémoire supplémentaire. En fait, pour peu qu’un programme ait été programmé avec des addresses sur 32 bits (ce qui n’est pas nécessairement le cas), un simple flag normalement ajouté à la compilation permet d’utiliser la mémoire supplémentaire. Pour les programmes qui n’ont pas été compilé avec cette option, il existe LaaTido. Ce programme permet de modifier l’exécutable d’un programme pour activer le LargeAddressAware. Attention, certains programmes n’acceptent pas la modification et ce logiciel est donc à utiliser à vos risques et périls.
Concrètement : Windows
Concrètement, comment est-ce que ça se passe sous Windows ?
Un Windows 32 bits ancien
Sans parler des anciens systèmes comme NT 4.0 et les Windows 9x, on retrouve différents cas, selon la version de Windows et selon le Service Pack installé. Les utilisateurs de Windows 2000 ont deux possibilités : soit ne pas activer le PAE et donc se limiter à un adressage 32 bits, soit activer le PAE (avec des risques de problèmes de pilotes) et son adressage 36 bits. Dans le premier cas, on dispose de 3 à 3,5 Go de RAM utilisables (selon la machine), dans le second on passe à 4 Go. Sous Windows XP sans Service Pack ou avec le Service Pack 1, le fonctionnement est identique, on peut donc disposer de 4 Go de RAM entièrement utilisables.
Un Windows 32 bits récent
Sur les Windows 32 bits récents, le comportement diffère en fonction de l’OS. Sous Windows XP SP2 ou SP3, le système n’utilise pas le PAE, même s’il reste activé, et la mémoire disponible varie en fonction du système. On dispose, selon la machine, de 3 à 3,5 Go de RAM utilisables sur 4 Go. Sous Windows Vista, sans Service Pack, Microsoft limite la mémoire à 3,12 Go : il n’y a pas de variation selon la machine. Enfin, sous Windows Vista Service Pack 1 et sous Seven (en bêta), la limitation est la même, mais Microsoft modifie l’affichage. Concrètement, on ne dispose que de 3,12 Go de RAM mais le système affiche 4 Go pour rassurer les utilisateurs.
Sans entrer dans les détails, rappelons que les OS serveur de chez Microsoft — malgré une architecture 32 bits (dans certains cas) — gèrent parfaitement plus de 4 Go de RAM (avec le PAE, comme expliqué plus avant). La limitation à 8, 16 ou 32 Go dépend essentiellement de la gamme du produit et est donc totalement marketing.
Un Windows en 64 bits
Avec les Windows 64 bits, la limitation à 4 Go n’a pas lieu d’être, mais Microsoft segmente tout de même sa gamme. Au niveau de la mémoire, XP 64 bits gère 128 Go, tout comme Vista Ultimate et Vista Business. La version Home Premium se limite à 16 Go alors que Home Basic ne peut pas utiliser plus de 8 Go. Les limitation exactes de Windows Sevent ne sont pas encore connues mais elles devraient être a priori identiques.
Concrètement : Linux et Mac OS X
Et si on travaille avec un autre système que Windows ? Linux et Mac OS X ont chacun une gestion différente (désolé pour les amateurs de Solaris, OpenBSD et autres Unix à diffusion faible).
Mac OS X, pas encore de 64 bits
Pour Mac OS X, il y a quelques différences en fonction de la plateforme, PowerPC ou Intel. Globalement, la limite est à 4 Go physiques avec les PowerPC 32 bits (G3 et G4) mais 2 Go en pratique. Pour les G5 (64 bits), la limite est 256 To en théorie, la limite pratique dépend de la machine (un Mac Pro accepte plus de mémoire qu’un iMac). Les premiers Mac en Intel, équipés d’un processeur Core Duo, se limitent à 4 Go physiquement et 3 Go en pratique (les processeurs sont 32 bits et le chipset limite malgré le PAE) et les Mac à base de Core 2 Duo (et dérivés) limitent à 64 Go en théorie (via le PAE) mais la valeur dépend de la machine. Notons que Mac OS X Leopard (10.5) reste un OS 32 bits et que les applications sont donc limitées à 4 Go de RAM, il faut attendre Snow Leopard (10.6) pour disposer d’un OS 64 bits.
- Plus d’informations dans l’actualité sur Mac OS X
Linux, ça dépend des distributions
Sous Linux, le comportement varie en fonction des distributions et des pilotes installés (généralement ceux de la carte graphique). Globalement, trois cas se présente : un Linux 32 bits sans PAE, qui se limite donc à entre 3 et 3,5 Go de RAM, un Linux 32 bits compilé avec l’option HIGHMEM64G, qui permet d’utiliser le PAE (mais qui pose parfois des problèmes avec les pilotes de cartes graphiques) et un Linux 64 bits. Dans les faits, pour peu que vous ayez un processeur 64 bits, c’est un noyau en 64 bits qui est le plus adapté (même si certains programmes manquent à l’appel).
- Plus d’informations dans l’actualité sur Linux
Conclusion
Comme vous avez pu le voir, la gestion de 4 Go de RAM et les problèmes du 32 bits ne sont pas simples à appréhender mais il y a une explication. Il faut bien comprendre que la façon de gérer la mémoire date en grande partie du 80386, un processeur qui date d’il y a plus de 20 ans, et que les ingénieurs ne pensaient pas que les limites du 32 bits seraient un jour un problème.
Dans la pratique, la période dans laquelle où nous nous trouvons pose doublement problème : les OS et les processeurs 64 bits ne sont pas majoritaires et le prix de la mémoire fait qu’il est tout à fait possible de s’équiper de 4 Go de mémoire pour une somme modique. La solution de Microsoft dans les dernières versions de Windows — qui consiste à afficher 4 Go de mémoire même si seuls 3,12 Go sont disponibles — a l’avantage de rassurer l’utilisateur, même si nous aurions préféré que la société mette tout simplement en avant les versions 64 bits de ses OS.