CLASSIFICAZIONE DEI SISTEMI OPERATIVI
(in ordine cronologico)
- Dedicati
Quelli dei primi sistemi operativi.
La macchina viene utilizzata da un utente per volta che può eseguire un solo
programma per volta.
- Per gestione a lotti (batch)
Un insieme di lavori (jobs) viene accorpato in un lotto (batch) su una unità
di ingresso veloce (nastro/disco). I lavori sono caricati in sequenza; ogni
lavoro viene eseguito senza interruzioni fino al termine.
- Multiprogrammati
Più di un programma è caricato in memoria contemporaneamente.
Le operazione di I/O di un programma sono sovrapposte temporalmente
all’esecuzione delle istruzioni di un altro programma.
Quando un processo in esecuzione (running) chiede un servizio di I/O al
sistema operativo si blocca (blocked) in attesa del risultato. Il sistema
operativo avvia l’operazione di I/O e manda in esecuzione un altro processo
che si trova in stato di pronto (ready). Il sistema operativo mantiene una o
più code di processi gestite secondo la priorità assegnata a ciascuno di essi
(scheduling). La CPU è ben sfruttata.
La multiprogrammazione è incapace di differenziare fra programmi che
richiedono un uso frequente delle periferiche, da quelli che richiedono
l’utilizzo per lunghi tempi della CPU (es. programmi di elaborazione
matematica). Quando uno di questi programmi conquista la CPU non la
rilascia, bloccando gli altri programmi.
- Time-sharing (Interattivi)
Il tempo di utilizzo della CPU viene suddiviso dal sistema operativo in fette
(time slice con durata di 100-800 ms). Ogni processo in memoria riceve a
turno l’uso della CPU per una fetta di tempo.
Usati soprattutto in ambiente multiutente. L’utente lavora al terminale:
RIFLETTE...SCRIVE… RIFLETTE … ESEGUE...SCRIVE … COMPILA
ed ha l’impressione di avere la macchina a sua completa disposizione .
1
- Real-time
Sistemi operativi al servizio di una specifica applicazione che ha dei vincoli
precisi nei tempi di risposta. Il sistema operativo deve garantire un tempo
massimo entro il quale mandare in esecuzione un programma a seguito di
una richiesta in tal senso.
Gestione di strumentazione di controllo di processi, di gestione di allarmi,
di sistemi transazionali (banche, prenotazione).
In generale si ha un sistema real time quando il tempo che passa dalla
richiesta di esecuzione di un processo al completamento della stessa è
estremamente ridotto.
- Per macchine multiprocessori (sistemi concorrenti)
Il sistema operativo si prende carico di assegnare le diverse CPU a processi
diversi nonché di gestire le risorse in comune tra le varie CPU (memoria
condivisa, bus, periferiche).
A sua volta il sistema operativo può essere eseguito contemporaneamente
da più CPU.
N.B. I sistemi operativi integrano funzioni per la gestione delle reti di
calcolatori.
2
EVOLUZIONE DELLE ARCHITETTURE
DEI COMPUTER
L’evoluzione tecnologica ha prodotto CPU sempre più veloci. Però per
migliorare drasticamente le prestazioni del calcolatore si è dovuto superare il
limite intrinseco nella macchina di Von Neumann, cioè la stretta sequenzialità
delle operazioni gestite dalla CPU. Nella macchina di Von Neumann ogni
operazione viene tradotta in una sequenza di istruzioni macchina che, una
dopo l’altra, vengono acquisite, decodificate ed eseguite. C'è totale mancanza
di parallelismo, che comporta un tempo globale di elaborazione pari alla
somma dei tempi richiesti da ogni singola attività.
Le evoluzioni architetturali della macchina di Von Neumann consentono
invece diversi livelli di parallelismo.
Esempi di situazioni che si prestano alla parallelizzazione:
1. due unità funzionalmente autonome, la CPU e un dispositivo di I/O,
costrette a sequenzializzare le proprie attività impiegando un tempo pari
alla somma dei singoli tempi di lavoro;
2. acquisizione, decodifica ed esecuzione di istruzioni da parte della CPU,
che avvengono in modo strettamente sequenziale;
3. programma di calcolo, ad esempio su matrici, può richiedere alla CPU
di ripetere le stesse istruzioni su dati diversi: spreco di tempo per
acquisire ed interpretare le stesse istruzioni;
4. accessi alla memoria centrale: c'è sequenzialità di accesso senza
prevedere alcun meccanismo per anticipare le richieste della CPU e per
effettuare accessi a memoria in parallelo con altre operazioni della CPU
stessa;
- Parallelizzazione del colloquio CPU - periferiche
Prevede una gestione efficiente delle operazioni di I/O mediante tre tecniche
con diverso livello di parallelismo:
– l’interfaccia segnala alla CPU (mediante interrupt) la terminazione delle
operazioni di I/O;
– l’interfaccia senza richiedere l’intervento della CPU trasferisce informazioni
direttamente con la memoria (DMA = Direct Memory Access);
– gestione tramite canale di I/O: si tratta di un dispositivo che consente di
svincolare la CPU da operazioni di sincronizzazione, transcodifica,
formattazione dei dati, ecc.
3
- Parallelizzazione del funzionamento della CPU : Pipeline
Si basa sulla sovrapposizione delle diverse fasi di esecuzione di più istruzioni.
Il tempo di esecuzione della singola istruzione non varia .
Il tempo medio di esecuzione delle istruzioni si riduce di un fattore N, nel caso
di pipeline a N stadi (caso ideale).
I l throughput della CPU (numero di istruzioni eseguite per unità di tempo)
migliora di un fattore N.
Si sovrappone il tempo di esecuzione dell’istruzione i-ma, con il tempo di
decodifica dell’istruzione (i+1)-ma, con il tempo di fetch dell’operando
dell’istruzione (i+2)-ma e col t em po d i fetch del codice operativo
dell’istruzione (i+3)-ma.
Devono valere le seguenti ipotesi
– Le risorse necessarie a svolgere ciascuno stadio sono distinte.
(non ci sono conflitti per l’uso delle risorse)
– Tutte le istruzioni hanno il medesimo formato.
– Il tempo richiesto per l’esecuzione di tutti gli stadi è uguale.
– Una istruzione non dipende dal risultato di una istruzione precedente
ancora nella pipeline (es: C = A+B, E = C*2).
– Non si devono eseguire salti.
4
In maniera più formale, si può definire il concetto di parallelismo in base ai
due flussi di informazione normalmente presenti in un calcolatore:
– flusso dei dati
– flusso delle istruzioni
(data stream);
(instruction stream)
Nella macchina di Von Neumann si hanno flussi singoli di dati ed istruzioni:
la macchina è classificata come SISD (Single Instruction stream, Single Data
stream)
Una macchina SIMD (Single Instruction stream, Multiple Data stream) è
caratterizzata da una sola unità di controllo ma da più unità aritmetiche
indipendenti che effettuano la stessa operazione su dati diversi.
• Le operazioni sui dati diversi avvengono nello stesso istante ed ogni unità di
elaborazione (PE: Processing Element) ha una memoria privata; i vari PE
sono collegati tra loro per scambiarsi le informazioni.
• È adatta, ad esempio, ad elaborazioni matriciali che richiedano la valutazione
di espressioni matematiche identiche su grandi quantità di numeri diversi.
Le macchine MIMD (Multiple Instruction stream, Multiple Data stream)
prevedono la replicazione dell’intera struttura della macchina di Von Neumann
per ottenere architetture multiprocessore.
Si tratta di un calcolatore costituito da più unità di controllo e più unità di
calcolo che operano in parallelo su flussi di dati diversi effettuando
elaborazioni anch’esse, a priori, diverse.
5
6