Introduzione ai Sistemi Operativi Corso di Sistemi Operativi Proff. Cotroneo Domenico Natella Roberto Cinque Marcello 1 Libri per il corso Libro di testo: Ancilotti – Boari – Ciampolini – Lipari – Sistemi Operativi – McGraw Hill Libri consigliati per approfondimento: Ancilotti – Boari – Programmazione concorrente – McGraw Hill Stallings - Operating Systems: Internals and Design Principles – Prentice Hall (in inglese) Silberschatz – Galvin – Gagne - Sistemi operativi. Concetti ed esempi – Pearson Education Italia Tanembaum – I moderni Sistemi Operativi – Prentice Hall 2 Introduzione ai S.O. Sommario della lezione: Introduzione ai Sistemi Operativi Cenni Storici Classificazione Riferimenti P. Ancilotti, M.Boari, A. Ciampolini, G. Lipari, “Sistemi Operativi”, Mc-Graw-Hill (Cap.1) 3 1 Perché studiare i SO Non ci sono molti sistemi operativi in corso di sviluppo E' molto improbabile che sviluppiate un sistema operativo durante la vostra carriera professionale ... allora, perchè si studiano? 4 Perché studiare i SO I SO sono ovunque - essi hanno la funzione primaria di gestire le risorse di calcolo La conoscenza della struttura interna e dei principi di funzionamento di SO è indispensabile per la programmazione di sistema e permette di scrivere programmi più efficienti La programmazione concorrente nasce storicamente con i sistemi operativi e la si può bene apprendere in questo contesto 5 I Sistemi Operativi Un Sistema Operativo (S.O.) è un insieme di programmi che operano sull’hardware di un calcolatore con l’obiettivo di: semplificare lo sviluppo di programmi realizzare politiche di gestione delle risorse hardware Il Sistema Operativo si pone come interfaccia tra l’utente (o il software) e l’hardware, fornendone un’astrazione Il SO da l'"illusione" all'utente di avere una memoria "infinita", una CPU veloce, dedicata ad ogni utente, I SO forniscono un accesso uniforme (virtualizzato) a risorse estremamente eterogenee 6 2 I Sistemi Operativi Il SO … … definisce una macchina virtuale (o estesa) e quindi un insieme di astrazioni che semplificano lo sviluppo delle applicazioni (ad es. il SO fornisce il concetto di FILE invece di quello di “insieme di byte memorizzati in un disco”) … realizza politiche di gestione delle risorse hardware definendo i criteri con cui assegnare una risorsa a fronte di più richieste concorrenti 7 Struttura di un Sistema di elaborazione interf. utenti utenti interf. di libreria interf. system call programmi di utilità (shell, compiler, …) modo utente libreria standard (open, close, read, write, ..) Sistema Operativo (process management, memory management, file system, I/O, ...) modo kernel hardware (CPU, memoria, dischi, terminali, …) 8 Struttura di un Sistema di elaborazione utenti interprete dei comandi e comandi compilatori e interpreti librerie di sistema interfaccia delle chiamate del sistema operativo segnali gestione dei terminali sistema di I/O a caratteri driver di terminali file system scheduling della CPU avvicendamento sostituzione delle pagine sistema di I/O a blocchi paginazione su richiesta driver di nastri e dischi memoria virtuale interfaccia del Sistema Operativo con l’architettura fisica controllore di terminali terminali controllori di dispositivi dischi e nastri controllore di memoria memoria fisica 9 3 Evoluzione dei SO … Guidata dall’evoluzione dell’hardware 1981 2016 Fattore migliorativo MIPS 1 ≈200000 €/SPECInt ≈ 100K€ <2 DRAM size 128KB 16 GB Disk Size 10MB 1 TB Net Bwd 9600 bps 10 Gbps Address bits 16 64 4 User/Machine 100 <1 100 200000 50000 130000 100000 1000000 10 Un po’ di storia … Utente alla console: sistemi “single-user” Sistemi Batch Sistemi Multiprogrammati Sistemi Time-sharing Personal Computing: un sistema per utente Distributed e Mobile Computing: tanti sistemi per utente 11 Un po’ di storia … Prima fase: Hardware costoso, utenza molto esperta Seconda fase: Hw economico, utenza esperta Sistemi Time-sharing (utenti che utilizzano un terminale economico per collegarsi ad un server condiviso) Terza fase: Hw molto economico, utenza poco esperta Utente alla console: sistemi “single-user” Sistemi Batch Sistemi Multiprogrammati Personal Computing: un sistema per utente Distributed Computing: tanti sistemi per utente Quarta fase: Servizi a maggiore qualità Sistemi Operativi Real-Time ; Sistemi transazionali 12 4 Single User System SO = loader + librerie di procedure comuni Svantaggio: bassa percentuale di utilizzo di risorse hardware (costose) timeDeviceBusy %Utilizatio n observationInterval 13 Un esempio • • L’esempio è relativo ad un programma che elabora un file di record ed esegue in media 100 istruzioni macchina per ogni record. Nell’esempio la CPU spende circa il 96% del suo tempo in attesa di operazioni di I/O per caricare e salvare un record dal file 14 Batch System (sist. a lotti) •Privilegiano lo sfruttamento del sistema a prezzo dell’assenza di interazione da parte dell’utente, che deve fornire in via preliminare il suo lavoro. •I lavori sono raggruppati in lotti e memorizzati su supporto magnetico. Il S.O. gestisce l’avanzamento sequenziale dei singoli lavori. SO = loader + sequenziatore+ processore di output Vantaggi La macchina è meglio sfruttata grazie alla assenza di interazione con l’utente. Le operazioni di I/O sono più veloci. Svantaggi L’utente può anche attendere ore o giorni per avere i risultati del proprio lavoro. 15 5 Sistemi monoprogrammati Il processore deve attendere per il completamento delle istruzioni di I/O prima di procedere Program A Wait Wait time 16 Sistemi batch multiprogrammati • Diversi job sono caricati in memoria contemporaneamente e la CPU viene alternativamente assegnata a ciascuno di essi . • Quando un Job deve attendere un’operazione di I/O, la CPU viene assegnata ad un altro job • Richiede qualche forma di gestione della memoria e di scheduling della CPU. • l’hardware deve supportare gli interrupt di I/O e il DMA. 17 Multiprogramming Quando un job ha bisogno di attendere il completamento di un’operazione di I/O, il processore può essere assegnato ad un altro job 18 6 Multiprogramming 19 Esempio 20 21 7 22 Effects of Multiprogramming 23 Time Sharing E' l'estensione logica della multiprogrammazione in cui il tempo del processore è condiviso tra più utenti. L'esecuzione della CPU viene suddivisa in un certo numero di quanti temporali. Allo scadere di un quanto, il task corrente viene interrotto a favore di un altro task. I passaggi tra task (context switch) avvengono così frequentemente che più utenti possono interagire in tempo reale con i programmi in esecuzione (task interattivi) Tali sistemi favoriscono i task interattivi. Vantaggio Svantaggio L’utente opera come con un sistema dedicato. L’overhead introdotto dal S.O. 24 8 Sistemi Timesharing Un “timer interrupt” è utilizzato per la condivisione della CPU Prog. 1 User Program n Prog. 2 SO main{ timer interr. User Program 1 schedule{ } schedule{ Sw di Sistema main{ timer interr. } Sist. Operativo } 25 Batch Multiprogramming versus Time Sharing Batch Multiprogramming Time Sharing Principal objective Maximize processor use Minimize response time Source of directives to operating system Job control language commands provided with the job Commands entered at the terminal 26 Personal Computing Personal Computing System Tipicamente single user L’utilizzazione delle risorse non è un obiettivo di primaria importanza Enfasi su API e user interface Evoluzione Inizialmente: il SO era un semplice fornitore di servizi (cfr. DOS che era a tutti gli effetti un gestore di interruzioni) Attualmente: Sistemi multitasking e multiutente 27 9 Sistemi Transazionali Trattasi di sistemi interattivi destinati ad eseguire transazioni, ossia sequenze di operazioni elementari che richiedono l’esecuzione ciascuna di un programma o di una sua parte. In un sistema transazionale l’utente interroga ed aggiorna archivi. Tutti gli utenti operano sugli stessi archivi e richiedono l’esecuzione delle stesse operazioni elementari, fornendo i propri dati. 28 Sistemi in tempo Reale Il sistema in tempo reale è un sistema la cui correttezza dipende dalla velocità di esecuzione dei task. Tipicamente sono sistemi che gestiscono programmi che interagiscono con l’ambiente esterno attraverso periferiche e che garantiscono ai dati di ingresso risposte in un tempo utile rispetto alle costanti di tempo proprie del’ambiente esterno. Il tempo utile dipende dall’applicazione e quindi dall’ambiente esterno. 29 Sistemi in tempo Reale Introducono nuovi concetti e nuove problematiche Sistemi con un “doppio” concetto di correttezza: Logica (“ it does the right thing” ) Temporale (“it does it on time”) Tipicamente sono sistemi in cui la proprietà di “predictability” è molto più importante delle “performance” 30 10 Mobile computing I mobile device pervadono ormai la nostra società (smartphones, wearables, ...) Social networking Digital assistants Electronic payments GPS navigation, fitness, ... Evoluzione Sicurezza e privacy Efficienza energetica Multimedia 31 Distributed e cloud computing Il cloud computing è l’ulteriore evoluzione nella virtualizzazione delle risorse, su scala distribuita I fornitori di infrastrutture erogano risorse “su domanda”, pay-per-use 32 User Programs User Programs Operating System Host B Operating System RA1 RA2 RA3 RB1 RB2 Distributed Operating System FileSystem Service Name Service Mail Service User Programs Operating System RC1 RCn 33 11