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à
in intervallo di tempo
Numero di accessi
• Nel breve periodo, gli indirizzi generati
da un programma sono confinati in
regioni limitate
Spazio indirizzi
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