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; time-sharing;
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 CPU anche complesse, in numero ristretto
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 di istruzione
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 Si dicono processori a pipeline
Gestione della memoria I sistemi di memoria possono essere suddivisi in: –memoria interna al processore –memoria principale –memoria secondaria
Memoria interna Registri interni alla CPU (visibili al programmatore Assembly) Memorizzano temporaneamente i dati e le istruzioni Dimensioni: decine di bytes
Memoria principale Veloce e di grande capacità Memorizza dati e istruzioni che servono per il funzionamento della CPU La CPU vi accede direttamente Dimensioni: decine di MBytes
Memoria secondaria Di grandi dimensioni e molto più lenta della memoria principale Memorizza dati e istruzioni che non sono di immediato interesse per la CPU Dimensioni: decine di Gigabytes
Memoria secondaria Può essere suddivisa in: –memorie in linea (es. dischi magnetici); interesse nell’ambito dei millisecondi … secondi –memorie fuori linea (es. nastri magnetici); interesse nell’ambito dei minuti … anni
Tecnologie e caratteristiche Le memorie differiscono per la tecnologia con cui sono realizzate e per i seguenti parametri: –costo per singolo bit immagazzinato –tempo di accesso (ritardo tra la richiesta del dato e la sua disponibilità al richiedente) –modi di accesso (seriale o casuale)
Tecnologie delle memorie Memorie a semiconduttore con tecnologia VLSI (Very Large Scale of Integration) Memorie magnetiche (memoria secondaria) Memorie ottiche (memoria secondaria)
Il sistema di memoria La memoria deve essere progettata e gestita in modo da ottenere: –capacità di memorizzazione adeguata –prestazioni accettabili –costi ridotti Il collo di bottiglia della macchina di Von Neumann è la comunicazione tra la CPU e la memoria
Gerarchie di memoria La soluzione ottimale per un sistema di memoria è: –costo minimo –capacità massima –tempi di accesso minimi Soluzione approssimata: gerarchia
Esempio di gerarchia Il sistema di memoria di uno studente: –la propria memoria –borsa –scaffale di casa –libreria o biblioteca di Facoltà –depositi casa editrice
Località Un sistema di memoria gerarchico è efficiente se la modalità di accesso ai dati ha caratteristiche prevedibili Principio di località: –Se al tempo t si accede all’indirizzo X, è molto probabile che l’indirizzo X+ΔX sia richiesto fra t e t+Δt
Località Nel breve periodo, gli indirizzi generati da un programma sono confinati in regioni limitate Spazio indirizzi Numero di accessi in intervallo di tempo
Struttura della gerarchia Memorie M1 e M2 (tecnologie diverse) con: –costo per bit: c1 > c2 –dimensioni: S1 < S2 –tempi di accesso: t1 < t2 M1 M2
Gestione della gerarchia La gestione deve essere automatica e trasparente all’utente I dati utilizzati più raramente sono posti in memorie con tempi di accesso più elevato; i dati utilizzati più frequentemente in memorie con prestazioni più elevate
Gestione della gerarchia Obiettivi: –mimare una memoria con: tempi di accesso della più veloce le dimensioni della maggiore i costi della più economica Criteri: –allocazione dinamica –spostamento automatico dei dati
Memoria virtuale Il meccanismo di gestione della gerarchia di memoria si dice Memoria Virtuale La memoria virtuale: –sfrutta efficacemente la gerarchia –rende il programma indipendente dalle dimensioni della memoria della macchina –libera il programmatore dalla gestione dello spazio di memoria fisico
Sostituzione dati in memoria Obiettivo: –minimizzare il numero di insuccessi Politiche: –FIFO: First In First Out –LRU: Least Recently Used
Esempio di gerarchia CPU Cache L1 Cache L2 Memoria Principale Memoria Secondaria