close

Memoria espansa

Vai alla navigazione Vai alla ricerca
Image
Pagine o banchi di memoria espansa all'interno dello spazio o area di memoria superiore ( UMA ).

La memoria espansa o EMS ( Expanded Memory Specification ) era un metodo per fornire memoria di paging aggiuntiva ai programmi MS-DOS . È stato sviluppato intorno al 1984 .

Questi programmi, eseguiti sul PC IBM originale e sui suoi successori come IBM XT e IBM AT , erano in genere applicazioni come fogli di calcolo e database che richiedevano una grande quantità di memoria per funzionare correttamente.

Il PC IBM e l'IBM XT avevano un'architettura di memoria in modalità reale , che consentiva ai programmi di utilizzare solo 1 mebibyte di spazio degli indirizzi, di cui solo fino a 640 KiB erano disponibili come RAM normale per le applicazioni. Il resto tra 640 KiB e 1 MiB è stato riservato alle periferiche, mettendo in evidenza la memoria per le schede video. L'IBM AT, con il suo microprocessore Intel 80286 , supportava una modalità protetta che gli permetteva di indirizzare fino a 16 MiB, ma questo computer utilizzava anche MS-DOS, un sistema operativo che non utilizzava direttamente la memoria estesa (sopra mebibyte).

L'idea alla base della memoria espansa era quella di utilizzare, anche per la memoria di programma, parte dei restanti 384 KiB normalmente dedicati alle periferiche. Al fine di utilizzare potenzialmente molta più memoria rispetto allo spazio di indirizzi di 384 KiB consentito, è stato ideato uno schema di commutazione del banco di memoria, in cui sarebbero state accessibili solo porzioni selezionate della memoria aggiuntiva alla volta. In origine era possibile una singola finestra di 64 KiB di memoria, in seguito questa è stata più flessibile. Le applicazioni dovevano essere scritte in un modo specifico per accedere alla memoria espansa.

Diverse implementazioni

Schede di espansione

Image
Una scheda di espansione della memoria ISA . La scheda è dotata di 4 MB accessibili tramite pagine da 64 KB .

Questo inserimento di una finestra di memoria nello spazio degli indirizzi delle periferiche poteva essere ottenuto originariamente solo attraverso specifiche schede di espansione, collegate al bus di espansione ISA del computer . Alcune famose schede di memoria espanse degli anni '80 erano RAMPage di AST Research , IBM PS/2 80286 Memory Expansion Option , AT&T Expanded Memory Adapter e Intel Above Board . Dato il prezzo della RAM fino a diverse centinaia di dollari per megabyte durante quel periodo, e la qualità e la reputazione dei marchi sopra menzionati, una scheda di memoria espansa era molto costosa.

Scheda madre

Successivamente, alcune schede madri per computer basate su Intel 80286 hanno implementato uno schema di memoria espansa che non richiedeva schede aggiuntive. In genere, le opzioni software determinano quanta memoria utilizzare come memoria espansa e quanta da utilizzare come memoria estesa.

Gestione della memoria nativa nel processore

A partire dal 1987, le funzionalità di gestione della memoria integrate del processore Intel 80386 hanno modellato vagamente lo spazio degli indirizzi durante l'esecuzione di software in modalità reale, rendendo superflue le soluzioni hardware. La memoria espansa può essere simulata semplicemente tramite software.

DPMI

Un modo più efficiente per accedere allo spazio degli indirizzi oltre i 640 KB, sui processori 80286 e successivi, era utilizzare DPMI ( DOS Protected Mode Interface ). Gli extender DOS erano driver che consentivano l'esecuzione delle applicazioni in modalità protetta . Invece di tentare di accedere a più memoria tramite meccanismi di commutazione della memoria, i driver hanno impostato il processore in modalità protetta durante l'esecuzione del programma applicativo e di nuovo in modalità reale quando si accede ai servizi MS-DOS. Ciò ha consentito ai programmi di accedere direttamente a tutta la memoria configurata come memoria estesa.

L'uso della memoria espansa da parte delle applicazioni è diminuito all'inizio degli anni '90 , quando gli estensori DOS sono diventati più diffusi.

Emulazione software

Il primo programma di gestione della memoria espansa (per emulazione) è stato probabilmente il Compaq Expanded Memory Manager ( CEMM ), disponibile nel novembre 1987 con il DOS 3.31 di Compaq . Una soluzione commerciale popolare con buone caratteristiche era QEMM di Quarterdeck . [ 1 ] Un concorrente era il Qualitas 386MAX . La funzionalità è stata successivamente incorporata in MS-DOS 4.01 dal 1989 e DR-DOS 5.0 dal 1990, come EMM386 .

