78
1 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con molti fili. Standard: CENTRONICS IEEE 488 (HPIB) (più periferiche sullo stesso canale) Interfacce Seriali: più lente, pochi fili, notevole distanza. Standard: Current Loop (1 km), 1200 bit per secondo (bps o baud); RS 232 -1212V (100 m), 19200 bps RS422 1 km, 100.000 bps USB 1 e 2 (Universal Serial Bus) 3-5m, da 1.5 a 480 Mbit/s PERIFERICA CPU INTERFACCIA INTERFACCIA

275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

Embed Size (px)

Citation preview

Page 1: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

1Università di Pavia - corso di Fondamenti di Informatica

Interfacce di comunicazione

Interfacce Parallele: veloci, pochi metri di distanza, cavi con molti fili. Standard:

– CENTRONICS

– IEEE 488 (HPIB) (più periferiche sullo stesso canale)

Interfacce Seriali: più lente, pochi fili, notevole distanza. Standard:

– Current Loop (1 km), 1200 bit per secondo (bps o baud);

– RS 232 -1212V (100 m), 19200 bps

– RS422 1 km, 100.000 bps

– USB 1 e 2 (Universal Serial Bus) 3-5m, da 1.5 a 480 Mbit/s

PERIFERICA CPU

INTERFACCIA INTERFACCIA

Page 2: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

2Università di Pavia - corso di Fondamenti di Informatica

• Bus: canale di comunicazione in comune gestito dalla CPU; estensione

esterna della linea di comunicazione tra CPU e memoria: ogni periferica è

vista dalla CPU come elemento di memoria a indirizzi prefissati

Cenni sulle architetture

BUS

MEMORIA CPUMEMORIA

AGG.SERIALE PARALL.

INTER.RETE

DISCO NASTRO MASTERIZ-ZATORE

CD/DVD

Page 3: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

3Università di Pavia - corso di Fondamenti di Informatica

BUS Standard

• Sul bus transitano dati, indirizzi e segnali di controllo

• Standard:

– ISA-EISA-PCI: Personal Computer

– NU-BUS: Macintosh

– MULTIBUS: Workstation

– VME-BUS: Workstation

– SCSI (SCSI-1, SCSI-2, …)

– AGP

– XPCI

– PCMCIA

Page 4: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

4Università di Pavia - corso di Fondamenti di Informatica

Evoluzione della macchina di Von Neumann

• L’evoluzione tecnologica aumenta la velocità di elaborazione,

producendo CPU sempre più rapide e con parallelismo di dati e

di indirizzamento maggiori, ma non può migliorare

drasticamente le prestazioni del calcolatore senza superare un

limite intrinseco della struttura di Von Neumann: la stretta

sequenzialità delle operazioni gestite dalla CPU

• Ogni attività viene tradotta in un’opportuna sequenza di

istruzioni macchina: una dopo l’altra vengono acquisite,

decodificate ed eseguite

Page 5: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

5Università di Pavia - corso di Fondamenti di Informatica

Evoluzione della macchina di Von Neumann

Esempi:

due unità funzionalmente autonome, la CPU e un dispositivo di I/O, sono

costrette a sequenzializzare le proprie attività impiegando un tempo pari alla

somma dei singoli tempi di lavoro;

acquisizione, decodifica ed esecuzione delle istruzioni da parte della CPU, pur

logicamente separate e quindi effettuabili in parallelo su istruzioni diverse,

vengono eseguite in modo strettamente sequenziale;

accessi a memoria centrale: rigorosa sequenzialità di accesso senza prevedere

alcun meccanismo per anticipare le richieste della CPU e per effettuare accessi

a memoria in parallelo con le operazioni della CPU stessa;

programma di calcolo, ad esempio su matrici, che richiede alla CPU di ripetere

le stesse istruzioni per eseguire gli stessi calcoli su dati diversi: spreco di

tempo per acquisire ed interpretare le stesse istruzioni, a causa del fatto che

l’unità logico-aritmetica opera solo su coppie di valori

Page 6: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

6Università di Pavia - corso di Fondamenti di Informatica

Evoluzione della macchina di Von Neumann

• In conclusione, il limite intrinseco della struttura di Von Neumann è la totale

mancanza di parallelismo, che comporta un tempo globale di elaborazione

pari alla somma dei tempi richiesti da ogni singola attività

• Le evoluzioni architetturali della macchina di Von Neumann tendono a

consentire diversi livelli di parallelismo

Colloquio CPU - periferiche• Un primo metodo prevede una efficiente gestione delle operazioni di

input/output mediante tre tecniche con diverso livello di parallelismo:

– l’interfaccia segnala la terminazione delle operazioni di I/O alla CPU

(interruzione);

– l’interfaccia trasferisce informazioni direttamente con la memoria senza

richiedere l’intervento della CPU (DMA = Direct Memory Access);

Page 7: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

7Università di Pavia - corso di Fondamenti di Informatica

