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