Disque virtuel

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Ramdisk)

Un disque virtuel ou RAM disque est un logiciel qui utilise une partie de la mémoire vive de l'ordinateur pour simuler une mémoire de masse, fonction assurée précédemment par les disquettes, puis les disques durs et enfin les disques SSD. Les temps d'accès sont grandement améliorés[1], la taille du disque virtuel est cependant limitée par celle de la mémoire centrale.

La mémoire vive étant en général volatile, les données stockées sur le disque virtuel sont perdues lorsque l'ordinateur est mis hors tension. Les RAM disques sont principalement utilisés pour stocker temporairement des données ou conserver en mémoire certains logiciels décompressés pour une courte période de temps. La création d'un disque virtuel est faite par le pilote de disque virtuel, sa destruction est faite par la réinitialisation ou l'extinction de l'ordinateur (plus rarement par le pilote), les accès se font par des appels systèmes identiques à ceux pour les disques réels (le noyau doit contenir les pilotes adéquats).

Un disque virtuel ne doit pas être confondu avec la mémoire virtuelle qui est le principe inverse, à savoir utiliser la mémoire de masse (principalement disque dur ou SSD) pour simuler la mémoire vive centrale.

Historique[modifier | modifier le code]

Les RAM disques étaient couramment utilisés comme support de démarrage dans les années 1980, lorsque les disques durs étaient chers, les lecteurs de disquettes lents et le système d'exploitation prenait très peu de place, quelques systèmes, notamment ceux de la série Amiga et les Apple IIgs, étaient capables de démarrer à partir d'un RAM disque. Pour le coût de quelques modules de mémoire vive, très chers à cette époque, l'ordinateur pouvait alors être redémarré à chaud en quelques secondes au lieu de quelques minutes.

Dans les années 1980 les mémoires flash étaient encore au stade du laboratoire, un système comme le Canon X-07[2] pouvait recevoir une carte d'extension de la mémoire alimentée par pile lithium assurant la persistance du contenu une fois le système arrêté. Plus tard, dans les années 1990, lorsque les premiers CD réinscriptibles ont été commercialisés, ce type de support a été un temps désigné comme « RAM disque ». Ces supports physiques, carte mémoire alimentée et CD-RW, ne sont pas des disques virtuels, mais des supports de données bien réels.

En , IBM ajouta au PC-DOS v3.0 un pilote de disque virtuel nommé VDISK.SYS[3] qui pouvait utiliser la mémoire étendue d'un PC-AT. Le code en assembleur du pilote (VDISK.ASM) était distribué[4] avec le PC-DOS, les lignes suivantes sont extraites de ce code en assembleur :

;VDISK simulates a disk drive, using Random Access Memory as the storage medium.
;(C) Copyright IBM Corporation, 1984,1985
;Licensed Material - Program Property of IBM
;Author:  Dick Dievendorff
;Add the following statement to CONFIG.SYS
;    DEVICE=[d:][path]VDISK.SYS bbb sss ddd [/E:m]
;   where:  bbb is the desired buffer size (in kilobytes)
;        minimum 1KB, maximum is size of available memory,
;        default is 64KB.
;        VDISK will leave at least 64KB of available memory,
;        although subsequent device drivers (other than VDISK)
;        other programs that make themselves resident, and
;        COMMAND.COM will result in less than 64KB as shown
;        by CHKDSK.
;        Must be large enough for 1 boot sector + FAT sectors
;        + 1 directory sector + at least 1 data cluster,
;        or the device driver won't be installed.
;        sss is the desired sector size (in bytes)
;        128, 256, or 512, default is 128.
;        Will be adjusted if number of FAT entries > 0FE0H
;        ddd is the desired number of directory entries
;        Minimum 2, maximum 512, default 64.
;        Will be rounded upward to sector size boundary.
;        /E may only be used if extended memory above 1 megabyte
;        is to be used.  INT 15H functions 87H and 88H are used
;        to read and write this extended memory.
;        The m parameter in the /E option specifies the maximum
;        number of sectors that the VDISK will transfer at a time.
;        Optional values are 1,2,3,4,5,6,7 or 8 sectors, the default
;        is 8 sectors.
;        Brackets indicate optional operands.
; Samples:
;    DEVICE=\path\VDISK.SYS 160 512 64
;    results in a 160KB VDISK, with 512 byte sectors, 64 directory entries
;    DEVICE=VDISK.SYS Buffersize 60 Sectorsize 128 Directory entries 32
;    (since only numbers are interpreted, you may comment the line with
;    non-numeric characters)
      DB    'The IBM Personal Computer Virtual Disk Device Driver, '
      DB    'Version 2.00 (C)Copyright IBM Corp 1984,1985'
      DB    'Licensed Material - Program Property of IBM. '
      DB    'Author: Dick Dievendorff '

Contrairement à la plupart des composants des premières versions de DOS, VDISK.SYS écrit par IBM pour PC-DOS n'était pas disponible sous MS-DOS. Microsoft ajouta un programme similaire appelé RAMDRIVE.SYS au MS-DOS v3.2 (1986), qui pouvait aussi utiliser la mémoire étendue.

