Sistemi Operativi Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009 Informazioni Daniela Micucci Università di Milano – Bicocca E-mail: [email protected] Testo per approfondimenti: Sistemi operativi ‐ Concetti ed esempi ‐ 8° Edizione A. Silberschatz ‐ P. Galvin ‐ G. Gagne - Prentice Hall Operating System Concepts – 8th Edition 1.2 Silberschatz, Galvin and Gagne ©2009 Introduzione Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009 Outline Una breve storia dei Sistemi Operativi Cos’è un sistema operativo Organizzazione del sistema di calcolo Struttura del sistema operativo Attività del sistema operativo Gestione dei processi Gestione della memoria Gestione dei file Operating System Concepts – 8th Edition 1.4 Silberschatz, Galvin and Gagne ©2009 Outline Una breve storia dei Sistemi Operativi Cos’è un sistema operativo Organizzazione del sistema di calcolo Struttura del sistema operativo Attività del sistema operativo Gestione dei processi Gestione della memoria Gestione dei file Operating System Concepts – 8th Edition 1.5 Silberschatz, Galvin and Gagne ©2009 Prima dei Sistemi Operativi Tra il 1945 e il 1955 gli elaboratori elettronici erano progettati con valvole termoioniche Occupavano intere stanze, erano lentissimi e costosi Soltanto grossi centri di calcolo o Università potevano permetterseli I calcolatori erano molto inaffidabili Le valvole che li componevano si rompevano spesso In questo periodo non esisteva ancora il concetto di Sistema Operativo Il programma da eseguire veniva inserito ad ogni esecuzione in codice binario attraverso dei primitivi lettori di schede perforate e dopo alcune ore il risultato veniva inviato ad una stampante Operating System Concepts – 8th Edition 1.6 Silberschatz, Galvin and Gagne ©2009 I primi Sistemi Operativi (anni ‘50) Tra il 1955 e il 1965, grazie ai transistor gli elaboratori (mainframe) divennero abbastanza affidabili da poter essere costruiti e venduti in serie, anche se erano comunque macchine grosse e costosissime Concetto di job Miscela di programmi (in Fortran o Assembler), dati e comandi al SO Un programmatore doveva: Scrivere il proprio programma su carta Trasferirlo su schede Caricarlo nel computer Attendere il termine dell'esecuzione e la stampa del risultato Tale operazione era molto dispendiosa in termini di tempo e non permetteva di sfruttare la macchina durante le lunghe fasi di caricamento di dati e programmi Operating System Concepts – 8th Edition 1.7 Silberschatz, Galvin and Gagne ©2009 I primi Sistemi Operativi (anni ‘50) Nasce l’idea dei sistema batch (a lotti) ovvero l'idea di base era quella di dividere i tre lavori, ovvero il caricamento dei dati, il calcolo e la stampa I sistemi operativi tipici per questi elaboratori, per lo più programmati in FORTRAN e in Assembler erano il FMS (Fortran Monitor System) e IBSYS Operating System Concepts – 8th Edition 1.8 Silberschatz, Galvin and Gagne ©2009 La multiprogrammazione (anni ‘60) Introduzione dei circuiti integrati -> maggior velocità Necessità di ridurre il tempo idle dovuto alla esecuzione di un solo job alla volta Per la prima volta è introdotta la multiprogrammazione, che rendeva possibile la presenza di più programmi in memoria contemporaneamente Quando un job in esecuzione aveva bisogno di effettuare una operazione di I/O il Sistema Operativo lo sospendeva e al suo posto faceva girare un altro job job1 job2 job3 t Nel 1964 IBM presenta una famiglia di computer chiamata IBM System/360, prima realizzazione di una netta distinzione tra architettura e software Operating System Concepts – 8th Edition 1.9 Silberschatz, Galvin and Gagne ©2009 La multiprogrammazione (anni ‘60) Sviluppo dei sistemi di telecomunicazione delle reti Nascono i sistemi multiterminale Ogni utente dispone di un dispositivo di ingresso (la tastiera) e un dispositivo di uscita (un monitor o stampante) Si introduce anche il timesharing Ogni utente dispone di un dispositivo di ingresso (la tastiera) e un dispositivo di uscita (un monitor o stampante) Nel 1962 venne realizzato al MIT il primo sistema di timesharing su un IBM 7094: CTSS (Compatible Time Sharing System), La vera rivoluzione si ebbe con il MULTICS (MULTiplexed Information and Computing Service) sviluppato congiuntamente dal MIT, dalla General Electric e dai Bell Labs Ambizione: gestire centinaia di utenti con un 286 Operating System Concepts – 8th Edition 1.10 Silberschatz, Galvin and Gagne ©2009 La multiprogrammazione (anni ‘60) Fenomenale crescita dei minicalcolatori, a partire dal PDP-1 del 1961 a motivo dei bassi costi (120.000$: 5% costo di un IBM 7094!!!!) Importante il PDP-7 Su cui Ken Thompson (e Dennis Ritchie e Douglas Mcllroy sempre presso i lab Bell) sviluppò per gioco UNICS (Uniplexed Information and Computing Service): versione ridotta per singolo utente di MULTICS Che divenne poi UNIX Furono sviluppate diverse varianti di UNIX, come System V, BSD (Berkley Software Distribution), Minix (usato in ambito didattico) e successivamente (sulla base di MINIX e UNIX) l'ormai famosissimo Linux sviluppato dallo studente finlandese Linux Torvalds Operating System Concepts – 8th Edition 1.11 Silberschatz, Galvin and Gagne ©2009 I personal computer (anni ‘80) Negli anni '80 la tecnologia LSI (Large Scale Integration) porta alla costruzione di chip integrati ed all'abbattimento dei prezzi dell'hardware, facendo sorgere l'era del Personal Computer (chiamati inizialmente microcalcolatori) I primi modelli erano dotati di Sistemi Operativi Monoutente Con accesso interattivo e Alcuni con supporto al timesharing Il più importante tra i primi Sistemi Operativi per Personal computer era il CP/M-80 (Control Program for Microcomputer) della Digital Research MS-DOS (o PC-DOS da IBM) era originariamente basato proprio sul CP/M- 80 Operating System Concepts – 8th Edition 1.12 Silberschatz, Galvin and Gagne ©2009 I personal computer (anni ‘80) Negli anni ‘80 la Apple era uno dei pochi che credeva nell'idea Personal Computer All'epoca era difficile immaginare cosa potesse farsene una persona di un computer in casa La Xerox lancia il primo Sistema Operativo con interfaccia grafica La Apple prende in “prestito” questa idea e lancia nel 1984 il Mac OS, primo sistema operativo per Personal Computer Successivamente la Microsoft avrebbe commercializzato Windows (20 novembre 1985) Operating System Concepts – 8th Edition 1.13 Silberschatz, Galvin and Gagne ©2009 I Sistemi Operativi oggi Oggigiorno è disponibile una grande varietà di sistemi di elaborazione dalle più disparate dimensioni e performance a costi contenuti Tutte queste innovazioni hanno portato allo sviluppo di sistemi operativi per le più svariate architetture, in particolare per dispositivi handheld come cellulari (tra i quali il Symbian OS, Android) e PDA (con Windows Mobile e Palm OS) Per qualunque architettura venga sviluppato un Sistema Operativo moderno esso deve fornire il supporto, oltre a quanto visto sinora, a molteplici esigenze quali: Streaming audio/video (trasmissione ed elaborazione continua di dati multimediali) Supporto alle più diverse tecnologie di interconnessione (ad esempio Ethernet, Bluetooth e Wireless LAN) Integrazione di tecnologie per la fruizione di contenuti su Internet Gestione efficiente dell'energia Operating System Concepts – 8th Edition 1.14 Silberschatz, Galvin and Gagne ©2009 Outline Una breve storia dei Sistemi Operativi Cos’è un sistema operativo Organizzazione del sistema di calcolo Struttura del sistema operativo Attività del sistema operativo Gestione dei processi Gestione della memoria Gestione dei file Operating System Concepts – 8th Edition 1.15 Silberschatz, Galvin and Gagne ©2009 Cos’è un sistema operativo? Un Sistema Operativo è un insieme di programmi che: Gestisce gli elementi fisici del calcolatore Fornisce una piattaforma ai programmi applicativi Agisce da intermediario tra l’utente e la struttura fisica del calcolatore Scopi del sistema operativo: Eseguire i programmi, supportando l’utente nel “risolvere problemi” Rendere agevole l’interfaccia fra l’uomo e la macchina il sistema di calcolo è “conveniente” da usare Gestire in modo efficiente le risorse (hardware/software) del sistema di calcolo Operating System Concepts – 8th Edition 1.16 Silberschatz, Galvin and Gagne ©2009 Organizzazione del sistema di calcolo Il sistema di calcolo si suddivide in quattro componenti principali: Hardware Fornisce le risorse fondamentali di calcolo – Sistema operativo Controlla e coordina l’utilizzo delle risorse hardware da parte dei diversi programmi di sistema e applicativi Programmi applicativi Definiscono le modalità di utilizzo delle risorse del sistema, per risolvere i problemi di calcolo degli utenti – e.g., CPU, memoria, device di I/O e.g., Word processor, compilatori, web browser, sistemi per basi di dati, video game Utenti Persone, macchine, altri computer Operating System Concepts – 8th Edition 1.17 Silberschatz, Galvin and Gagne ©2009 Le componenti di un sistema di calcolo utente 1 c ompilatore utente 2 utente 3 ass emblatore editor di testi utente n bas e di dati programmi applic ativ i s is tema operativo dis positiv i fis ic i Operating System Concepts – 8th Edition 1.18 Silberschatz, Galvin and Gagne ©2009 Definizione di sistema operativo - 1 Il Sistema Operativo (SO) è un assegnatore di risorse Gestisce tutte le risorse hardware/software del sistema di calcolo Arbitra i conflitti per l’allocazione di risorse in base ad una politica equa ed efficiente Il SO è un programma di controllo Controlla l’esecuzione dei programmi utente per prevenire errori e/o uso improprio delle risorse del sistema Operating System Concepts – 8th Edition 1.19 Silberschatz, Galvin and Gagne ©2009 Definizione di sistema operativo - 2 Non esiste una definizione universalmente accettata Un’altra possibile definizione: «tutto quello che il vostro rivenditore vi fornisce quando ordinate un sistema operativo» Un’altra ancora: «il Sistema Operativo è il solo programma sempre in esecuzione quando il computer è acceso - detto kernel» Il resto sono solo programmi applicativi Operating System Concepts – 8th Edition 1.20 Silberschatz, Galvin and Gagne ©2009 SO come gestore risorse – 1 Si consideri un ristorante con un capo cuoco (che dirige la cucina) ed i suoi aiutanti, camerieri e clienti: I clienti scelgono un piatto dal menù Un cameriere prende l’ordine e lo consegna al capo cuoco Il capo cuoco riceve l’ordine e assegna uno o più aiutanti alla preparazione del piatto Ogni aiutante si dedicherà alla preparazione di un piatto, il che potrà richiedere più attività diverse Il capo cuoco supervisiona la preparazione dei piatti e gestisce le risorse (limitate) disponibili Operating System Concepts – 8th Edition 1.21 Silberschatz, Galvin and Gagne ©2009 SO come gestore risorse – 2 Il capo cuoco è il sistema operativo! I clienti sono gli utenti Il menù ed il cameriere costituiscono l’interfaccia verso il sistema operativo (grafica e non) Le ricette associate ai piatti sono i programmi Gli aiutanti sono i processi La cucina è il computer; pentole, fornelli, etc., sono le componenti hardware Operating System Concepts – 8th Edition 1.22 Silberschatz, Galvin and Gagne ©2009 SO come gestore risorse – 3 Problemi del capo cuoco Esecuzione fedele delle ricette Allocazione efficiente delle risorse esistenti (aiutanti, fornelli, etc.) Coordinamento degli aiutanti Licenziamento degli aiutanti che non si comportano secondo le regole Problemi del sistema operativo Esecuzione dei programmi utente Efficienza nell’uso delle risorse (processori, memoria, dischi, etc.) Coordinamento dei processi Protezione nell’uso delle risorse Operating System Concepts – 8th Edition 1.23 Silberschatz, Galvin and Gagne ©2009 Outline Una breve storia dei Sistemi Operativi Cos’è un sistema operativo Organizzazione del sistema di calcolo Struttura del sistema operativo Attività del sistema operativo Gestione dei processi Gestione della memoria Gestione dei file Operating System Concepts – 8th Edition 1.24 Silberschatz, Galvin and Gagne ©2009 Organizzazione di un calcolatore Un sistema di calcolo può essere descritto attraverso i seguenti elementi Modello o funzionamento del sistema di calcolo Struttura della memoria Fatto in architetture Struttura di I/O Fatto in architetture Operating System Concepts – 8th Edition 1.25 Silberschatz, Galvin and Gagne ©2009 Modello del sistema Un sistema di calcolo è composto da una o più CPU, alcuni controllori di dispositivi di I/O (device) connessi attraverso un bus alla memoria Questi dispositivi operano in maniera concorrente per ottenere cicli di accesso alla memoria Operating System Concepts – 8th Edition 1.26 Silberschatz, Galvin and Gagne ©2009 Startup Normalmente in un sistema di calcolo dopo l’accensione la prima fase è il bootstrap program (programma di avviamento) Tipicamente è memorizzato in una ROM o in una EPROM e viene identificato con il termine firmware Inizializza ogni aspetto del sistema Registri della CPU, controllori dei diversi dispositivi Carica nella memoria il kernel del sistema operativo Il Sistema Operativo avvierà normalmente il primo processo (ad esempio sotto Linux è init) Questo processo una volta avviato si metterà in attesa di un evento o di ulteriori istruzioni Operating System Concepts – 8th Edition 1.27 Silberschatz, Galvin and Gagne ©2009 Gestione dei dispositivi di I/O La CPU e i device di I/O possono eseguire operazioni concorrenti Ogni dispositivo di I/O ha un controllore che gestisce le operazioni del dispositivo attraverso un buffer locale La CPU sposta i dati da/verso la memoria principale verso/da i buffer locali Il dispositivo di I/O fornisce normalmente nuovi dati all’interno di questo buffer locale Ogni qualvolta che un dispositivo ha nuovi dati causa un interrupt per richiamare l’attenzione della CPU Operating System Concepts – 8th Edition 1.28 Silberschatz, Galvin and Gagne ©2009 Gli interrupt Un interrupt generalmente trasferisce il controllo ad una routine di servizio Normalmente esiste una sequenza di indirizzi, detta vettore delle interruzioni, che punta alle diverse routine di servizio Il Sistema Operativo deve salvare l’indirizzo dell’istruzione appena interrotta per poterla continuare ad eseguire successivamente Ulteriori interrupt sono normalmente disabilitati per non causare incoerenze nella normale esecuzione dell’interrupt corrente Un trap (o eccezione) è normalmente un interrupt generato via software a seguito di un errore oppure da una richiesta utente Ad esempio una divisione per zero Un sistema operativo è quindi anche un gestore di interrupt Operating System Concepts – 8th Edition 1.29 Silberschatz, Galvin and Gagne ©2009 Timeline delle interruzioni Operating System Concepts – 8th Edition 1.30 Silberschatz, Galvin and Gagne ©2009 Interrupt di I/O Dopo l’inizio dell’operazione di I/O, il flusso di esecuzione può seguire due percorsi distinti: I/O sincrono: si restituisce il controllo al processo utente solo dopo il completamento dell’operazione di I/O I/O asincrono: si restituisce immediatamente il controllo al processo utente in questo modo l’I/O può proseguire mentre il sistema esegue altre operazioni Operating System Concepts – 8th Edition 1.31 Silberschatz, Galvin and Gagne ©2009 Outline Una breve storia dei Sistemi Operativi Cos’è un sistema operativo Organizzazione del sistema di calcolo Struttura del sistema operativo Attività del sistema operativo Gestione dei processi Gestione della memoria Gestione dei file Operating System Concepts – 8th Edition 1.32 Silberschatz, Galvin and Gagne ©2009 Struttura del Sistema Operativo I Sistemi Operativi possono essere progettati utilizzando diversi criteri, i più comuni sono: Multiprogrammazione Timesharing (o multitasking) Operating System Concepts – 8th Edition 1.33 Silberschatz, Galvin and Gagne ©2009 Multiprogrammazione La multiprogrammazione consente di aumentare l’efficienza della CPU e dei dispositivi di I/O, infatti: Un singolo utente non può tenere occupato la CPU e i dispositivi di I/O per tutto il tempo La multiprogrammazione organizza i lavori (o job) in modo tale da tenere sempre la CPU occupata Più job (un sottoinsieme dei totali) del sistema risiedono in memoria Un solo job alla volta è selezionato per essere mandato in esecuzione attraverso un algoritmo di scheduling Quando un job è in attesa di un I/O il Sistema Operativo può passare all’esecuzione di un altro job Operating System Concepts – 8th Edition 1.34 Silberschatz, Galvin and Gagne ©2009 Time sharing (o multitasking) Il timesharing (o multitasking) è una estensione logica della multiprogrammazione La CPU esegue per un istante un job per poi passare all’esecuzione di un altro job e così via La sensazione è che la CPU sta eseguendo diversi job in parallelo Il tempo di risposta deve essere inferiore di 1 secondo Ogni utente ha almeno un programma «in esecuzione» in memoria chiamato processo Se diversi processi sono pronti per essere eseguiti nello stesso istante la CPU decide attraverso degli algoritmi di scheduling chi deve essere mandato in esecuzione Se la memoria non è sufficiente a contenere tutti i processi, mediante swapping, i processi vengono spostati fuori/dentro la memoria principale in base al loro stato di esecuzione effettivo La memoria virtuale permette l’esecuzione di processi che non sono completamente in memoria Operating System Concepts – 8th Edition 1.35 Silberschatz, Galvin and Gagne ©2009 Multiprogrammazione e memoria Operating System Concepts – 8th Edition 1.36 Silberschatz, Galvin and Gagne ©2009 Outline Una breve storia dei Sistemi Operativi Cos’è un sistema operativo Organizzazione del sistema di calcolo Struttura del sistema operativo Attività del sistema operativo Gestione dei processi Gestione della memoria Gestione dei file Operating System Concepts – 8th Edition 1.37 Silberschatz, Galvin and Gagne ©2009 Doppia modalità di funzionamento Processi condividono il sistema I processi possono tentare di modificare lo spazio di memoria dedicato ad altri processi o al SO La modalità operativa dual-mode permette al SO di proteggersi e di proteggere le varie componenti del sistema di calcolo User mode e kernel mode Mode bit cablato in hardware Il valore assunto dal mode bit distingue le due situazioni in cui il sistema esegue codice utente o codice kernel; Le istruzioni privilegiate possono essere eseguite soltanto in modalità kernel Una system call effettua il passaggio in modalità kernel; il ritorno dalla chiamata riporta il sistema in modalità utente Operating System Concepts – 8th Edition 1.38 Silberschatz, Galvin and Gagne ©2009 Transzione da modalià User a Kernel Operating System Concepts – 8th Edition 1.39 Silberschatz, Galvin and Gagne ©2009 Gestione dei processi - 1 Un processo è un programma in esecuzione È una unità di lavoro del sistema Il programma è un’entità passiva, il processo è un’entità attiva Un processo necessità di risorse per poter compiere il proprio lavoro CPU, memoria, I/O, file Al termine dell’esecuzione il processo rilascia tutte le risorse utilizzate Operating System Concepts – 8th Edition 1.41 Silberschatz, Galvin and Gagne ©2009 Gestione dei processi - 2 Nei processi single‐threaded il program counter tiene traccia della prossima istruzione da eseguire Il processo esegue una singola istruzione per volta sino al suo termine Nei processi multi‐threaded ogni thread ha un suo program counter Un sistema solitamente ha diversi processi assegnati a diversi utenti e verranno eseguiti in maniera concorrente su una o più CPU Le CPU sono risorse da utilizzare per eseguire i processi/thread Operating System Concepts – 8th Edition 1.42 Silberschatz, Galvin and Gagne ©2009 Attività del gestore dei processi Il Sistema Operativo attraverso il gestore dei processi ha il compito di: Create e rimuovere i processi degli utenti e di sistema Sospendere e riprendere l’esecuzione dei processi Fornire dei meccanismo per la sincronizzazione dei processi Fornire dei meccanismo per la comunicazione tra processi Fornire dei meccanismo per la gestione dei deadlock Operating System Concepts – 8th Edition 1.43 Silberschatz, Galvin and Gagne ©2009 Gestore della memoria Il gestore della memoria si occupa di cosa tenere allocato in memoria in ogni istante È un importante modulo della Sistema Operativo in quanto rende più efficiente l’utilizzo della CPU Alcune attività del gestore della memoria sono: Tenere traccia di quale parte della memoria è occupata e da chi è usata Decidere quali processi e dati spostare dentro o fuori la memoria Allocare e deallocare blocchi di memoria quando è richiesto Operating System Concepts – 8th Edition 1.44 Silberschatz, Galvin and Gagne ©2009 Gestione del file system Il Sistema Operativo garantisce una visione uniforme e logica delle informazioni memorizzate sulle memorie di massa Il Sistema Operativo Astrae dalle caratteristiche fisiche dei dispositivi per definire un’unità di memorizzazione logica, il file Grazie ai device driver (che controllano la periferica), nasconde all’utente le caratteristiche fisiche variabili dell’hardware Permette di organizzare i file in directory Permette di controllare l’accesso per determinare quali utenti possono accedere e come a quali risorse (file) Le attività includono: Creazione e cancellazione di file e directory Fornire primitive elementari per la gestione di file e directory Associare file ai dispositivi di memoria di massa Operating System Concepts – 8th Edition 1.45 Silberschatz, Galvin and Gagne ©2009 Gestione della memoria di massa La memoria centrale è volatile e troppo piccola per contenere permanentemente tutti i dati: Il sistema operativo deve consentire l’archiviazione secondaria, per salvare i contenuti della memoria centrale La maggior parte dei moderni sistemi impiega i dischi come principale mezzo di memorizzazione La gestione efficiente della memoria secondaria è fondamentale per le prestazioni del sistema, che risentono fortemente della velocità del sottosistema di gestione dei dischi e della bontà degli algoritmi di scheduling Il SO è responsabile delle seguenti attività: Gestione dello spazio libero Allocazione dello spazio Scheduling del disco Operating System Concepts – 8th Edition 1.46 Silberschatz, Galvin and Gagne ©2009 Gestione della memoria terziaria I dispositivi di memoria terziaria non devono essere particolarmente veloci Le memorie terziarie includono i dischi ottici ed i nastri magnetici Devono comunque essere gestite in modo efficiente Variano tra memorie WORM (write-once, read-many) e RW (read-write) Supporto del SO: installazione/rimozione dei media, allocazione dei dispositivi ai processi che ne richiedono l’uso Operating System Concepts – 8th Edition 1.47 Silberschatz, Galvin and Gagne ©2009 Performance dei vari livelli di storage Operating System Concepts – 8th Edition 1.48 Silberschatz, Galvin and Gagne ©2009 Protezione e Sicurezza In un Sistema Operativo sono necessari dei meccanismi di Protezione: meccanismo usato per controllare l’accesso da parte di processi o utenti a risorse del sistema di calcolo Sicurezza: meccanismo di difesa implementato dal sistema per proteggersi da attacchi interni ed esterni Un sistema operativo normalmente distingue i diversi utenti in modo da poter determinare chi può fare cosa Normalmente ad ogni utente corrisponde un user ID Ogni userID ha quindi i permessi su quali file accedere e su quali file mandare in esecuzione Il group ID identifica un insieme di utenti che hanno permessi su alcune risorse Operating System Concepts – 8th Edition 1.50 Silberschatz, Galvin and Gagne ©2009 Fine Introduzione Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009