# Disque virtuel

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, 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

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 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 août 1984, IBM ajouta au PC-DOS v3.0 un pilote de disque virtuel nommé VDISK.SYS qui pouvait utiliser la mémoire étendue d'un PC-AT. Le code en assembleur du pilote (VDISK.ASM) était distribué avec le PC-DOS, les lignes suivantes sont extraites de ce code en assembleur :
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, 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
### MS/PC DOS

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
### Windows

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

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

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.