GNU/Linux >> Tutoriels Linux >  >> Linux

La fonction de page à disque dont parle Linus dans son autobiographie est-elle essentiellement le concept d'échange que nous utilisons aujourd'hui ?

Oui, c'est effectivement un échange. Citant les notes de version pour 0.12 :

Mémoire virtuelle.

En plus du programme "mkfs", il existe maintenant un programme "mkswap" sur le disque racine. La syntaxe est identique :"mkswap -c /dev/hdX nnn", et encore :cela écrit sur la partition, alors soyez prudent. L'échange peut alors être activé en changeant le mot à l'offset 506 dans l'image de démarrage pour le périphérique souhaité. Utilisez le même programme que pour définir le système de fichiers racine (mais changez le décalage 508 en 506 bien sûr).

REMARQUE! Cela a été testé par Robert Blum, qui a une machine 2M, et cela vous permet d'exécuter gcc sans beaucoup de mémoire. CEPENDANT, j'ai dû arrêter de l'utiliser, car mon espace disque a été mangé par la beta-gcc-2.0, donc j'aimerais entendre qu'il fonctionne toujours :j'ai été totalement incapable de créer une partition aswap pour des tests même rudimentaires depuis environ Christmastime.Ainsi, les nouvelles modifications auraient pu se retourner contre la machine virtuelle, mais j'en doute.

Dans la version 0.12, la pagination est utilisée pour un certain nombre de fonctionnalités, pas seulement pour basculer vers un appareil :chargement à la demande (chargement uniquement des pages à partir de fichiers binaires au fur et à mesure de leur utilisation), partage (partage de pages communes entre les processus).


Oui, c'est exactement le concept connu sous le nom de pagination ou d'échange. (Il y a longtemps, ces termes avaient des significations légèrement différentes, mais au 21e siècle, ils sont synonymes, sauf peut-être dans le contexte de certains systèmes d'exploitation non Unix.)

Pour être clair, l'échange n'était pas une fonctionnalité innovante :la plupart des systèmes Unix « sérieux » l'avaient, et la fonctionnalité est plus ancienne qu'Unix. Ce que l'échange a fait pour Linux, c'est de le transformer en un Unix "sérieux", alors que MINIX était destiné à des fins éducatives.

L'échange aujourd'hui est toujours le même concept. L'heuristique pour décider quelles pages enregistrer et quand les enregistrer est devenue beaucoup plus complexe, mais le principe de base demeure.


L'échange est un concept antérieur à la mémoire virtuelle et même à la protection de la mémoire :cela signifie simplement mettre un processus sur disque pour faire de la place pour un autre. L'Unix d'origine avait deux bizarreries à cet égard :les programmes de "texte partagé" qui ne gardaient le code du programme qu'une seule fois en mémoire et n'échangeaient que la section de données. Et il avait l'appel système "fork" qui échangeait un processus sur le disque sans remplacer l'image mémoire et en gardant à la place une copie (l'enfant) en cours d'exécution.

La page sur disque, par opposition à l'échange, permet l'exécution de processus qui ne correspondent pas à la mémoire physique. Il nécessite toute la mémoire protégeable, le mappage de la mémoire des adresses virtuelles aux adresses physiques et un mécanisme de défaut de page redémarrable qui permettra de changer le mappage d'une adresse virtuelle non mappée à une adresse physique raisonnablement sélectionnable et de reprendre la commande qui a dû être abandonnée car du mappage manquant.

UNIX était capable de fonctionner sur 68000 processeurs (y compris l'échange) sans MMU, et il faisait bon usage d'un MMU s'il était disponible pour la protection de la mémoire, mais il a fallu que le 68010 ait réellement les mécanismes permettant de reprendre un programme après un défaut de page. /P>

Le 80386 était à bien des égards un design minable et dépassé. Mais sa MMU intégrée et sa capacité à corriger correctement les défauts de page l'ont rendu immédiatement plus viable pour les systèmes de type UNIX qui n'étaient pas simplement capables d'échanger, mais de page à disque.

C'est une sorte d'ironie historique que ce grand sacrifice de silicium (une MMU à part entière et une conception de processeur compatible virtuel ait pris un peu d'espace sur le dé) aux dieux des systèmes modernes a été principalement repris par un amateur, et le " les gros poissons" comme Xenix et OS/2 sont finalement tombés au bord du chemin.

Bien que vous puissiez appeler "rien de paginé et non planifié pour s'exécuter" de la même manière que "permuté", ce n'est pas vraiment une proposition tout ou rien comme l'était le sens original de "permuté".

La différence s'est perdue au cours des décennies qui ont suivi, car la pagination à la demande était tellement plus utile et évoluait mieux que l'échange ordinaire qu'elle l'a remplacée une fois que les fonctionnalités CPU et MMU nécessaires sont devenues monnaie courante, mais le ralentissement et les coups associés à l'un ou l'autre ont fait pour un similaire look and feel.


Linux
  1. Pourquoi utiliser shm_open ?

  2. À quoi sert $# dans Bash

  3. Comment trouver des informations sur la RAM?

  4. Comment utiliser la nouvelle fonctionnalité de données en ligne ext4 ? (stockage des données directement dans l'inode)

  5. Quelle est l'utilité d'avoir une partie noyau dans l'espace de mémoire virtuelle des processus Linux ?

Utiliser le bureau Window Maker sous Linux

Comment utiliser la commande Linux history

Comment utiliser la commande de lecture Bash

Comment utiliser la commande Linux xargs

Qu'est-ce que la fonctionnalité de la communauté ONLYOFFICE et pourquoi devriez-vous l'utiliser ?

Utilisation de la commande grep sous Linux