Colloquio CPU - periferiche

– gestione tramite canale di input/output: si tratta di un dispositivo dedicato a

funzioni di scambio di informazioni con le periferiche che consente di

svincolare la CPU da operazioni di sincronizzazione, transcodifica,

formattazione dei dati, ecc.

CANALE 1 CANALE 2

PERIFERICA PERIFERICA

MEMORIACENTRALE

CPU

Page 8: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

8Università di Pavia - corso di Fondamenti di Informatica

Pipeline

• Una parallelizzazione del funzionamento della CPU si può ottenere con

l’utilizzo del concetto di pipeline con diverse sottounità dedicate alle varie

fasi di acquisizione, decodifica ed esecuzione delle istruzioni e collegate fra

loro secondo lo schema della catena di montaggio

• Si sovrappone il tempo di esecuzione dell’istruzione i-ma, con il tempo di

decodifica relativo all’istruzione (i+1)-ma, con il tempo di fetch dell’operando

dell’istruzione (i+2)-ma e col tempo di fetch del codice operativo

dell’istruzione (i+3)-ma

• La pipeline può essere anche di tipo aritmetico: si suddivide l’unità di calcolo

in più stadi in cascata per operare su più dati consecutivi in contemporanea,

eseguendo su ogni dato una parte del calcolo richiesto

Page 9: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

9Università di Pavia - corso di Fondamenti di Informatica

Fasi dell’unità di controllo

Esecuzione

Decodifica

Fetch Operando

Fetch Op. Code

i-3 i-2 i-1 i

i-2 i-1 i i+1

i-1 i i+1 i+2

i i+1 i+2 i+3

Esecuzione

Decodifica

Fetch Operando

Fetch Op. Code Tempo

Tempo

Fasi di una istruzione nella macchina di Von Neumann

Fasi in una soluzione pipeline

Page 10: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

10Università di Pavia - corso di Fondamenti di Informatica

Evoluzione della macchina di Von Neumann

• In maniera più formale, si può definire il concetto di parallelismo in base ai

due flussi di informazione normalmente presenti in un calcolatore:

– flusso dei dati (data stream);

– flusso delle istruzioni (instruction stream)

• Nella macchina di Von Neumann si ha un flusso di dati ed istruzioni singoli:

la macchina è classificata come SISD (Single Instruction stream, Single Data

stream)

• La macchina SIMD (Single Instruction stream, Multiple Data stream) è

caratterizzata da una sola unità di controllo e da più unità aritmetiche

indipendenti che effettuano quindi le stesse operazioni su dati diversi

Page 11: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

11Università di Pavia - corso di Fondamenti di Informatica

Evoluzione della macchina di Von Neumann

• È adatta, ad esempio, ad elaborazioni matriciali che richiedano la valutazione

di espressioni matematiche identiche su grandi quantità di numeri diversi

• Le operazioni sui dati diversi avvengono nello stesso istante ed ogni unità di

elaborazione (PE: Processing Element) ha una memoria privata; i vari PE

sono collegati tra loro per scambiarsi le informazioni

• Le macchine MIMD (Multiple Instruction stream, Multiple Data stream)

prevedono la replicazione dell’intera struttura della macchina di Von

Neumann per ottenere architetture multiprocessore

• Si tratta di un calcolatore costituito da più unità di controllo e unità di calcolo

che operano in parallelo su flussi di dati diversi effettuando elaborazioni

anch’esse, a priori, diverse

Page 12: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

12Università di Pavia - corso di Fondamenti di Informatica

Architettura degli elaboratori: tassonomia generale

Elaborazione

SISD

Macchina di Von Neumann

MISD

Strutture pipeline

SIMD

Strutture array

MIMD

Sistemi multi-

processore

Sistemi multi-

computer

Seriale Parallela

Page 13: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

13Università di Pavia - corso di Fondamenti di Informatica

Classificazione delle architetture degli elaboratori

∙∙∙:

Memoriaistruzioni

dati dati

SIMD

Processori

Memoria

Processore

istruzioni

dati dati

SISD

Memoriaistruzioni

dati dati

Processori

MISD

Memoriaistruzioni

dati dati

MIMD

Processore

Processore

Processore

Page 14: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

14Università di Pavia - corso di Fondamenti di Informatica

Evoluzione della macchina di Von Neumann

CPULOCALE

MEMORIACOMUNE

I/OCOMUNE

BUS COMUNE

MEMORIALOCALE

I/OLOCALE

BU

S L

OC

AL

E 1

… …B

US

LO

CA

LE

2

BU

S L

OC

AL

E n

Sistema Multiprocessore

Page 15: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

15Università di Pavia - corso di Fondamenti di Informatica

Evoluzione della macchina di Von Neumann

• N-cubo: 2N processori ai vertici di un N-cubo

• Ogni processore è connesso con N vicini

• Sono necessari al più N passi per portare dati da un