Il software di gestione della memoria espansa offriva funzionalità aggiuntive ma strettamente correlate. In particolare, potrebbero creare aree di memoria superiori (UMA) o aree di memoria ordinarie ( blocchi di memoria superiori , UMB) nelle porzioni inutilizzate dei 384 KB superiori (tra 640 KB e 1 MB) dello spazio degli indirizzi in modalità reale e strumenti forniti per caricare piccoli programmi, tipicamente TSR ( Terminate and Stay Resident ) utilizzando i comandi ("loadhi" o "loadhigh").

L'interazione tra memoria estesa, emulazione di memoria espansa e DOS Extender è stata regolata dalle specifiche XMS , VCPI e DPMI .

Alcuni programmi di emulazione, conosciuti colloquialmente come LIMulator, non si basavano affatto sulla scheda madre o sulle funzionalità dell'80386, ma riservavano 64 KB di RAM di base per la finestra della memoria espansa, dove copiavano i dati da e verso la memoria estesa o il disco rigido quando i programmi applicativi hanno richiesto modifiche di pagina. Questo era facile da implementare a livello di codice, ma le prestazioni erano scarse. Questa tecnica è stata offerta da AboveDisk di Above Software e da vari programmi shareware .

Dettagli

Una scheda di memoria espansa era una periferica hardware, aveva bisogno del software del driver del dispositivo , che esportava i suoi servizi. Questo driver di dispositivo è stato chiamato "expanded memory manager" . Il suo nome era variabile; le schede menzionate in precedenza utilizzavano rispettivamente remm.sys (AST), ps2emm.sys (IBM), aemm.sys (AT&T) ed emm.sys (Intel). Successivamente, l'espressione è stata associata a soluzioni solo software che richiedevano il processore 80386, ad esempio QEMM di Quarterdeck (vedi sotto).

La memoria espansa era un termine comune per alcune varianti tecnologiche incompatibili. L' Expanded Memory Specification ( EMS ) è stata sviluppata congiuntamente da Lotus , Intel e Microsoft , quindi questa specifica è stata talvolta chiamata "LIM EMS". EEMS, uno standard concorrente di gestione della memoria espansa, è stato sviluppato da AST Research , Quadram e Ashton-Tate . Questo standard consentiva anche di rimappare alcuni o tutti i 640 KB di memoria inferiori, in modo che interi programmi potessero essere inseriti e rimossi dalla RAM aggiuntiva. I due standard sono stati infine combinati come LIM EMS 4.0.

Programmazione

Un blocco di 64 KiB, il frame della pagina era riservato nell'area di memoria superiore o nella memoria convenzionale . Il frame di pagina stesso consisteva in quattro pagine EMS da 16 KiB, ognuna delle quali poteva essere impostata in modo indipendente per "puntare" una porzione di memoria espansa sotto il controllo del programma. La modifica della cosiddetta mappatura del frame della pagina era costosa, quindi i dati dovevano essere organizzati di conseguenza. Le versioni successive della specifica LIM EMS non impongono più l'uso di un frame di pagina , ma questo è stato utilizzato raramente.

L'uso della memoria espansa era oneroso e il compito era temuto e odiato da tutti i programmatori di PC. Tuttavia, era un modo per utilizzare più memoria e, per i software ad alta intensità di memoria, usarla in modo doloroso era meglio che non usarla affatto. Una costante sfida progettuale è stata determinare quali dati dovrebbero essere archiviati nei 640 KB di memoria di facile utilizzo e quali dati dovrebbero essere archiviati nella memoria espansa con il suo sovraccarico di gestione intrinseco.

Prima della standardizzazione imposta dal LIM EMS, ogni scheda di memoria veniva fornita con il proprio driver e diverse interfacce di programmazione dell'applicazione . Dopo LIM EMS, Microsoft ha leggermente modificato la sua implementazione in DOS 3.31, in modo che la memoria fosse allineata ai limiti delle parole anziché ai limiti dei byte come determinato dalla specifica originale, causando il mancato funzionamento di alcune applicazioni. In pratica, gli utenti dovevano modificare le impostazioni del proprio computer per utilizzare LIM EMS o Microsoft EMS a seconda dell'applicazione che desideravano utilizzare.

Riferimenti

  1. QEMM: Gestore memoria espansa Quarterdeck .
  • Una discussione completa su EMS ed esempi di programmazione può essere trovata in ["Programmazione di sistemi PC per sviluppatori", 1989, ISBN 1-55755-035-2 (solo libro) e ISBN 1-55755-036-0 ( libro e dischetto )] .
  • Capire EMS 4.0 di Lloyd Borrett, Technical Cornucopia, gennaio-febbraio 1989

Questo articolo (o una versione precedente) è originariamente basato su materiale nel Dizionario di informatica in linea gratuito , utilizzato con autorizzazione . Aggiornalo a tua discrezione.

Vedi anche

Collegamenti esterni