Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 2 Giovedì 10-10-2013 1 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. • Molti SO moderni 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. • 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. 2 • 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: – 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. 3 • 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). • 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. 4 • 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 5 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. 6 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 7 SISTEMA DA CONTROLLARE SENSORI ATTUATORI SISTEMA OPERATIVO IN TEMPO REALE (REAL TIME) 8 • 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. 9 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. 10 • 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. 11 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, windows 7 e Windows 8 (Microsoft), MacOs del Macinthosh (Apple) e Linux che è un anche un sistema time-sharing. 12