Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 2 Giovedì 8-10-2015 Sistemi batch multiprogrammati • La causa principale della bassa efficienza dei primi sistemi batch era dovuta alla grandissima differenza che c’era tra la velocità della CPU e la velocità delle periferiche. Le operazioni di I/O richiedevano molto più tempo rispetto alle operazioni computazionali. • L’introduzione di alcuni dispositivi fisici, come i dischi e i DMA (Direct Memory Access) e l’introduzione della tecnica dell’interruzione (interrupt) portò a significativi Appunti di Sistemi Operativi, miglioramenti. 2015-2016 - Pietro Frasca • Con la tecnica dello spooling (simultaneous peripheral operation on line) si ebbe un apprezzabile primo miglioramento. • Con tale tecnica, tutti i job di un batch sono memorizzati inizialmente su disco e successivamente caricati in memoria per essere eseguiti. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 2 • I risultati sono salvati ancora su disco. • I dati sono caricati su disco tramite DMA, quindi la CPU è libera di eseguire altre operazioni. Inoltre i risultati sono inviati da disco al dispositivo di output, tipicamente una stampante. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 3 1) Caricamento dei job su disco 2) Caricamento dei job da disco in memoria Disco 3) Risultati su disco 2 4) Stampa dei risultati 3 1 Dispositivo di input 4 DMA CPU DMA Output (Stampante) MEMORIA Sistema di spooling Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 4 • La memorizzazione delle applicazioni su disco (pool of job) che è un dispositivo ad accesso casuale, consente di implementare varie politica di scheduling, scegliendo di volta in volta, quale job eseguire per primo in base a un determinato criterio come, ad esempio, eseguire prima i programmi che hanno un tempo di esecuzione più breve (SJF). • La multiprogrammazione e la tecnica dell’interrupt hanno portato a un netto miglioramento dell’efficienza d’uso della CPU e delle risorse. • La multiprogrammazione consiste nel caricare in memoria più programmi in modo da allocare ciascuno di essi in una diversa area di memoria. In tal modo, quando il programma corrente esegue operazioni di I/O, è possibile assegnare la CPU ad un altro programma. • Con questa tecnica, tutti i programmi caricati in memoria è come se eseguissero “in parallelo”, anche se in realtà solo uno di essi si trova in esecuzione. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 5 Programma N Programma applicativo Programma 2 Programma 1 Sistema operativo Struttura della memoria in un sistema batch monotasking Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca Sistema operativo Struttura della memoria in un sistema batch multitasking 6 • Con la multiprogrammazione è possibile aumentare nettamente l’efficienza della CPU fino a raggiungere valori superiori all’80% • Per esempio, consideriamo tre processi P1, P2 e P3 e consideriamo i casi in cui fossero eseguiti con a) un sistema monotasking e b) con un sistema multitasking. Nel primo caso i programmi vengono eseguiti sequenzialmente, come mostrato in figura. • Il tempo d’uso di CPU è pari a 10 unità di tempo, mentre il tempo totale è pari a 27 unità. L’efficienza d’uso della CPU è quindi data da 10/27=0,37 (37%). • Con la multiprogrammazione il tempo totale di esecuzione dei tre programmi scende a 12 unità di tempo e quindi l’efficienza d’uso sarà data da 10/12=0,83 (83%). Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 7 Esecuzione sequenziale 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Esecuzione in multi-tasking 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 8 • A prima vista, l’efficienza d’uso della CPU può essere migliorata, aumentando il numero di programmi (grado di multiprogrammazione). Tuttavia bisogna considerare anche il tempo di commutazione necessario per assegnare la CPU da un programma ad un altro. Questo meccanismo è chiamato cambio di contesto, il quale porta ad un aumento dell’overhead di sistema. Quando la CPU viene assegnata ad un altro programma, il SO deve eseguire varie operazione tra cui il salvataggio dello stato della CPU (il valore di tutti i suoi registri). • Con più programmi in esecuzione il SO si deve occupare della gestione delle risorse per evitare conflitti tra i programmi. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 9 • Se le risorse non fossero gestite dal SO, un programma in esecuzione potrebbe usarle quando queste sono già state assegnate ad un altro programma. Consideriamo, ad esempio, cosa succederebbe se un programma stesse stampando e un altro interferisse nell’operazione. Si avrebbero delle stampe con contenuto misto relativo ai due programmi. E’ necessario quindi che il sistema operativo implementi degli algoritmi di assegnazione delle varie risorse ai programmi. • Per la scelta dei programmi da caricare in memoria, una strategia spesso usata è scegliere un insieme di programmi con caratteristiche diverse, ad esempio alcuni programmi che eseguono molte operazioni di computazione e poche operazione di I/O (CPU-bound) e altri con poche istruzioni di calcolo e molte operazioni di I/O (I/O-bound) in modo bilanciato e quindi ottimizzare tutte le risorse di macchina. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 10 • Inoltre quando avviene un cambio di contesto, a causa di operazioni di I/O, è necessario scegliere quale sarà il prossimo programma a cui assegnare la CPU. Un criterio spesso utilizzato nei sistemi batch è di assegnarla in base al programma che da più tempo attende di essere eseguito (criterio FIFO). Un altro criterio, è SJF (Short Job First) che assegna la CPU al programma in coda che ha una durata d’esecuzione più breve. • I sistemi batch multiprogrammati sono stati i primi SO complessi funzionanti sui grossi mainframe. Molto famosi sono stati i sistemi dell’IBM della serie 360 e 370. • I sistemi batch sono oggi ancora molto usati in ambiente aziendale finanziario per l’elaborazione di buste paga, gestione dei conto correnti, gestione assicurazioni e altre attività che richiedono una grande potenza elaborativa su grandissime quantità di dati. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 11 Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 12 Moderno sistema batch Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 13 Sistemi a partizione di tempo (time-sharing) • I sistemi batch multiprogrammati usano le risorse di sistema come la CPU, la memoria, le periferiche, etc., in modo efficiente, ma non consentono l’interazione con l’utente. • Un SO time-sharing permette a più utenti di condividere il calcolatore nello stesso momento. • Si sono diffusi nei primi anni ’70 con l’introduzione dei minicalcolatori, molto più economici rispetto ai mainframe. • SO moderni come ad esempio Unix e Linux sono a partizione di tempo e multiprogrammati. • La CPU viene commutata rapidamente da un programma all’altro, dando ad ogni utente l’impressione di disporre, in ogni istante, dell’intero calcolatore. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 14 • L’obiettivo principale per i sistemi time-sharing è minimizzare il tempo di risposta dei programmi e quindi minimizzare il tempo di attesa medio da parte degli utenti per ottenere dal programma una risposta alle richieste effettuate • La reale condivisione può risultare evidente nel caso in cui il sistema è “carico”, cioè molti utenti sono in quel momento connessi e ci sono molti processi attivi o quando nel sistema si eseguono lunghe operazione di I/O, come ad esempio, stampe di grandi documenti. • Ciascun utente può far eseguire più di un programma contemporaneamente (processo). • Oltre alla multiprogrammazione, i SO a partizione di tempo introducono interessanti e complesse tecniche: Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 15 – sono dotati di memoria virtuale che consente l’esecuzione di programmi, anche se parzialmente caricati in memoria, cioè i programmi possono avere anche dimensioni superiori alla memoria fisica disponibile; – sono dotati di file system che rappresenta un’astrazione dei dischi, facendo vedere all’utente un disco come composto da file e directory (cartelle) nidificate; – utilizzano sofisticate tecnologie, sia hardware che software per consentire l’esecuzione concorrente dei processi gestiti da funzioni di scheduling della CPU e funzioni per la sincronizzazione e comunicazione dei processi. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 16 • Questi sistemi devono anche garantire che i processi non si blocchino in stati di attesa indefinita reciproca (stallo). • In pratica, un utente si collega ad un sistema time-sharing utilizzando un terminale o un PC sul quale è installata un’applicazione che utilizza un protocollo di comunicazione per la connessione remota, come ad esempio telnet, rsh, rlogin e ssh (security shell). Quest’ultimo è l’unico che garantisce sicurezza nella connessione. • Per connettersi un utente deve avere un account (utenza) sul sistema. L’utente inizia una sessione di lavoro inserendo uno username e una password (login). Una volta connesso comunica con il SO mediante una shell o con una GUI (Graphics User Inteface). Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 17 • La shell è un’interfaccia a riga di comando con la quale l’utente può digitare i comandi per la gestione e il controllo del SO o avviare applicazioni. Al termine del lavoro, l’utente esegue l’operazione di logout per disconnettersi dal sistema. • L’utente vede il comportamento della macchina come se questa fosse dedicata tutta a lui (macchina virtuale). • La politica di scheduling della CPU usata nei sistemi a partizione di tempo è di eseguire i vari programmi assegnando loro un quanto di tempo di CPU (time slice) dell’ordine di alcune decine di millisecondi. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 18 • Durante questo intervallo, il programma può terminare, o bloccarsi nel caso esegua operazioni di I/O, consentendo quindi la selezione di un nuovo programma da assegnare alla CPU. SISTEMA TIME-SHARING telnet, ssh switch PC PC PC TS TTY TTY Protocolli seriali TTY Terminali alfanumerici Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 19 Sistemi in tempo reale • Il calcolatore è utilizzato per la gestione e il controllo di un sistema fisico, detto ambiente operativo, come ad esempio impianti industriali, centrali elettriche, robot, etc. • Anche questi sistemi utilizzano la multiprogrammazione , dato che generalmente i task che il sistema deve svolgere sono molti. • Caratteristica fondamentale dei SO realtime è che ogni task deve essere eseguito entro un intervallo di tempo definito (deadline) imposto dall’applicazione (da microsecondi a millisecondi). • In altri termini, la validità dei risultati ottenuti da un programma non dipende solo dalla correttezza del programma, ma anche dall’intervallo di tempo entro il quale i risultati sono prodotti. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 20 Esempio Per il processo in figura si ha: • Istante di richiesta R = 0; • tempo di esecuzione E = E1 + E2 = 20 + 40 = 60 • deadline D = 100 • Tempo di risposta = 90 R E2 E1 D P 0 10 30 50 70 90 100 Tempo di risposta Deadline Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 21 SISTEMA DA CONTROLLARE SENSORI ATTUATORI SISTEMA OPERATIVO IN TEMPO REALE (REAL TIME) Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 22 • Nei SO real-time generalmente i task hanno diverse criticità e quindi hanno diverse priorità. • Le priorità possono essere assegnate in modo statico (priorità statiche) o calcolate dinamicamente in base alle caratteristiche dei singoli task (priorità dinamiche). • I SO real-time sono classificati in hard real-time e soft real-time. In questi ultimi, una deadline non rispettata, non danneggia il funzionamento dell’ambiente operativo, ma ne abbassa le prestazioni e quindi la qualità del servizio (QoS Quality of Service). • Una categoria di SO in tempo reale molto importante, per via della loro diffusione, è costituita dai sistemi dedicati (embedded systems): schede di controllo di varie apparecchiature, controllo motore di automobili, elettrodomestici, etc. • Alcuni SO in tempo reale sono ottenuti dai SO time-sharing di uso generale, come ad esempio RT-Linux. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 23 Sistemi paralleli e distribuiti • I sistemi paralleli sono dotati di più CPU. In questi sistemi più processi potrebbero essere realmente eseguiti contemporaneamente. • Il SO deve risolvere vari problemi legati all’esecuzione in parallelo dei programmi, nel caso che essi accedono simultaneamente agli stessi dati. • Prevenire possibili condizioni di inconsistenza sulle strutture dati del sistema, che si potrebbero verificare se queste fossero modificate contemporaneamente da funzioni di SO eseguite su diverse CPU. • Lo sviluppo delle reti ha portato alla realizzazione di moduli di SO per la gestione delle schede di rete e di vari servizi che hanno permesso ai sistemi collegati in rete di condividere dati e informazioni in vario modo: ad esempio il www, e alla possibilità di realizzare applicazioni distribuite. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 24 • I SO per calcolatori collegati in rete vengono generalmente classificati in due categorie: – Sistemi operativi di rete: ogni nodo della rete dispone di un proprio sistema operativo (non necessariamente uguale). I sistemi cooperano tra di loro, per esempio applicazioni web a n-strati. – Sistemi operativi distribuiti: su ogni nodo deve girare lo stesso SO. L’utente vede l’intero sistema come un unico calcolatore. Il SO deve provvedere a bilanciare il carico di lavoro distribuendolo opportunamente sui vari nodi del sistema. I nodi condividono le risorse. Un esempio è dato dai sistemi cluster. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 25 Sistemi operativi per PC • I primi SO per personal computer erano semplici monoprogrammati e monoutente. • Con l’aumento delle prestazione dei microprocessori e delle dimensioni della memoria, la tecnica della multiprogrammazione è stata implementata anche nei SO per PC. • Tutti i sistemi operativi moderni per PC sono multitasking: windows XP/7/8/10 (Microsoft), MacOs del Macinthosh (Apple) e Linux che è un anche un sistema time-sharing. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 26 Struttura ed organizzazione software dei sistemi operativi • Un sistema operativo deve svolgere molti compiti complessi. Per tale motivo dovrebbe essere progettato in modo tale che, oltre a funzionare correttamente, il suo codice sia facilmente modificabile. • La scelta dell’architettura software e della sua organizzazione dipende dagli obiettivi per cui il sistema operativo deve essere progettato. • Nella fase di progettazione è molto importante suddividere le operazione che il sistema operativo deve svolgere in meccanismi (tecniche) e criteri (politiche o strategie). I meccanismi stabiliscono in che modo deve essere eseguito qualche compito; i criteri, invece, determinano in che modo utilizzare i meccanismi. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 27 • Ad esempio, nei sistemi multiprogrammati il sistema operativo, per commutare la CPU a più processi, esegue un insieme di operazioni detto cambio di contesto, che comprende il salvataggio dei registri della CPU del processo che lascia la CPU ed il caricamento dei registri del nuovo processo che andrà in esecuzione • Le operazioni di schedulazione della CPU, stabiliscono i criteri con cui assegnare la CPU ad un nuovo processo. Ad esempio la schedulazione potrebbe basarsi su una politica FIFO, su una politica basata sulle priorità che i processi possiedono, o da altri criteri. • I meccanismi dovrebbero essere progettati in modo tale che siano separati dai criteri. Questo consente, nel caso si cambino i criteri, di mantenere ancora validi i meccanismi. • Se ad esempio si decidesse di modificare la politica di schedulazione da FIFO ad una politica più complessa, sarebbe ancora possibile utilizzare i meccanismi già esistenti, senza modificarli. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 28 • Una volta progettato il sistema operativo si deve realizzare. • La scrittura di un sistema operativo dipende fortemente dall’architettura del hardware ed in particolare dal processore o processori utilizzati nel calcolatore. • Molti processori sono dotati di istruzioni che possono essere eseguite in modalità privilegiata (supervisor) e in modalità utente. Questa caratteristica consente di realizzare ed organizzare il software in modo tale che solo il codice del sistema operativo possa eseguire le istruzioni privilegiate, proteggendo in tal modo le componenti del sistema operativo stesso da un uso improprio o errato da parte dei programmi applicativi. • Ad esempio le istruzioni di I/O, sono istruzioni privilegiate. • Generalmente, i sistemi operativi, si scrivono con linguaggi di alto livello, come ad esempio il C ed il C++, con ristrette parti in linguaggio assembly, per poter accedere pienamente ai registri dei dispositivi hardware e realizzare funzioni compatte e veloci. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 29 Struttura monolitica • Una semplice organizzazione del software, detta struttura monolitica, consiste nel realizzare un insieme di funzioni ciascuna delle quali implementa un determinato servizio, attivabile tramite una o più chiamate di sistema. Spesso queste funzioni si scrivono in linguaggio assembly, per poter avere la massima velocità di esecuzione e una minore dimensione in termini di occupazione di memoria RAM. Questa struttura, piuttosto semplice è stata usata nel sistema operativo Microsoft MS-DOS, un sistema operativo monoutente e monotasking, scritto per microprocessori Intel 8088, 8086 e 80286, privi di modalità supervisor. In assenza di modalità privilegiata, il programmatore può accedere a qualsiasi istruzione del microprocessore e quindi eseguire qualsiasi operazione come, ad esempio, scrivere dati in qualsiasi locazione di memoria, anche se riservata al sistema operativo. E’ evidente che, in questi sistemi, un semplice errore di programmazione in un’applicazione può portare al crash del sistema. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 30 Chiamate di sistema kernel HARDWARE Sistemi stratificati • Per la progettazione e sviluppo di sistemi più complessi si può ricorrere ai modelli e alle tecniche della programmazione strutturata o meglio ancora alla programmazione ad oggetti. I progettisti organizzano il sistema in un insieme di moduli, strutturandoli in vari livelli. • Ciascun modulo di un livello utilizza le funzionalità offerte dai moduli di livello sottostante e fornisce a sua volta servizi ai moduli del livello superiore. Nei sistemi stratificati con il termine nucleo o kernel si indica il livello che è a stretto contatto con l’hardware. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 31 Sistem call Moduli di livello N Interfaccia MV N API Interfaccia MV 2 Moduli di livello 2 Interfaccia MV 1 Moduli di livello 1 (kernel) HARDWARE Interfaccia Kernel - HW Struttura a livelli gerarchici Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 32 • Il principale vantaggio che offre la tecnica della stratificazione è dato dalla semplicità di progettazione e da una più semplice facilità nell’eseguire modifiche e correzioni al codice. • Ogni strato può essere modificato, senza apportare cambiamenti ai restanti strati. • Tuttavia, è richiesta un attenta e complessa analisi per stabilire quanti strati realizzare e scegliere quale funzionalità implementare in ciascun livello. • Inoltre, la stratificazione porta ad un funzionamento meno efficiente in termini di velocità di esecuzione ed occupazione di memoria. Ad esempio per eseguire un operazione, un programma applicativo, potrebbe effettuare una chiamata di sistema al livello sottostante, la quale, a sua volta, ne richiama un'altra, e questa un'altra ancora, e così. In altre parole, il programma applicativo per ottenere un servizio potrebbe attendere l’esecuzione di N funzioni di sistema. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 33 • Bisogna tenere anche presente che nel passaggio da uno strato all’altro sono allocate strutture dati e parametri, con conseguente maggiore impegno di memoria. Per tale motivo, attualmente, si progettano sistemi stratificati con un limitato numero di strati. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 34