processore ad un altro.

1-cubo 2-cubo 3-cubo

Page 16: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

16Università di Pavia - corso di Fondamenti di Informatica

Sistemi operativi

• Definizione intuitiva: insieme di programmi che rendono

facilmente disponibile all’utente le potenzialità offerte dalla

macchina

• Sistema operativo = nucleo (kernel) + software di base

• Il sistema operativo è fornito dal costruttore della macchina

(non gratuitamente)

Page 17: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

17Università di Pavia - corso di Fondamenti di Informatica

Funzioni del sistema operativo

• Gestione lavori

• Gestione delle risorse

• Ausili per la messa a punto dei programmi

• Ausili per la gestione dei dati

• Funzioni di:

– contabilità

– sicurezza

– recupero

Page 18: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

18Università di Pavia - corso di Fondamenti di Informatica

• Il kernel del sistema operativo è un programma che va in

esecuzione all’accensione della macchina (bootstrapping) e

svolge le funzioni:

– controllo dell’esecuzione dei programmi dell’utente

– amministrazione delle risorse hardware nei sistemi multiutente

• Il kernel impiega del tempo di CPU che viene sottratto

all’esecuzione dei programmi utente: sovraccarico (overhead)

Funzioni del kernel

Page 19: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

19Università di Pavia - corso di Fondamenti di Informatica

Funzioni del software di base

• Il software di base è un insieme di programmi che servono a facilitare la

creazione di programmi da parte degli utenti della macchina

• L’utente si serve del software di base per:

– editare un file (insieme ordinato di dati)

– compilare

– duplicare un file

– cancellare un file

– visualizzare un file

– trasferire un file

Page 20: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

20Università di Pavia - corso di Fondamenti di Informatica

Funzioni del software di base

– utilizzare le periferiche (nastri, stampanti, …)

– colloquiare con altri utenti

– utilizzare la rete locale

– inviare e ricevere posta

– giocare

– …

Page 21: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

21Università di Pavia - corso di Fondamenti di Informatica

Sistemi operativi

• Sistema operativo come interfaccia tra macchina (hardware) e utente

• L’hardware della macchina è trasparente all’utente

• Saper utilizzare una macchina significa saper utilizzare il suo sistema

operativo

• Macchine molto diverse a livello hardware supportano lo stesso sistema

operativo: svolge le stesse funzioni e si presenta all’utente nello stesso

modo

HARDWARE

PROGRAMMI UTENTE

SISTEMA OPERATIVO

Page 22: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

22Università di Pavia - corso di Fondamenti di Informatica

Classificazione dei sistemi operativi

• Dedicati

• A lotti (batch)

• Multiprogrammazione

• Interattivi (time-sharing)

• Real-time

• Per macchine multiprocessori (sistemi concorrenti)

• L’ordine è cronologico

• I sistemi operativi integrano funzioni per la gestione delle reti di

calcolatori

Page 23: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

23Università di Pavia - corso di Fondamenti di Informatica

Sistemi operativi dedicati

• I primi sistemi operativi (tornati in uso con i PC)

• La macchina viene utilizzata da un utente per volta che può

eseguire un solo programma per volta (applicativo o di base)

• Nucleo molto semplice

Page 24: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

24Università di Pavia - corso di Fondamenti di Informatica

Sistemi operativi per gestione a lotti (batch)

• Nati per meglio sfruttare la velocità crescente delle macchine: eliminano i

tempi morti tra programmi successivi di utenti diversi

• Un insieme di lavori (jobs) viene accorpato in un lotto (batch) e trasferito su

una unità di ingresso veloce (disco)

• Ogni lavoro viene caricato ed eseguito in sequenza senza interruzioni fino al

termine

• La CPU viene comunque sottoutilizzata perché, durante le operazione di I/O,

deve adeguarsi alla bassa velocità delle periferiche

Page 25: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

25Università di Pavia - corso di Fondamenti di Informatica

Multiprogrammazione

• Più di un programma è caricato in memoria contemporaneamente

• Le operazione di I/O di un programma sono sovrapposte

temporalmente all’esecuzione delle istruzioni di un altro programma

• Ciò è possibile grazie al canale che gestisce l’I/O

CANALE

MEMORIA

CPU

PERIFERICHE

Page 26: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

26Università di Pavia - corso di Fondamenti di Informatica

• Quando un processo in esecuzione (running) chiede un servizio di I/O al

sistema operativo si blocca in attesa del risultato

• Il sistema operativo avvia l’operazione di I/O e manda in esecuzione un altro

processo che si trova in stato di pronto (ready)

• Il sistema operativo mantiene una o più code di processi gestite secondo la

priorità assegnata a ciascuno di essi (scheduling)

• CPU ben sfruttata

• Multiprogrammazione incapace di differenziare fra programmi che

richiedono un uso frequente delle periferiche, da quelli che richiedono

