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
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
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)
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
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
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
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
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
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
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
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;
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
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
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
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 spaziale
• E' anche detto parallelismo sui dati
• Indica la quantità di dati che vengono elaborati contemporaneamente
• Esempio del processore Pentium
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
Parallelismo di istruzione
MOV ax,[dato1]
ADD bx,cx ADD ax,cx
IF ID OR EX OW