Software di base Esecuzione dei programmi Compilatori e Interpreti

Software di base
Esecuzione dei programmi
• Tra il linguaggio macchina (basso livello) e
i linguaggi evoluti (alto livello) esiste uno
strato di software
• Esso svolge funzioni di base:
• L'esecuzione di un programma scritto
con un linguaggio ad alto livello è
preceduta dai seguenti passi:
– traduzione di linguaggi da alto a basso livello
– comunicazione tra i vari sottosistemi hardware
– gestione e distribuzione delle risorse
Fondamenti di Informatica
1
• Esistono due modi per eseguire i 3 passi
menzionati:
– in sequenza, dopo il termine del passo
precedente (compilatori)
– in sequenza, prima del termine del passo
precedente (interprete, detto anche
simulazione software)
2
• Viene suddivisa in 2 passi:
– analisi (lessicale, grammaticale, contestuale)
– trasformazione del programma sorgente in
programma oggetto (forma più vicina al
linguaggio macchina):
• creazione tabella simboli
• ottimizzazioni (rimozione ripetizioni, eliminazione cicli,
sfruttamento registri,…); livelli di ottimizzazione
3
Collegamento con
programmi di supporto
Fondamenti di Informatica
4
Caricamento in memoria
• Il Loader serve per caricare in memoria
un programma rilocabile
• Nel caricamento vengono fissati tutti gli
indirizzi relativi
• Il codice oggetto così formato:
– può ancora contenere dei simboli irrisolti
• riferimenti esterni a programmi di servizio
(accesso alle periferiche, calcoli matematici,...)
– contiene indirizzi relativi
– variabili, salti, …
• Il Linker serve per collegare diversi
moduli oggetto
Fondamenti di Informatica
Fondamenti di Informatica
Traduzione in
linguaggio macchina
Compilatori e Interpreti
Fondamenti di Informatica
– traduzione in linguaggio macchina
– collegamento con programmi di supporto
(calcoli, comunicazione con periferiche,…)
– caricamento in memoria
• Vengono caricati anche i programmi di
supporto, se necessari
5
Fondamenti di Informatica
6
1
Classificazione dei S.O.
rispetto alle funzionalità
Sistema operativo
• Il Sistema Operativo gestisce le risorse
hw e sw del sistema di elaborazione
• Facilita l'interazione tra utente e sistema
• Esistono diversi tipi di sistemi operativi,
classificati rispetto:
– alle funzionalità
– alle caratteristiche della struttura interna
Fondamenti di Informatica
7
Classificazione dei S.O.
rispetto alla struttura
– l'utente, attraverso un terminale, comanda
l'esecuzione delle diverse fasi
– comodo e flessibile (per la messa a punto)
• Sistemi a lotti (o batch)
– la sequenza deve essere decisa a priori
– scomodo, ma utilizzato per processi lunghi
o per l'esecuzione finale
Fondamenti di Informatica
8
Monoprogrammazione
• Diverse tecniche di gestione delle risorse:
– monoprogrammazione
– multiprogrammazione
– multielaborazione
• La scelta dipende anche dal tipo di
calcolatore e dalle sue caratteristiche hw
Fondamenti di Informatica
9
Multiprogrammazione
• E' il modo più semplice per gestire un
elaboratore
– il S.O. gestisce in modo sequenziale i
diversi programmi, uno per volta
– poca efficienza dell'hw a causa della
diversa velocità tra CPU e periferiche
Fondamenti di Informatica
10
Multielaborazione
• Vengono gestiti simultaneamente più
programmi indipendenti; gestione ottimale
• Il S.O. è molto più complesso:
– carica contemporaneamente più programmi
– mentre uno è in attesa, ne esegue un altro
– la scelta dipende dalla priorità
• problemi di starvation; meccanismi di alternanza;
time-sharing;
Fondamenti di Informatica
• Sistemi interattivi
11
• Più CPU o più elaboratori cooperano
nell'esecuzione dei programmi
• Problematiche molto complesse
• Richiedono speciali architetture dei
sistemi di elaborazione
• Sono lo stato dell'arte della tecnologia
corrente
Fondamenti di Informatica
12
2
Multielaborazione
Multielaborazione
• Esistono due diverse modalità:
• Esempi:
– SIMD (Single Instruction Multiple Data)
– SIMD:
• elaboratore formato da più CPU, ognuna delle
quali esegue le stesse operazioni su dati diversi
• CPU semplici, in numero elevato
– MIMD (Multiple Instruction Multiple Data)
13
Multielaborazione
14
• E' anche detto parallelismo sui dati
• Indica la quantità di dati che vengono
elaborati contemporaneamente
• Esempio del processore Pentium
– parallelismo di parola
– parallelismo spaziale
– parallelismo di istruzione
15
Parallelismo di istruzione
Fondamenti di Informatica
16
Parallelismo di istruzione
• L'esecuzione di un'istruzione coinvolge
più risorse
• Se due istruzioni sono indipendenti e
utilizzano diverse risorse, possono
essere eseguite contemporaneamente
• Le CPU con queste possibilità sono
suddivise in stages
• Si dicono processori a pipeline
Fondamenti di Informatica
Fondamenti di Informatica
Parallelismo spaziale
• Può esservi multielaborazione non solo
a livello di sistema di elaborazione, ma
anche a livello di CPU (parallelismo)
• La CPU può essere caratterizzata da
diversi livelli di parallelismo:
Fondamenti di Informatica
– MIMD:
• trattamento di grosse moli di dati, elaborazione
di immagini a grana grossa
• elaboratore formato da più CPU, ognuna delle
quali esegue operazioni diverse su dati diversi
• CPU anche complesse, in numero ristretto
Fondamenti di Informatica
• elaborazione di immagini, di suoni, simulazioni
a grana fine
IF
ID
OR
EX
OW
MOV ax,[dato1]
ADD bx,cx
ADD ax,cx
17
Fondamenti di Informatica
18
3