l’utilizzo per lunghi tempi della CPU (es. programmi di elaborazione

matematica su dati ricevuti inizialmente). Quando uno di questi programmi

conquista la CPU non la rilascia, bloccando gli altri programmi

Multiprogrammazione

Page 27: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

27Università di Pavia - corso di Fondamenti di Informatica

• Il tempo di utilizzo della CPU viene suddiviso dal sistema

operativo in fette (time slice con durata di 100-800 ms)

• Ogni processo in memoria riceve a turno l’uso della CPU per

una fetta di tempo

• Usati soprattutto per lo sviluppo di software in ambiente

multiutente

Sistemi operativi interattivi (time sharing)

Page 28: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

28Università di Pavia - corso di Fondamenti di Informatica

e ha l’impressione di avere la macchina a sua completa disposizione

• Ogni processo ottiene ciclicamente l’utilizzo della CPU

• Overhead per la gestione della CPU principalmente con molti processi

attivi

Sistemi operativi interattivi (time sharing)

RIFLETTE SCRIVE

COMPILA

ESEGUE

RIFLETTE SCRIVE …

• L’utente lavora al terminale

Page 29: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

29Università di Pavia - corso di Fondamenti di Informatica

• Processo: sequenza di istruzioni eseguite dal processore per eseguire

un programma

Time sharing: Stati di un processo

Page 30: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

30Università di Pavia - corso di Fondamenti di Informatica

Time sharing: Stato dei programmi

Page 31: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

31Università di Pavia - corso di Fondamenti di Informatica

Time sharing: Stato dei programmi

S.O. Dedicato

S.O. Time Sharing

S.O. Multi programmato

Running

Blocked

Running

Ready

Blocked

Running

Ready

Blocked

t

t

t

Page 32: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

32Università di Pavia - corso di Fondamenti di Informatica

Sistemi operativi real time

• Sistemi operativi al servizio di una specifica applicazione che ha dei vincoli

precisi nei tempi di risposta

• Il sistema operativo deve garantire un tempo massimo entro il quale mandare

in esecuzione un programma a seguito di una richiesta in tal senso

– gestione di strumentazione

– controllo di processo

– gestione di allarme

– sistemi transazionali (banche, prenotazione)

• In generale si ha un sistema real time quando il tempo che passa dalla

richiesta di esecuzione di un processo al completamento della stessa è

minore del tempo fissato

Page 33: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

33Università di Pavia - corso di Fondamenti di Informatica

Sistemi operativi per sistemi concorrenti

• Il sistema operativo si prende carico di assegnare le diverse

CPU a processori diversi nonché di gestire le risorse in

comune tra le varie CPU (memoria condivisa, bus,

periferiche)

• A sua volta il sistema operativo può essere eseguito

contemporaneamente da più CPU oppure da una sola

(master)

• Nell’ultimo caso, le CPU hanno compiti differenti

Page 34: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

34Università di Pavia - corso di Fondamenti di Informatica

Sistemi operativi

• UNIX: AIX (IBM), XENIX (IBM), HP-UX (HP), ULTRIX (Digital),

SOLARIS (SUN), SCO (PC), IRIX (Silicon Graphics)

• LINUX (PC),

• MAC OS (MAC)

• WINDOWS (95/98/ME, NT, 2000, XP) (PC)

• WINDOWS CE (Palmari e dispositivi portatili)

• …

Page 35: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

35Università di Pavia - corso di Fondamenti di Informatica

La creazione di un programma compilato

• Sono necessari alcuni strumenti contenuti nel software di base

• Alcuni sistemi operativi dispongono di raffinati mezzi software per l’ausilio

della programmazione

• L’insieme minimo necessario per lo sviluppo di software realizza le seguenti

funzioni:

– editing dei testi dei programmi (sorgenti)

– compilazione dei sorgenti oggetti

– linking dei vari oggetti (alcuni dei quali forniti con il compilatore)

eseguibile

– caricamento dell’eseguibile in memoria

– esecuzione del programma

– eventuale debugging

Page 36: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

36Università di Pavia - corso di Fondamenti di Informatica

La creazione di un programma compilato

• I file sorgente, i file oggetto, i file eseguibili vengono memorizzati su

supporto di memoria magnetico (disco). Sono caratterizzati da nome ed

estensione:

– pippo.c

– pippo.o

– pippo

• Ad ognuno viene inoltre associata la dimensione, i diritti di accesso, ecc.

• Il sistema operativo tratta tutti i file allo stesso modo, a prescindere dalla loro

natura. Possono pertanto essere copiati, cancellati, spezzati, trasferiti da un

direttorio ad un altro, ecc.

Page 37: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

37Università di Pavia - corso di Fondamenti di Informatica

• I programmi scritti in alcuni linguaggi di programmazione (BASIC,

PROLOG ed altri) possono essere DIRETTAMENTE ESEGUITI da un

programma denominato INTERPRETE

• L’interprete traduce ogni istruzione del linguaggio riportata nel file

