Concetti Chiave
- L'esecuzione di un sottoprogramma inizia con un'istruzione di chiamata, che interrompe il programma principale per eseguire il sottoprogramma.
- Al termine del sottoprogramma, la CPU riprende l'esecuzione dal punto successivo all'istruzione di chiamata.
- I sottoprogrammi vengono caricati in memoria al momento della chiamata e rilasciati al termine, secondo il metodo di allocazione dinamica.
- La gestione dell'ordine di esecuzione avviene attraverso la pila dei record di attivazione, che consente di restituire l'indirizzo dell'istruzione corretta al termine del sottoprogramma.
- La pila opera secondo il principio LIFO, permettendo l'estrazione dei dati nell'ordine inverso rispetto a quello di inserimento.
Come avviene l'esecuzione dei sottoprogrammi?
Per eseguire un sottoprogramma è necessario utilizzare un’apposita istruzione di chiamata al sottoprogramma, prevista da tutti i linguaggi di programmazione.
Quando la CPU incontra un’istruzione di chiamata, interrompe temporaneamente l’elaborazione del programma chiamante e comincia a eseguire il sottoprogramma chiamato. Una volta terminata l’esecuzione del sottoprogramma, la CPU riprende l’esecuzione del programma, ripartendo dall'istruzione successiva a quella di chiamata.
Gestione della memoria
Bisogna ricordare che il sottoprogramma viene caricato in memoria al momento della chiamata e, terminata l’esecuzione, viene rilasciato, liberando la memoria occupata. Questo metodo di gestire la memoria da parte del sistema operativo viene detto allocazione dinamica.
Per potersi ricordare da quale istruzione si deve riprendere l’esecuzione in seguito a un sottoprogramma, la CPU utilizza un’apposita struttura che si chiama pila dei record di attivazione. La pila, definita anche stack, è una tipo particolare di struttura all'interno di cui i dati possono essere inseriti o estratti solo mediante un’estremità che viene chiamata testa della pila.
Questa caratteristica permette l’estrazione dei dati nell'ordine inverso in cui sono stati inseriti: l’ultimo dato inserito sarà il primo a uscire. Per questo motivo, la pila è conosciuta anche come struttura LIFO.
Quando la CPU esegue un’istruzione di chiamata, utilizza i dati contenuti nel record di attivazione relativo, mentre quando esegue un’istruzione FINE, utilizza la pila delle attivazioni per estrarre l’indirizzo dell’istruzione da cui riprendere l’esecuzione del sottoprogramma chiamante.
Domande da interrogazione
- Come avviene l'esecuzione di un sottoprogramma in un linguaggio di programmazione?
- Qual è il metodo di gestione della memoria utilizzato durante l'esecuzione dei sottoprogrammi?
- Che cos'è la pila dei record di attivazione e quale ruolo svolge nella gestione dei sottoprogrammi?
L'esecuzione di un sottoprogramma avviene tramite un'istruzione di chiamata, che interrompe temporaneamente il programma chiamante per eseguire il sottoprogramma. Una volta completata l'esecuzione, la CPU riprende dal punto successivo all'istruzione di chiamata.
La gestione della memoria durante l'esecuzione dei sottoprogrammi avviene tramite allocazione dinamica, in cui il sottoprogramma viene caricato in memoria al momento della chiamata e rilasciato al termine dell'esecuzione, liberando la memoria occupata.
La pila dei record di attivazione, o stack, è una struttura che consente di memorizzare i dati necessari per riprendere l'esecuzione del programma chiamante. Utilizza un principio LIFO, permettendo di estrarre l'indirizzo dell'istruzione da cui riprendere l'esecuzione al termine del sottoprogramma.