GESTIONE MEMORIA


Introduzione
Memoria: Convenzionale, Alta, Superiore Estesa o Espansa
Programmi e Memoria
File di Configurazione
File CONFIG.SYS
File AUTOEXEC.BAT
Programmi DOS, Memoria e Windows 95


Introduzione

Molti programmi datati (sia applicazioni che videogiochi) sono stati creati esclusivamente per l'ambiente DOS e spesso hanno richieste in termini di memoria libera particolarmente esose. La quantita' di RAM totale di memoria sul vostro computer (4, 16, 32, 64 Mb, ecc.) ha una importanza relativa (per la maggior parte dei videogiochi bastano 4 Mb) in quanto la porzione principale dei programmi viene caricata quasi esclusivamente nel primo Mb di memoria. Poiche' in questo primo Mb viene caricato anche il sistema operativo (OS, o Operating System: MS-DOS il piu' diffuso) e tutti i driver delle periferiche (mouse, scheda audio, unita' CDROM, ecc.) e' importante che questa porzione di memoria venga gestita nel miglior modo possibile.


Memoria: Convenzionale, Alta, Superiore Estesa o Espansa

Piu' precisamente, il primo Mb di memoria si divide in due parti: i primi 640 Kb formano la memoria Bassa o Convenzionale, i restanti 384 Kb (1 Mb = 1024 Kb) formano la memoria Alta. Tutta la memoria superiore al primo Mb e' detta Superiore. Quest'ultima viene generalmente configurata come memoria Estesa (o XMS) oppure, grazie a programmi di gestione della memoria (come EMM386 fornito con MS-DOS), come memoria Espansa (o EMS), un particolare tipo di memoria molto richiesto soprattutto dai videogiochi molto esigenti in memoria.


Programmi e Memoria

Praticamente tutti i programmi caricano la parte principale del loro codice nella memoria convenzionale ed il restante nella memoria superiore (tralasciando la memoria alta che solitamente e' riservata al sistema operativo ed ai driver). Dato che anche il sistema operativo (MS-DOS) ed i driver sono caricati, all'avvio del computer, nella memoria convenzionale, spesso per programmi con elevata esigenza di memoria convenzionale libera non rimane 'spazio' sufficiente. In casi come questi e' necessario gestire al meglio i primi 640 Kb 'spostando' il sistema operativo e il maggior numero possibile di driver nella memoria alta. Normalmente il sistema operativo e' gia' configurato per essere caricato nella memoria alta tramite il driver HIMEM.SYS ma talvolta questo non e' il caso ed e' cosi' necessario intervenire manualmente. Un altro problema puo' risultare da quei programmi che richiedono memoria EMS piuttosto che XMS poiche', all'avvio, il sistema operativo e' generalmente configurato per utilizzare memoria di tipo XMS. Per vedere quanta memoria si ha a disposizione e come questa e' suddivisa, basta impartire, dal prompt C:\> di DOS, il comando:

MEM /C /P

In questo modo verranno elencati tutti i driver caricati in memoria, la memoria utilizzata e quella disponibile (quest'ultima subito dietro alla riga "Dim. massima di un programma eseguibile").


File di Configurazione

In ambiente DOS, il sistema operativo, la maggior parte dei driver e la gestione della memoria vengono caricati e definiti automaticamente all'avvio del computer secondo le istruzioni contenute in due file di configurazione, il file AUTOEXEC.BAT ed il file CONFIG.SYS presenti nella 'root' (cartella principale) del disco fisso. File di configurazione non ottimizzati possono risultare in competizione per la memoria libera da parte di sistema operativo, driver ed eventuali programmi. Affinche' cio' non avvenga e' necessario intervenire sui file di configurazione in modo da modificarne i parametri riguardanti la gestione della memoria. Fondamentalmente, ci sono due modi per intervenire su questi due file: utilizzando un programma apposito (come QEMM oppure MemMaker, quest'ultimo fornito con MS-DOS 6 e 6.x) oppure manualmente utilizzando un editor di testo (come il Notepad di Windows 95 o il comando EDIT di MS-DOS). Quest'ultimo metodo e' piu' laborioso ma e' spesso l'unico possibile poiche' MemMaker non e' piu' fornito con la versione 7.0 di MS-DOS, cioe' con Windows 95 (potete comunque scaricarlo dalla Sezione Consigli\Programmi\Varie).


File CONFIG.SYS

Il primo file di configurazione che viene caricato all'avvio del sistema e' il CONFIG.SYS e permette la configurazione delle periferiche del computer. In esso sono contenute, tra le tante, le istruzioni di caricamento di quei driver che possono essere lanciati solo ed esclusivamente all'avvio del computer: tra questi e' compreso anche il gestore di memoria. L'istruzione DOS= impartisce se o meno il sistema operativo vada caricato in memoria bassa o alta mentre l'istruzione per il caricamento dei driver e' data dalle stringhe DEVICE= o DEVICEHIGH= (rispettivamente, driver caricato in memoria bassa o alta). Generalmente le prime istruzioni del file CONFIG.SYS sono (e dovrebbero essere):

DEVICE=HIMEM.SYS
DEVICE=EMM386 /parametro
DOS=HIGH,UMB

La prima istruzione attiva la memoria alta (altrimenti inutilizzabile), la seconda il gestore di memoria estesa/espansa mentre la terza carica il sistema operativo in memoria alta (ommettendola verrebbe caricato nella memoria convenzionale). La stringa EMM386 puo' essere seguita da diversi parametri tra i quali i piu' importanti sono quelli che definiscono l'utilizzo della memoria superiore al primo Mb come XMS (parametro /NOEMS) oppure EMS (parametro /RAM HIGHSCAN oppure /RAM AUTO). Ad esempio:

DEVICE=HIMEM.SYS
DEVICE=EMM386 /NOEMS
DOS=HIGH,UMB

attiva la memoria alta, vi carica il sistema operativo e definisce la memoria superiore come XMS, mentre:

DEVICE=HIMEM.SYS
DEVICE=EMM386 /RAM AUTO
DOS=HIGH,UMB

attiva la memoria alta, vi carica il sistema operativo e definisce la memoria superiore come EMS.

Ulteriori driver (per la gestione di unita' CDROM, schede di rete, etc.) dovrebbero venire caricati tramite la stringa DEVICEHIGH= poiche' questa permette di occupare memoria alta in favore di memoria convenzionale. Ad esempio un ipotetico driver SBCD.SYS per unita' CDROM verrebbe caricato tramite l'istruzione:

DEVICEHIGH=SBCD.SYS /D:MSCD000


File AUTOEXEC.BAT

Il file AUTOEXEC.BAT viene eseguito subito dopo il CONFIG.SYS: in esso sono contenute particolari istruzioni che facilitano la gestione del sistema operativo al suo avvio, ad esempio caricando quei programmi o TSR (Terminate-and-Stay-Resident, programmi che girano in sottofondo) che si utilizzano ad ogni sessione di lavoro (ad esempio il driver TSR del mouse) ma che non necessitano di essere caricati tramite il file CONFIG.SYS (perche' si possono lanciare in un momento qualsiasi della sessione di lavoro e non necessariamente all'avvio). La differenza principale, pero', sta nella possibilita', tramite l'AUTOEXEC.BAT, di caricare questi programmi nella memoria alta mentre dal prompt di DOS cio' non sarebbe possibile. Appare evidente, quindi, che caricare il maggior numero di programmi TSR nella memoria alta tramite il file AUTOEXEC.BAT puo' risultare molto vantaggioso in termini di memoria convenzionale 'risparmiata'. L'istruzione che carica i programmi TSR in memoria alta automaticamente all'avvio del sistema risponde alla stringa LOADHIGH (o, in breve, LH) mentre programmi non TSR possono essere caricati semplicemente scrivendo il loro nome, ad esempio:

LH MSCDEX /D:MSCD000
MENU

dove la prima istruzione carica in memoria alta il gestore MS-DOS per le unita' CDROM (assegnandovi l'etichetta "MSCD000") e la seconda il programma MENU.


Programmi DOS, Memoria e Windows 95

In Windows 95 la memoria viene gestita in modo autonomo ovviando alla mancanza fisica di RAM con la creazione di memoria virtuale sul disco fisso (Swapfile). Cio' e' vantaggioso per quei programmi che sono Windows compatibili ma quelli incompatibili possono andare incontro a problemi di memoria (vedi avanti). Inoltre, in ambiente Windows 95, oltre ai problemi legati alla competizione per la memoria, si aggiunge tutta una serie di problemi di incompatibilita' nei confronti di taluni programmi DOS che puo' rendere difficoltosa la loro esecuzione. Windows 95 gestisce i programmi DOS non studiati appositamente per l'ambiente Windows in due modi: nel primo caso, quando il programma risulta compatibile al 100%, Windows apre una cosiddetta "Finestra DOS" mentre nel secondo caso, quando il programma e' incompatibile, e' necessario uscire da Windows ed entrare in "Modalita' MS-DOS" poiche' la sua esecuzione in ambiente Windows 95 puo' anche causare il crash del sistema. In entrambi i casi, comunque, si possono avere 2 tipi di conflitti di memoria: - insufficiente memoria convenzionale libera; e/o - assenza di memoria EMS. Il primo caso e' dovuto generalmente al programma DOS stesso, avendo questo esigenze in memoria elevate, mentre il secondo caso dipende dal gestore di memoria, cioe' da come viene gestita la memoria superiore. Windows 95, ad esempio, pur non richiedendo memoria convenzionale molto elevata, e' generalmente configurato per utilizzare esclusivamente memoria XMS: se un particolare programma richiede memoria EMS, e' necessario istruire il gestore di memoria a tal riguardo e poiche' cio' e' possibile solo all'avvio del computer, Windows deve prima chiudere la sessione di lavoro corrente, attivare la memoria EMS ed infine caricare il programma nella cosiddetta 'Modalita' Esclusiva'. In tutto questo processo, Windows rimane 'attivo' in sottofondo (in modo da poter nuovamente avviarsi al termine dell'esecuzione del programma DOS), consumando comunque memoria, e cio' nuovamente puo' risultare in conflitti di memoria. Compatibile o incompatibile che sia, vi sono essenzialmente 3 modi per far girare un programma avido di memoria in un sistema operativo basato su Windows 95: tutti questi metodi si rifanno essenzialmente ad una oculata gestione dei file di configurazione:

1. Collegamenti da Windows 95

Il primo metodo permette di gestire i programmi in questione dall'interno di Windows 95: si tratta di creare per ogni programma un cosiddetto Collegamento MS-DOS (cioe' un file .PIF) in cui viene specificata, nell'apposita cartella (PROPRIETA'\PROGRAMMA\AVANZATE\CONFIGURAZIONE), una configurazione DOS dedicata: quando il programma viene lanciato, Windows termina, il sistema si riavvia con la configurazione specificata ed infine il programma viene eseguito. Il vantaggio e' dato dal fatto che tutto il processo e' automatico: si parte da Windows ed al termine si ritorna in Windows. Lo svantaggio e' dato dai tempi di esecuzione, talvolta molto lenti, ma soprattutto dal fatto che programmi ad alta esigenza di memoria convenzionale vengono ostacolati dalla presenza in sottofondo di Windows. Questo metodo e' consigliato per i pigri e per i programmi che richiedono memoria EMS ma non hanno particolari esigenze in memoria convenzionale.

2. Configurazione Multipla (Multi-Boot)

E' possibile sfruttare le configurazioni multiple a partire da MS-DOS 6 e quindi non solo con Windows 95. Si tratta di creare un Menu di Avvio sfruttando le apposite istruzioni dei file di configurazione: tramite questo menu si puo' cosi' specificare quali driver caricare e come gestire la memoria superiore all'avvio del sistema e. quindi, prima ancora che Windows 95 venga caricato. E' il metodo migliore in quanto si possono gestire tutte le variabili ma non e' di facile realizzazione per i meno esperti. Per maggiori informazioni sulla realizzazione di una Configurazione Multipla cliccare qui).

3. Dischetto di Avvio

Si tratta di creare un apposito dischetto di avvio che contenga tutte le istruzioni necessarie per una corretta gestione della memoria: il dischetto viene inserito nel drive e viene 'letto' all'avvio del sistema: in questo modo i suoi file di configurazione sostituiscono quelli del disco fisso. E' sicuramente la soluzione piu' pulita in quanto il dischetto viene utilizzato solo quando si rende realmente necessario. Inoltre puo' servire nei casi di emergenza, quando il sistema o Windows 95 non si riavviano da disco fisso, oppure, ancora, per partire con un dischetto pulito, esente da virus e contenente un'applicazione antivirus. Per maggiori informazioni sulla creazione di un Dischetto di Avvio cliccare qui).


torna ad inizio pagina