4° Anno TEORIA 2. Allocazione dinamica della memoria

10 : Allocazione dinamica della memoria Vers . 2.1 – Ottobre 2020
10 . ALLOCAZIONE DINAMICA DELLA MEMORIA
Per allocare lo spazio in memoria per le risorse locali e / o globali di un programma si possono scegliere sostanzialmente due strategie : a ) allocazione statica della memoria : la memoria necessaria viene allocata prima dell ’ esecuzione del programma a tempo di compilazione ( compile-time ); b ) allocazione dinamica della memoria : consente , durante l ’ esecuzione di un programma ( run-time ), di eseguire le istruzioni per allocare lo spazio in memoria necessario e di deallocarlo al termine della sua esecuzione , in modo da renderlo disponibile ad altri usi .
Occupazione di memoria
Tempo di esecuzione
Tempo di esistenza delle variabili
STRATEGIE DI ALLOCAZIONE A CONFRONTO
Quando un programma non è in esecuzione - ossia quando risiede su una memoria di massa – subito dopo la compilazione ed il linkaggio , è costituito esclusivamente da codice o istruzioni e dai dati ed occupa un ’ area di memoria ( la cui dimensione dipende esclusivamente dalle istruzioni e dai dati utilizzati ) che è possibile essere pensata come suddivisa in :
Per comprendere la tecnica dell ’ allocazione dinamica della memoria dobbiamo partire dall ’ illustrazione e dalla comprensione del metodo con cui un programma in esecuzione viene allocato in memoria centrale .
Generalmente quando un programma è in esecuzione ( detto anche TASK o processo ) gli viene assegnato dal sistema operativo nella memoria di lavoro ( RAM ) di un PC anche una zona di memoria aggiuntiva rispetto a quella posseduta quando è “ in quiete ”. Complessivamente possiamo pensare che esso occupi una zona che è suddivisa in 4 parti o segmenti :
- il Segmento “ codice ” o “ istruzioni ”;
- il Segmento “ dati ”; - il Segmento “ stack ”; - l ’ Heap ( lett . mucchio ) di sistema
Allocazione statica
Costante per tutta l ’ esecuzione del programma
L ’ allocazione viene fatta una volta sola prima dell ’ esecuzione del programma , non appesantendo il suo tempo di esecuzione
Sin dall ’ inizio dell ’ esecuzione del programma a tutte le variabili viene associata una zona di memoria permanente che verrà rilasciata solo quando il programma terminerà .
Segmento “ dati ” Segmento “ codice ”
Allocazione dinamica Variabile nel corso dell ’ esecuzione in quanto le variabili sono allocate solo quando servono L ’ allocazione e la deallocazione avvengono durante l ’ esecuzione del programma , appesantendo il suo tempo di esecuzione Le variabili vengono allocate durante l ’ esecuzione del programma solo quando servono e la memoria ad esse assegnata viene rilasciata con particolari istruzioni quando non servono più
Heap di sistema Segmento “ stack ” Segmento “ dati ” Segmento “ codice ”
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 1