Sistemi Operativi Un sistema operativo è l’insieme di quei pacchetti software che coordinano le attività interne di un computer e gestiscono il suo modo di comunicare con l’esterno. Sistemi operativi È grazie al sistema operativo che l’hardware di un computer diventa uno strumento utile. Cercheremo di capire cosa fanno i sistemi operativi e come. 1 2 Sistemi Operativi Funzioni del Sistema Operativo Definizione intuitiva: insieme di programmi che rendono facilmente disponibile all’utente le potenzialità offerto dalla Macchina • Gestione lavori Sistema operativo = nucleo (kernel) + software di base • Ausili per la gestione dei dati • Gestione delle risorse • Ausili per la messa a punto dei programmi • Funzioni di: Il sistema operativo è fornito dal costruttore della macchina (generalmente non gratuitamente) 3 4 ○– contabilità ○– sicurezza ○– recupero Funzioni del kernel Funzioni del software di base Il kernel del sistema operativo è un programma che va in esecuzione all’accensione della macchina (bootstrapping) e svolge le funzioni: Il software di base è un insieme di programmi che servono a facilitare la creazione di programmi da parte degli utenti della macchina – controllo dell’esecuzione dei programmi dell’utente – amministrazione delle risorse hardware nei sistemi multiutente L’utente si serve del software di base per: –– –– –– Il kernel impiega del tempo di CPU che viene sottratto All’esecuzione dei programmi utente: sovraccarico (overhead) 5 –– –– –– editare un file (insieme ordinato di dati) compilare duplicare un file cancellare un file visualizzare un file trasferire un file 6 Funzioni del software di base –– utilizzare le periferiche (nastri, stampanti, !) –– colloquiare con altri utenti –– utilizzare la rete locale –– inviare e ricevere posta –– giocare –– …… Il software SW Applicativo Sistema Operativo SW HW HW SW= Sistema Operativo + SW applicativo Il Sitema Operativo come necessario intermediario 7 Classificazione del software Elementi di un SO Utente Interprete comandi Sistema Operativo Gestione memoria Gestione periferiche Software applicativo File system Nucleo (o kernel) [gestione processore] Interfaccia con la rete Hardware 9 Classificazione dei Sistemi Operativi Sistemi Operativi dedicati • I primi sistemi operativi (tornati in uso con i PC) • Dedicati • La macchina viene utilizzata da un utente per volta che può eseguire un solo programma per volta (applicativo o di base) • A lotti (batch) • Multiprogrammazione • Nucleo molto semplice • Interattivi (time-sharing) 11 • Real-time • Funzioni base per interpretare comandi e eseguire programmi • Per macchine multiprocessori (sistemi concorrenti) • Scarso sfruttamento del tempo macchina 12 Sistemi Operativi per la gestione a lotti (batch) • Nati per meglio sfruttare la velocità crescente delle macchine: eliminano i tempi morti tra programmi successivi di utenti diversi Evoluzione della macchina di Von Neumann • In conclusione, il limite intrinseco della struttura di Von Neumann è la totale mancanza di parallelismo, che comporta un tempo globale di elaborazione pari alla somma dei tempi richiesti da ogni singola attività • Operazioni I/O offline • Un insieme di lavori (job) viene accorpato in un lotto (batch) e trasferito suuna unità di ingresso veloce (nastro/disco) • Ogni lavoro viene caricato ed eseguito in sequenza senza interruzioni fino al termine • La CPU viene comunque sottoutilizzata perché, durante le operazione di I/O, deve adeguarsi alla bassa velocità delle periferiche 13 Multiprogrammazione • Più di un programma è caricato in memoria contemporaneamente • Le evoluzioni architetturali della macchina di Von Neumann tendono a consentire diversi livelli di parallelismo 14 Multiprogrammazione elaborazione attesa per operazioni di I/O • Le operazione di I/O di un programma sono sovrapposte temporalmente all’esecuzione delle istruzioni di un altro programma Tempo Progr. 1 Progr. 2 Progr. 3 Tempo elaborazione 15 attesa per operazioni di I/O Multiprogrammazione Multiprogrammazione • Quando un processo in esecuzione (running) chiede un servizio di I/O al sistema operativo si blocca (blocked) in attesa del risultato Termine elaborazione Selezione primo processo pronto e sua esecuzione Inizio esecuzione (accodamento ai processi pronti) • 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) Processi pronti (ready) Completamento operazione di I/O (evento esterno atteso) Processo in esecuzione (running) Processi in attesa (blocked) Richiesta operazione di I/O • CPU ben sfruttata 17 Multiprogrammazione Sistemi Operativi interattivi (time sharing) Svantaggi: • Il tempo di utilizzo della CPU viene suddiviso dal sistema • Multiprogrammazione incapace di differenziare fra programmi che operativo in fette (quanto di tempo=time slice con durata di 100-800 ms) • Ogni processo in memoria riceve a turno l’uso della CPU per richiedono un uso frequente delle periferiche, da quelli che una fetta di tempo richiedono l’utilizzo per lunghi tempi della CPU (es. programmi di • Usati soprattutto in ambiente multiutente elaborazione matematica su dati ricevuti inizialmente). • Quando uno di questi programmi conquista la CPU non la rilascia, bloccando gli altri programmi 19 20 Sistemi Operativi interattivi (time sharing) Sistemi Operativi interattivi (time sharing) • L’utente ha l’impressione di avere la macchina a sua completa disposizione Termine elaborazione Selezione primo processo pronto e sua esecuzione Inizio esecuzione (accodamento ai processi pronti) • Ogni processo ottiene ciclicamente l’utilizzo della CPU Processi pronti (ready) Termine quanto di tempo Processo in esecuzione (running) • Svantaggi: Overhead per la gestione della CPU principalmente con molti processi attivi Completamento operazione di I/O (evento esterno atteso) 21 Processi in attesa (blocked) Richiesta operazione di I/O 22 Condivisione del tempo macchina tra il processo A e il processo B. Sistemi Operativi 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 controllo di processo gestione di allarme 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 è minore del tempo fissato 23 24 Sistemi Operativi per sistemi concorrenti • Il sistema operativo si prende carico di assegnare le diverse CPU a processori diversi nonché di gestire le risorse in comune tra le varie CPU (memoria condivisa, bus, periferiche) La gestione dei processi: Algoritmi di scheduling • A sua volta il sistema operativo può essere eseguito contemporaneamente da più CPU oppure da una sola (master) • Nell’ultimo caso, le CPU hanno compiti differenti 25 Lo scheduler della CPU o o Il SO sceglie tra i processi in memoria che sono pronti per l’esecuzione ed assegna la CPU ad uno di essi. Lo scheduling può essere: o Non preemptive (senza prelazione): un processo mantiene il possesso della CPU fino a che termina o passa in attesa o Preemptive (con prelazione): un processo può essere interrotto da un altro processo Lo scheduler della CPU Parametri: • Utilizzo della CPU – mantenere la CPU il più impegnata possibile. • Frequenza di completamento (throughput) – numero di processi completati per unità di tempo. • Tempo di completamento (turnaround time) – intervallo che va dal momento dell’immissione del processo nel sistema al momento del completamento. • Tempo di attesa (waiting time)– somma dei tempi spesi in attesa nella coda dei processi pronti. First-Come, First-Served (FCFS) Process CPU Burst P1 24 P2 3 P3 3 FCFS (Cont.) Se I processi arrivano nell’ordine P2 , P3 , P1 Il diagramma di Gantt è: P2 Se i processi arrivano nell’ordine: P1 , P2 , P3 si ottiene il risultato mostrato nel seguente diagramma di Gantt: P3 0 3 P1 6 30 Tempo di attesa per P1 = 6; P2 = 0; P3 = 3 P1 0 P2 24 P3 27 Tempo di attesa medio: (6 + 0 + 3)/3 = 3 30 Tempo di attesa per P1 = 0; P2 = 24; P3 = 27 Tempo medio di attesa: (0 + 24 + 27)/3 = 17 Shortest-Job-First (SJF) Molto meglio del caso precedente. C’è un effetto di ritardo a catena (convoy effect) mentre tutti i processi attendono che quello grosso rilasci la CPU. Example of Non-Preemptive SJF Schedula il processo con il prossimo CPU burst più breve. Process Arrival Time Burst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 SJF (non-preemptive) 4 L’algoritmo SJF può essere: nonpreemptive – quando un processo ha ottenuto la CPU, non può essere prelazionato fino al completamento del suo cpu-burst. – preemptive – quando un nuovo processo è pronto, ed il suo CPU-burst è minore del tempo di cui necessita ancora il processo in esecuzione, c’è prelazione. Questa schedulazione è anche detta shortest-remaining-timefirst. – SJF è ottimale – fornisce il minor tempo di attesa medio per un dato gruppo di processi. P1 0 P3 7 P2 8 P4 12 16 Average waiting time = (0 + 3 + 6 + 7)/4 = 4 7-4 8-2 12-5 Example of Preemptive SJF Scheduling a priorità Process Arrival Time Burst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 SJF (preemptive) 4 P1 0 P2 2 P3 4 SJF è un algoritmo a priorità dove la priorità è l’inverso della lunghezza del prossimo CPU burst (previsto). P4 P2 5 Si associa una priorità numerica a ciascun processo. La CPU viene allocata al processo con priorità più alta. • Preemptive • nonpreemptive 7 P1 11 16 Problema ≡ Blocco indefinito (starvation) – processi a bassa priorità potrebbero non essere mai eseguiti. Soluzione ≡ Invecchiamento (aging) – accrescere gradualmente le priorità dei processi nel sistema. Average waiting time = (9 + 1 + 0 +2)/4 = 3 11-2 … Round Robin I/O Ogni processo riceve la CPU per una piccola unità di tempo (time quantum), generalmente 10-100 millisecondi. Se entro questo arco di tempo il processo non lascia la CPU, viene interrotto e rimesso nella coda dei processi pronti. Fine I/O Round Robin (RR) Processo 1 E P P E A A A P P E Processo 2 P E P P E P E E P P Processo 3 P P E P P E P P E P P3 P2 P1 P E A Cambio di contesto Esempio di RR con quanto di tempo pari a 20 millisecondi Process Burst Time P1 53 P2 17 P3 68 P4 24 La gestione del file system: Il diagramma di Gantt è: P1 0 P2 20 P3 37 P4 57 P1 77 Ovvero il sistema di gestione della memoria di massa. P3 97 P4 117 P1 121 P3 134 P3 154 162 Gestione memoria di massa File system FILE: Obiettivo: presentare all’utente l’organizzazione logica dei dati e le operazioni che è possibile compiere su di essi. Operazioni di base di un file system: ○ recupero di dati precedentemente memorizzati; ○ eliminazione (cancellazione) di dati obsoleti; ○ modifica/aggiornamento ○ copia di dati preesistenti; di dati (e.g. da HD a FD) per backup o per il trasferimento; ○… • contenitore logico di informazioni (dati o istruzioni); • oggetto a “lunga vita”, per conservare le informazioni anche dopo la terminazione del processo che lo ha generato. Per ogni file: • Identificatore (nome.estensione) • Periferica (drive) e percorso sulla periferica • Data creazione • Dimensione • Posizione effettiva dei dati nella memoria di massa Un esempio di struttura / Interfaccia grafica (radice) UTENTI DOS DIDATT ROSSI NERI LEZIONI command.com ESAMI edit.com xcopy.com filea.txt BIANCHI filec.jpg filea.txt intro.txt iscrfeb.doc iscrgen.doc fileb.wav iscrmar.doc Metodi di allocazione su disco Un metodo di allocazione specifica il modo in cui i blocchi di un file vengono allocati nel disco: ○ Allocazione contigua. ○ Allocazione linkata. Allocazione contigua Ogni file occupa un certo numero di blocchi contigui su disco. Facile – è definita dall’indirizzo del primo blocco del file su disco e dalla lunghezza (numero di blocchi). File costituito da 4 blocchi Allocazione contigua dello spazio del disco Allocazione contigua Svantaggi: • Frammentazione esterna: assegnando e liberando lo spazio per i file, lo spazio libero del disco viene frammentato in tanti buchi. • La taglia dei file non può crescere. Allocazione linkata Ogni file è una lista linkata di blocchi del disco: i blocchi possono essere sparpagliati ovunque nel disco. Un blocco = Puntatore al prossimo blocco File costituito da 4 blocchi Allocazione Linkata Allocazione linkata Svantaggi • Inefficiente l’accesso diretto. • Spreco di parte di un blocco per il puntatore. • Poca affidabilità. Scheduling del disco Struttura della memoria secondaria Disco magnetico Un disco è composto da piatti Un testina di lettura/scrittura sfiora ogni piatto • Ogni piatto è diviso in tracce. • Ogni traccia in settori. • L’insieme delle tracce che si trova sotto un braccio forma un cilindro. • • FCFS (First Come First Served) Richiesta di I/O ○ Lettura/scrittura ○ Indirizzo del disco rispetto al quale trasferire ○ Indirizzo di memoria rispetto al quale trasferire ○ Numero di byte da trasferire Diversi algoritmi esistono per schedulare le richieste di I/O per il disco. Li presentiamo usando la seguente coda di richieste (0199) 98, 183, 37, 122, 14, 124, 65, 67 La testina è posizionata sul cilindro 53 Il movimento totale della testina è di 640 cilindri SSTF (Shortest Seek Time First) Seleziona la richiesta con il minimo tempo di ricerca dalla posizione corrente della testina. La schedulazione SSTF può causare attesa indefinita di alcune richieste (starvation). Il movimento totale della testina è di 263 cilindri; Non è ottimale (servire prima le richieste per 37 e 14 riduce il movimento totale) C-SCAN Fornisce un tempo di attesa più uniforme di SCAN. Il braccio si muove da un capo all’altro del disco, servendo le richieste lungo il percorso. Quando raggiunge l’altro capo ritorna direttamente all’inizio del disco, senza servire alcuna richiesta durante il ritorno. Tratta i cilindri come una lista circolare che si riavvolge dal cilindro finale al primo. SCAN Il braccio del disco si muove da un estremo all’altro estremo, servendo le richieste che incontra. All’altro estremo il movimento viene invertito e il servizio continua. il movimento totale della testina è 208 cilindri. C-SCAN C- LOOK Versione pratica di SCAN e C-SCAN. Il braccio arriva fin dove è presente la richiesta finale, per ciascuna delle due direzioni. Lì inverte immediatamente direzione, senza giungere all’estremità del disco.