10 : Allocazione dinamica della memoria Vers . 9.0 – Ottobre 2024
SPECIALE : L ’ esecuzione di un sottoprogramma
Per eseguire un sottoprogramma è necessario utilizzare una apposita istruzione di chiamata di sottoprogramma che è prevista da tutti i linguaggi di programmazione .
Meccanismo di funzionamento
Quando un programma non è in esecuzione risiede su una MEMORIA DI MASSA e subito dopo la compilazione ed il linkaggio , sarà costituito esclusivamente dal codice o istruzioni e dai dati ed occuperà un ’ area di memoria ( la cui dimensione in BYTE dipende esclusivamente dalle istruzioni e dai dati utilizzati ) che è possibile essere pensata come suddivisa in due segmenti :
- il Segmento “ CODICE ” o “ ISTRUZIONI ”: area contenente le istruzioni del programma ( codice ) scritte in linguaggio macchina
- il Segmento “ DATI ”: area contenente variabili e costanti allocate staticamente
Quando un programma è in esecuzione ( chiamato anche TASK o processo ) viene allocato in memoria centrale ( RAM ) e gli viene assegnato , dal sistema operativo ( un particolate programma chiamato loader ), nella memoria di lavoro ( RAM ) anche una zona di memoria aggiuntiva rispetto a quella posseduta quando è “ in quiete ”.
Un programma in esecuzione quindi occuperà una zona della memoria di lavoro che è possibile pensare ora suddivisa in quattro segmenti :
- il Segmento “ CODICE ” o “ ISTRUZIONI ”: vedi descrizione già data in precedenza
- il Segmento “ DATI ”: vedi descrizione già data in precedenza - il Segmento “ STACK ”: area destinata a gestire la “ PILA DELLE ATTIVAZIONI ”
- il Segmento HEAP ( lett . mucchio ) di sistema : area destinata a raccogliere i dati gestiti dinamicamente che come tali verranno allocati e deallocati dinamicamente ( che verranno illustrati IN SEGUITO )
Una volta terminata l ’ esecuzione del programma questa zona di memoria allocata nella RAM verrà rilasciata liberando la memoria precedentemente occupata ( allocazione dinamica del codice da parte del sistema operativo )
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 2