Presentazioni.... Sistemi Operativi* Giuseppe Prencipe Introduzione Giuseppe Prencipe Università di Pisa [email protected] Pagina web Università di Siena Lezioni e Ricevimenti Giovedi: 9:00—12:00 Email * Parte dei lucidi: Amir Averbuch Esame Testi Sistemi Operativi – Silberschatz et al. – Addison-Wesley ???? 1 Testi Testi I Moderni Sistemi Operativi – Tanenbaum A. Silberschatz, P. B. Galvin, and G. – Jackson Libri (Futura ed.) Testi W. Stallings, “Operating Systems: Internals and Design Principles”, 4a Edizione, Prentice-Hall, 2000. 2 Gagne, “Applied Operating Systems Concepts”, John Wiley & Sons, 2000 Testi A. S. Tanenbaum and A. S. Woodhill, Operating Systems: Design and Implementation”, 2a Edizione, Prentice-Hall Intl., 1997. ....e appunti Cos’è un sistema operativo? Quello che dirò a lezione.... È un programma! È il primo software che viene eseguito dopo il boot Coordina l’esecuzione degli altri programmi Programmi utente Fornisce vari servizi comuni necessari agli utenti e alle applicazioni Cos’è un sistema operativo? •Un Sistema Operativo (SO, OS) è un programma che agisce come intermediario/interfaccia tra l’utente di un computer e l’hardware del computer. •Scopi del SO: –Controllare/eseguire applicativi. –Rendere la macchina semplice da usare. –Semplificare i problemi degli utenti. –Utilizzare l’hardware del computer efficientemente. 3 Il SO controlla la macchina gdb gcc Utente diff Applicazione vi Kernel SO Hard ware grep date Sistema Operativo Hardware xterm emacs netscape Visione statica dei componenti di un sistema di calcolo Strati di un sistema di calcolo Visione dinamica Un’altra visione Molte applicazioni End User Programmer Applicazioni Application Programs Utilities Operating-System OperatingSystem Designer Sistema Operativo Istruzioni Macchina Computer Hardware Hardware 4 Un SO Chiamate di Sistema Istruzioni Privilegiate Un Hardware Punto di vista utente La percezione del calcolatore dipende dall’interfaccia SO progettato pensando alla facilità d’uso Qualche attenzione alle prestazioni Scarsa atenzione all’utilizzo delle risorse Gli utenti possono Massimizzare uso risorse Essere connessi a stazioni di lavoro Facilitare uso individuale e ottimizzare uso risorse Utilizzare Desktop/Palmari Facilitare uso individuale Utilizzare Embedded Systems Nessuna visibilità agli utenti Cosa è incluso in un SO? Difficile a dirsi! Ci sono diverse possibilità Azione legale contro Microsoft O più semplicemente: Nucleo (Kernel) – programma che gira sempre Applicativi 5 Il SO viene visto come un Assegnatore di Risorse CPU, RAM, I/O Il SO viene visto come Programma di Essere connessi a Mainframe File systems Device drivers Protocolli di rete Utilità di sistema Tool di sviluppo Shells Librerie Accessori (Windows) Sistema a finestre Browser Punto di vista del sistema Controllo Gestisce l’esecuzione dei programmi utenti Non c’è uniformità nel definire cosa fa parte del SO Cos’è un SO? Fornisce astrazioni Alloca risorse Inoltre: Coordinatore Amico: rende il tuo sistema di calcolo facile da usare Mago: fa sembrare il tuo sistema più potente di quello che è (più di 1 processore, più memoria) Il lavoro del SO è di adattarsi all’hardware. Ad esempio, MS-DOS, Windows, UNIX, ecc. Alcune definizioni di SO Scopo del SO Macchina astratta Definito in base a cosa fa: Implementa funzionalità di alto livello, nascondendo dettagli di basso livello. Allocatore di risorse Gestisce ed alloca le risorse finite della macchina. Programma di controllo Agevolare l’utente Rendere efficiente il sistema Unix – inizialmente difficile da usare perchè scarno, fino all’introduzione delle GUI (graphic user interface) Per capire meglio i SO è necessaria un pò di storia.... Controlla l'esecuzione dei programmi e le operazioni sui dispositivi di I/O. Storia: Una prospettiva sociologica Fase 0: Nessun Sistema Operativo. Computers sono esotici strumenti sperimentali (mainframe). Programmi in linguaggio macchina. Dispositivi immissione dati erano schede e unità a nastro L’utente=operatore siede alla console. L’utente prepara i job (programma e dati) e lo passa (pila di schede perforate) alla macchina. Dopo un pò (anche giorni!), i risultati vengono restituiti. In caso d’errore l’immagine di memoria e registri (dump) viene consegnata al programmatore per il debugging. Nessuna sovrapposizione tra calcolo, I/O, and pause utente (pensare o rispondere). I programmi vengono caricati a mano usando delle schede. Vengono sviluppate librerie, usate da tutti gli utenti. Questo è il precursore dei SO. Grosso Problema: Lunghe attese. Fase 1: I computers sono costosi; le persone no! Rendere efficiente l’uso della macchina: mandare via la persona dalla macchina! Utente≠operatore. Il SO diventa un batch monitor: un programma che carica I lavori in sequenza. In caso di errore, effettua il dump. Per accelerare l’elaborazione: Operatore raggruppa i programmi in lotti simili (batch), utilizzando le schede di controllo necessarie per distinguere I vari job, i dati e il tipo di elaborazione. CPU spesso inattiva (I/O lento): CPU: migliaia operazioni al secondo. Lettore schede veloce: 20 schede al secondo. Problemi simili ancora oggi! Uso più efficiente dell’hardware, ma difficile debugging! 6 Sistemi Multiprogrammati Poter organizzare la sequenza d’esecuzione permette la multiprogrammazione. Un singolo utente non può costantemente tenere occupata la CPU o I/O. La Multiprogrammazione organizza i lavori in modo da impegnare la CPU il più possibile. Il SO tiene in memoria contamporaneamente diversi lavori (sottoinsieme dei lavori presenti nel lotto – dovuto a memoria limitata) Il SO ne sceglie uno e lo esegue. Quando il lavoro va in attesa (per I/O o eventi), il SO esegue un altro dei lavori in memoria centrale Decide per gli utenti: job scheduling, gestione memoria, CPU scheduling Sistemi Multiprogrammati Problemi Nessuna protezione tra i diversi job. Lavori brevi aspettano molto se lavori lunghi sono in esecuzione. Soluzioni Hardware: protezione memoria e rilocazione. Lavori brevi vengono eseguiti prima dei lunghi. SO deve controllare l’interazione tra I lavori. SO diventa materia di studio. OS/360: primo SO progettato per una famiglia di computers. Un sistema operativo progettato per essere eseguito da piccoli a grandi calcolatori. Non funzionavano benissimo! OS/360 fu introdotto nel 1963; funzionò nel 1968. Sistemi complicati. Tutto in assembler. Fase 2: I computers e persone sono costose! Estensione logica della multiprogrammazione: partizione del tempo d’elaborazione (time sharing) : Molti utenti usano lo stesso calcolatore allo stesso tempo. I terminali costano poco: ogni utente ne ha uno. Le azioni e i comandi eseguiti sono tendenzialmente brevi: il sistema passa rapidamente da un utente all’altro (tempo di risposta) Scheduling CPU e multiprogrammazione. Un programma caricato in memoria è detto processo. Tipicamente è necessario usare la memoria secondaria come estensione di quella centrale (memoria virtuale): i programmi possono avere dimensioni maggiori della memoria fisica. L’utente vede un’unica memoria (memoria logica). Devono fornire un file system. •CTSS: •Developed at MIT. •One of the first timesharing systems. •Pioneered much of the work in scheduling. •Motivated MULTICS. 7 MULTICS: Sviluppato da MIT, Bell Labs, General Electric. •Visione: Un calcolatore principale che supporta “tutti”. Gli utenti avrebbero acquistato il “calcolo” come si acquista l’elettricità. •Tante, tante, tante idee seminali! •Realizzarlo fu più difficile del previsto. •Problemi legati alla tecnologia. UNIX: Ken Thompson e Dennis Ritchie costruirono us sistema progettato da programmatori per programmatori. Originariamente implementato in assembler. Riscritto da Ritchie e Thompson in C. Nuova idea: SO portabile! Le università ottennero il codice per gli esperimenti. Berkeley aggiunse il supporto per la memoria virtuale per il VAX. DARPA (Defense Advanced Research Projects Agency) selezionò UNIX come piattaforma di rete (arpanet). UNIX divenne un SO commerciale. Importanti idee furono rese popolari da UNIX SO scritto in un linguaggio ad alto livello. SO portabile tra diverse piattaforme hardware. File systems “montabile”. Fase 3: I computers sono economici; le persone ancora costose. Avere un computer in ogni terminale! CP/M primo SO per Personal computer. IBM aveva bisogno di un software per il loro PC’s, ma il CP/M era indietro con i lavori. Contattarono Bill Gates (Microsoft) per realizzarne uno. Gates contattò Seattle Computer Products, comprò 86DOS, e “creò” MS-DOS. Personal workstations PERQ Xerox Alto SUN Workstation (Stanford University Network) Personal computers Apple II IBM PC Macintosh Applicazioni commerciali danno impulso Word processors Fogli di calcolo Databases Il mercato viene diviso in sottomercati orizzontali Hardware Sistemi operativi Applicazioni 8 Personal computers Hanno sfruttato gli studi fatti per i SO dei mainframe. Motivati da scopi diversi: ottimizzare l’uso per il singolo utente. Inizialmente nessuna protezione file; sucessivamente obiettivo primario (reti, sicurezza). Fase 4: Sistemi paralleli Cresce l’interesse per sistemi con più CPU: sistemi paralleli Più unità d’elaborazione in stretta comunicazione, che condividono i bus, clock macchina, e talvolta memorie e I/O (sistemi strettamente connessi – tightly coupled systems) Vantaggi: Maggiore produttività (throughput):+processori –tempo. Relazione non lineare! Economia di scala: condivisione periferiche, alimentatori, ecc. Incremento affidabilità: un guasto di qualche CPU non pregiudica il completamento del programma (se la sua esecuzione viene ripartita fra le CPU disponibili); semplicemente lo rallenta. Si studia tolleranza ai guasti (fault-tolerance). Meccanismo per identificazione, diagnosi e correzione guasti Backup: processi duplicati e checkpoint (copia da unità primaria a secondaria). Costoso. SMP e AMP.... Sistemi paralleli: SMP e AMP SMP: Symmetric multiprocessing I processori sono controllati da un unico SO, dove ogni processore ha uguale possibilità di accesso all’I/O. Ogni CPU esegue una identica copia del SO. Tutti i processori condividono le stesse aree di memoria, così l’utente ha l’impressione che il sistema sia un normale sistema a 1 processore. I processori sono considerati “uguali”, e le applicazioni possono essere eseguite su ognuno di essi (la scelta dipende dal SO). A un processore inattivo può essere assegnato un qualsiasi programma da eseguire. Suddivisione del carico. Le CPU possono essere aggiunte per migliorare la performance e gestire aumenti di carichi di lavoro. UNIX, Linux e Windows supportano SMP. AMP: Asymmetric multiprocessing A ogni CPU si assegna un compito specifico (ad es. controllare il file system). Un’unità d’elaborazione principale controlla il sistema, e le altre attendono ordini da essa o si occupano di un compito predefinito. Gerarchia tra le unità. Fase 5: Arriva la rete! 9 Rete: canale di comunicazione tra due o più sistemi. Sistemi distribuiti. Protocollo di comunicazione più diffuso: TCP/IP Si hanno: Rete locale (LAN): nodi all’interno della stessa stanza, piano, edificio. Rete geografica (WAN): gruppi di edifici, città, territorio di una regione o stato. Microrete: dispositivi BlueTooth (decine di metri) Mezzi di trasmissione: fili di rame, fibre ottiche, satellite, radio, microonde Si condivido dati e non hardware. Applicazioni di rete hanno dato impulso all’industria:WWW, Email, News Processi migrano dovunque….senza controllo! Sistemi client-server Oggi i sistemi centralizzati fungono da sistemi server che soddisfano “alcune” richieste dei sistemi client. Server di calcolo: interfaccia grafica per inviare richieste di esecuzione di un’azione di file: interfaccia al file system Sistemi paritetici Inizialmente i PC erano stati progettati per essere “isolati”. Con il diffondersi di Internet, la capacità di collegarsi alla rete è divenuta parte del SO. Le reti di calcolatori non condividono clock, memoria, o bus: sono detti sistemi debolmente connessi (loosely coupled systems) o sistemi distribuiti. Alcuni SO interpretano la rete offrendo più che la semplice possibilità di collegarsi in rete Condivisione file Scambio messaggi e comunicazione fra i vari computer collegati Un SO distribuito è un ambiente in cui più SO comunicano tra loro in modo da dare l’illusione che vi sia un unico SO che controlla la rete. Sistemi real-time Sistemi di cluster Le batterie di sistemi (cluster) si basano sull’uso congiunto di più unità d’elaborazione riunite che svolgono attività comuni. Differiscono dai sistemi paralleli perchè sono somposte da calcolatori completi. Ogni nodo può tenere sotto controllo (tramite LAN) gli altri Batterie asimmetriche: un calcolatore rimane in attesa attiva (hot standby) mentre gli altri eseguono. Uno controlla gli altri. Batterie simmetriche: tutti eseguono le applicazioni e si controllano reciprocamente. Batterie di sistemi paralleli: più calcolatori accedono ai dati in una memoria di massa condivisa Batterie di sistemi connessi WAN: problemi per l’accesso condiviso ai dischi. Gestione distribuita degli accessi (distributed lock manager – DLM) Sistemi palmari I sistemi d’elaborazione in tempo reale si hanno quando ci sono rigidi vincoli ti tempo per le operazioni della CPU o il flusso di dati. Dispositivi di controllo. Termini fissati entro i quali si deve terminare la computazione. Tempo reale stretto (hard real-time) Compiti critici completati in un dato intervallo di tempo. Garantito se tutti i tempi d’attesa nel sistema sono delimitati. Limitato (o nessun) uso di memoria secondaria (uso RAM o ROM). Mancano delle caratteristiche tipiche SO (separazione utente-macchina fisica). Controllo industriale, robotica. Tempo reale debole (soft real-time) I processi critici hanno priorità sugli altri, e la mantengono sino al completamento dell’esecuzione. Le attese devono essere limitate (un processo non può attendere indefinitamente che il nucleo lo faccia eseguire). Utilità in lavori non così critici come tempo reale stretto. Multimedialità, realtà virtuale. 10 PDA (personal digital assistant), telefoni cellulari. Memoria: 1Mb-decineMb. Necessità di gestire la memoria in modo efficiente. Velocità CPU ridotta (limitare consumo batteria). SO non deve gravare eccessivamente la CPU. Dimensioni schermo ridotte. Sistemi embedded Riepilogo I generazione ('45-'55): relè/valvole, no sistema Per calcolatori palmari (PDA), cellulari, ma anche televisori, forni a microonde, lavatrici, etc. operativo II generazione ('55-'65): transistor e schede perforate sistemi batch: IBM 1401 (scheda , nastro) e IBM 7094 (calcolo) Hanno spesso caratteristiche di real-time Limitate risorse hardware esempio: PalmOS, Epoc, PocketPC, QNX. Riepilogo IV Generazione ('80-oggi): circuiti integrati su larga scala III generazione ('65-'80): circuiti integrati compatibilita' tra macchine IBM diverse (360,370, . . . ) OS/360 con multiprogrammazione MULTICS: servizio centralizzato e time-sharing PDP-1 . . . -11: minicalcolatori a 18bit UNIX: Versione singolo utente di MULTICS per PDP-7 Tipologie SO Diversi obiettivi e requisiti a seconda delle situazioni Supercalcolatori Personal Computer IBM e MS-DOS MacIntosh di Apple con GUI (Graphical User Interface) Sistema operativo Windows Windows costruito su DOS Windows 95 e Windows 98 (ancora con codice assembly a 16bit) Windows NT e Windows 2000 (a 32bit) Mainframe Server Multiprocessore Personal Computer Windows Me (update di Windows 98) Windows XP Linux versione open source di Unix 11 Real Time Embedded SO per mainframe SO per supercalcolatori Grandi quantit`a di dati (> 1TB ≅ 1012 B) Grandi quantità di dati (> 1T B) Grande I/O Enormi potenze di calcolo (es. NEC Earth Elaborazione "batch" non interattiva Assoluta stabilità Applicazioni: banche, amministrazioni, ricerca. . . Simulator, 40 TFLOP) Architetture con migliaia di CPU Elaborazione "batch" non interattiva Esempi: IBM OS/360, OS/390 Sistemi per server Sistemi multiprocessore con spesso più di una CPU in comunicazione stretta. Rilevamento automatico dei guasti Elaborazione su richiesta (semi-interattiva) Applicazioni: server web, di posta, dati, etc. Esempi: Unix, Linux, Windows NT e derivati 12 SO Oggi Sistemi complessi che presentano miriadi di problemi. milioni di linee di codice. 100--1000 programmatori per anno. Interazioni complesse Asincrono. Universale (eseguito su piattaforme diverse). Differenti classi di utenti hanno differenti necessità. Performance è cruciale! Poco compresi Il SO tipicamente “dura” più di chi lo ha programmato. Troppo grande per essere compreso da una singola persona. Mai completamente debuggato (OS/360 rilasciato con 1000 bugs). Comportamento difficile da prevedere; aggiustamenti spesso fatti con tentativi.