web-dev-qa-db-fra.com

Quelle est la différence entre le "swap" du système d'exploitation et la "page"?

Quelle est la différence entre ces 2 termes dans le système d'exploitation: échange et page?

32
user188276

Malgré l'échange historique de ces deux termes, ils indiquent des choses différentes. Ce sont deux méthodes pour gérer le déplacement des données en mémoire vers un autre périphérique de stockage, appelé un magasin de sauvegarde (souvent un disque dur), mais elles utilisent différentes méthodes pour le faire.

L'échange implique le déplacement de l'ensemble des données de collecte d'un processus en mémoire vers une plage d'espace sur le magasin de sauvegarde, souvent vers un fichier d'échange ou une partition d'échange. Le processus passe de la mise en mémoire à l'échange complet; Il n'y a pas de solution intermédiaire. De toute évidence, le processus devra être entièrement inactif pour que l'échange soit valable. L'avantage de cela est qu'il est relativement simple à saisir et que la mémoire pour un programme est toujours allouée de manière contiguë, l'inconvénient est que les performances sur une machine peuvent devenir absolument épouvantables lorsque le système se retrouve dans un état où les choses changent constamment. L'algorithme implique également l'échange et la reprise répétés de données qui ne seront pas utilisées dans un avenir prévisible.

La pagination tente de résoudre ces problèmes en prenant de la mémoire physique et en la découpant en éléments appelés "trames" d'une certaine taille fixe. Il prend également l'espace mémoire de chaque processus en cours d'exécution et le découpe en pages (qui sont de la même taille que les cadres); c'est ce qu'on appelle l'espace d'adressage physique, en raison de la nécessité d'utiliser des adresses physiques pour accéder à chaque bloc de mémoire.

Chaque programme est présenté dans un environnement par le système d'exploitation et pris en charge par du matériel moderne, ce qui fait que l'empreinte mémoire des programmes ressemble à un seul bloc contigu d'une très grande quantité de mémoire; c'est ce qu'on appelle un espace d'adressage logique.

Cependant, chaque page de ce bloc contigu peut être en mémoire ou se trouver dans le magasin de sauvegarde. Le système d'exploitation détermine où se trouve chaque page en consultant ce que l'on appelle un "tableau de pages". S'il trouve que la page demandée par le programme est en mémoire quelque part, il ira simplement sur cette page de mémoire et récupérera les données demandées.

S'il trouve que la page n'est pas en mémoire; cela provoque un "défaut de page". Le système d'exploitation suspendra le processus pendant qu'il charge la page demandée dans le magasin de sauvegarde et peut à son tour déplacer une autre page de la mémoire vers le magasin de sauvegarde pour faire de la place, en fonction d'un algorithme de remplacement. Le magasin de sauvegarde peut être appelé un fichier d'échange, ou peut encore être appelé un fichier d'échange ou une partition d'échange, ce qui entraîne une confusion quant au système utilisé. Qu'il s'agisse d'une partition distincte ou simplement d'un fichier, cela dépend du système d'exploitation.

Certaines parties de la mémoire ne sont pas susceptibles d'être paginées. L'un d'eux est le code de pagination lui-même et les parties du noyau qui gèrent des choses comme les défauts de page. Certains systèmes d'exploitation, comme MacOS, appellent cette mémoire "câblée".

Le matériel moderne a plusieurs appareils qui permettent à un système d'exploitation de prendre en charge la pagination de manière beaucoup plus efficace. Le plus courant d'entre eux est un tampon de traduction de traduction ou TLB. Cela stocke une sorte de cache de table de pages matérielles, de sorte que chaque fois qu'un programme doit faire une traduction d'adresse logique en adresse physique, il n'a pas besoin d'aller demander à chaque fois au système d'exploitation.

Les systèmes d'exploitation modernes tirent également parti de la pagination en chargeant paresseusement des parties des processus qu'ils exécutent. Par exemple, si vous démarrez Microsoft Word, au lieu de charger l'intégralité du programme en mémoire, le système d'exploitation charge uniquement les parties du programme dont il a besoin en mémoire et récupère les autres parties du programme uniquement lorsqu'il en a besoin. Cela a également des compromis entre l'empreinte mémoire, la vitesse de démarrage et la fréquence à laquelle des retards se produisent dans le programme lorsque de nouvelles pièces doivent être chargées.

