Software di base Tra il linguaggio macchina basso
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 1
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 2
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 3
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 4
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 5
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 Informatica 6
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 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 8
Classificazione dei S. O. rispetto alla struttura • Diverse tecniche di gestione delle risorse: – monoprogrammazione – multielaborazione • La scelta dipende anche dal tipo di calcolatore e dalle sue caratteristiche hw Fondamenti di Informatica 9
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 10
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 11
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 Informatica 12
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 13
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 14
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 15
Parallelismo spaziale • E' anche detto parallelismo sui dati • Indica la quantità di dati che vengono elaborati contemporaneamente • Esempio del processore Pentium 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 17
Parallelismo di istruzione IF ID OR EX OW MOV ax, [dato 1] ADD bx, cx ADD ax, cx Fondamenti di Informatica 18
- Slides: 18