1
Fondamenti di Informatica 1
Software di base
• Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software
• Esso svolge funzioni di base:
– traduzione di linguaggi da alto a basso livello – comunicazione tra i vari sottosistemi hardware – gestione e distribuzione delle risorse
Fondamenti di Informatica 2
Esecuzione dei programmi
• L'esecuzione di un programma scritto con un linguaggio ad alto livello è preceduta dai seguenti passi:
– traduzione in linguaggio macchina – collegamento con programmi di supporto
(calcoli, comunicazione con periferiche,…) – caricamento in memoria
Fondamenti di Informatica 3
Compilatori e Interpreti
• 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)
Fondamenti di Informatica 4
Traduzione in linguaggio macchina
• 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
Fondamenti di Informatica 5
Collegamento con programmi di supporto
• 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
• Il Linker serve per collegare diversi moduli oggetto
Fondamenti di Informatica 6
Caricamento in memoria
• Il Loader serve per caricare in memoria un programma rilocabile
• Nel caricamento vengono fissati tutti gli indirizzi relativi
– variabili, salti, …
• Vengono caricati anche i programmi di supporto, se necessari
2
Fondamenti di Informatica 7
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 8
Classificazione dei S.O.
rispetto alle funzionalità
• Sistemi interattivi
– 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 9
Classificazione dei S.O.
rispetto alla struttura
• 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 10
Monoprogrammazione
• 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 11
Multiprogrammazione
• 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 12
Multielaborazione
• 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
3
Fondamenti di Informatica 13
Multielaborazione
• Esistono due diverse modalità:
– SIMD (Single Instruction Multiple Data)
• 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)
• elaboratore formato da più CPU, ognuna delle quali esegue operazioni diverse su dati diversi
• CPU anche complesse, in numero ristretto
Fondamenti di Informatica 14
Multielaborazione
• Esempi:
– SIMD:
• elaborazione di immagini, di suoni, simulazioni a grana fine
– MIMD:
• trattamento di grosse moli di dati, elaborazione di immagini a grana grossa
Fondamenti di Informatica 15
Multielaborazione
• 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:
– parallelismo di parola – parallelismo spaziale – parallelismo di istruzione
Fondamenti di Informatica 16
Parallelismo spaziale
• E' anche detto parallelismo sui dati
• Indica la quantità di dati che vengono elaborati contemporaneamente
• Esempio del processore Pentium
Fondamenti di Informatica 17
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 18
Parallelismo di istruzione
MOV ax,[dato1]
ADD bx,cx ADD ax,cx
IF ID OR EX OW