# RAM disk

La locuzione RAM disk, (talvolta RAM drive), in informatica è usata per indicare una porzione di RAM, in un computer la memoria primaria, utilizzata da un software come se fosse un'unità a dischi, cioè una memoria secondaria.
Un RAM disk è spesso indicato anche come "RAM drive virtuale" o "RAM drive software" per distinguerlo da un "RAM drive hardware", che generalmente utilizza dell'hardware separato contenente della RAM, che è un'unità a stato solido.

## Storia

Il primo RAM disk software fu ideato e scritto da Jerry Karlin, Gran Bretagna, nel 1979. Il software, noto come Silicon Disk System, fu poi offerto commercialmente da JK Systems Research, che in seguito sarebbe divenuta Microcosm Research Ltd quando entrò in società Peter Cheesewright di Microcosm Ltd. L'idea alla base del RAM disk era quella di permettere ai primi microcomputer di utilizzare più RAM di quanta la CPU potesse indirizzare direttamente, ed usare della RAM extra, attivata tramite il bank switching, come un disco rigido; era molto più rapido che accedere ad un vero disco rigido, soprattutto in un periodo informatico in cui i dischi rigidi non erano ancora diffusi.
Il Silicon Disk a riga di comando fu presentato nel 1980, inizialmente per il sistema operativo CP/M ed in seguito per l'MS-DOS. A causa delle limitazioni nell'indirizzamento della memoria nei computer Apple II e Commodore, il RAM disk era disponibile su quelle macchine solo se dotate di espansione di memoria, come nel caso del Commodore 64 e del Commodore 128, o negli Apple con più di 64 KB di memoria. Sui computer Apple il RAM disk era inoltre supportato ufficialmente dal ProDOS: sui computer con 128 kB o più di RAM il ProDOS ne creava automaticamente uno chiamandolo /RAM.
Microsoft aggiunse il supporto per i RAM disk all'MS-DOS nel 1983, con la versione 2.0 mentre l'AmigaOS lo offrì a partire dalla versione 1.2 (1986): oggi è ancora presente nell'AmigaOS 4.1 (2010).
Apple inserì il supporto ai RAM disk nell'Apple Macintosh con il System 7 (1991). Inoltre, molti sistemi Unix/Linux forniscono nativamente il supporto per alcune forme di funzionalità simili al RAM disk.

## Prestazioni

La velocità di un RAM disk è, generalmente, di diversi ordini di grandezza superiore rispetto alle altre memorie di massa quali i dischi rigidi, le unità a nastro magnetico o i dischi ottici, a causa di alcuni fattori che influenzano le prestazioni delle memorie secondarie a favore di quelle primarie: i tempi di accesso, la quantità di dati gestibili nell'unità di tempo e i file system.
Il primo fattore, il tempo di accesso, decresce enormemente nel caso di un RAM disk, dato che esso è un dispositivo a stato solido, non avendo quindi nessuna parte meccanica: un disco rigido o un'unità ottica, come un lettore CD/DVD/Blu-ray, devono portare una testina (magnetica o ottica) in posizione, mentre un'unità a nastri deve far avanzare o riavvolgere la bobina magnetica per raggiungere una determinata posizione prima che la lettura/scrittura possa avvenire. I RAM disk possono accedere ai dati con la sola indicazione dell'indirizzo di memoria di un dato file, senza nessuna parte meccanica che debba essere allineata o posizionata.
Il secondo fattore, i dati che possono essere letti o scritti nell'unità di tempo, è limitato solo dalla velocità della RAM, da quella del bus dati e da quella della CPU del computer. Le memorie secondarie sono invece limitate dalla velocità del bus di collegamento (IDE, SATA, USB, seriale o parallelo). A questo va poi sommato il fattore limitante dato dalla velocità dei servomeccanismi.
Il terzo fattore è dato dall'influenza del file system in uso, FAT, NTFS, USBFS, ext2 ed altri, che aggiunge degli ulteriori accessi ai dati sulle memorie secondarie, che legge e scrive i file su di esse e la cui struttura può influire più o meno negativamente: ad esempio, alcuni file system possono essere strutturati per trattare con facilità tanti file di piccole dimensioni e si trovano perciò in difficoltà nel dover manipolare file molto grandi, oppure viceversa.
Per contro, anche un RAM disk ha alcuni limiti: il primo è dato dal fatto che la memorizzazione avviene in RAM e che questa, essendo volatile, può comportare la perdita dei dati che contiene nel caso in cui venga a mancare l'alimentazione, sia per un atto voluto (per il riavvio o l'arresto del computer) che per uno accidentale (black-out). Alle volte, questo evento è desiderato, come nel caso in cui si stia lavorando sulla copia in chiaro di un file cifrato. In molti casi i dati memorizzati in un RAM disk vengono creati per avere un accesso più rapido ad informazioni memorizzate da qualche altra parte, e vengono poi ricreati sempre in RAM quando il sistema viene riavviato.

## Implementazione

I RAM disk software utilizzano la normale RAM del sistema come se fosse una partizione reale su un disco rigido invece che accedere al bus dati normalmente usato per gestire una memoria secondaria. I RAM disk possono essere supportati sia direttamente dal sistema operativo tramite speciali meccanismi presenti nel kernel, sia tramite l'utilizzo di applicazioni in spazio utente: un esempio è il file system FUSE, che permette ad un normale utente di un sistema Linux la creazione di un file system in user space senza dover scrivere codice a livello di kernel. Esempi di RAM disk sono AppDisk per il Mac OS e initrd per Linux.
L'utente visualizza e manipola, ad esempio attraverso un comune esplora risorse, il contenuto del disco RAM come se si trattasse di una unità qualsiasi (volume di un disco, chiavetta USB, DVD, scheda di memoria, cartella di rete, ecc). La peculiarità è che alcuni contenuti sono in esecuzione.
In genere non serve l'utilizzo di un'alimentazione di emergenza, data la natura temporanea dei dati memorizzati nel RAM disk ma, comunque, un sistema di alimentazione non interrompibile può mantenere, se necessario, l'intero sistema in funzione durante un'eventuale assenza della tensione elettrica.
Alcuni RAM disk utilizzano un file system compresso, come CRAMFS, per poter accedere ai dati al volo, senza necessità di decomprimerli a riga di comando in anticipo: ciò risulta utile se si considera che i RAM disk sono generalmente di limitate dimensioni a causa del loro elevato rapporto prezzo/byte rispetto ai sistemi di memorizzazione tradizionali.

## Utilizzo come web cache

Un impiego in cui un RAM disk si dimostra utile è come web cache: grazie al rapido accesso ai file, il RAM disk può accelerare la visualizzazione delle pagine. A causa della volatilità dei RAM disk, l'utilizzo di questi sistemi di memorizzazione ha anche dei vantaggi in termini di riservatezza.