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