sorgente e ne comanda l’esecuzione

• Spesso all’interprete viene associato un programma di scrittura delle

istruzioni (EDITOR), in modo da creare un AMBIENTE DI SVILUPPO

UNICO

I programmi interpretati

Page 38: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

38Università di Pavia - corso di Fondamenti di Informatica

Confronto fra Interpretazione e Compilazione

Page 39: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

39Università di Pavia - corso di Fondamenti di Informatica

Confronto fra Interpretazione e Compilazione

Page 40: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

40Università di Pavia - corso di Fondamenti di Informatica

Confronto fra Interpretazione e Compilazione

Page 41: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

41Università di Pavia - corso di Fondamenti di Informatica

Creazione del file sorgente: gli editor

• Si tratta di programmi che interagiscono con il programmatore al terminale e

gli permettono di creare e modificare TESTI (file in cui compaiono solo caratteri

ASCII)

• Funzioni principali degli editor

– INSERIRE caratteri

– CANCELLARE

– VISUALIZZARE

– RICERCARE

– SOSTITUIRE

– COPIARE

– ecc.

• Gli EDITOR GUIDATI DALLA SINTASSI generano direttamente i COSTRUTTI

corretti, per un determinato linguaggio, con un unico comando: garantiscono la

correttezza sintattica del programma in corso di stesura

Page 42: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

42Università di Pavia - corso di Fondamenti di Informatica

Fasi della compilazione

Page 43: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

43Università di Pavia - corso di Fondamenti di Informatica

ANALISI LESSICALE

Scansione del testo e individuazione degli ELEMENTI DI BASE del

linguaggio: VARIABILI, COSTANTI, PAROLE CHIAVE, DELIMITATORI,

etc.

Viene creata una TAVOLA DEI SIMBOLI per le variabili

Il file sorgente viene trasformato in una STRINGA (successione) di

SIMBOLI

Esempio: Tavola dei simboli generata dall’equazione seguente

ALFA:=BETA+3.1415*DELTA;

ALFA 179,6505

BETA 32

DELTA 47

Page 44: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

44Università di Pavia - corso di Fondamenti di Informatica

ANALISI SINTATTICA

È guidata dalla DEFINIZIONE FORMALE del Linguaggio di

Programmazione (GRAMMATICA)

Viene riconosciuta la STRUTTURA del programma

Viene generata una forma intermedia (ALBERO, MATRICE)

corrispondente alla struttura sintattica del programma

Inoltre vengono generate TAVOLE DEI SIMBOLI con tutti gli

identificatori

Esempio di albero: ALFA:=BETA+3.1415*DELTA;

:=

ALFA

BETA

+

*

3.1415DELTA

Page 45: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

45Università di Pavia - corso di Fondamenti di Informatica

ANALISI SEMANTICA

Oltre che essere lessicalmente e sintatticamente corretto, il programma

deve esserlo anche semanticamente

L’analisi semantica effettua i seguenti controlli:

Verifica la COMPATIBILITÀ DI TIPO di espressioni legate da operatori e

la CORRETTEZZA delle DICHIARAZIONI degli identificatori

Queste verifiche vengono effettuate sulla forma intermedia generata in

precedenza (ALBERO, MATRICE)

Questi controlli possono essere più o meno approfonditi a seconda

delle caratteristiche del linguaggio

Una vera analisi semantica permetterebbe di individuare il

SIGNIFICATO del programma, cioè il suo scopo

Page 46: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

46Università di Pavia - corso di Fondamenti di Informatica

GENERAZIONE del CODICE e OTTIMIZZAZIONE

Dalla forma intermedia prodotta precedentemente (ALBERO) si genera

un CODICE DI BASSO LIVELLO, ma ancora indipendente dalla CPU per

la quale si vuole che il codice macchina sia generato

Questo codice può essere ottimizzato con facilità e quindi può essere

tradotto nelle istruzioni della particolare CPU

Si può anche effettuare una POST-OTTIMIZZAZIONE

L’OTTIMIZZAZIONE, che può essere assente, riguarda la dimensione

del codice prodotto ed il relativo tempo di calcolo

La SEQUENZA delle varie fasi della compilazione ed il PESO di

ciascuna di esse dipendono dal tipo di compilatore (il numero di

passate specifica il numero di volte in cui gli statement del programma

sorgente vengono esaminati)

Page 47: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

47Università di Pavia - corso di Fondamenti di Informatica

Assemblatori

• Come i compilatori traducono in codice eseguibile programmi scritti in un

linguaggio scritto ad alto livello, così gli ASSEMBLATORI traducono programmi

scritti nel linguaggio ASSEMBLY (di basso livello) proprio del processore specifico

• Mentre per i linguaggi ad alto livello ad ogni STATEMENT corrispondono più

istruzioni eseguibili da parte del microprocessore, per quelli a basso livello si ha

