AccueilđŸ‡«đŸ‡·Chercher

Gestionnaire de mémoire virtuelle

Le gestionnaire de mémoire virtuelle est un circuit électronique (MMU) qui permet de réaliser le mécanisme de la mémoire virtuelle, à savoir la translation des adresses virtuelles en adresses physiques.

Le concept de mémoire virtuelle est assez ancien, il a été implémenté dans les années 1960 et il est toujours trÚs utilisé. Son but est d'augmenter la taille de la mémoire utilisable, de mettre en place des mécanismes de protection et de faciliter l'allocation de la mémoire utilisée par un processus en simplifiant le travail des développeurs. L'origine de cette découverte est la différenciation entre l'espace d'adressage virtuel et l'espace d'adressage physique.

MĂȘme si les mĂ©canismes mis en jeu rendent de grands services, ils ont un coĂ»t en matiĂšre de performance, celle-ci est un enjeu important actuellement ; les internautes sont trĂšs sensibilisĂ©s aux temps de rĂ©ponse. Le paradoxe est le suivant : Les applications sont de plus en plus complexes et demandeuses de mĂ©moire toutefois, les utilisateurs sont de plus en plus exigeants en ce qui concerne la performance.

L'autre dĂ©fi majeur relevĂ© par la mĂ©moire virtuelle, c'est la protection de la mĂ©moire. De fait, une Ă©tanchĂ©itĂ© entre les diffĂ©rents programmes doit ĂȘtre assurĂ©e. Le problĂšme actuel est de garantir cette sĂ©curitĂ© face aux diffĂ©rentes attaques (attaques par relais, par codes arbitraires).

Le concept de Mémoire Virtuelle est en constante évolution, il est remis en cause dans certains types d'architectures tels que : Les Big Memory Server (en) ou les SystÚmes Big Data car trop coûteux en temps.

Généralités

DĂ©finitions

Principe de base : toutes les informations d’un programme ne peuvent ĂȘtre rĂ©fĂ©rencĂ©es par le processeur que lorsqu’elles se trouvent en MĂ©moire centrale. L’information qui a besoin d’ĂȘtre rĂ©fĂ©rencĂ©e rapidement doit rĂ©sider en mĂ©moire centrale et toutes les autres informations doivent ĂȘtre en mĂ©moire auxiliaire (mĂ©moire de masse). Il serait trop couteux en ressource de charger l'intĂ©gralitĂ© des programmes exĂ©cutĂ©s par un ordinateur en mĂ©moire, c'est une des raisons pour lesquelles le procĂ©dĂ© de mĂ©moire virtuelle a Ă©tĂ© mis au point Ă  la fin des annĂ©es 1950[1] - [2].

Les mémoires

La mémoire physique correspond à la mémoire physiquement installée, c'est-à-dire principalement à la mémoire vive dynamique, la RAM[3]. Il s'agit d'une zone de stockage temporaire, une mémoire de travail, dans laquelle sont chargés les données et les programmes[4] - [5] qui seront traitées par le processeur. On utilise également d'autres dispositifs, tels que les disques durs, les disques SSD comme espace d'échange (zone de swap).

Une hiérarchie des mémoires s'établit suivant les principales caractéristiques qui sont : le temps d'accÚs, la persistance des données, l'espace d'adressage.

Les mémoires vives (RAM) sont dites volatiles et possÚdent un temps d'accÚs aux données de quelques dizaines de nanosecondes, et les mémoires comme celle du disque dur ont des accÚs plus lents : quelques millisecondes, on les appelle aussi Mémoire de masse[6].

Espace d'adressage

Espace d'adressage virtuel et espace d'adressage physique.

L'espace adressable par le processeur se distingue de l'espace réellement adressable dans la mémoire physique :

  • L'espace d'adressage virtuel (Virtual address space) est gĂ©nĂ©rĂ© par le processeur au moment de l’exĂ©cution des instructions. C'est l'espace accessible, qui dĂ©pend donc du nombre de bits utilisĂ©s par le processeur pour coder les adresses[7]. Cet espace d’adressage est constituĂ© du code, des donnĂ©es, de la pile d’exĂ©cution (stack) ;
  • L'espace d'adressage physique (Physical address space) correspond aux adresses chargĂ©es rĂ©ellement en mĂ©moire centrale, physique, pour qu'un programme puisse s'exĂ©cuter[8].

Un processus pour qu'il puisse s'exĂ©cuter doit ĂȘtre chargĂ© en mĂ©moire centrale. Si plusieurs programmes sont concurrents, il est nĂ©cessaire :

  • d'allouer suffisamment de place en mĂ©moire centrale pour le code et les donnĂ©es de chaque processus ;
  • de garantir un espace d’adressage Ă©tanche pour chaque processus[9].

Les mécanismes de la mémoire virtuelle permettent de répondre à ces deux besoins principaux.

Unité de Gestion Mémoire

La MMU (Memory Management Unit ou PMMU Paged Memory Management Unit) est le circuit électronique qui rend possible la mémoire virtuelle, c'est par son intermédiaire que seront converties (en anglais mapping) les adresses mémoires virtuelles en adresses physiques[10] - [11].

TLB (Translation Lookaside Buffer)

Schéma de principe du fonctionnement d'un MMU.

Pour amĂ©liorer le temps d'accĂšs Ă  la mĂ©moire, un ensemble de registres attachĂ©s Ă  la MMU, met en Ɠuvre une mĂ©moire cache : TLB (Translation Lookaside Buffer)[12] - [11] - [13].

Le TLB mémorise les derniÚres correspondances entre les adresses virtuelles et les adresses physiques pages, cadres utilisées par un processus.

Cette mĂ©moire cache contient les numĂ©ros de page ainsi que l'adresse de la case contenant la plus rĂ©cemment accĂ©dĂ©e. La MMU cherche en premier lieu dans le cache s'il existe une dĂ©jĂ  une correspondance entre la page et l'adresse d’implantation de la case[14].

Principe de la Pagination

Les données sont organisées dans la mémoire virtuelle sous forme de pages ou de segments, il y a aussi un autre mode d'organisation qui combine les deux.

Dans la mĂ©moire physique elles sont organisĂ©es sous forme de cadres, une page correspond Ă  un cadre. Donc quand un programme a besoin d'ĂȘtre chargĂ© en mĂ©moire centrale, il faut donc placer les pages dans n’importe quelle case (ou cadre) disponible.

La correspondance entre les pages de la mémoire virtuelle et les cases de la mémoire centrale se fait par la table de pages[15].

Tables de pages
Pagination et swapping.

La taille d'une page est en moyenne de 4Ko. Les adresses des données dans une page sont constituées d'un couple numéro de page et déplacement à partir du début de cette page.

La MMU permet d'associer une adresse virtuelle à une adresse mémoire physique[16]. Elle reçoit en entrée une adresse virtuelle et vérifie qu'elle correspond bien à une adresse physique si c'est le cas, elle transmet l'information à la mémoire physique sinon il se produit ce qu'on appelle un défaut de page[17] - [18].

S'il n'existe plus de cases mémoire disponible en mémoire physique, la mémoire virtuelle peut combiner ces mécanismes avec le swapping, pour trouver de la disponibilité mémoire sur le disque[19] - [20].

Il y a de nombreux mécanismes pour traduire les adresses virtuelles en adresses mémoire physiques, cela dépend de la maniÚre dont sont stockées les données en mémoire : sous forme de pages de taille fixe, ou en segments de tailles variables ou en segments divisés en pages[21].

La MMU a aussi pour rÎle de protéger le SystÚme d'exploitation des accÚs non autorisés à des zones de la mémoire. Dans la table des pages, on trouve pour chaque entrée, un bit de validité qui indique s'il existe bien une page physique correspondant à la page virtuelle demandée, ainsi que des informations sur les droits d'accÚs en écriture ou en exécution, à l'accÚs autorisé en mode utilisateur ou non[22] - [23].

Le mĂ©canisme de conversion d'adresse s'effectue grĂące Ă  la table des pages. DĂšs qu'un processus est chargĂ© en mĂ©moire principale sa table de page est chargĂ©e aussi, son rĂŽle est de conserver l'information suivante : Les adresses de pages (numĂ©ro de pages + numĂ©ro de dĂ©placement dans la page) et les adresses de cadres correspondants Ă  ce mĂȘme processus, il faut noter qu'on se sert du numĂ©ro de page comme index dans la table des pages[24].

Quelles sont les Ă©tapes dans la traduction de page ?
Organigramme TLB[25].

Une fois l'adresse virtuelle générée par le processeur, on vérifie d'abord en mémoire cache TLB, s'il existe une correspondance entre la page et la case (TLB hit), l'adresse physique est directement accessible en mémoire centrale.

Si aucune correspondance n'est trouvée (TLB miss), il faut alors se rendre dans la table de page pour déterminer l'adresse physique[26] - [13].

Une fois l'adresse physique déterminée, si le cadre de page existe, l'adresse physique est alors accessible en mémoire centrale. Si le cadre de page n'est pas trouvé en mémoire il se produit un défaut de page (page fault), il faut alors utiliser l'un des algorithmes de remplacement de page.

Pagination 64 bits

Une adresse virtuelle est divisĂ©e en un numĂ©ro de page et un dĂ©placement (Offset). Le numĂ©ro de page est ensuite lui-mĂȘme divisĂ© en une sĂ©quence d'index, chaque index pointant vers l'entrĂ©e de la table suivante et ainsi de suite jusqu'Ă  la derniĂšre table. Au fur et Ă  mesure que la taille des adresses virtuelles augmente, le nombre de table de pages augmente Ă©galement (Par exemple, il y a quatre niveaux de table pour un processeur AMD Opteron de façon Ă  prendre en charge une adresse virtuelle 64 bits, voir ci-dessous). À chaque dĂ©cennie, la profondeur du nombre de tables augmente d'un niveau[27] - [28].

Illustration de la pagination en mode 64 bits

Ci-dessous la répartition des tables de pages sur 4 niveaux pour les processeurs AMD et Intel[29] - [30] :

Tables de pages pour les processeurs AMD et Intel.
  1. Niveau 0 PML4 (Page Map Level 4 Offset)
  2. Niveau 1 PDP (Page Directory- Pointer Offset)
  3. Niveau 2 PD (Page Directory Offset)
  4. Niveau 3 PT (Page Table Offset)

Le registre CR3 est utilisé pour pointer vers l'adresse de base de la table de traduction de page du plus haut niveau.

Une fois que cette adresse de base est trouvée, la MMU prend les bit 39 à 47 (total de 9 bits) comme un index dans la table de page PML4. La valeur dans cet index donne l'adresse de base de la page de la table PDP.

De mĂȘme, les prochains 9 bits (30 Ă  38) donnent l'index dans la table de page PDP qui donne l'adresse de base de la table de page d'entrĂ©e PD.

De la mĂȘme façon, on trouve l'index dans la table PD pour l'adresse de base de la table PT en utilisant les 9 bits suivants (21 Ă  29). Les 9 bits suivants (12 Ă  20) donnent l'index dans la table PTE qui donne l'adresse de base de la page physique rĂ©elle contenant les donnĂ©es et le code du processus[31].

Les 12 derniers bits correspondent au décalage (Offset) dans les 4Ko de la mémoire physique.

x86_64 Paging
Bits Affectation des bits
4 KiB Page2 MiB Page1 GiB Page
63... 48Inutilisés
47... 39Index dans la table PML4 (engl. page mapping layer 4)
38... 30Index dans la table PDP (engl. page directory pointer)
29... 21Index dans la table PD (engl. page directory)30-Bit-Offset
20... 12Table de page PT (engl. page table)21-Bit-Offset
11... 012-Bit-Offset

