Fondamenti di Informatica1 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 Informatica2 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 Informatica3 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 Informatica4 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 Informatica5 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 Informatica6 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
Fondamenti di Informatica7 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 Informatica8 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 Informatica9 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 Informatica10 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 Informatica11 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 Informatica12 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
Fondamenti di Informatica13 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 Informatica14 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 Informatica15 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 Informatica16 Parallelismo spaziale E' anche detto parallelismo sui dati Indica la quantità di dati che vengono elaborati contemporaneamente Esempio del processore Pentium
Fondamenti di Informatica17 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 Informatica18 Parallelismo di istruzione MOV ax,[dato1] ADD bx,cx ADD ax,cx IF ID OR EXOW