una corrispondenza UNO A UNO fra STATEMENT del file sorgente ed ISTRUZIONI

eseguibili

• Gli assemblatori sono tipicamente a due passate: nella prima viene effettuata

l’analisi delle istruzioni e creata la tavola dei simboli; la seconda passata produce il

codice in linguaggio macchina per il processore

• I MACROASSEMBLATORI ammettono MACROISTRUZIONI, istruzioni definite dal

programmatore a cui vengono fatte corrispondere più statement del linguaggio

ASSEMBLY

Page 48: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

48Università di Pavia - corso di Fondamenti di Informatica

Precompilatori - Metacompilatori

• I precompilatori operano una traduzione SORGENTE - SORGENTE

• Sono usati per trasformare un programma scritto in un linguaggio di ALTO

LIVELLO (codificato da una GRAMMATICA) in un programma scritto in un

linguaggio per cui esiste il compilatore

• Realizzano prima l’ANALISI LESSICALE, SINTATTICA e SEMANTICA e poi la

traduzione nel linguaggio TARGET

• I metacompilatori sono compilatori che, a partire dalla definizione formale di

un linguaggio (GRAMMATICA), creano un COMPILATORE per il linguaggio

stesso (più frequentemente un PRECOMPILATORE). Esempio: YACC (Yet

Another Compiler Compiler) di UNIX

Page 49: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

49Università di Pavia - corso di Fondamenti di Informatica

Linker e Loader

• Il linker è un programma incaricato della fusione in un unico modulo

ESEGUIBILE di più moduli OGGETTO separatamente compilati

• Permette l’uso di LIBRERIE preconfezionate

• Permette di mettere insieme il lavoro svolto da più persone che collaborano allo

stesso progetto oppure di ricomporre un lavoro scomposto, in fase di progetto, in

più sottoparti

• Permette infine di mettere insieme moduli creati utilizzando linguaggi di

programmazione diversi

Page 50: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

50Università di Pavia - corso di Fondamenti di Informatica

Linker e Loader

Il loader:

• trasferisce in memoria il programma eseguibile

• carica nel Program Counter l’indirizzo della prima istruzione eseguibile

• Inizia l’esecuzione

Il linker può produrre:

– CODICE BINARIO ASSOLUTO: tutti gli indirizzi sono stabiliti in fase di linking

– CODICE BINARIO RILOCABILE: gli indirizzi sono riferiti ad un’origine di

INDIRIZZO 0 (inizio del programma); successivamente tutti gli indirizzi

vengono riaggiornati per tener conto dell’indirizzo reale, oppure vengono

usate tecniche di indirizzamento indicizzato o con spostamento rispetto al

valore attuale del Program Counter; il LOADER provvede a caricare i registri

base con l’indirizzo di inizio reale

Page 51: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

51Università di Pavia - corso di Fondamenti di Informatica

Debugger

• Il debugger permette di eseguire programmi da sottoporre a test permettendo

di controllare la correttezza dell’esecuzione

• Si può, per esempio, far procedere l’esecuzione fino ad un punto di arresto

(BREAK-POINT) e poi far avanzare il programma PASSO-PASSO

• Permette di leggere e, volendo, di modificare i contenuti dei registri della CPU

e della memoria

• Segnala il verificarsi di eventi

• I Debugger Simbolici permettono di operare sul CODICE SORGENTE

• Per poter funzionare il debugger usa informazioni (tabelle) create dal

compilatore-assemblatore e dal linker

Page 52: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

52Università di Pavia - corso di Fondamenti di Informatica

• Linguaggio macchina (1a generazione)

– utilizzano la codifica binaria di codice operativo e operandi

– le istruzioni sono quelle direttamente eseguibili dalla CPU

– i programmi sono utilizzabili solo su elaboratori equipaggiati

con la CPU corrispondente al linguaggio (non trasportabilità)

– programmazione difficile

– pessima leggibilità

– facilità di errori

– alta efficienza (dipende dal programmatore)

Linguaggi

Page 53: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

53Università di Pavia - corso di Fondamenti di Informatica

• Linguaggi assemblativi (2a generazione)

– le istruzioni sono quelle eseguibili dalla CPU

– rappresentazione simbolica, tramite brevi mnemonici, di codici operativi

e operandi

– riferimento alle variabili tramite il nome

– necessità di un traduttore in linguaggio macchina (assemblatore)

– possibilità di definire ed utilizzare macroistruzioni

– i programmi sono utilizzabili solo su elaboratori equipaggiati con la CPU

corrispondente al linguaggio (non trasportabilità)

– programmazione abbastanza difficile

– scarsa leggibilità

– alta efficienza (dipende dal programmatore)

Linguaggi

Page 54: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

54Università di Pavia - corso di Fondamenti di Informatica

Linguaggi

• Linguaggi di alto livello (3a generazione)

– le istruzioni esprimono operazioni significative nella logica del

programmatore non coincidenti con quelle eseguite dalla CPU

