Les Newsletters Interstices
Image par Recklessstudios de Pixabay, CC0
    Niveau intermédiaire
    Niveau 2 : Intermédiaire

    La mémoire virtuelle, une abstraction féconde

    Architecture & Systèmes
    Histoire du numérique
    La mémoire virtuelle est présente dans la majorité des ordinateurs, que l'ordinateur cible soit fixe ou portable, que le système soit celui d'une tablette, d'un téléphone portable ou d'un objet connecté. La mémoire virtuelle est une nécessité pour tout système d'exploitation moderne et une véritable aubaine pour le programmeur.

    Un brin d’histoire

    Avec les premières machines des années 1950, lorsqu’un programmeur voulait faire exécuter son programme par ce qu’on appelait alors un calculateur digital, le programme devait être chargé en entier dans la mémoire centrale. Cette mémoire était petite (64 Ko par exemple en 1960), trop limitée pour satisfaire les programmeurs et cela induisait de nombreuses contraintes dans l’écriture des programmes. Cela a perduré même lorsque les progrès technologiques ont permis de plus grandes mémoires centrales (4 Mo en 1970), car les programmes devenaient eux aussi de plus en plus grands. Les programmes d’alors étaient séquentiels et exécutés l’un après l’autre.

    Avec les progrès des systèmes d’exploitation comme la multiprogrammation, le temps partagé, l’accès multiple simultané, puis la gestion des réseaux et de l’internet, ce sont désormais plusieurs centaines de programmes qui doivent s’exécuter de manière concomitante. Ces exécutions concomitantes, appelées processus, sont souvent cycliques, déclenchées par des signaux extérieurs. L’ensemble de ces programmes peut occuper plusieurs Gigaoctets (Go) de code. Malgré les progrès technologiques, la mémoire centrale reste toujours trop petite pour contenir simultanément les programmes et les données de tous ces processus.

    Il faut pouvoir partager la mémoire centrale entre les processus concomitants et leur permettre de se dérouler tout en n’étant pas totalement chargés dans cette mémoire ni toujours placés aux mêmes endroits de la mémoire. Pendant ce partage, l’individualité de chaque processus doit être préservée. De plus il faut interdire aux processus d’interférer involontairement les uns avec les autres.

    Afin de pouvoir réaliser ce partage dynamique, les concepteurs de systèmes informatiques ont mené une démarche d’abstraction, schématisée sur la figure 1 ci-dessous. Le programme de chaque processus n’est plus associé directement à la mémoire centrale mais à une abstraction de celle-ci qu’on appelle mémoire virtuelle. À chaque processus est attribuée une mémoire virtuelle. Quant à la mémoire centrale (réelle, physique), elle est utilisée comme auxiliaire physique de l’unité centrale pour exécuter le programme du processus tout en respectant, comme il se doit, le modèle d’architecture de Von Neumann, que nous aborderons ci-après. C’est le système d’exploitation qui s’occupe du passage obligatoire de la mémoire virtuelle à la mémoire physique et du partage de la mémoire centrale entre les processus. Il utilise un dispositif matériel destiné expressément à ce passage.

    Figure 1. Mémoires virtuelles et leurs matérialisations sur disque et mémoire centrale.

    Cette virtualisation est possible depuis 1961, où le mécanisme de pagination fut introduit dans l’architecture matérielle de la machine Atlas, résultat d’un développement conjoint de l’Université de Manchester et des sociétés Ferranti et Plessey. Elle s’est développée avec l’existence de disques non seulement de grande taille, mais aussi rapides, qui peuvent servir de mémoire secondaire pour stocker les mémoires virtuelles de tous les processus.

    La mémoire virtuelle est largement utilisée aujourd’hui. Les programmeurs écrivent leurs programmes pour la mémoire virtuelle comme on le faisait auparavant pour la mémoire physique, avec plus de liberté car la mémoire virtuelle du processus peut être beaucoup plus grande que la mémoire centrale physiquement disponible.

    Le modèle d’architecture de Von Neumann

    Depuis Von Neumann (1945), le calculateur à programme enregistré est organisé physiquement autour de trois parties, représentées sur la figure 2 : l’unité centrale — on parle aussi de processeur ou cœur — pour traiter l’information codée sous forme binaire, la mémoire centrale, adressable et modifiable par l’unité centrale, et l’unité d’entrées-sorties pour les échanges d’informations entre la mémoire et l’extérieur du calculateur stricto sensu. Parmi les nombreux organes périphériques figurent la console, l’imprimante ou le disque qui a un rôle important comme mémoire secondaire pour la mise en œuvre de la mémoire virtuelle. Ce schéma de base, centré sur le couple unité centrale et mémoire centrale, reste d’actualité pour l’exécution des programmes, sous réserve de préciser les rôles respectifs de la mémoire centrale et de la mémoire virtuelle.

    Figure 2. Le modèle d’architecture de Von Neumann.

    Le rôle de la mémoire centrale adressable

    La mémoire centrale d’un ordinateur également appelée mémoire vive contient la représentation binaire des informations utilisées par l’unité centrale : les instructions du programme exprimées en langage machine et le codage de données diverses comme les nombres, les chaînes de caractères, le texte, les images, les sons, etc. Elle est composée de « mots » de taille fixe, le plus souvent de 4 à 8 octets de 8 bits chacun. La représentation d’une information peut être contenue dans un ou plusieurs mots. La mémoire est adressable, c’est-à-dire que pour y écrire ou y lire, l’unité centrale doit donner une adresse. Les mots de mémoire sont numérotés du premier au dernier, chaque mot étant identifié par son numéro d’ordre qui est aussi son adresse. Chaque mot de mémoire a ainsi une adresse unique assurant son accès univoque par l’unité centrale quand elle y lit ou y écrit.

    Le rôle de l’unité centrale

    L’unité centrale de l’ordinateur est un automate cyclique alimenté par des instructions et des données qui sont obligatoirement en mémoire centrale physique. Chaque information en mémoire centrale est accessible à l’unité centrale par son adresse. Schématiquement, pour pouvoir exécuter l’instruction en cours dont il a l’adresse, cet automate lit en mémoire centrale l’instruction et les données qui lui sont associées ; l’exécution de l’instruction produit des résultats à écrire en mémoire et détermine l’adresse de l’instruction suivante à exécuter. Les informations traitées par l’unité centrale sont en mémoire centrale physique parce que l’accès par l’unité centrale à la mémoire centrale est environ 10 000 fois plus rapide que l’accès à la mémoire secondaire.

    Le rôle de la mémoire virtuelle d’un processus

    La mémoire virtuelle intervient comme troisième acteur pour le déroulement d’un processus. La mémoire virtuelle d’un processus a la même structure en mots que la mémoire centrale physique et est adressable. Elle a pour rôle de conserver et de fournir l’information nécessaire au déroulement du processus.

    Ces informations sont celles qui ont été déduites du programme écrit par le programmeur, comme les instructions en langage machine et les données associées, mais aussi les éléments de la bibliothèque de sous-programmes utilisés par le programme. On place aussi dans la mémoire virtuelle certains éléments du système d’exploitation, utilisés de plein gré ou à l’insu du programmeur : les sous-programmes de service ou les appels aux programmes du système d’exploitation, les zones de communication par partage de données ou par messages avec d’autres programmes. Certaines informations peuvent être des adresses dans cette mémoire virtuelle quand le programme effectue des tests, des boucles de programme, des appels et retours de sous-programmes ou utilise des données structurées.

    Pour pouvoir être retrouvées pendant l’exécution du processus, toutes ces informations sont rangées dans la mémoire virtuelle à des adresses distinctes qui sont les numéros d’ordre permettant au programme en langage machine de désigner et de localiser un élément répertorié. Cette représentation binaire, une fois préparée, est propre à un processus et, pour être préservée, est stockée sur un support permanent en mémoire secondaire tel qu’un disque dur.

    La taille de la mémoire virtuelle d’un processus n’est pas contrainte par la mémoire centrale disponible. Ce sont l’architecture et le jeu d’instruction de l’ordinateur qui déterminent la taille maximale de chaque mémoire virtuelle et le nombre maximum d’adresses possibles, ce qu’on appelle l’espace d’adressage de l’ordinateur. Aujourd’hui, beaucoup d’architectures utilisent des adresses de 32 bits, ce qui donne un espace d’adressage de 4 Gigaoctets (soit 232 octets). Il y a aussi de plus en plus d’architectures avec 64 bits (soit 16 Exaoctets = 264 octets). La mémoire virtuelle n’est pas connue directement par l’unité centrale. Les informations constituant la mémoire virtuelle d’un processus et stockées en mémoire secondaire sur disque doivent dès lors être copiées en mémoire centrale pour être utilisables par l’unité centrale. Dans la suite du texte, le terme de mémoire, sans qualification, dénotera la mémoire virtuelle.

    L’espace de travail d’un processus

    Nous abordons maintenant un point important, celui de la navigation du processus dans sa mémoire virtuelle. Pendant le déroulement d’un processus, l’unité centrale ne consulte pas la mémoire virtuelle de façon aléatoire. Elle n’utilise pas toute la mémoire à tout instant et il y a même en mémoire des informations qui ne sont pas utilisées du tout lors de cette exécution. Un processus parcourt la mémoire en naviguant dans les adresses d’une manière particulière qui reflète la localité des références. Cette localité résulte de la manière dont les programmes et les données ont été placés en mémoire.

    • Les programmes étant séquentiels, leurs instructions sont rangées dans des emplacements consécutifs. Les données reliées entre elles (par exemple les données d’un tableau, d’une liste) sont placées dans des endroits proches les uns des autres dans la mémoire. Ainsi, quand un élément est utilisé, son voisin sera très probablement utilisé lui-aussi. On parle alors de localité spatiale.
    • Les programmes comportent des boucles et des appels à dessous-programmes suivis de retour au programme appelant. Un élément accédé à un instant donné peut alors être à nouveau accédé dans un futur proche. On parle ici de localité temporelle.

    Il en résulte que, lors de son exécution, un programme a une forte probabilité d’utiliser les instructions et les données qui sont situées dans des emplacements de mémoire proches de celles des données et instructions accédées récemment. De même, le programme tend à réutiliser les données et les instructions qu’il vient d’utiliser dans le passé proche. Autrement dit, un programme ne fait référence, pendant une tranche de temps brève par rapport au temps total d’exécution, qu’à un petit sous-ensemble d’adresses distinguées. Ce sous-ensemble évolue ordinairement lentement avec le temps pendant le déroulement du programme mais il existe des phases de transition où il change radicalement. Ce sous-ensemble privilégié est appelé l’espace de travail du processus pendant un intervalle de temps donné. Ce comportement a été décrit en 1972 par Hatfield (voir figure 3 ci-dessous) en marquant les adresses référencées pendant chaque tranche de 10 000 références lors de l’exécution d’un programme.

    Figure 3. Suite des références dans la mémoire d’un programme (Hatfield 1972).
    En ordonnée l’adresse dans la mémoire ; en abscisse le déroulement du processus. Dans cette trace des références (la mémoire est découpée en pages de 4 Ko), on voit que la mémoire n’est pas utilisée de façon aléatoire. On y observe que peu après le début de l’exécution, les pages 18 à 24, 29 à 32 et 34 sont utilisées et réutilisées ; elles forment l’espace de travail de ce début du processus, alors que d’autres pages, 32 et 24 à 29, ne servent pas. Puis la navigation change rapidement et c’est au tour des pages 24 à 29 de constituer le nouvel espace de travail alors que les pages 21 à 24 ne servent pas et n’en font plus partie.

    Le fonctionnement avec mémoire virtuelle

    Le principe

    Rappelons que le programme de chaque processus est décrit dans une mémoire virtuelle et que l’unité centrale utilise les adresses virtuelles pour dérouler ce programme. Mais, comme nous l’avons aussi présenté, pour que l’unité centrale puisse avoir accès à l’information repérée par une adresse virtuelle, cette information doit être placée quelque part en mémoire centrale où elle n’est accessible que par une adresse physique. C’est incontournable. Et c’est le rôle du système d’exploitation de transporter l’information requise pour l’exécution du programme depuis la mémoire secondaire où est stockée la mémoire virtuelle et de la placer en mémoire centrale là où il trouve de la place. Le système d’exploitation doit noter la correspondance entre l’adresse virtuelle et l’adresse physique de son placement en mémoire centrale et permettre à l’unité centrale d’utiliser cette correspondance pour passer, à chaque accès à la mémoire, du virtuel au physique.

    Si l’information est modifiée par une écriture en mémoire centrale, le système d’exploitation devra veiller à recopier cette modification en mémoire secondaire là où est rangée la mémoire virtuelle du processus. En effet, le contenu de la mémoire virtuelle, en évoluant depuis un état initial jusqu’à un état final, témoigne du déroulement du processus. La mémoire virtuelle d’un processus est conservée en mémoire secondaire sur disque. Il faut des disques de grande taille capables de stocker les mémoires virtuelles de la totalité des processus en cours (il y en a plusieurs centaines). Ces disques doivent avoir des temps de transfert faibles pour ne pas pénaliser le fonctionnement du système d’exploitation pendant les va-et-vient d’information entre disque et mémoire centrale via l’unité de gestion des entrées-sorties.

    La pagination

    Le passage du virtuel au physique est effectué par un mécanisme matériel au niveau de l’unité centrale et consiste à transformer les adresses virtuelles du processus en adresses physiques de la mémoire centrale. Cette transformation s’appelle la pagination.

    La mémoire virtuelle est découpée en pages de taille fixe — chaque page contient un nombre constant d’adresses fixé par l’architecture de l’ordinateur, la taille des pages étant en général de 4 Ko — et la mémoire centrale physique est découpée en cases de même taille. Ce découpage en éléments de taille fixe banalise l’espace physique en rendant toutes les cases équivalentes, ce qui permet d’implanter une page dans n’importe quelle case, et pas toujours la même, au cours du déroulement du programme. Cela permet aussi de transférer en bloc un ensemble significatif de mots de mémoire et de profiter de l’effet de localité à l’intérieur d’une page. Le système d’exploitation assure alors la gestion automatique de la correspondance entre page d’adressage virtuel et case d’adresse réelle en mémoire centrale en utilisant une table des pages située dans la mémoire de chaque processus. Cette table des pages indique pour chaque page la case mémoire qui la contient si elle est placée en mémoire centrale et sinon sa place sur le disque. Il peut y avoir plus de pages que de cases, mais pas plus que ne le permet l’espace d’adressage de l’ordinateur. À chaque référence commise par l’unité centrale, l’adresse virtuelle du programme est traduite à la volée en adresse réelle de mémoire centrale.

    Figure 4. Fonctionnement avec mémoire virtuelle. Cette figure montre schématiquement le principe de l’utilisation d’une mémoire virtuelle par un processus. On décrit les pages virtuelles d’un processus et les cases de la mémoire centrale qui ont accueilli le contenu de certaines pages.

    Une page virtuelle dont le contenu est en mémoire centrale est immédiatement accessible. Une page virtuelle dont le contenu n’est que sur disque doit être amenée en mémoire centrale pour être accessible ; il faut pour cela lui trouver une case libre. S’il n’y a plus de case libre, il faut en libérer une et donc copier son contenu sur disque s’il a changé depuis son arrivée en mémoire centrale. À l’instant considéré, certaines pages virtuelles seulement du processus ont été amenées en mémoire centrale : V0 en P1, V1 en P2, V6 en P3. D’autres pages sont seulement sur disque : V3 et V5. D’autres pages, V2, V4 et V7, n’ont pas encore été initialisées ou ne sont pas dans le répertoire de ce processus. La mémoire virtuelle de ce processus est plus grande que la mémoire physique mais ne dépasse pas l’espace d’adressage de l’ordinateur.

    Accès mémoire dans le contexte de mémoire virtuelle

    Pour chaque adresse virtuelle du processus, l’unité centrale doit pouvoir atteindre l’information correspondante stockée en mémoire centrale. L’adresse virtuelle est alors remplacée par l’adresse physique associée en se servant de la correspondance qui figure dans la table des pages du processus.

    • Si la correspondance existe, le numéro de case remplace le numéro de page pour former l’adresse physique en mémoire centrale.
    • Si la page n’a pas de case associée, c’est le défaut de page et l’unité centrale appelle le système d’exploitation qui note que l’instruction ne peut pas s’exécuter maintenant et qu’il faudra y revenir. Le système d’exploitation choisit une case en mémoire centrale pour l’associer à la page référencée, ce qui peut l’amener à sauvegarder sur disque le contenu de cette case si elle est occupée par une page dont le contenu a été modifié depuis qu’il a été chargé en mémoire centrale. Puis, quand la case choisie est utilisable, il y copie depuis le disque le contenu de la page référencée. Ces va-et-vient avec le disque sont des opérations longues, rappelons que le temps d’un transfert est environ 10 000 fois plus long que l’exécution d’une instruction. L’exécution du processus est alors suspendue au profit d’un autre processus en attente, puisqu’il peut y avoir plusieurs centaines de processus qui se partagent l’ordinateur. Cette commutation de processus est aussi une fonction du système d’exploitation. Dès que l’information est copiée dans la case choisie, la table des pages est mise à jour et le processus suspendu peut reprendre quand est revenu son tour d’utiliser l’unité centrale.
    • Si la page n’est pas encore initialisée et n’a donc pas de case associée, le système d’exploitation réserve une page sur disque et attribue une case vide au processus.
    • Si la page n’est pas dans le répertoire des pages du processus, c’est une erreur du programme.

    Si le principe paraît simple, la mise en œuvre par le système d’exploitation est complexe car celui-ci gère de nombreux processus concomitants qui sont en concurrence pour occuper les cases de la mémoire centrale et pour utiliser l’unité centrale (ou plusieurs éventuellement).

    Des problèmes à régler par le système d’exploitation

    Gérer efficacement l’accès à la table des pages même pour de très grands programmes

    Au début de la pagination, la table des pages figurait dans une petite mémoire rapide située dans l’unité centrale. Mais cela limitait la taille de la table des pages, et par conséquent de la mémoire virtuelle. Puis la table des pages a été placée dans la mémoire virtuelle. Quand on exécute de très grands programmes utilisant de très grandes mémoires virtuelles, cela entraîne de très grandes tables des pages. Ainsi un jeu d’instructions avec un adressage virtuel sur 32 bits et des pages de 4 Ko (212) requiert plus d’un million de numéros de pages (220). Pour éviter d’avoir une table des pages trop grande en mémoire, plusieurs niveaux de pages, avec des hyperpages, sont mis en place, ce qui permet de n’utiliser à l’instant t qu’un sous-ensemble de pages, celles nécessaires au chargement de la table des pages courantes. Cela fonctionne grâce au phénomène de localité.

    Figure 5. Hyperpages.

    Quand la table des pages est placée en mémoire virtuelle, un accès à un mot de la mémoire centrale physique nécessite deux accès mémoire (voire trois avec les hyperpages), un pour lire la table des pages et un second pour lire le mot lui-même. Pour éviter que chaque référence en mémoire virtuelle ne coûte ces deux accès mémoire, une petite mémoire auxiliaire est mise en place dans l’unité centrale. Cette mémoire rapide, consultable en parallèle, conserve les correspondances (page versus case) les plus récemment utilisées. Ce sont celles qui sont le plus vraisemblablement réutilisées toujours grâce au phénomène de localité qui est plus accentué pour les pages que pour les adresses et auquel on doit l’atteinte d’un taux moyen de réutilisation de plus de 90 %. Cette mémoire est appelée un cache associatif.

    Figure 6. Introduction du cache associatif.

    Trouver une case disponible et éviter l’écroulement du système

    Rechercher une case disponible pour recevoir le contenu d’une nouvelle page est le problème du remplacement de page pour lequel de nombreux algorithmes de remplacement ont été étudiés. Il faut pouvoir trouver une case qui ne serve pas dans un futur proche à l’un des processus qui se partagent la mémoire centrale. Il faut aussi éviter qu’une page renvoyée sur disque pour libérer une case ne soit redemandée immédiatement par le processus qui vient de la perdre. Si cette situation se généralise, l’ordinateur ne fait plus que des défauts de page, des commutations entre les processus et des va-et-vient avec le disque ; plus aucun processus ne s’exécute : c’est l’écroulement du système. Pour l’éviter, le système d’exploitation doit essayer de garantir à chaque processus qui doit être exécuté un nombre suffisant de cases pour contenir son espace de travail courant. Cela conduit à estimer cet espace de travail ainsi que son évolution dans le temps et en déduire une limitation du nombre de processus qui se partagent la mémoire centrale à un instant donné. Cette estimation peut être utilisée pour précharger, en un seul transfert depuis le disque, une partie de l’espace de travail d’un processus lorsque le système d’exploitation le choisit pour utiliser à nouveau la mémoire centrale.

    Protéger des informations ou les partager entre processus ou avec le système

    Les informations repérées dans la mémoire virtuelle d’un processus sont réparties en segments selon la nature de l’utilisation qui en sera faite. À chaque type de segment, on peut attacher une protection d’accès et l’inscrire dans la table des pages. Les segments de code sont invariants et ne doivent pas être modifiés ; ils peuvent dès lors être partagés entre plusieurs processus. Les segments de données d’un processus ne peuvent être utilisés que par ce processus. Les segments de communication doivent être partagés entre les processus qui s’échangent des messages. Certaines informations que le système d’exploitation utilise pour gérer le processus, comme par exemple la table des pages ou des hyperpages, sont conservées dans la mémoire virtuelle de ce processus et sont alors placées dans des segments système où le système peut lire et écrire alors que le processus utilisateur n’y accède pas.

    La mémoire virtuelle permet de partager de l’information en partageant les mêmes segments sur le disque où ils sont stockés. Le système d’exploitation doit alors veiller à charger cette information partagée dans une seule et même case de mémoire centrale, même si l’information est repérée dans des pages virtuelles différentes pour chaque processus. Pour simplifier, certains systèmes ont une table des pages spéciale pour les données partagées et cette table a généralement la même adresse dans toutes les mémoires virtuelles.

    Figure 7. Partage entre deux processus. La figure montre deux processus qui sont en cours d’exécution et qui partagent le code d’une même application. Chaque processus possède indépendamment de l’autre processus sa propre mémoire virtuelle avec sa propre table des pages. Les deux instances utilisent les mêmes adresses virtuelles (0, 1, 2, 3, 4, 5, 6, 7). À l’instant observé, chaque processus fait trois utilisations distinctes des pages dans sa mémoire virtuelle, soit une page de code partagé, une page de données propres et une page de communication avec l’autre processus. La page virtuelle V0 de chaque processus donne accès au code partagé et est associée à la même case de mémoire physique P1 ; la page virtuelle V1 de chaque processus permet d’adresser des données propres à chaque processus et pour cela chacune des pages V1 est associée à une case différente, P2 pour le processus 1, P0 pour le processus 2 ; la page virtuelle pour l’envoi et la réception de messages entre les processus n’est pas la même dans chaque programme : c’est V6 pour le processus 1 et V7 pour le processus 2, mais ces deux pages ont une entrée vers la même case, ce qui leur permet de partager les données communiquées.

    Gestion du changement d’allocation de l’unité centrale

    Le système d’exploitation doit gérer l’exécution de plusieurs processus avec une seule unité centrale et il élit chaque processus à tour de rôle pour son utilisation. À chaque fois que le système d’exploitation change de processus, l’unité centrale change de contexte d’exécution : il faut sauvegarder l’ancien contexte, charger le nouveau et remettre à zéro les mémoires associatives qui gardent encore en mémoire les dernières adresses utilisées par le processus précédent. Lorsque des pages ont été modifiées en mémoire centrale, il est de bon ton de les vider sur disque pour éviter de perdre ces modifications en cas de panne de l’ordinateur ou de plantage (bug) du processus. Quand un processus reçoit à nouveau l’usage de l’unité centrale, il peut y avoir encore en mémoire centrale des pages anciennement utilisées par ce processus qui n’ont pas été choisies pour libérer une case pour un autre processus. Il faut savoir repérer ces pages et les récupérer pour le processus.

    Conclusion

    Le concept de mémoire virtuelle a marqué une étape scientifique importante dans l’évolution des systèmes d’exploitation et a, en grande partie, libéré le programmeur des contraintes de mémoire. Sa mise en œuvre physique repose sur le mécanisme matériel de pagination qui permet de morceler la mémoire centrale et le programme, sur l’utilisation de disques pour stocker les processus à exécuter et sur un va-et-vient rapide entre disque et mémoire centrale pour transférer les parties de processus qui doivent être exécutées par l’unité centrale.

    Deux progrès appréciables en ont résulté.
    La mémoire virtuelle donne au système d’exploitation la faculté de gérer un grand nombre de processus concomitants en leur permettant de partager dynamiquement la mémoire centrale. La concurrence entre processus et leur synchronisation pour l’accès à des informations communes rendent complexe la gestion de ce partage et en font un des problèmes techniques les plus difficiles des systèmes d’exploitation.
    La mémoire virtuelle permet au programmeur d’écrire de grands programmes ou de manipuler des données de grande taille sans avoir désormais à gérer les entrées-sorties et les va-et-vient avec la mémoire secondaire. Il n’est alors plus contraint par la taille de la mémoire centrale. Il peut avoir l’illusion d’une mémoire quasi illimitée (par contre, si la taille de la mémoire centrale de l’ordinateur est petite devant celle du programme, ce qui peut se produire entre autres pour les objets connectés, cela se traduit pour le système d’exploitation par de nombreux va-et-vient et, pour l’application, par un temps d’exécution important). Voilà pourquoi la mémoire virtuelle et la pagination sont aujourd’hui présentes dans la plupart des systèmes d’exploitation des ordinateurs, que ce soit celui d’un téléphone portable, d’une tablette ou d’un objet connecté.

    Remerciements à Joëlle Delacroix pour ses suggestions et la réalisation des figures du texte ainsi qu’à Brigitte Kaiser pour ses nombreuses relectures critiques et utiles.

    Les documents suivants sont en accès libre et téléchargeables en PDF :

    Newsletter

    Recevez chaque mois une sélection d'articles

    Niveau de lecture

    Aidez-nous à évaluer le niveau de lecture de ce document.

    Si vous souhaitez expliquer votre choix, vous pouvez ajouter un commentaire (Il ne sera pas publié).

    Votre choix a été pris en compte. Merci d'avoir estimé le niveau de ce document !

    Claude Kaiser

    Professeur émérite d'informatique au CNAM.

    Voir le profil

    Ces articles peuvent vous intéresser

    ArticleArchitecture & Systèmes
    Histoire du numérique

    Mémoire et unité centrale, un couple dédié à l’exécution des programmes

    Joëlle Delacroix-Gouin

    Niveau facile
    Niveau 1 : Facile
    ArticleArchitecture & Systèmes
    Culture & Société

    Le ballet des processus dans un système d’exploitation

    Claude Kaiser

    Niveau intermédiaire
    Niveau 2 : Intermédiaire
    ArticleHistoire du numérique
    Architecture & Systèmes

    Les débuts d’une approche scientifique des systèmes d’exploitation

    Sacha Krakowiak

    Niveau intermédiaire
    Niveau 2 : Intermédiaire
    ArticleHistoire du numérique
    Architecture & Systèmes

    La naissance des systèmes d’exploitation

    Sacha Krakowiak
    Jacques Mossière

    Niveau intermédiaire
    Niveau 2 : Intermédiaire