En 1985, alors que l'ordinateur moyen n'avait guère plus de 64 Ko et les logiciels les plus gourmands utilisaient au plus 128 à 256 Ko de mémoire, l'IBM PC pouvait être livré avec une mémoire « colossale » de 640 Ko, un ou deux lecteurs de disquette 5"¼ et si le budget le permettait, un disque dur optionnel. La capacité des disquettes sur IBM PC étant de 360 Ko[5], il était naturel d'utiliser cet « excédant » de mémoire en disque virtuel pour y stocker les overlays des programmes et les rares données temporaires, le gain de vitesse de traitement par rapport à la disquette était alors très significatif.

L'utilisation d'une mémoire cache par le système d'exploitation, pour les accès à la disquette, au disque dur ou au CD, semblait rendre inutile le recours à un RAM disque. Une mémoire cache disque remplit une fonction similaire d'accès rapide aux données stockées sur disque, sans en avoir les inconvénients : perte de données lors de coupure de courant, partitionnement fixe… Les RAM disques s'avèrent cependant indispensables dans les situations où un disque physique n'est pas disponible, ou lorsque le support de donnée doit rester inamovible (comme pour les LiveCD chargés en mémoire). Ils peuvent également trouver leur utilité dans les dispositifs type kiosque où la configuration initiale doit être chargée à chaque démarrage et qu'aucune reconfiguration du système n'est nécessaire en cours de fonctionnement.

L'arrivée des disques durs à haut-débit type Serial ATA, et surtout des SSD, a rendu les RAM-disques quasiment obsolètes.

Les RAM disques constituent d'excellents caches pour les navigateurs Web et lieux de stockage pour des fichiers intermédiaires de compilation (à quoi bon écrire sur disque un fichier intermédiaire dont on n'aura plus besoin après l'avoir lu ?).

Adressage 16 bits[modifier | modifier le code]

MS/PC DOS[modifier | modifier le code]

Le disque virtuel est soit installé en mémoire conventionnelle (moins de 1 Mio, mais en général 640 Ko pour système à base de 8088 ou 8086), soit en mémoire étendue (paramètre /E passé à VDISK.SYS pour système à base de 80286 avec plus de 640 Ko de RAM).

Contrairement aux processeurs modernes fonctionnant en mode protégé, VDISK.SYS fonctionne en mode réel sur 80286 et fait appel aux interruptions du BIOS pour accéder à la mémoire étendue (le code source VDISK.ASM indique qu'il s'agit de Int 15h fonctions 87h et 88h).

Adressage 32 ou 64 bits[modifier | modifier le code]

Windows[modifier | modifier le code]

Un système Windows 32 bits sait reconnaître qu'une machine possède 4 Go, mais ne peut en utiliser que 3,2 pour des raisons techniques. Il faut donc

  • soit installer un RAM disque dans ces 3,2 Go, réduisant d'autant l'espace utilisable par Windows ;
  • soit utiliser une version 32 bits du RAM disque installant son espace de travail dans la partie « sûre » au-delà de 4 Go ;
  • soit migrer à une version 64 bits de Windows.

Linux[modifier | modifier le code]

Depuis que la version PAE (Extension d'adresse physique) existe systématiquement sur les distributions 32 bits, Linux peut utiliser toute la mémoire disponible même avec ce type d'adressage : des traductions d'adresse dynamiques donnent à chaque application son espace à 32 bits alloué dans la mémoire réelle et donc sans ralentissement.

La version 64 bits permet à chaque application qui le supporte un adressage 64 bits.

Évolution[modifier | modifier le code]

Une autre technique d'utilisation de la mémoire vive pour le stockage de fichiers est le système de fichiers temporaire tmpfs (dérivé du très simple ramfs). Un tel système est bien plus léger car il ne cherche pas à simuler un disque dur, ce qui permet de ne pas traverser de multiples interfaces et protocoles logiciels (pilote de disque, pilote de système de fichiers, système de cache…) habituellement destinés à ce type de support de mémoire de masse. L'implémentation tmpfs de Linux s'intègre ainsi nativement dans la gestion du cache mémoire du noyau Linux.

À la différence d'un RAM disque qui monopolise la quantité de mémoire totale qui lui est allouée, un système de type tmpfs permet de n'utiliser que la mémoire réellement nécessaire pour le stockage de fichiers, l'espace libre étant également de la mémoire vive utilisable par ailleurs.

Notes et références[modifier | modifier le code]

  1. La mémoire vive a un temps d'accès de l'ordre de 10 à 100 ns, alors que pour un disque dur ce temps est de l'ordre de 10 ms et 100 µs pour un SSD, soit un rapport supérieur à 1 000
  2. Le Canon X-07 était assez particulier, il intégrait un gestionnaire de disque virtuel et sa mémoire non-volatile de 8 Ko pouvait être étendue avec la puce XR-100 de 8 Ko, et une carte mémoire XM-100 de 4 Ko alimentée par une pile lithium
  3. VDISK.SYS a été le premier composant DOS à utiliser la mémoire étendue avec le 80286
  4. Jusqu'au milieu des années 1980, la diffusion des codes sources était une pratique courante, ainsi VDISK.ASM a été diffusé par IBM sur la 2e disquette 5"¼ du PC-DOS, le listing de la ROM BIOS a été publié dans le IBM PC Technical Reference Manual 6025008 - IBM, 1981
  5. Les disquettes 3,5" de 720 Ko et 1,44 Mo ne sont apparues qu'avec le PS/2 en 1987

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Lien externe[modifier | modifier le code]

  • ImDisk, un pilote pour Windows permettant, entre autres, de créer un disque en RAM sans contrainte de taille