La mémoire virtuelle : Réponse à plusieurs besoins

Comme l'indique Peter J. Denning (en) dans un article de 2008, la mémoire virtuelle répond à plusieurs besoins[32]. Principalement, elle permet :

  • la gestion automatique de l’allocation de mĂ©moire : permet de rĂ©soudre le problĂšme du manque d'espace mĂ©moire physique disponible dans un ordinateur, c'est ce qui est Ă  l'origine de cette dĂ©couverte ;
  • la protection : Comme indiquĂ© dans le chapitre protection de la mĂ©moire virtuelle. La mĂ©moire virtuelle met en jeu des mĂ©canismes afin que deux processus ne puissent pas Ă©crire en mĂȘme temps dans le mĂȘme espace d'adressage ;
  • la modularitĂ© des programmes : Les programmes sont dĂ©veloppĂ©s sous forme des modules sĂ©parĂ©s partageables et rĂ©utilisables qui seront liĂ©s entre eux qu'au moment de l'exĂ©cution dans un espace d'adressage unique ;
  • pour les programmes orientĂ©s objets : elle permet de dĂ©finir des objets et des classes que le gestionnaire de mĂ©moire peut accĂ©der et modifier ;
  • la programmation de donnĂ©es centralisĂ©es : d'aprĂšs Peter Denning « le monde du Web consiste en une multitude de process qui naviguent Ă  travers un espace d'objets partagĂ©s mobile ». Les objets peuvent ĂȘtre liĂ©s Ă  un traitement sur demande . En effet en cliquant sur un lien on dĂ©clenche un traitement dans le navigateur (Applets Java) mais celui-ci ne doit pas avoir d'impact sur les objets locaux ;
  • le calcul parallĂšle sur plusieurs Ordinateurs : la mĂ©moire virtuelle partagĂ©e dans les systĂšmes distribuĂ©s est une architecture qui permet de partager des espaces d'adressage virtuels pour 2 processeurs diffĂ©rents faisant rĂ©fĂ©rence Ă  deux entitĂ©s MĂ©moire Physique qui sont vues comme un seul espace d'adressage : elle est dĂ©crite dans la section DVSM[33] et plus prĂ©cisĂ©ment ici Distributed shared memory (en).

MĂ©moire virtuelle et performances

Évaluation de la performance

La pagination peut affecter significativement la performance d'un ordinateur.

