Que se passera-t-il si nous utilisons plus de 4 Go de mémoire dans un système 32 bits ? Le système sera-t-il capable d’utiliser plus de 4 Go ? Dans quelles conditions un système peut-il disposer de plus de 4 Go de mémoire ?


Ces posts décrivant la différence entre la mémoire physique et la mémoire virtuelle sont excellents, mais ils ne'répondent pas tout à fait à la question.

Lorsque la mémoire virtuelle est pleine, le système d'exploitation tue le processus. Aussi simple que cela.


L'épuisement de la mémoire physique, en revanche, est une histoire beaucoup plus compliquée. La plupart des systèmes d'exploitation tenteront de "permuter" des pages de mémoire vers le disque lorsque la mémoire physique est pleine. *Les systèmes NIX disposent généralement d'une partition de disque séparée à utiliser comme espace d'échange, tandis que Windows utilise un gigantesque fichier binaire appelé "fichier de pages". Lorsque le système d'exploitation échange, il écrit une ou plusieurs pages de mémoire sur le disque en fonction de la probabilité qu'il pense qu'elles seront utilisées (il s'agit d'un énorme sujet CS en soi : voir Algorithmes de cache sur Wikipedia), puis il donne la ou les pages qui se libèrent au processus demandeur. Si un processus a besoin de données sur une page swappée et que la mémoire physique est encore épuisée, le système d'exploitation doit trouver une autre page à swapper pour pouvoir swapper à nouveau la page désirée.
(S'il n'y a pas d'espace swap, soit parce qu'il'est également rempli, soit parce qu'il n'a jamais existé au départ, le système d'exploitation tue simplement le processus.)


Le problème avec le swapping est que les E/S sur disque sont extrêmement lentes par rapport aux E/S en mémoire, et donc tout processus gourmand en mémoire qui dépasse la mémoire va généralement ralentir à vue d'œil. Dans la plupart des cas, le temps d'exécution prévu de tels processus va exploser, et il't plus intéressant de le tuer, de le réécrire pour le rendre plus efficace en mémoire, et de le redémarrer que de le laisser continuer.

Dans l'ère moderne de l'informatique, le swapping est de plus en plus considéré comme une pratique obsolète, car avec les attentes modernes en matière de temps de traitement, même pour les calculs les plus intensifs en CPU et en mémoire, le swapping signifie la mort, et le processus peut tout aussi bien s'être écrasé.
De nos jours'l'utilisateur final (c'est-à-dire. ni un développeur ni un entrepôt de données) devrait faire des efforts épiques pour faire exploser la RAM d'un ordinateur moderne'et même dans ce cas, le coût de la mise à niveau de la RAM n'est'pas terriblement cher.
Et ceux qui se soucient de choses comme l'entreposage de données feront déjà beaucoup d'attention à quelles données sont écrites sur le disque et quand, et ce qui reste en mémoire.

Cela donne lieu à quelque chose que j'ai appelé le Dilemme de l'utilisateur de Linux moderne (puisque la mise en place d'une partition d'échange est souvent une partie explicite des instructions d'installation de Linux) : trop de RAM pour espérer un jour échanger, mais trop d'espace disque pour se préoccuper de l'espace perdu pour l'échange. (Je considérerais définitivement cela comme un "problème du premier monde" :p)

Fun Fact:
Les fans de l'éditeur de texte vi avaient l'habitude de dire qu'un éditeur rival, EMACS, signifiait "Eight Megs And Constantly Swapping". Cela se disait à l'époque où 8 Mo étaient considérés comme une quantité extravagante de mémoire pour un éditeur, et son but était de se moquer de la façon dont il était inutilement gourmand en mémoire.

.