– necessità di un traduttore (compilatore o interprete)

– la traduzione trasforma un’istruzione in una sequenza di

istruzioni macchina

– efficienza ridotta rispetto ai linguaggi assemblativi (dipende dal

compilatore), ma possibilità di ottimizzazioni

– trasportabilità di un programma su tutti gli elaboratori che

dispongono di un traduttore per il linguaggio

– introduzione di costrutti logici

– maggiore facilità d’uso

– buona leggibilità

Page 55: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

55Università di Pavia - corso di Fondamenti di Informatica

Linguaggi

• I linguaggi ad alto livello vengono classificati in:

– procedurali

– funzionali

– basati sulla logica

– orientati agli oggetti

Page 56: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

56Università di Pavia - corso di Fondamenti di Informatica

Scelta di un linguaggio

• Va fatta in funzione dei parametri seguenti:

– adattabilità al problema

– facilità di apprendimento

– facilità d’uso

– comprensibilità e modificabilità dei programmi

– portabilità dei programmi

– efficienza

– software di supporto

– esistenza di librerie

Page 57: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

57Università di Pavia - corso di Fondamenti di Informatica

Linguaggi procedurali

• A differenza delle altre tre classi di linguaggi ad alto livello, sono basati sul

modello computazionale di Von Neumann, in cui un programma è visto come

una sequenza di istruzioni tendente a modificare il contenuto della memoria

(principalmente)

• Caratteristiche:

– indipendenti dalla macchina

– possibile l’uso di nomi simbolici per i dati

– sintassi vicina al linguaggio naturale

– basati su istruzioni e assegnazioni

– permettono astrazioni sui dati: possibilità di definire tipi di dati e

operazioni sui tipi

Page 58: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

58Università di Pavia - corso di Fondamenti di Informatica

Linguaggi procedurali

– permettono astrazioni sul controllo: l’ordine di esecuzione delle

istruzioni è determinato dalle strutture di controllo (FOR, WHILE,

DO, …) o da moduli (FUNZIONI e PROCEDURE)

– permettono l’utilizzo dei Sottoprogrammi: definizione di nuove

istruzioni e operazioni

– buona leggibilità

• Si dividono in tre categorie:

– d’uso generale (BASIC, C, C++, JAVA, FORTRAN, PASCAL,

COBOL, PL1, …)

– d’uso speciale (CHILL, SIMULA, APT, AED, SQL, …)

– per applicazioni Web (HTML, PHP)

Page 59: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

59Università di Pavia - corso di Fondamenti di Informatica

Linguaggi di programmazione: I Sottoprogrammi

Sottoprogramma:

– Sequenza di istruzioni che vengono eseguite a seguito di una chiamata.

Vantaggi:

– Scrivere una sola volta un codice utilizzato più volte;

– Creare programmi strutturati per raffinamenti successivi (e più leggibili);

– Utilizzare librerie preconfezionate (insieme di sottoprogrammi).

Acquisizione dati A

Elaborazione dati A

Acquisizione dati B

Elaborazione dati B

Acquisizione dati C

Elaborazione dati C

Acquisizione dati A

Acquisizione dati B

Acquisizione dati C

Elaborazione dati

Programma senza chiamate Programma con chiamate

Chiamate per elaborazione dati A, B, C

Page 60: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

60Università di Pavia - corso di Fondamenti di Informatica

Chiamata del Sottoprogramma

Parametri formali: simboli che rappresentano i dati su cui il

sottoprogramma opera (specificati nella definizione del

sottoprogramma stesso).

Parametri attuali (o Effettivi): i dati, corrispondenti ai parametri

formali, su cui il sottoprogramma effettivamente opera (specificati

nella chiamata al sottoprogramma).

Si definiscono due tipi di sottoprogrammi:

– Aperti;

– Chiusi.

Page 61: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

61Università di Pavia - corso di Fondamenti di Informatica

Sottoprogramma Aperto

Nei vari punti del programma in cui viene chiamato, il

sottoprogramma aperto compare con tutte le istruzioni che

definiscono il sottoprogramma stesso.

Il sottoprogramma viene chiamato MACRODEFINIZIONE; la sua

chiamata MACRORICHIAMO.

Il meccanismo della MACROESPANSIONE provvede a sostituire i

singoli richiami con le istruzioni che costituiscono il

sottoprogramma, e i parametri attuali a quelli formali.

Una macroistruzione può contenere richiami ad altre

macroistruzioni, si parla in tal caso di macroistruzioni nidificate.

Page 62: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

62Università di Pavia - corso di Fondamenti di Informatica

Esempio di Macroistruzioni

Macrodefinizione 2

Macrodefinizione 3

Macrodefinizione 4

Macrodefinizione 1

Macrodefinizione 2

Macrodefinizione 3

Macrodefinizione 4

Macrodefinizione 1

Macrodefinizione 4