D'aprÚs Silberschatz, si on définit[34]:

  • effective access time (le temps d'accĂšs effectif);
  • la probabilitĂ© d'un dĂ©faut de page avec ;
  • le temps d'accĂšs Ă  la mĂ©moire;
  • page fault time (le temps associĂ© Ă  un d'un dĂ©faut de page).

Quand il y a peu de défaut de pages, la probabilité d'un défaut de page tend vers :

  • Le temps d'accĂšs effectif est Ă©gal au temps d'accĂšs Ă  la mĂ©moire .

Sinon :

Comme décrit dans Thrashing : Its causes and prevention par Denning, lorsque le nombre de défaut de page augmente significativement, le systÚme effectue des opérations d'écroulement ou thrashing entraßnant inévitablement une réduction de la performance. Le traitement d'un grand nombre de défauts de page peut provoquer un effondrement du systÚme quand le celui-ci passe plus de temps à traiter les défauts de page qu'à exécuter des processus[35].

Algorithmes de remplacement de pages

À la suite d'un dĂ©faut de page, le systĂšme doit ramener la page manquante en mĂ©moire centrale ; s'il n'y a plus de place en mĂ©moire il faut alors retirer une Page et la mettre en mĂ©moire auxiliaire : le disque, par exemple. C'est ce mĂ©canisme qu'on appelle le « remplacement de page ». Il existe de nombreux algorithmes de remplacement de page pour circonscrire ce phĂ©nomĂšne d'Ă©croulement[17]:

Working set

Le working set (en) permet d'estimer la quantitĂ© de mĂ©moire qu'un processus requiert dans un intervalle de temps donnĂ©.Suivant ce modĂšle, un processus ne pourra ĂȘtre chargĂ© en RAM que si et seulement si l'ensemble des pages qu'il utilise peut y ĂȘtre chargĂ©. Dans le cas contraire, le processus est swappĂ© de la mĂ©moire principale vers la mĂ©moire auxiliaire de façon Ă  libĂ©rer de la mĂ©moire pour les autres processus[36].

Algorithme de remplacement LRU

Least Recently Used est l'algorithme le plus frĂ©quemment utilisĂ© : Toutes les pages en mĂ©moire figurent dans une liste chainĂ©e, avec en tĂȘte de liste la plus rĂ©cemment utilisĂ©e, quand le dĂ©faut de page survient , l'algorithme retire la page la moins rĂ©cemment utilisĂ©e : celle qui est en queue. C'est un algorithme complexe difficile Ă  implĂ©menter qui nĂ©cessite son exĂ©cution par un matĂ©riel spĂ©cifique car il faut un mĂ©canisme qui tienne compte du temps[37].

Algorithme FIFO (First In First Out)

First In First Out (Premier entrĂ©, premier sorti) est un algorithme qui constitue une liste chaĂźnĂ©e avec les pages prĂ©sentent en mĂ©moire. Quand un dĂ©faut de page intervient il retire la plus ancienne, donc celle qui est en dĂ©but de file.Ce mĂ©canisme ne tient pas compte de l'utilisation des pages ; une page peut ĂȘtre retirĂ©e et tout de suite aprĂšs rechargĂ©e en mĂ©moire car un processus en a besoin[38].

NRU remplacement de la page Non Récemment Utilisée

Cet algorithme quant à lui utilise les bits R et M pour définir la page à retirer.

  • R = Le Bit de RĂ©fĂ©rence
  • M = Le Bit de Modification

Le Bit R est positionné à 1 lorsqu'une page est Référencée et 0 lorsque la page n'est pas référencée. Le bit M est positionné à 1 lorsque la page est Modifiée et 0 lorsqu'elle ne l'est pas.

Quand un défaut de page intervient l'algorithme NRU retire en premier la page non référencée et non modifiée en premier :

  1. - R=0 et M=0
    sinon la page non référencée et modifiée :
  2. - R=0 et M=1
    sinon la page référencée et non modifiée :
  3. - R=1 et M=0
    sinon il retire la page référencée et modifiée ;
  4. - R=1 et M=1

Dans ce dernier cas la page sera sauvegardĂ©e sur disque avant d'ĂȘtre transfĂ©rĂ©e en mĂ©moire[39].

Clock

Dans l'algorithme Clock, les pages sont mémorisées dans une liste circulaire en forme d'horloge, Un indicateur pointe sur la page la plus ancienne. Lorsqu'un défaut de page se produit, la page pointée par l'indicateur est examinée. Si le bit R de la page pointée par l'indicateur est à 0, la page est retirée, la nouvelle page est insérée à sa place et l'indicateur avance d'une position. Sinon, il est mis à 0 et l'indicateur avance d'une position.

Cette opĂ©ration est rĂ©pĂ©tĂ©e jusqu'Ă  ce qu'une page ayant R Ă©gal Ă  0 soit trouvĂ©e. À noter que lorsqu'une page est ajoutĂ©e, on met son bit de rĂ©fĂ©rence Ă  1.

Cet algorithme est aussi appelé algorithme de la seconde chance.

Performance dans une architecture Numa

Architecture Numa

Numa (Non Uniform Memory Access) est conçu pour les systĂšmes multiprocesseur dans lequel les zones mĂ©moires sont sĂ©parĂ©es. L'architecture Numa sert Ă  amĂ©liorer l'efficacitĂ© d'accĂšs par les processeurs Ă  tout l'espace mĂ©moire, en effet, cet accĂšs s'effectue par des Bus diffĂ©rents ce qui Ă©vite les baisses de performance liĂ©es aux Ă©ventuels accĂšs concurrents par deux processeurs. Il existe aussi un autre type de gestion de la mĂ©moire sur les multiprocesseurs : SMP (Symetric Multiprocessing), oĂč il existe une seule mĂ©moire partagĂ©e.

Un mĂ©canisme d’ordonnancement dynamique des tĂąches a Ă©tĂ© mis au point par Chiang, Yang et Tu (DTAS) qui rĂ©duit les phĂ©nomĂšnes de contention dans les systĂšmes Multi-CƓur NUMA. Pour Ă©viter ce problĂšme, les cƓurs des processeurs qui partagent les ressources sont programmĂ©s pour exĂ©cuter des tĂąches complĂ©mentaires[40].

Les tĂąches sont classifiĂ©es comme Ă©tant de type traitement ou de type mĂ©moire, chaque processeur est dĂ©diĂ© Ă  un type de tĂąche. Si l'Ă©nergie doit ĂȘtre Ă©conomisĂ©e, la frĂ©quence d'horloge du processeur effectuant des tĂąches liĂ©es Ă  la MĂ©moire est diminuĂ©e pour rĂ©duire la consommation. À l'inverse, on peut augmenter la frĂ©quence d'horloge d'un processeur qui doit faire plus de traitement, dans un souci d'efficacitĂ©. Ce mĂ©canisme a Ă©tĂ© implĂ©mentĂ© sur un systĂšme avec un noyau Linux.

Une amĂ©lioration de la performance de ce systĂšme a Ă©tĂ© constatĂ©e ainsi qu'une baisse de la consommation d'Ă©nergie en rĂ©duisant le taux de contentions entre les diffĂ©rents cƓurs de processeurs.

Les Benchmaks révÚlent une amélioration de 28 % des performances sur des systÚmes avec un noyau linux 3.11.0 (tests effectués sur 1000 instructions).

Performance dans un environnement virtualisé

 Translation d'adresse grĂące aux shadow page table
Translation d'adresses grĂące aux shadow page tables

Shadow Page Table

Plusieurs tables de pages sont utilisĂ©es dans le dĂ©roulement des translations d'adresses dans les technologies de virtualisation, c'est ce qui est mis en Ɠuvre avec les shadow page tables[41].

Une table sert à convertir les adresses virtuelles invitées (gva guest virtual address) en adresses physiques invitées (gpa guest physical address). L'autre pour convertir les adresses physiques invitées (gpa guest physical address) en adresses physiques hÎte (hpa host physical address)[42].

Une table de pages appelée Shadow Page Tables mappe les adresses virtuelles invitées directement vers les adresses physiques hÎte en Dram[43].

Slat

Pour des raisons de performance, Slat (en) (Second Level Address Translation) se substitue Ă  la technique des Shadow Page Tables[44].

La mĂ©moire physique invitĂ©e est considĂ©rĂ©e comme un sous-ensemble de la mĂ©moire physique de l'hĂŽte. Les tables de pages sont utilisĂ©es Ă  plusieurs niveaux, la table de page d'hĂŽte peut ĂȘtre considĂ©rĂ©e conceptuellement comme imbriquĂ©e (nested) dans la table de page d'invitĂ©s. Cela rĂ©duit les recherches dans le stables de pages, et par lĂ  mĂȘme la charge du processeur.

Extended Page Table (EPT) ou Table de Page Ă©tendue pour Intel, Nested Page Table (NPT) ou Table de Page ImbriquĂ©e pour AMD repose sur le mĂȘme principe[45].

ÉlasticitĂ© de la mĂ©moire : le ballooning

Memory balloon[46] est une technique de gestion de la mĂ©moire qui permet Ă  un hĂŽte physique de rĂ©cupĂ©rer de la mĂ©moire inutilisĂ©e sur ses machines virtuelles invitĂ©es (VM). Cela permet Ă  la quantitĂ© totale de RAM requise par une VM invitĂ©e de dĂ©passer la quantitĂ© de RAM physique disponible sur l'hĂŽte. Lorsque le systĂšme hĂŽte ne possĂšde pas suffisamment de ressources physiques en RAM, une partie de la mĂ©moire est affectĂ©e aux diffĂ©rents ordinateurs virtuels. Cela rĂ©pond au besoin d’équilibrer les charges mĂ©moire, l'hyperviseur rĂ©affecte la mĂ©moire inutilisĂ©e par certaines machines virtuelles pour permettre Ă  d’autres machines plus consommatrices d’obtenir de meilleures performances[47] - [48]

SwapCached

L'idée principale de SwapCached est la mise en cache des pages mémoires de des machines invitées dans la machine hÎte de façon à augmenter la performance de la plateforme entiÚre.

SwapCached est composé de trois modules : Cache Pool, Agent et Sensor. Les deux premiers composants sont dans l'hÎte et contiennent les pages swappées et le dernier est localisé dans chaque machine invitée.Le prototype utilisé a été implémenté dans une plateforme Xen et a permis d'améliorer la performance globale de la plateforme de l'ordre de 10 % à 80 % en fonction des différents types de VM[49].

Performance dans un environnement mobile

Le mécanisme de swapping (backing store[50]) n'est pas implémenté dans les mobiles, par exemple pour les terminaux sous iOS : chaque programme possÚde bien son propre espace de mémoire virtuelle, mais la quantité d'espace de mémoire disponible se limite à la mémoire physique. Ceci conduit à gérer la mémoire liée aux applications de façon spécifique : si la quantité de mémoire disponible descend en dessous d'un certain seuil, le systÚme demande aux applications en cours de libérer de l'espace mémoire[51] : sur iOS, la gestion de la mémoire liée aux applications est gérée par jetsam, et de façon identique par OOM (Out Of Memory) sous Android[52] - [53] - [54] - [55].

Dans ce contexte, Geunsik Lim propose dans Virtual memory partitioning for enhancing application performance in mobile platforms de mettre en place une gestion originale des applications en priorisant les applications natives, plutĂŽt que les applications dont les sources sont moins fiables. Le mĂ©canisme Virtual Memory Node, Vnode met en Ɠuvre une isolation complĂšte des applications peu fiables et rĂ©duit le nombre d'opĂ©rations des LMK/OOMK mĂȘme quand les ressources mĂ©moires sont critiques. La performance des applications natives est ainsi renforcĂ©e[56].

Pour autant, la mĂ©moire Ă  changement de phase (PCM) pourrait ĂȘtre amenĂ©e Ă  ĂȘtre utilisĂ©e comme pĂ©riphĂ©rique de swap. Yoo et Bahn prĂ©sentent un nouvel algorithme de remplacement de page : DA-Clock (Dirtiness-Aware Clock). Les rĂ©sultats expĂ©rimentaux montrent que l'algorithme amĂ©liore les performances de 24 Ă  74 % en minimisant le trafic en Ă©criture sur la PCM, cet algorithme prolonge Ă©galement la durĂ©e de vie de la mĂ©moire de 50 % en moyenne[57].

Ce nouvel algorithme de remplacement de pages fonctionne sur les systĂšmes embarquĂ©s mobile qui utilisent de la DRAM comme mĂ©moire principale et de la mĂ©moire PCM comme pĂ©riphĂ©rique de swap. Il s'inspire de l'algorithme Clock. Il garde la trace des pages et sous-pages dites dirty qui sont des pages contenant des donnĂ©es devant ĂȘtre Ă©crites sur un support de stockage stable et se trouvant dans un cache avant d'ĂȘtre rĂ©clamĂ©es. Est remplacĂ©e la page la moins sale parmi les pages qui ont Ă©tĂ© le moins rĂ©cemment utilisĂ©es. Pour ce faire, on utilise une liste circulaire et plusieurs listes de dirty pages dans lesquelles on sĂ©lectionne une page victime.

Une autre équipe a testé une nouvelle technologie appelée Cows (Copy On Write Swap-in) qui augmente les performances .

Dans cette technologie le mécanisme du swap a été totalement repensé pour les smartphones équipés de NVM (Non Volatile Memory). Au lieu d'utiliser de la mémoire flash on utilise la NVM comme zone se swap. Le mécanisme de copy-on-write swap-in évite des opérations de copies de la mémoire non nécessaires.

Sur les Smartphones il se produit souvent un phĂ©nomĂšne particulier : les processus sont tuĂ©s en permanence, ceci est dĂ» au fait que la mĂ©moire est saturĂ©e et le swapping est dĂ©sactivĂ© sur les tĂ©lĂ©phones pour des raisons de performance. Une expĂ©rience de 2014 a rĂ©vĂ©lĂ© que sur un TĂ©lĂ©phone Google Nexus 5 avec l'option swap activĂ©e, sur 30 Minutes de test, le nombre de process « tuĂ©s » a diminuĂ© de 66 % Ă  91 % grĂące Ă  trois Ă©lĂ©ments :

  • Le NVM-swap ;
  • Le copy-on-wrtite swap-in ;
  • Le Heap-wear : un algorithme qui permet d'augmenter la durĂ©e de vie des NVM de 50 %[58].

Compression de la mémoire

La compression augmente la performance en permettant de réaliser la pagination en utilisant un bloc en mémoire RAM plutÎt que sur le disque[59].

La zone de swap se trouve alors basĂ©e sur la RAM et fournit ainsi une forme de compression de mĂ©moire virtuelle, permettant une performance accrue due au meilleur temps d'accĂšs fourni par la RAM, le disque ayant un temps d'accĂšs bien plus long. Il est dĂšs lors d'autant plus important d'optimiser l'occupation de la mĂ©moire principale. Srividya et Denakar proposent alors un mĂ©canisme de dĂ©-duplication de pages compressĂ©es : si une page compressĂ©e s'avĂšre identique, au lieu d'ĂȘtre swappĂ©e, elle sera partagĂ©e[60].

Une nouvelle hiérarchie de la mémoire

Les mémoires non volatiles (NVM) comme STT-RAM (Magnetoresistive RAM) ou Mémoire à changement de phase (PCM).

Il existe d'abondantes recherches sur l'utilisation de la PCRAM comme remplacement des DRAM actuelle en tant que mémoire principale. Lee et al.[61] ont démontré qu'implémenter une architecture de mémoire basée exclusivement sur les PC-RAM serait environ 1,6 fois moins rapide et nécessiterait 2.2 fois plus d'énergie qu'une mémoire principale basée sur la DRAM, principalement en raison de la surcharge demandée par les opérations d'écriture. Pour améliorer cela, il propose d'organiser les buffers de la mémoire différemment de façon à diminuer la consommation d'énergie due aux opérations d'écriture. Qureshi[62] a proposé un systÚme de mémoire principale hybride composée de PCM et de DRAM de façon à pouvoir tirer parti des avantages de la latence des DRAM et des avantages de la capacité de PCM. Cette architecture hybride pourrait réduire le nombre de défaut de page par 5 et améliorer la rapidité de traitement. Une étude similaire menée par Zhou[63] a démontré qu'une mémoire à base de PC-RAM ne consomme que 65 % de l'énergie totale de la mémoire principale de DRAM. Tous ces travaux démontrent la possibilité d'utiliser la PC-RAM comme mémoire principale[64] - [65] - [66] - [67].

Protection apportée par la mémoire virtuelle

La mémoire virtuelle garantit qu'aucun processus n'écrive dans l'espace d'adressage d'un autre processus ou du systÚme d'exploitation sans y avoir été expressément autorisé. Elle permet ainsi de se prémunir contre les erreurs des autres programmes car chaque programme possÚde son propre espace d'adressage, mais également d'actions malveillantes éventuelles : sans cette protection, les virus informatiques seraient trÚs largement répandus.

Pour autant, divers types d'attaque ont pu mettre au jour des failles et permettent de contourner les mécanismes de sécurité apportés par la mémoire virtuelle :

Attaque DMA

DMA est une méthode de transfert des données d'un périphérique vers la mémoire principale sans passer par le processeur, ce qui permet d'améliorer les performances de l'ordinateur[68].

Une application ne peut pas accéder à des emplacements de mémoire non explicitement autorisés par le contrÎleur de mémoire virtuelle (MMU), ceci pour prévenir les dommages que causeraient des erreurs logicielles ou des manipulations malveillantes.

Toutefois, pour permettre aux périphériques (par exemple un caméscope, une carte réseau) d'obtenir une vitesse de transfert maximale, le systÚme d'exploitation autorise un accÚs direct à la mémoire principale. Le principe de l'attaque DMA, est alors de profiter de cette vulnérabilité pour accéder directement à une partie ou à la totalité l'espace d'adressage de la mémoire physique de l'ordinateur, et réussir ainsi à lire des données, ou les corrompre[69]. Il est ainsi possible de contourner l'identification par mot de passe demandée par l'ordinateur avec l'outil Inception[70].

Contre-mesure Ă  l'attaque DMA : IOMMU

Comparaison d'une IOMMU avec la memory management unit (MMU).

Une unité de gestion de mémoire d'entrée-sortie (IOMMU) est une unité de gestion de mémoire (MMU) qui connecte un bus des périphériques d'entrées/sortie d'accÚs direct à la mémoire (DMA) à la mémoire principale. Un exemple de IOMMU est la table des adresses graphiques (GART) utilisée par les cartes graphiques AGP et PCI Express sur les architectures Intel et AMD.

Une IOMMU de la mĂȘme façon qu'une MMU, traduit les adresses virtuelles en adresses physiques[71]. C'est donc une technologie qui applique le concept de mĂ©moire virtuelle aux pĂ©riphĂ©riques.

Elle est utilisĂ©e aussi pour protĂ©ger la mĂ©moire systĂšme contre des attaques vĂ©hiculĂ©es par les pĂ©riphĂ©riques d'entrĂ©e-sortie comme l'attaque DMA. Cette protection devient critique dans les environnements virtualisĂ©s, parce que des machines virtuelles invitĂ©es partagent la mĂȘme mĂ©moire physique sur la machine hĂŽte. Une VM malveillante pourrait corrompre une autre VM par une attaque DMA[72] - [69].

L'IOMMU est composĂ© d'un ensemble de DMA Remapping Hardware Units (DRHU) qui sont responsables de la traduction des adresses des pĂ©riphĂ©riques vers des adresses physiques en mĂ©moire hĂŽte. Le DRHU identifie d'abord une demande DMA par le bus BDF-ID (Bus Device Function Number), puis il utilise le BDF-ID pour localiser les tables de page associĂ©es avec le contrĂŽleur d'entrĂ©e sortie. Finalement, il traduit l'adresse virtuelle DMA (DVA) en adresse physique hĂŽte (HPA), tout comme l'effectuerait une MMU classique. Bien que l'IOMMU offre une protection efficace contre les attaques DMA, il doit ĂȘtre configurĂ© correctement de façon Ă  prĂ©venir ces attaques. Plusieurs techniques permettent en effet de contourner les dĂ©fenses apportĂ©es par une IOMMU[73].

Par exemple, en se concentrant sur la technologie Intel VT-D, Lacombe et al. dĂ©montrent qu'aucun contrĂŽle d'intĂ©gritĂ© n'Ă©tant effectuĂ© sur le champ source-id, il est alors possible d'usurper l'identitĂ© d'un pĂ©riphĂ©rique, celui partageant le mĂȘme bus PCI Express avec tous les autres pĂ©riphĂ©riques, ils ont pu mener une attaque de type ARP-poisoning[74].

Attaque par martÚlement de mémoire

En activant certaines rangĂ©es (lignes jaunes) Ă  des frĂ©quences prĂ©cises, les valeurs des bits (lignes violettes) peuvent ĂȘtre changĂ©es.

Yoongu et al. ont dĂ©montrĂ© qu'il Ă©tait possible de profiter d'une vulnĂ©rabilitĂ© des mĂ©moires vives (DRAM), dĂ©jĂ  Ă©tudiĂ©e dans les travaux de Huang[75], pour modifier la valeur des bits mĂ©moire en sollicitant les cellules de façon rĂ©pĂ©tĂ©e. Cette faille matĂ©rielle (rowhammer bug), martĂšlement de mĂ©moire, est liĂ© Ă  la charge des condensateurs qui a sans cesse besoin d'ĂȘtre rafraĂźchie pour Ă©viter que les cellules ne passent Ă  0. En martelant certaines zones, Ă  des frĂ©quences spĂ©cifiques, des chercheurs en sĂ©curitĂ© de Project Zero de Google, Mark Seaborn et Halvar Flake, ont exploitĂ© cette particularitĂ© pour modifier les droits d'accĂšs Ă  la mĂ©moire et manipuler ainsi les donnĂ©es de diverses maniĂšres. En particulier, ils ont pu rompre l'isolement entre le mode utilisateur et le mode noyau : une application localise les cellules mĂ©moires vulnĂ©rables et force le systĂšme d'exploitation Ă  remplir la mĂ©moire physique Ă  partir des entrĂ©es de la table de page (PTE) qui dĂ©finit les stratĂ©gies d'accĂšs aux pages de mĂ©moire et de prendre le contrĂŽle d'un ordinateur[76] - [77].

D. Gruss et C. Maurice ont pu déclencher le bug rowhammer à distance avec une application sous JavaScript. Pour autant, ils n'ont pas pu s'attribuer les droits root comme Seaborn l'avait fait, ce qui fera l'objet d'études ultérieures[78].

Une autre méthode d'attaque sur les DRAMs, basée sur du reverse engineering par les chercheurs Schwartz et al. a pu permettre de voler des données sensibles d'une machine virtuelle, en utilisant du code JavaScript (Code Reverse Engineering).Ils ont également amélioré l'attaque Rowhammer et a montré que, contrairement à ce que l'on pensait auparavant, la méthode fonctionnait aussi contre des RAMs de type DDR4[76] - [79] - [80].

Contre-mesure à l'attaque par martÚlement de mémoire

La premiĂšre mĂ©thode, baptisĂ©e B-CATT (Bootloader CAn't Touch This), ne nĂ©cessite aucune modification de l'OS et peut ĂȘtre utilisĂ©e sur tous les systĂšmes x86. B-CATT localise et dĂ©sactive la mĂ©moire physique vulnĂ©rable aprĂšs l'avoir identifiĂ©e.

La seconde mĂ©thode, G-CATT (Generic CAn't Touch This), n'empĂȘche pas toutes les inversions de bits induites par une attaque Rowhammer, mais empĂȘche celles qui seraient en mesure d'affecter la mĂ©moire appartenant Ă  des domaines de sĂ©curitĂ© Ă©levĂ© comme celui du noyau.

Selon les tests effectués par les chercheurs Ferdinand Brasseur et al., ces deux méthodes n'affectent ni la performance en ce qui concerne le temps d'accÚs à la mémoire ni en ce qui concerne la stabilité du systÚme et permettraient de contrevenir à tous les types d'attaque rowhammer. Les deux mécanismes de protection n'ont eu que peu d'impact en ce qui concerne la latence et le débit sur les plateformes testées (SPEC CPU 2006 et Phoronix)[81].

ContrĂŽle d'accĂšs

En mĂȘme temps que le processeur utilise la table d'entrĂ©e de pages (PTE) pour mapper les adresses virtuelles en adresses physiques, il utilise les informations de contrĂŽle d'accĂšs (Bits de protections) de cette mĂȘme table, pour vĂ©rifier si un processus accĂšde Ă  la mĂ©moire avec les autorisations adĂ©quates.

L'accĂšs aux zones mĂ©moire peut en effet ĂȘtre restreint pour plusieurs raisons :

  • Le systĂšme d'exploitation ne permet pas Ă  un processus d'Ă©crire des donnĂ©es sur son code exĂ©cutable.
  • En revanche, les pages contenant des donnĂ©es peuvent ĂȘtre Ă©crites mais tenter d'exĂ©cuter ces mĂȘmes donnĂ©es comme du code exĂ©cutable ne doit pas ĂȘtre permis[82] - [83].

La plupart des processeurs ont au moins deux modes d'exécution: le mode noyau et le mode utilisateur. On ne doit pas permettre que le code du noyau soit exécuté par un utilisateur ou que des structures de données du noyau soit accessibles.

En mode noyau, le microprocesseur peut accĂ©der Ă  la mĂ©moire physique, mais l’accĂšs Ă  un espace d’adressage virtuel (ou Ă  toute autre zone de mĂ©moire non dĂ©finie) est interdit, il gĂ©nĂšre une interruption MMU.

En mode utilisateur, le microprocesseur peut accĂ©der Ă  la mĂ©moire virtuelle (plus prĂ©cisĂ©ment aux pages de mĂ©moire virtuelle autorisĂ©es par la MMU), mais l’accĂšs Ă  la mĂ©moire physique (ou Ă  toute autre zone de mĂ©moire non dĂ©finie) gĂ©nĂšre une interruption[84].

Chaque processus possÚde son propre espace de mémoire virtuelle (Go) qui mappe la mémoire physique par le biais des tables de pages. La mémoire virtuelle est principalement divisée en deux parties: Go pour l'utilisation du processus et Go pour l'utilisation du noyau (Pour Linux) (Pour Windows Go/Go) La plupart des données qui se trouvent dans la premiÚre partie de l'espace d'adressage représente l'espace utilisateur. La seconde partie correspond à l'espace du noyau commun à tous les processus.

64-Bit-(Page directory entry)
Bits: 63 62
 52 51
 32
Content: NX reserved Bit 51
 32 base address
Bits: 31
 12 11
 9 8 7 6 5 4 3 2 1 0
Content: Bit 31
 12 base address AVL ig 0 ig A PCD PWT U/S R/W P
  • Le Bit P indique si la page est en mĂ©moire physique.
  • Le Bit R/W indique si la page peut ĂȘtre lue ou Ă©crite.
  • Le Bit U/S indique si la page est accessible en mode utilisateur (user mode) ou en mode superviseur (supervisor mode').

Protection de la mémoire virtuelle contre un dépassement de tampon

D'aprÚs Smashing the stack for fun and profit par Elias Levy (en)[85], les attaques par débordement de tampon (buffer overflow, parfois également appelées dépassement de mémoire tampon) ont pour principe l'exécution de codes arbitraires par un programme qui remplit le tampon par plus de données qu'il ne peut en recevoir. Le systÚme d'exploitation répond alors par une erreur de segmentation, et met fin au processus en générant une exception[86] - [87].

Une parade contre l'exécution de ce code arbitraire consiste à protéger l'espace exécutable. Cette technique est implémentée sur différents systÚmes d'exploitation.

Par exemple, dans une architecture Intel, le bit 'NX' ou non exĂ©cutable bit, qui est le bit 63 des entrĂ©es de la table des pages (PTE) permet d'empĂȘcher une tentative d'exĂ©cution sur des donnĂ©es d'une page alors qu'elle est marquĂ©e comme non exĂ©cutable (no execute). Ceci permet de limiter l'exĂ©cution de codes malicieux[88].

Protection de la mémoire virtuelle contre un shellcode

A la suite d'un dĂ©passement de tampon, un shellcode peut ĂȘtre exĂ©cutĂ© pour prendre le contrĂŽle d'un ordinateur. Les chercheurs de l'universitĂ© de Colombus, Gu et al., proposent dans Malicious Shellcode Detection with Virtual Memory Snapshots une nouvelle mĂ©thode de dĂ©tection de shellcodes malveillants. Des captures instantanĂ©es (snapshots) sont prises sur les donnĂ©es et permettent une analyse en temps rĂ©el des donnĂ©es.

L'architecture mise en place repose sur trois modules :

  • Le premier module est un Analyseur de protocole qui extrait les en-tĂȘtes des messages ;
  • Le deuxiĂšme module est un Analyseur de Shellcode chargĂ© de dĂ©tecter les codes malicieux ;
  • Le troisiĂšme module est un environnement Ă©mulĂ© qui fait l'interface avec l'environnement d'exĂ©cution rĂ©Ă©l[89].

Chiffrement des Ă©changes avec la zone de Swap

Plusieurs mĂ©thodes ont Ă©tĂ© mises en avant pour renforcer les mĂ©canismes de sĂ©curitĂ© de la MMU. Le chiffrement de l'espace de swap est utilisĂ© pour protĂ©ger les informations sensibles. Pour une application qui Ă©change des mots de passe, tant que ceux-ci demeurent en mĂ©moire physique, ils seront effacĂ©s aprĂšs un redĂ©marrage. En revanche, si le systĂšme d'exploitation commence Ă  Ă©changer des pages mĂ©moire pour libĂ©rer de l'espace pour d'autres applications, les mots de passe pourront ĂȘtre Ă©crits sur l'espace disque sans ĂȘtre cryptĂ©s. Le cryptage et le dĂ©cryptage des donnĂ©es avec la zone d'Ă©change de Swap peut donc ĂȘtre une solution[90].

Gilmont et al. proposent d'implĂ©menter une architecture basĂ©e sur une unitĂ© de gestion de la sĂ©curitĂ© du matĂ©riel SMU, renforçant les mĂ©canismes de sĂ©curitĂ©, intĂ©gritĂ© et confidentialitĂ©, apportĂ©s par l'UnitĂ© de gestion de mĂ©moire classique qu'est la MMU. La SMU (Security Management Unit) permet au processeur d'exĂ©cuter du code chiffrĂ© et de manipuler des donnĂ©es chiffrĂ©es. Sa mĂ©moire interne non volatile (NVM) est utilisĂ©e pour stocker des clĂ©s de chiffrement et des donnĂ©es critiques[91] - [92].De façon Ă  ne pas perdre en performance en chiffrant toutes les donnĂ©es indistinctement, Rahmattolah Amirsoufi a mis en Ɠuvre un dispositif spĂ©cifique (ESAVM : Efficient Secure-Aware Virtual Memory) qui ne crypte et dĂ©crypte uniquement vers ou depuis la zone de swap, que les donnĂ©es spĂ©cifiquement confidentielles[93].

Consommation énergétique

Les différents états de la mémoire vive

Les différents états de la mémoire avec leurs consommations énergétiques et les délais de changement d'état pour une rangée de mémoire Micron 1GB DDR2-800.

La mémoire vive peut avoir 4 états[94] :

  • L'Ă©tat ACT : ACT est l'Ă©tat de la mĂ©moire quand elle est en cours de lecture ou d'Ă©criture ;
  • L'Ă©tat PRE : PRE lorsque la mĂ©moire est prĂȘte Ă  ĂȘtre interrogĂ©e au prochain cycle d'horloge ;
  • L'Ă©tat PD : PD ou Power Down, quand la mĂ©moire est dĂ©sactivĂ©e ;
  • L'Ă©tat SR : SR est l'Ă©tat de la mĂ©moire quand celle-ci est dĂ©sactivĂ©e ainsi que son PLL.

Les transitions entre état se font obligatoirement entre l'état PRE et un autre. Chaque état à une consommation énergétique qui lui est propre.

Comme chaque type de transition s'effectue par un temps mesurable, il a donc fallu réfléchir à diverses méthodes de gestion de la mémoire pour baisser la consommation énergétique de celles-ci.

L'enjeu est donc de trouver des méthodes qui ne ralentissent pas les durées de traitement tout en diminuant la consommation, sinon le gain énergétique sera nul.

Pour donner un ordre d'idĂ©e, la consommation Ă©lectrique de la mĂ©moire sur un serveur Ă©quipĂ© de deux processeurs Intel Xeon X5667 avec 64 Go de mĂ©moire Micron DDR2-800 est de 35 % de la consommation totale tandis que sur un smartphone Samsung Galaxy S3, elle est de 20 % en veille et 6 % tĂ©lĂ©phone actif[95].

Dans les environnements mobile

Dans les mobiles, du fait de l'alimentation sur batterie, la gestion de l'énergie est un des aspects sur lesquels travaillent le plus les constructeurs. En regardant les fiches techniques des téléphones des gammes Samsung Galaxy S ou Google Nexus, on peut constater que la quantité de mémoire a été en constante évolution depuis l'arrivée des smartphones (de 0.5 à 3 voire Go en cinq ans).

D'une maniÚre générale, pour éviter de mauvaises performances, l'utilisation du swap est désactivée sur les smartphones et un systÚme LMK (Low Memory Killer) tue les processus qui utilisent de la mémoire[96].

Consommation en environnement virtualisé

Dans un environnement virtualisé, la mémoire est gérée par l'hyperviseur, voici différentes maniÚres de gérer les mémoires :

  • ALL (Always On) - Tous les rangs de mĂ©moire sont Ă  l'Ă©tat PRE, et il n'y a aucune gestion de l’énergie, c'est le systĂšme standard;
  • PAVM (Power-Aware Virtual Memory) - Les rangs de mĂ©moire affectĂ©s Ă  des machines virtuelles sont Ă  l'Ă©tat PRE, les autres rangs sont Ă  l'Ă©tat SR ; En matiĂšre de performances, le mode PAVM permet de garder les mĂȘmes qu'en ALL, tout en rĂ©duisant dĂ©pense Ă©nergĂ©tique de 30 %
  • ODSR (On Demand Self-Refresh) - Tous les rangs sont Ă  l'Ă©tat SR, et passent Ă  l'Ă©tat PRE, puis ACT seulement en cas I/O ; Le mode ODSR est inexploitable Ă©tant donnĂ© les temps d’exĂ©cution qui sont augmentĂ©s de 565 %.
  • ODPD (On-Demand Power-Down) - Tous les rangs sont Ă  l'Ă©tat PD, et passent Ă  l'Ă©tat PRE, puis ACT seulement en cas I/O ; Avec le mode ODDP, les temps d'exĂ©cution sont augmentĂ©s de 5 %, mais la consommation est rĂ©duite de presque 60 %.
  • DPSM (Dynamic Power State Management) - Un algorithme tente de dĂ©finir le meilleur Ă©tat de la mĂ©moire ; On perd 0,6 % efficacitĂ© avec le mode DPSM, la consommation est rĂ©duite d'encore 4,4 % par apport au mode ODPD.
  • OPT (Optimised mechanism) - L'Ă©tat des rangs de mĂ©moire est dĂ©fini de maniĂšre optimisĂ©e et dynamique par des seuils ; Le mode OPT ne fait perdre que 0,2 % de temps d'exĂ©cution, tout ayant une consommation proche de celle de DPSM[97].

Il est à noter que la quantité de mémoire dans le serveur peut faire varier ses chiffres, plus il y aura de mémoire dans un serveur, plus la différence de consommation sera grande entre le mode standard ALL et les autres[98].

Rappels historiques

Le premier systĂšme intĂ©grant la mĂ©moire virtuelle est un serveur ASTRA conçu par un groupe d'IngĂ©nieurs Ă  Manchester en Angleterre en 1961. À la base de leur idĂ©e le concept "d'adresses", en effet, il devient Ă©vident Ă  cette Ă©poque que l'adresse d'un process et son emplacement physique en mĂ©moire sont deux notions Ă  considĂ©rer de maniĂšre totalement distincte.

Dans le milieu des années 1960 l'implémentation de la mémoire virtuelle dans l'architecture de la plupart des gros systÚmes est devenue trÚs courante. On la retrouve dans des ordinateurs tels que : IBM 360/85 et CDC 7600 et Burroughs B6500. Ce qui a amené les ingénieurs à trouver une solution au problÚme de taille de la Mémoire Physique c'est la complexité des programmes et l'arrivée de la multiprogrammation. En effet, les développeurs qui avaient , par le passé, à gérer les problÚmes d'allocation mémoire dans leurs programmes devaient désormais consacrer plus de temps à rendre leurs traitements plus performants et efficaces[99].

La gestion de la mĂ©moire devait donc, ĂȘtre sous traitĂ©e au MatĂ©riel : La MMU, afin qu'elle soit effectuĂ©e de maniĂšre automatique et totalement transparente pour les utilisateurs et les dĂ©veloppeurs.

Dans les années 1964 apparaissent les premiers systÚmes Multics, Ce systÚme révolutionnaire pour l'époque utilise le temps partagé, il est multiutilisateur et multitùches, Il est conçu avec un gestionnaire de mémoire virtuelle à segmentation.

Les systÚmes Multics seront vendus jusqu'en 2000 laissant la place aux systÚmes UNIX. Le systÚme BSD (Berkeley Software Distribution) fut le premier systÚme UNIX à utiliser la Mémoire Virtuelle Paginée en 1977 sur Machine VAX 11/780.

Perspectives

La gestion de la mémoire virtuelle est trÚs pratique mais a ses limites. Les systÚmes à grande capacité mémoire font peu ou pas de Swapping car ils hébergent des applications critiques qui ne peuvent se permettre d'attendre les I/O disque. Google, par exemple, a constaté qu'une latence de quelques secondes entraine une baisse du trafic utilisateur de 20 % due à une insatisfaction des usagers. Ce qui a conduit les grands sites comme Facebook, Google, Microsoft Bing et Twitter à garder les données d'interface utilisateur en mémoire[100].

L'accÚs rapide aux données en mémoire est un enjeu trÚs important pour l'avenir.

Un groupe de chercheurs pour pallier les échecs du TLB proposent pour les Big Memory Server de translater une partie des adresses virtuelles de l'espace d'adressage avec un Segment Direct. Le segment direct est peu couteux au niveau hardware et permet de faire correspondre des zones contiguës de l'espace d'adressage virtuel avec des zones contiguës de l'espace d'adressage physique.

Sur les Big Memory Server on observe 3 ÉlĂ©ments Importants :

  • La plupart de ces systĂšmes n'ont pas besoin du swapping, de la fragmentation et une protection fine comme la fournit habituellement la mĂ©moire virtuelle. L'utilisation de la mĂ©moire est stable ;
  • CoĂ»t important en temps de la gestion de la mĂ©moire par pages, des pertes importantes de performance sont provoquĂ©es par les Ă©checs de TLB ;
  • Ces systĂšmes tournent 24h/24 et 7j/7 (Ils ont peu de bĂ©nĂ©fices Ă  utiliser le gestionnaire de mĂ©moire virtuelle, car c'est au dĂ©marrage du systĂšme que le gain de temps s'effectue).
    De plus ils sont dimensionnĂ©s pour ĂȘtre en adĂ©quation avec la mĂ©moire physique. Ils ont un ou plusieurs processus primaires (ce sont ces processus qui sont les plus gros consommateurs de ressources mĂ©moire).
    Tous ces éléments font que le systÚme de Gestion de la mémoire virtuelle par page n'est pas adaptée et réduit l'efficacité sur ces Gros SystÚmes[100].

Big Memory Server

Sur les anciennes machines avec processeur 32 bits, la taille de page mémoire était de ko. Mais les nouveaux systÚmes, permettent de gérer des pages de plus grande taille, par exemple des pages de Go. Les serveurs qui nécessitent de grandes quantités de mémoire RAM (Big Memory), et qui sont trÚs gourmands en mémoire telles que les bases de données, les applications à hautes performances utilisées par exemple dans le big data peuvent utiliser des larges pages appelées encore huge pages pour Linux, large pages Windows, super page pour BSD. L'utilisation des pages de grande taille limite les échecs (TLB miss) lors de la recherche des pages en mémoire cache de la TLB. En effet, quand la taille d'une page est grande, une seule entrée du tampon TLB correspond à une grande portion de mémoire.

Dans Large Pages on Steroids: Small Ideas to Accelerate Big Memory Applications D. Jung, S. Li, J. Ho Ahnn révÚlent que pour les Big Memory Serveurs la solution pour rendre la gestion de la mémoire plus performante est l'implémentation des larges pages ou bien la segmentation directe[101].

RTMMU

Bönhert et Scholl ont mis au point une nouvelle technique le RTMMU (Real Time MMU), elle combine la gestion dynamique de mémoire et la gestion de la mémoire virtuelle dans un contexte de systÚme en temps réel. Cette approche est conçue pour des systÚmes qui ont de fortes contraintes de délais. Il fournit à l'usager la flexibilité des deux, la gestion dynamique et la gestion virtuelle de la mémoire.

Cette technique est basée sur un nouveau composant du systÚme d'exploitation et un nouveau matériel, le gestionnaire de mémoire virtuelle temps-réel : RTMMU. C'est un composant qui se situe entre la CPU et la Mémoire Centrale.

Son but est de[102] :

  • s'adapter aux changements dynamiques du systĂšme ;
  • d'avoir une gestion optimisĂ©e et rationnelle de la mĂ©moire (rĂ©duire le temps d'inutilisation de la mĂ©moire) ;
  • d'implĂ©menter la gestion de la mĂ©moire virtuelle qui permet, la protection de la mĂ©moire et prĂ©vient la fragmentation de la mĂ©moire physique ;

Les résultats expérimentaux décrits dans A Dynamic Virtual Memory Management under Real-Time Constraints () démontrent la faisabilité de ce concept et confirment un temps constant en matiÚre de gestion des opérations mémoire et une réduction de l'empreinte mémoire.

Voici les résultats obtenus à la suite des tests :

RTMMU Traditionnel
Programmes Allocation DĂ©sallocation Memory FootPrint Allocation DĂ©sallocation Memory Footprint
Synthetic 339 945 2791 237 4 145 462 180 132
Avconv 327 547 621 233 2 263 781
FFT 326 524 6 263 233 94 305 6 263
mc 336 747 206 232 2 899 292 96 035
sharpSAT 327 702 4 522 233 73 454 4 718
PHP 322 437 476 233 1 423 306 476

Distributed Shared Virtual Memory (DSVM)

Mémoire Virtuelle Partagée.

C'est en 1986, que Kai Li (en) a publié un thÚse de doctorat, Shared Virtual Memory on Loosely Coupled Microprocessors ouvrant ainsi un champ de récherche sur ce qui est convenu d'appeler le DSVM (en)[103].

Dans les systĂšmes distribuĂ©s, les diffĂ©rentes mĂ©moires physiques sont logiquement partagĂ©es sur un grand espace d'adressage (mĂ©moire virtuelle). Ainsi, les processus en cours accĂšdent Ă  la mĂ©moire physique Ă  travers ces espaces d'adresses logiquement partagĂ©s. Le modĂšle de mĂ©moire partagĂ©e fournit un espace d'adressage virtuel partagĂ© entre tous les nƓuds. Le terme «partagé» ne signifie pas qu'il existe une seule mĂ©moire centralisĂ©e, mais essentiellement que c'est l'espace d'adressage qui est partagĂ©. (la mĂȘme adresse physique sur deux processeurs fait rĂ©fĂ©rence au mĂȘme emplacement en mĂ©moire).

La performance dans les architectures distribuĂ©es avec DSVM (en) est un problĂšme dĂ©licat, de nombreux chercheurs ont cherchĂ© Ă  amĂ©liorer les problĂšmes de latence et de congestion car la DSVM utilise le rĂ©seau pour Ă©changer des pages entre diffĂ©rents nƓuds[104].

DiffĂ©rentes approches sont utilisĂ©es pour amĂ©liorer la performance de cette architecture. La mĂ©thode est basĂ©e sur la division des nƓuds du systĂšme en diffĂ©rents groupes (clusters), chaque cluster comprend un nƓud maĂźtre qui gĂšre certaines fonctionnalitĂ©s au travers d'un nouvel algorithme permettant de dĂ©tecter l'Ă©tat de la mĂ©moire du systĂšme et de distribuer des pages sur tous les nƓuds, effectuant ainsi une rĂ©partition de charge Ă©quilibrĂ©e[105].

Remote Memory Model

Les systÚmes qui utilisent les mécanismes de la mémoire virtuelle utilisent des disques comme support de stockage.

Au lieu de connecter un disque à chaque station de travail, les systÚmes distribués permettent aux clients sans disque (en),de partager une ressource de stockage sur un serveur via le réseau. Le modÚle de mémoire à distance (Remote Memory Model) fournit une nouvelle base pour l'architecture des systÚmes distribués.Le modÚle se compose de plusieurs machines clientes, de différentes machines serveurs, d'une ou plusieurs machines dédiées appelées serveurs de mémoire à distance et d'un canal de communication interconnectant toutes les machines.Pour améliorer les performances des échanges (délai) entre les clients et le serveur de mémoire à distance, on utilise un protocole de communication Xinu Paging Protocol (XPP), et Negative Acknowledgement Fragmentation Protocol (NAFP)[106].

Ce mĂȘme principe est employĂ© dans les Ă©quipements mobiles et les systĂšmes embarquĂ©s possĂ©dant une connexion rĂ©seau. La spĂ©cificitĂ© pour ces matĂ©riels Ă©tant de fonctionner avec des ressources mĂ©moires restreintes. L'implĂ©mentation de la NVM (Network Virtual Memory) offre des contraintes quant Ă  la rapiditĂ© de liens[107].

Bibliographie

Publications historiques

  • (en) Peter J. Denning, « Virtual Memory in computing Survey », ACM Computing survey, vol. 2, no 3,‎ , p. 153-180 (ISSN 0360-0300, DOI 10.1145/356571.356573)
  • (en) Peter J. Denning, « Virtual Memory », ACM Computing survey, vol. 28, no 1,‎ , p. 213-216 (ISSN 0360-0300, DOI 10.1145/234313.234403)
  • (en) Irving L. Traiger, « Virtual Memory Management for Database System », ACM SIGOPS Operating Systems Review, vol. 16, no 4,‎ , p. 26-48 (ISSN 0163-5980, DOI 10.1145/850726.850729)
  • (en) Shin-Jeh Chang et P.T. Zacharias Kapauan, « Modeling and analysis of using memory management unit to improve software reliability », IEEE Software reliability Engeneering,‎ (ISSN 1071-9458, DOI 10.1109/ISSRE.2001.989462)
  • (en) A. Bensoussan, C.T. Clingen et R.C. Daley, « The Multics Virtual Memory : Concept and Design », ACM, vol. 5, no 5,‎ , p. 308-318 (ISSN 0001-0782, DOI 10.1145/355602.361306)

Publications relatives Ă  la mise en Ɠuvre de la gestion de la mĂ©moire virtuelle

  • (en) Bruce Jacob, « Virtual Memory Issues of Implementation Computing Practices », Computer, IEEE,‎ , p. 33-43 (ISSN 0018-9162, DOI 10.1109/2.683005, lire en ligne)
  • (en) Allen B. Tucker, Computer Science Handbook, Second Edition, CRC Press, , 2752 p. (ISBN 0-203-49445-8, lire en ligne)
  • (en) David A Patterson et John L Hennessy, Computer organization and design : the hardware/software interface, , 914 p. (ISBN 978-0-08-088613-8, lire en ligne)
  • (en) Linda Null et Julia Lobur, The Essentials of Computer Organization and Architecture, , 799 p. (ISBN 978-0-7637-3769-6, lire en ligne)
  • (en) Editions ENI, L'Ordinateur portable : dĂ©couverte & premier pas, Editions ENI, , 208 p. (ISBN 978-2-7460-4252-0 et 2-7460-4252-5, lire en ligne)
  • (en) Scott Mueller, Le PC : Architecture, maintenance et mise Ă  niveau, Pearson Education France, , 1223 p. (ISBN 978-2-7440-4087-0 et 2-7440-4087-8, lire en ligne)
  • (en) Lei Yang, Transparent Memory Hierarchy Compression and Migration, ProQuest, (ISBN 978-0-549-89746-0 et 0-549-89746-1, lire en ligne)
  • (en) William Stallings, Operating Systems : Internals and Design Principles., (ISBN 978-0-13-380591-8)
  • (en) Jerome H. Saltzer et M. Frans Kaashoek, Principles of Computer System Design : An Introduction, Morgan Kaufmann, , 560 p. (ISBN 978-0-08-095942-9 et 0-08-095942-3, lire en ligne)
  • JoĂ«lle Delacroix, Linux - 4e Ă©d. Programmation systĂšme et rĂ©seau : Cours et exercices corrigĂ©s, dunod, , 384 p. (ISBN 978-2-10-074855-6, lire en ligne)
  • (en) Mohamed Rafiquzzaman, Microprocessors and Microcomputer-Based System Design, CRC Press, , 800 p. (ISBN 0-8493-4475-1, lire en ligne)
  • (en) Wai-Kai Chen, Memory, Microprocessor, and ASIC, CRC Press, , 384 p. (ISBN 0-203-01023-X, lire en ligne)
  • (en) Peter J. Denning, Virtual Memory, Denninginstitute, (lire en ligne)
  • Alain Cazes et JoĂ«lle Delacroix, Architecture des machines et des systĂšmes informatiques - 5e Ă©d., Dunod, , 544 p. (ISBN 978-2-10-073771-0 et 2-10-073771-6, lire en ligne)
  • StĂ©phane Gill et Mohand Atroun, Linux pour tous, Presses UniversitĂ© Laval, , 218 p. (ISBN 978-2-7637-8507-3 et 2-7637-8507-7, lire en ligne)
  • (en) Avi Silberschatz, Peter Galvin et Greg Gagne, Operating System Concepts, (ISBN 978-1-118-06333-0, lire en ligne), p. 1 - 1 Document utilisĂ© pour la rĂ©daction de l’article
  • GĂ©rard Blanchet et Bertrand Dupouy, Architecture des ordinateurs : principes fondamentaux, Paris, HermĂšs science publications-Lavoisier, , 365 p. (ISBN 978-2-7462-3914-2), p. 1 - 1 Document utilisĂ© pour la rĂ©daction de l’article
  • (en) M. Milenkovic, « Microprocessor memory management units », IEEE,‎ , p. 77 (ISSN 0272-1732, DOI 10.1109/40.52948)
  • (en) W. Barr, « Translation Caching: Skip, Don’t Walk (the Page Table) », Sigarch Comput. Archit. News, ACM,‎ , p. 48 (ISSN 0163-5964, DOI 10.1145/1816038.1815970)
  • (en) M. Talluri, « A new page table for 64-bit address spaces », Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles, ACM,‎ , p. 184-200 (ISBN 0-89791-715-4, DOI 10.1145/224057.224071)
  • (en) Timo O. Alanko1983 et A.Inkeri Verkamo, « Segmentation, paging and optimal page sizes in virtual memory », ELSEVIER,‎ (ISSN 0167-7136, DOI 10.1016/0167-7136(83)90150-6)
  • (en) Anton M. van Wezenbeek et Willem Jan Withagen, « A survey of memory management », Elsevier,‎ (ISSN 0165-6074, DOI 10.1016/0165-6074(93)90254-I)
  • (en) Niels Provos, Encrypting Virtual Memory, Usenix, (lire en ligne)
  • (en) AMD, AMD64 Architecture Programmer’s Manual Volume 2 : System Programming, AMD, (lire en ligne)
  • (en) Intel, IntelÂź 64 and IA-32 Architectures Software Developer’s Manual, Intel (lire en ligne)
  • (en) Peter J. Denning, Virtual Memory, denninginstitute, (lire en ligne)

Publications relatives Ă  la performance

  • (en) Seunghoon Yoo, « An efficient page replacement algorithm for PCM-based mobile embedded systems », 2016 17th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing (SNPD), IEEE,‎ , p. 183-188 (DOI 10.1109/SNPD.2016.7515898, lire en ligne)
  • (en) Geunsik Lim, « Virtual memory partitioning for enhancing application performance in mobile platforms », IEEE Transactions on Consumer Electronics, IEEE,‎ , p. 786-794 (ISSN 0098-3063, DOI 10.1109/TCE.2013.6689690, lire en ligne)
  • (en) Eyad Alkassar et Ernie Cohen, « Verifying shadow page table algorithms », Software : IEEE,‎ , p. 267 - 270 (ISBN 978-0-9835678-0-6, lire en ligne)
  • (en) Liu Haikun et Liao Xiaofei, « Hotplug or Ballooning: A Comparative Study on Dynamic Memory Management Techniques for Virtual Machines », IEEE Transactions on Parallel and Distributed Systems, IEEE,‎ , p. 1350-1363 (ISSN 1045-9219, DOI 10.1109/TPDS.2014.2320915)
  • (en) M.L. Chiang, C.J. Yang et S.W. Tu, « Kernel mechanisms with dynamic task-aware scheduling to reduce resource contention in NUMA multi-core systems », Journal of Systems and Software, Elsevier,‎ , p. 72 - 87 (ISSN 0164-1212, DOI 10.1016/j.jss.2016.08.038)
  • (en) Zhang Pengfei et Chu Rui, « SwapCached: An Effective Method to Promote Guest Paging Performance on Virtualization Platform », 2013 IEEE Seventh International Symposium on Service-Oriented System Engineering, IEEE,‎ , p. 379-384 (ISBN 978-1-4673-5659-6, DOI 10.1109/SOSE.2013.62)
  • (en) Srividya et Dinakar, « Optimize In-kernel swap memory by avoiding duplicate swap out pages », 2016 International Conference on Microelectronics, Computing and Communications (MicroCom), IEEE,‎ , p. 1-4 (DOI 10.1109/MicroCom.2016.7522551)
  • (en) Apam Qasem et Josh Magee, « Improving TLB performance on current chip multiprocessor architectures through demand-driven superpaging », Software : practice and experience,‎ , p. 705-729 (ISSN 0038-0644, DOI 10.1002/spe.2128)
  • (en) Abraham Silberschatz, Peter B. Galvin et Greg Gagne, Operating System Concepts, Seventh Edition, 7th Edition, (ISBN 0-201-50480-4, lire en ligne)
  • (en) Peter J. Denning, « Thrashing: its causes and prevention », Proceedings of the December 9-11, 1968, Fall Joint Computer Conference, Part I, ACM,‎ (DOI 10.1145/1476589.1476705)
  • (en) Peter J. Denning et Stuart C. Schwartz, Properties of the Working-Set Model, ACM, (DOI 10.1145/361268.361281, lire en ligne), p. 191-198
  • (en) Godbole, Operating System 3E, Tata McGraw-Hill Education, , 665 p. (ISBN 978-1-259-08399-0 et 1-259-08399-3, lire en ligne)
  • (en) Ganesh Chandra Deka, Handbook of Research on Securing Cloud-Based Databases with Biometric Applications, IGI Global, , 434 p. (ISBN 978-1-4666-6560-6 et 1-4666-6560-2, lire en ligne)
  • (en) Teofilo Gonzalez, Jorge Diaz-Herrera et Allen Tucker, Computing Handbook, Third Edition : Computer Science and Software Engineering, CRC Press, , 2326 p. (ISBN 978-1-4398-9853-6 et 1-4398-9853-7, lire en ligne)
  • (en) Apple, Memory Usage Performance Guidelines, Apple, (lire en ligne)
  • (en) Jonathan Levin, No pressure, Mon! : Handling low memory conditions in iOS and Mavericks, newosxbook, (lire en ligne)
  • (en) Jonathan Levin, Mac OS X and iOS Internals : To the Apple's Core, Wrox, , 828 p. (ISBN 978-1-118-05765-0, lire en ligne)
  • (en) James J. Jong Hyuk Park, Yi Pan, Han-Chieh Chao et Gangman Yi, Ubiquitous Computing Application and Wireless Sensor : UCAWSN-14, Springer, , 742 p. (ISBN 978-94-017-9618-7 et 94-017-9618-1, lire en ligne)
  • (en) Kan Zhong, Duo Liu, Tianzheng Wang, Xiao Zhu, Linbo Long, Weichan Liu, Shao Zili et Edwin H.-M. Sha, « Building high-performance smartphones via non-volatile memory: the swap approach », Proceedings of the 14th International Conference on Embedded Software, ACM,‎ , p. 1-14 (ISBN 978-1-4503-3052-7, DOI 10.1145/2656045.2656049)
  • (en) Mauro Conti, Matthias Schunter et Ioannis Askoxylakis, Trust and Trustworthy Computing - 8th International Conference, TRUST 2015, Heraklion, Greece, August 24-26, 2015, Proceedings, springer, , 328 p. (ISBN 978-3-319-22846-4 et 3-319-22846-3, lire en ligne)

Publications relatives au gestionnaire de mémoire dans un environnement virtualisé

  • (en) Vmware, Understanding Memory Resource Management in VMwareÂź ESXℱ Server, Vmware, (lire en ligne)
  • (en) Xiaolin Wang, Jiarui Zang, Zhenlin Wang et Yingwei Luo, « Revisiting memory management on virtualized environments », ACM Trans. Archit. Code Optim., ACM,‎ , Volume 10 NumĂ©ro 4 (ISSN 1544-3566, DOI 10.1145/2541228.2555304)
  • (en) Xiaolin Wang, Jiarui Zang, Zhenlin Wang, Yingwei Luo et Xiamonig Li, « Selective Hardware/Software Memory Virtualization », SIGPLAN Not., ACM,‎ , p. 217-226 (ISSN 0362-1340, DOI 10.1145/2007477.1952710)
  • (en) Jayneel Gandhi, Basu Arkaprava, Mark D. Hill et Michael M. Swift, « Efficient Memory Virtualization: Reducing Dimensionality of Nested Page Walks », 2014 47th Annual IEEE/ACM International Symposium on Microarchitecture, IEEE,‎ , p. 1-12 (ISSN 1072-4451, DOI 10.1109/MICRO.2014.37)

Publications relatives à la sécurité

  • (en) A. F. Harvey, DMA Fundamentals on Various PC Platforms, UMASS Boston, (lire en ligne)
  • (en) Ole Henry Halvorsen et Douglas Clarke, OS X and iOS Kernel Programming, apress, , 484 p. (ISBN 978-1-4302-3537-8 et 1-4302-3537-3, lire en ligne)
  • (en) Paul Willmann et Scott Rixner, Protection Strategies for Direct Access to Virtualized I/O Devices, Usenix, (lire en ligne)
  • (en) Miroslaw Kutylowski et Jaideep Vaidya, Computer Security : ESORICS 2014, springer, , 545 p. (ISBN 978-3-319-11203-9 et 3-319-11203-1, lire en ligne)
  • (en) Fernand Lone Sang, Eric Lacombe, Vincent Nicomette et Yves Deswarte, Analyse de l’efficacitĂ© fournie par une IOMMU, Symposium sur la sĂ©curitĂ© des technologies de l'information et des communications, (lire en ligne)
  • (en) Huang, « Alternate hammering test for application-specific DRAMs and an industrial case study », IEEE,‎ , p. 1012-1017 (ISBN 978-1-4503-1199-1, lire en ligne)
  • (en) Yoongu Kim, Ross Daly, Jeremie Kim, Chris Fallin, Ji Hye Lee, Donghyuk Lee, Chris Wilkerson, Konrad Lai et Onur Mutlu, « Flipping Bits in Memory without accessing them », 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA), IEEE,‎ , p. 361-372 (ISSN 1063-6897, DOI 10.1109/ISCA.2014.6853210)
  • (en) Amirsoufi Rahmatollah, « Efficient Security-Aware Virtual Memory Management », IEEE,‎ , p. 208-211 (ISBN 978-1-4244-5330-6, DOI 10.1109/SoCPaR.2009.50)
  • (en) Patterson, « Computer Organization and Design: The Hardware/Software Interface Revised », Elsevier,‎ , p. 508-509 (ISBN 0080550339, lire en ligne)
  • (en) Gu, Xiaole Bai, Zhimin Yang, Adam C. Champion et Dong Xuan, « Malicious Shellcode Detection with Virtual Memory Snapshots », 2010 Proceedings IEEE INFOCOM, IEEE,‎ (ISSN 0743-166X, DOI 10.1109/INFCOM.2010.5461950, lire en ligne)
  • (en) Hector Marco Gisbert et Ismael Ripol, « On the Effectiveness of NX, SSP, RenewSSP, and ASLR against Stack Buffer Overflows », 2014 IEEE 13th International Symposium on Network Computing and Applications, IEEE,‎ , p. 145 - 152 (DOI 10.1109/NCA.2014.28)
  • (en) Tanguy Gilmont, Jean-Didier Legat et Jean-Jacques Quisquater, « Architecture of security management unit for safe hosting of multiple agents », Proc. SPIE, SPIE,‎ (DOI 10.1117/12.344697)
  • (en) Tanguy Gilmont, Jean-Didier Legat et Jean-Jacques Quisquater, « Enhancing security in the memory management unit », Proceedings 25th EUROMICRO Conference. Informatics: Theory and Practice for the New Millennium, IEEE,‎ (ISSN 1089-6503, DOI 10.1109/EURMIC.1999.794507)
  • (en) « Advanced Micro Devices, Inc.; Patent Issued for Input/Output Memory Management Unit with Protection Mode for Preventing Memory Access by I/O Devices », ProQuest,‎
  • (en) Alex Markuze, Adam Morrison et Dan Tsafrir, « True IOMMU Protection from DMA Attacks: When Copy is Faster than Zero Copy », SIGARCH Comput. Archit. News, ACM,‎ (ISSN 0163-5964, DOI 10.1145/2954680.2872379)
  • (en) Dongkyun Ahn et Gyungho Lee, « Countering code injection attacks with TLB and I/O monitoring », 2010 IEEE International Conference on Computer Design, IEEE,‎ (ISSN 1063-6404, DOI 10.1109/ICCD.2010.5647696)
  • (en) Seongwook Jin et Jaehyuk Huh, « Secure MMU: Architectural support for memory isolation among virtual machines », 2011 IEEE/IFIP 41st International Conference on Dependable Systems and Networks Workshops (DSN-W), IEEE,‎ , p. 1-6 (ISSN 2325-6648, DOI 10.1109/DSNW.2011.5958816)
  • (en) Boxuan Gu et Xiaole Bai, « Malicious Shellcode Detection with Virtual Memory Snapsh », 2010 Proceedings IEEE INFOCOM, IEEE,‎ , p. 1 - 9 (ISSN 0743-166X, DOI 10.1109/INFCOM.2010.5461950)
  • (en) Mark Seaborn et Thomas Dullien, Exploiting the DRAM rowhammer bug to gain kernel privileges, Google, (lire en ligne)
  • (en) Daniel Gruss, ClĂ©mentine Maurice et Stefan Mangard, Rowhammer.js : A Remote Software-Induced Fault Attack in JavaScript, Cornell University Library, (lire en ligne)
  • (en) Mark Seaborn et Thomas Dullien, Exploiting the DRAM rowhammer bug to gain kernel privileges, blackhat, (lire en ligne)
  • (en) Michael Schwarz, DRAMA : Exploiting DRAM Buffers for Fun and Profit, blackhat, (lire en ligne)
  • (en) Peter Pessl, Daniel Gruss, ClĂ©mentine Maurice, Michael Schwarz et Stefan Mangard, DRAMA : Exploiting DRAM Addressing for Cross-CPU Attacks, Usenix, (lire en ligne)
  • (en) Ferdinand Brasser, Lucas Davi, David Gens, Christopher Liebchen et Ahmad-Reza Sadeghi, CAn't Touch This : Practical and Generic Software-only Defenses Against Rowhammer Attacks, Cornell University Library, (lire en ligne)
  • (en) Bill Blunden, The Rootkit Arsenal : Escape and Evasion, Jones & Bartlett Publishers, (ISBN 978-0-7637-8284-9 et 0-7637-8284-X, lire en ligne)
  • Alain Bron, SystĂšmes d'exploitation 2.8, Lulu.com, (ISBN 978-1-326-73267-7 et 1-326-73267-6, lire en ligne)
  • (en) Jonathan Corbet, Alessandro Rubini et Greg Kroah-Hartman, Linux Device Drivers : Where the Kernel Meets the Hardware, O'Reilly, , 640 p. (ISBN 0-596-55538-5, lire en ligne)
  • (en) Elias Levy, Smashing The Stack For Fun And Profit, (lire en ligne)
  • (en) Aaron R. Bradley, Programming for Engineers : A Foundational Approach to Learning C and Matlab, springer, , 238 p. (ISBN 978-3-642-23303-6 et 3-642-23303-1, lire en ligne)
  • Jean-François Pillou et Jean-Philippe Bay, Tout sur la sĂ©curitĂ© informatique 4e Ă©dition, dunod, , 276 p. (ISBN 978-2-10-074609-5 et 2-10-074609-X, lire en ligne)
  • CĂ©dric Llorens, Laurent Levier, Denis Valois et Benjamin Morin, Tableaux de bord de la sĂ©curitĂ© rĂ©seau, eyrolles, , 562 p. (ISBN 978-2-212-08415-3 et 2-212-08415-3, lire en ligne)

Publications relatives à la consommation énergétique

  • (en) Benjamin Lee, « Architecting phase change memory as a scalable dram alternative », SIGARCH Comput. Archit. News, ACM,‎ (ISSN 0163-5964, DOI 10.1145/1555815.1555758)
  • (en) Moinuddin Qureshi, « Scalable high performance main memory system using phase-change memory technology », Sigarch Comput. Archit. News, ACM,‎ (ISSN 0163-5964, DOI 10.1145/1555815.1555760)
  • (en) Ping Zhou, « A durable and energy efficient main memory using phase change memory technology », Sigarch Comput. Archit. News, ACM,‎ (ISSN 0163-5964, DOI 10.1145/1555815.1555759)
  • (en) Mohammad A. Ewais et Mohamed A. Omran, « A virtual memory architecture to enhance STT-RAM performance as main memory », 2016 IEEE Canadian Conference on Electrical and Computer Engineering (CCECE), IEEE,‎ , p. 1 - 6 (DOI 10.1109/CCECE.2016.7726657)
  • (en) Yunjoo Park et Hyokyung Bahn, « Management of Virtual Memory Systems under High Performance PCM-based Swap Devices », 2015 IEEE 39th Annual Computer Software and Applications Conference, IEEE,‎ , p. 764 - 772 (DOI 10.1109/COMPSAC.2015.136)
  • (en) Su-Kyung Yoon et Do-Heon Lee, « Designing virtual accessing adapter and non-volatile memory management for memory-disk integrated system », 2014 IEEE/ACIS 13th International Conference on Computer and Information Science (ICIS), IEEE,‎ , p. 99 - 104 (DOI 10.1109/ICIS.2014.6912115)
  • (en) Han-Lin Li, « Energy-Aware Flash Memory Management in Virtual Memory System », IEEE Transactions on Very Large Scale Integration (VLSI) Systems, IEEE,‎ , p. 952 - 964 (ISSN 1063-8210, DOI 10.1109/TVLSI.2008.2000517)
  • (en) Xiangrong Zou et Peter Petrov, « Heterogeneously tagged caches for low-power embedded systems with virtual memory support », ACM Trans. Des. Autom. Electron. Syst., ACM,‎ (ISSN 1084-4309, DOI 10.1145/1344418.1344428)
  • (en) Xiangrong Zou et Peter Petrov, « Direct address translation for virtual memory in energy-efficient embedded systems », ACM Trans. Embed. Comput. Syst., ACM,‎ (ISSN 1539-9087, DOI 10.1145/1457246.1457251)
  • (en) Xiangrong Zou et Peter Petrov, « Low-power and real-time address translation through arithmetic operations for virtual memory support in embedded systems », IET Computers Digital Techniques, IEEE,‎ , pp.75-85 (ISSN 1751-8601, DOI 10.1049/iet-cdt:20070090)
  • (en) Mickael Lanoe et Eric Senn, « Energy modeling of the virtual memory subsystem for real-time embedded systems », 2010 Conference on Design and Architectures for Signal and Image Processing (DASIP), IEEE,‎ (DOI 10.1109/DASIP.2010.5706244)
  • (en) Lei Ye, Chris Gniady et John H. Hartman, « Energy-efficient memory management in virtual machine environments », 2011 International Green Computing Conference and Workshops, IEEE,‎ , p. 1-8 (DOI 10.1109/IGCC.2011.6008556)
  • (en) Kan Zhong, Duo Liu, Liang Liang, Xiao Zhu, Linbo Long et Yi Wang, « Energy-Efficient In-Memory Paging for Smartphones », IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, IEEE,‎ , p. 1-14 (ISSN 0278-0070, DOI 10.1109/TCAD.2015.2512904)
  • (en) Aaron Carroll et Gernot Heiser, « The systems hacker's guide to the galaxy energy usage in a modern smartphone », Proceedings of the 4th Asia-Pacific Workshop on Systems, ACM,‎ , p. 1-14 (ISBN 978-1-4503-2316-1, DOI 10.1145/2500727.2500734)

Publications relatives aux nouvelles techniques de la gestion de la mémoire

  • (en) Kathryn S. McKinley, « Next Generation Virtual Memory Management », Sigplan Not., ACM,‎ , Pages 107-107 (ISSN 0362-1340, DOI 10.1145/3007611.2892244)
  • (en) Daejin Jung, Sheng Li et Jung Ho Ahn, « Large Pages on Steroids: Small Ideas to Accelerate Big Memory Applications », IEEE Computer Architecture Letters, IEEE,‎ , p. 1 - 1 (ISSN 1556-6056, DOI 10.1109/LCA.2015.2495103)
  • (en) Martin Bonhert et Cristoph Choll, « A dynamic virtual memory management under real-time constraints », 2014 IEEE 20th International Conference on Embedded and Real-Time Computing Systems and Applications, IEEE,‎ , p. 1-10 (ISSN 2325-1271, DOI 10.1109/RTCSA.2014.6910522)
  • (en) Xialoin Wang, Lingmei Weng et Zhenlin Wang, « Revisiting memory management on virtualized environments », ACM Trans. Archit. Code Optim., ACM,‎ (ISSN 1544-3566, DOI 10.1145/2541228.2555304)
  • (en) James E. Smith et Ravi Nair, « Versatile Platform for System and Processes », Elsevier,‎ , Chapitre 8.3.1 pages 397-410 (ISBN 978-1-55860-910-5)
  • (en) Liu Lei, Li Yong et Ding Chen, « Rethinking Memory Management in Modern Operating System: Horizontal, Vertical or Random? », IEEE Transactions on Computers, IEEE,‎ , p. 1921 - 1935 (ISSN 0018-9340, DOI 10.1109/TC.2015.2462813)
  • (en) Sudarsun Kannan, Ada Gavrilovska, Karsten Schwan et Dejan Milojicic, « Optimizing Checkpoints Using NVM as Virtual Memory », 2013 IEEE 27th International Symposium on Parallel and Distributed Processing, IEEE,‎ , p. 29-40 (ISSN 1530-2075, DOI 10.1109/IPDPS.2013.69)
  • (en) Carter, « Distributed shared memory: where we are and where we should be headed », Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V), IEEE,‎ (DOI 10.1109/HOTOS.1995.513466)
  • (en) Gerndt, « A rule-based approach for automatic bottleneck detection in programs on shared virtual memory systems », Proceedings Second International Workshop on High-Level Parallel Programming Models and Supportive Environments, IEEE,‎ , p. 93-101 (DOI 10.1109/HIPS.1997.582960)
  • (en) Saed, « A novel approach to enhance distributed virtual memory », A novel approach to enhance distributed virtual memory, Elsevier,‎ , p. 388-398 (ISSN 0045-7906, DOI 10.1016/j.compeleceng.2011.11.006)
  • (en) Arkaprava Basu, Jayneel Gandhi, Jichuan Chang, Mark D. Hill et Michael M. Swift, « Efficient virtual memory for big memory servers », SIGARCH Comput. Archit. News, ACM,‎ , p. 238 (ISSN 0163-5964, DOI 10.1145/2508148.2485943)
  • (en) Douglas Comer, A New Design for Distributed Systems : The Remote Memory Model, University of Kentucky Laboratory for Advanced Networking, , 15 p. (lire en ligne)
  • (en) Emanuele Lattanzi, Andrea Acquaviva et Alessandro Bogliolo, « Proximity services supporting network virtual memory in mobile devices », Proceedings of the 2Nd ACM International Workshop on Wireless Mobile Applications and Services on WLAN Hotspots, ACM,‎ , p. 1 (ISBN 1-58113-877-6, DOI 10.1145/1024733.1024749)

Notes et références

  1. Tucker 2004, p. 85-2
  2. Denning 1996, p. 213
  3. Null 2006, p. 342
  4. ENI 2008, p. 24
  5. Mueller 2008, p. 334
  6. Silberschatz, p. 25
  7. Saltzer 2009, p. 248
  8. Delacroix 2016, p. 143
  9. Denning 1996, p. 4
  10. Rafiquzzaman 1995, p. 476
  11. Denning 2014, p. 9 - 54.6.1
  12. Chen 2003, p. 11-12
  13. Jacob, p. 35
  14. Cazes 2015, p. 374
  15. Cazes 2015, p. 370
  16. Gill 2007, p. 199
  17. Bron 2016, p. 39
  18. Silberschatz, p. 321
  19. Silberschatz 2004, p. 466
  20. Bron 2016, p. 38
  21. Denning 1970, p. 186
  22. Milenkovic 2002, p. 77
  23. Silberschatz, p. 295
  24. Milenkovic 2002, p. 71
  25. Stallings 2014
  26. Silberschatz 2004, p. 293
  27. Talluri 1995, p. 184
  28. Barr 2010, p. 48
  29. amd 2013, p. 132
  30. Intel 2016, p. Chapitre 4.4.1 Figure 4.8
  31. Jacob, p. 36
  32. Denning 2008, p. 7
  33. Denning 1996, p. 216
  34. Silberschatz 2004, p. 323
  35. Denning 1968, p. 912-922
  36. Denning 1972, p. 191-198
  37. Denning 1970, p. 180
  38. Denning 1970
  39. Godbole 2011, p. 339
  40. Chiang 2016, p. 72-87
  41. Smith 2005, p. 397-410
  42. Vmware 2009, p. 4
  43. Alkassar 2010, p. 267
  44. Conti 2015, p. 263
  45. Wang 2011, p. 217
  46. Memory balloon
  47. Haikun 2015, p. 2
  48. Pengfei 2013, p. 379
  49. Pengfei 2013, p. 379-384
  50. Backing store
  51. Apple 2013, p. 1
  52. Levin 2013, p. 1
  53. Levin 2012, p. 140
  54. Levin 2012, p. 546
  55. Park 2015, p. 144
  56. Geunsik 2013, p. 786,793
  57. Yoo 2016, p. 183
  58. Zhong 2014, p. 10
  59. Deka 2014, p. 480
  60. Sviridya 2016, p. 1-4
  61. Lee 2009, p. 2
  62. Qureshi 2009, p. 24
  63. Zhou 2009, p. 14
  64. Ewais 2016, p. 1
  65. Park 2015-2, p. 764-772
  66. Yoon 2014, p. 99- 104
  67. Li 2008, p. 952-964
  68. Harvey 1991, p. 1-19
  69. Markuze 2016, p. 249
  70. Outil Inception
  71. Halvorsen 2011, p. 198
  72. Willmann 2008, p. 1
  73. Kutylowski 2014, p. 219
  74. Sang 2010, p. 1-26
  75. Huang 2012, p. 1012-1017
  76. Seaborn 2015, p. 1-71
  77. Seaborn 2015-2, p. 1
  78. Gruss 2015, p. 7
  79. Schwarz 2016, p. 1-85
  80. Pessl 2016, p. 1-18
  81. Brasser 2016, p. 9
  82. Blunden 2009, p. 91
  83. Jacob, p. 34
  84. Bron 2016, p. 32
  85. Levy 1996, p. 1-28
  86. Bradley 2011, p. 12
  87. Pillou 2016, p. 72
  88. Llorens 2010, p. 445
  89. Gu 2010, p. 4
  90. Provos 2000, p. 1
  91. Gilmont 1999, p. 473
  92. Gilmont 1999-2, p. 1-8
  93. Rahmatollah 2009, p. 2
  94. Ye 2011, p. 2
  95. Carroll 2013, p. 3
  96. Zhong 2016, p. 2
  97. Ye 2011, p. 5
  98. Ye 2011, p. 8
  99. Denning 1970, p. 153-180
  100. Basu 2013, p. 238
  101. Jung 2015, p. 1
  102. Bonhert 2014, p. 93-101
  103. Carter 1995
  104. Gerndt 1997, p. 93-101
  105. Saed 2011, p. 388-398
  106. Comer 1990, p. 1-15
  107. Lattanzi 2004, p. 1
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.