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