Programma Sorgente Dopo le Macroespansioni

ChiamataMacro 1

ChiamataMacro 2

ChiamataMacro 4

ChiamataMacro 3

ChiamataMacro 4

Page 63: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

63Università di Pavia - corso di Fondamenti di Informatica

Sottoprogramma Chiuso

Compare una sola volta con tutte le sue istruzioni, ma viene

adoperato nei punti del programma in cui viene chiamato.

I sottoprogrammi possono essere nidificati: un sottoprogramma è

chiamato da un altro sottoprogramma.

Alcuni linguaggi di programmazione ammettono chiamate a

sottoprogrammi Ricorsive: il sottoprogramma richiama se stesso.

Problemi connessi con sottoprogrammi chiusi:

– determinazione dell’indirizzo di rientro al Programma Chiamante.

– Passaggio dei parametri in ingresso (da chiamante a chiamato) e

di uscita ( da chiamato a chiamante).

Page 64: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

64Università di Pavia - corso di Fondamenti di Informatica

Gestione delle Chiamate

Quando un sottoprogramma viene chiamato, l’indirizzo di rientro, cioè

quello dell’istruzione successiva a quella che ha effettuato la

chiamata, viene memorizzato nello STACK (zona di memoria gestita

in logica LIFO: pila).

Sottoprogramma

Programma

Richiami12

3

Quando il sottoprogramma termina

l’esecuzione, viene letto dalla pila

l’ultimo indirizzo caricato che non

è stato ancora prelevato e viene

trasferito nel Program Counter.

La gestione LIFO dello STACK

permette di nidificare le chiamate

ai sottoprogrammi.

Page 65: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

65Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 1/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Inizio Main

Situazione della Pila

Inizia l’esecuzione del Programma dalla prima istruzione del Main.La pila è vuota

Page 66: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

66Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 2/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Chiamata S1

I1

Situazione della Pila

I1

L’indirizzo dell’istruzione successiva a quella che ha effettuato la chiamata (I1), viene memorizzato nella pila

Page 67: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

67Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 3/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Inizio S1

I1

Situazione della Pila

Inizia l’esecuzione del sottoprogramma 1

Page 68: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

68Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 4/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Chiamata S2 I1

I2

Situazione della Pila

I2

L’indirizzo dell’istruzione successiva a quella che ha effettuato la chiamata (I2), viene memorizzato nella pila

Page 69: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

69Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 5/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Inizio S2I1

I2

Situazione della Pila

Inizia l’esecuzione del sottoprogramma 2

Page 70: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

70Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 6/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Chiamata S3

I1

I2

I3

Situazione della Pila

I3

L’indirizzo dell’istruzione successiva a quella che ha effettuato la chiamata (I3), viene memorizzato nella pila

Page 71: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

71Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 7/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Inizio S3

I1

I2

I3

Situazione della Pila

Inizia l’esecuzione del sottoprogramma 3

Page 72: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

72Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 8/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3 Fine S3

I1

I2

Situazione della Pila

Si conclude l’esecuzione del sottoprogramma 3; l’ultimo indirizzo caricato (I3) viene letto dalla pila e viene trasferito nel Program Counter e l’esecuzione prosegue da I3

Salto a I3

Page 73: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

73Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 9/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Chiamata S3

I1

I2

I4

Situazione della Pila

I4

L’indirizzo dell’istruzione successiva a quella che ha effettuato la chiamata (I4), viene memorizzato nella pila

Page 74: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

74Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 10/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Inizio S3

I1

I2

I4

Situazione della Pila

Inizia l’esecuzione del sottoprogramma 3

Page 75: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

75Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 11/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3 Fine S3

I1

I2

Situazione della Pila

Si conclude l’esecuzione del sottoprogramma 3; l’ultimo indirizzo caricato (I4) viene letto dalla pila e viene trasferito nel Program Counter e l’esecuzione prosegue da I4

Salto a I4

Page 76: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

76Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 12/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Fine S2

I1

Situazione della Pila

Si conclude l’esecuzione del sottoprogramma 2; l’ultimo indirizzo caricato (I2) viene letto dalla pila e viene trasferito nel Program Counter e l’esecuzione prosegue da I2

Salto a I2

Page 77: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

77Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 13/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Fine S1

Situazione della Pila

Si conclude l’esecuzione del sottoprogramma 1; l’ultimo indirizzo caricato (I1) viene letto dalla pila e viene trasferito nel Program Counter e l’esecuzione prosegue da I1.

Salto a I1

Page 78: 275 Università di Pavia - corso di Fondamenti di Informatica Interfacce di comunicazione Interfacce Parallele: veloci, pochi metri di distanza, cavi con

78Università di Pavia - corso di Fondamenti di Informatica

Esempio di gestione delle chiamate 14/14

Sottoprogramma 1

Sottoprogramma 2

Sottoprogramma 3

Main

S1

S2

S3

Fine Main Situazione della Pila

Il programma termina l’esecuzione