4° Anno TEORIA 2. Allocazione dinamica della memoria

10: Allocazione dinamica della memoria Vers.1.2 – Novembre 2019 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. STRATEGIE DI ALLOCAZIONE A CONFRONTO Allocazione statica Occupazione di memoria Tempo di esecuzione Tempo di esistenza delle variabili Allocazione dinamica Variabile nel corso Costante per tutta l’esecuzione dell’esecuzione in quanto le del programma variabili sono allocate solo quando servono L’allocazione viene fatta una L’allocazione e la volta sola prima dell’esecuzione deallocazione avvengono del programma, non durante l’esecuzione del appesantendo il suo tempo di programma, appesantendo il esecuzione suo tempo di esecuzione Le variabili vengono allocate Sin dall’inizio dell’esecuzione del durante l’esecuzione del programma a tutte le variabili programma solo quando viene associata una zona di servono e la memoria ad esse memoria permanente che verrà assegnata viene rilasciata con rilasciata solo quando il particolari istruzioni quando programma terminerà. non servono più 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: Segmento “dati” Segmento “codice” 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”; Segmento “stack” - il Segmento “stack”; Segmento “dati” - l’Heap (lett. mucchio) di sistema Heap di sistema Segmento “codice” Autore: Rio Chierego (email: riochierego@libero.it - sito web: www.riochierego.it) Pag. 1