Quoi qu'il en soit, peut-être plus que ce que vous recherchez, mais j'espère intéressant.

63
Ed Carrel

L'échange et la pagination sont des concepts orthogonaux. Avec la pagination, la mémoire (physique) est divisée en petits blocs appelés "trames", et la mémoire (logique) de chaque programme est divisée en blocs appelés "pages". Les pages et les cadres ont la même taille; chaque page est ensuite mappée sur un cadre. Ce mappage est effectué via des tables de pages. La pagination résout les problèmes de fragmentation qui étaient présents avec les précédents schémas de gestion de la mémoire.

Avec l'échange, les parties de la mémoire qui ne sont pas utilisées sont écrites sur le disque; cela permet d'exécuter plusieurs programmes dont la consommation totale de mémoire est supérieure à la quantité de mémoire physique. Lorsqu'un programme demande une partie de la mémoire qui a été écrite sur le disque, cette partie doit être chargée en mémoire. Pour lui faire de la place, une autre partie doit être écrite sur le disque (en fait, les deux parties changent de place - d'où le nom). Cette "extension" de la mémoire physique est généralement appelée "mémoire virtuelle".

Les systèmes modernes utilisent à la fois la pagination et l'échange, et les pages sont ce qui est échangé dans et hors de la mémoire.

22
oggy

Swap sous linux est une partition utilisée pour la mémoire virtuelle. Il contient des pages qui sont des blocs de mémoire qui peuvent être échangés dans et hors de la mémoire réelle.

2
Matt Phillips

Juste des termes différents pour à peu près la même chose. Ils font tous deux référence à une zone de mémoire virtuelle qui est (généralement) stockée sur le disque dur.

* nix, et al. appeler "swap" les appels Windows est un fichier d'échange

Sous Linux, etc., l'espace d'échange est généralement une partition distincte. Sur Windows, c'est généralement un fichier stocké sur le système de fichiers du système d'exploitation, quelque part.

1
Josh Wright

Une page est un bloc de mémoire géré par le système d'exploitation. Sous Linux, vous pouvez trouver l'allocation du noyau pour votre version de système d'exploitation en entrant

$ getconf PAGESIZE 4096

4Ko est une allocation assez courante.

Alors qu'une page fait référence à une attribution de taille, le swap fait référence à "la déplacer". Si vous voulez obtenir les détails, essayez de regarder Tout sur l'espace de swap Linux .

1
Don Wakefield

Voir: Recherche et échange

La question de l'échange et de la pagination est souvent mal comprise. L'échange et la pagination sont deux choses totalement différentes.

L'échange a été la première technologie utilisée dans Unix System V, car la mémoire physique se remplit de processus, il y a un problème. Que se passe-t-il lorsque le système manque complètement de RAM? Ça "s'arrête"!

La conservation et la gestion correcte de RAM est très importante car le CPU ne peut fonctionner qu'avec des données en RAM, après avoir été chargé depuis le disque dur par le noyau. Que se passe-t-il lorsque le numéro de montage et la taille des processus dépasse la mémoire physique? Pour tenir compte de la situation, et parce qu'un seul processus peut jamais s'exécuter à la fois (sur un système UniProcessor), seul ce processus doit vraiment en RAM. Cependant, l'organisation serait extrêmement gourmande en ressources, car plusieurs processus en cours d'exécution sont planifiés pour s'exécuter très souvent sur le processeur (voir la section intitulée "Planificateur")

Pour résoudre ces problèmes, le noyau annonce une utilisation abstraite de la mémoire aux applications en leur annonçant un espace d'adressage virtuel qui dépasse de loin la mémoire physique. Une application peut simplement demander plus de mémoire et le noyau peut l’accorder.

Un seul processus peut avoir alloué 100 Mo de mémoire même s'il ne peut y avoir que 64 Mo de RAM dans le système. Le processus n'aura pas besoin d'accéder à l'ensemble des 100 Mo en même temps, c'est là que la mémoire virtuelle entre en jeu. [...]

1
Nick Dandoulakis