Introduzione Introduzione Cos’è un sistema operativo Organizzazione del sistema di calcolo Architettura degli elaboratori Struttura del sistema operativo Attività del sistema operativo Gestione dei processi Gestione della memoria Gestione dei file Protezione e sicurezza Ambienti di calcolo Sistemi operativi opensource Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.2 Cos’è un sistema operativo? 1 Il Sistema Operativo (SO) perfetto è invisibile all’utente Ogni utente pensa in modo diverso all’utilizzo del computer: ha una propria visione astratta del sistema di elaborazione, che tiene conto solo di quelle caratteristiche che l’utente ritiene importanti Il sistema operativo è un software che agisce da intermediario tra l’utente e l’hardware del computer Deve fornire servizi e caratteristiche presenti nelle visioni astratte di tutti i suoi utenti… servizi che mantiene aggiornati nel tempo per adeguare i cambiamenti alle loro esigenze Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.3 Cos’è un sistema operativo? 2 Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.4 Cos’è un sistema operativo? 3 Scopi del sistema operativo: Eseguire i programmi, “risolvere problemi” supportando l’utente nel 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 Prevenire le interferenze fra/con le attività degli utenti Dare agli utenti e alle applicazioni una visione “virtuale” del sistema di calcolo Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.5 Organizzazione del sistema di calcolo Il sistema di calcolo si suddivide in quattro componenti principali: Hardware fornisce le risorse fondamentali di calcolo CPU, memoria, device di I/O 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 Word processor, compilatori, web browser, sistemi per basi di dati, video game Utenti Persone, altri macchinari, altri elaboratori Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.6 Le componenti del sistema di calcolo Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.7 Definizione di sistema operativo Il SO funge da allocatore 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 Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.8 Esempio: il SO come gestore risorse – 1 Si consideri un ristorante con un capocuoco (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 capocuoco 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 capocuoco supervisiona la preparazione dei piatti e gestisce le risorse (limitate) disponibili Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.9 Esempio: il SO come gestore risorse – 2 Il capocuoco è il sistema operativo! I clienti sono gli utenti Le ricette associate ai piatti sono i programmi Il menù ed il cameriere costituiscono l’interfaccia verso il sistema operativo (grafica e non) Gli aiutanti sono i processi La cucina è il computer; pentole, fornelli, etc., sono le componenti hardware Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.10 Esempio: il SO come gestore risorse – 3 Problemi del capocuoco: Esecuzione fedele delle ricette Allocazione efficiente delle risorse esistenti (aiutanti, fornelli, etc.) Coordinamento efficiente 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 Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.11 Definizione di sistema operativo (Cont.) Non esiste una definizione universalmente accettata di sistema operativo, tuttavia… “Il sistema operativo o meglio, il kernel del SO è l’unico programma sempre in esecuzione quando il computer è acceso” Gli altri programmi sono software di sistema o applicativi Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.12 Architettura del sistema di calcolo Una o più CPU e diversi controllori di device connessi ad un bus comune che permette l’accesso ad una memoria condivisa Esecuzione concorrente nelle CPU e nei controllori di device, che competono per garantirsi cicli di memoria Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.13 La fase di startup Il programma di bootstrap viene caricato in RAM in fase di accensione del computer (o di reboot ) dal BIOS Il BIOS è memorizzato nella ROM o nella EEPROM, e viene identificato con il termine di firmware Normalmente, un boostrap loader è memorizzato su disco fisso (nel Master Boot Record MBR) Inizializza (e controlla) tutte le componenti del sistema Procede al caricamento del kernel del SO e ne lancia l’esecuzione Quando si accende un elaboratore, occorre attendere alcuni istanti per poter iniziare a lavorare: durante questa pausa il computer carica il kernel e i servizi fondamentali per l’esecuzione dei programmi utente Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.14 Operatività del sistema di calcolo La CPU e i device di I/O possono eseguire operazioni concorrenti Ciascun controllore gestisce un particolare tipo di periferica Ciascun controllore gestisce un buffer locale La CPU sposta i dati da/verso la memoria principale verso/da i buffer locali L’I/O avviene effettivamente sui dati contenuti nei buffer delle periferiche Il controllore informa la CPU quando ha portato a termine l’operazione di I/O, causando un interrupt Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.15 Gli interrupt Al verificarsi di un interrupt, il controllo viene trasferito all’opportuna routine di gestione utilizzando il vettore degli interrupt, che contiene gli indirizzi di tutte le routine di servizio Si salva inoltre l’indirizzo dell’istruzione “interrotta” e lo “stato” della CPU dalla quale dovrà riprendere l’esecuzione al termine della gestione dell’interruzione Durante la gestione di un interrupt, altri eventuali interrupt giunti al sistema sono momentaneamente “disabilitati” Una trap (o eccezione) è un interrupt generato via software, causato da un errore o da una richiesta utente Il SO è interrupt driven Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.16 Interrupt timeline Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.17 Interrupt di I/O In seguito ad una richiesta di I/O da parte di un processo utente, si verifica un’interruzione Dopo l’inizio dell’operazione di I/O, il flusso di esecuzione può seguire due percorsi distinti Nel caso più semplice, si restituisce il controllo al processo utente solo dopo il completamento dell’operazione di I/O (I/O sincrono ) Altrimenti, si può prevedere la restituzione immediata del controllo al (ad altro) processo utente: in questo modo l’I/O può proseguire mentre il sistema esegue altre operazioni (I/O asincrono ) Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.18 Metodi di I/O Sincrono Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 Asincrono 1.19 Accesso diretto alla memoria DMA Direct Memory Access utilizzato per disposi- tivi di I/O ad alte prestazioni, con velocità di trasferimento comparabili alla velocità di accesso alla memoria centrale Il controllore di device trasferisce blocchi di dati dal buffer locale direttamente nella memoria principale, senza intervento della CPU Viene generato un solo interrupt per regolare il trasferimento di ciascun blocco (invece di un interrupt per byte) Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.20 Struttura della memoria Memoria principale: l’unico dispositivo di memoria cui la CPU può accedere direttamente Memorie di massa: “estensione” della memoria principale, che fornisce notevole capacità di memorizzazione non volatile Dischi magnetici “piatti” rigidi di metallo o in fibra di vetro, ricoperti di materiale magnetico La superficie del disco è logicamente suddivisa in tracce, a loro volta suddivise in settori Il controllore del disco determina l’interazione logica fra device e memoria centrale Unità a stato solido memorie elettroniche non volatili, prive di organi meccanici Sector Tracks Platter Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 Track 1.21 Gerarchia dei dispositivi di memoria 1 I dispositivi di memoria sono organizzati gerarchicamente in base a… Velocità di accesso Costo (al byte) Volatilità Caching produzione di una copia dell’informazione in un dispositivo di memoria più veloce (situato più in alto nella gerarchia delle memorie); la memoria principale costituisce una cache per le memorie secondarie Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.22 Gerarchia dei dispositivi di memoria 2 Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.23 Caching 1 Principio informatore fondamentale dei moderni sistemi di calcolo, attuato a vari livelli (hardware, SO, software) L’informazione in uso viene copiata temporaneamente da un dispositivo di memoria più lento ad uno più veloce Il dispositivo più veloce, che funge da cache, viene controllato per verificare se l’informazione d’interesse è già presente, nel qual caso… …l’informazione viene reperita direttamente dalla cache Altrimenti, i dati vengono preventivamente copiati nella cache e quindi acceduti Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.24 Caching 2 La cache ha dimensioni inferiori rispetto al supporto di memoria sul quale si effettua il caching La gestione della cache, data la capacità limitata di questi dispositivi, rappresenta un problema di progettazione fondamentale Un’appropriata selezione delle dimensioni e dei criteri di aggiornamento della cache può garantire che una percentuale variabile dall’80% al 99% degli accessi si limiti alla cache, con un notevole incremento delle prestazioni del sistema Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.25 Performance dei diversi livelli di memoria Lo “spostamento” di dati nella gerarchia di memorie può essere esplicito o implicito da disco a RAM da cache a registri Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.26 Migrazione di un dato A da disco a registro In ambiente multitasking, è necessario assicurare che qualsiasi processo che desideri accedere ad A, ottenga dal sistema il valore aggiornato In ambiente multiprocessore, la coerenza della cache si ottiene garantendo che l’aggiornamento di A in una qualsiasi cache si rifletta immediatamente in tutte le cache in cui A risiede (il problema si risolve a livello hardware, senza intervento del SO) Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.27 Struttura del sistema operativo 1 La multiprogrammazione è fondamentale per l’efficienza del sistema Un singolo job non può tenere occupati contemporaneamente la CPU ed i device di I/O Con la multiprogrammazione, più job (codice e dati) sono memorizzati contemporaneamente nella memoria principale, così da mantenere la CPU sempre occupata Il job che verrà eseguito, ed otterrà quindi l’utilizzo esclusivo della CPU, viene selezionato mediante un algoritmo di job scheduling Quando un job è in attesa di qualche evento (per esempio, un servizio di I/O), il SO seleziona un nuovo job da eseguire Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.28 Struttura del sistema operativo 2 Il timesharing (o multitasking) è l’estensione logica della multiprogrammazione, nella quale la CPU passa così rapidamente dall’esecuzione di un job a quella del successivo che gli utenti possono interagire con i loro job durante la fase di running interactive computing Il tempo di risposta deve essere < 1 secondo Ciascun utente ha almeno un programma allocato in memoria centrale “in esecuzione” un processo Se più job sono pronti per essere eseguiti allo stesso istante, deve essere implementato un algoritmo per lo scheduling della CPU 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 metafora della memoria virtuale garantisce l’esecuzione di processi non contenuti completamente nella memoria principale Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.29 Configurazione della memoria per un sistema multiprogrammato Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.30 Servizi del sistema operativo Errori nel software o richieste di servizi creano situazioni di eccezione o trap Divisioni per zero, richieste al SO per effettuare I/O, etc. Inoltre, i processi possono tentare di modificare lo spazio di memoria dedicato ad altri processi o al SO La modalità operativa dualmode 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 Ogni system call effettua il passaggio in modalità kernel; il ritorno dalla chiamata riporta il sistema in modalità utente Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.31 Passaggio da modo utente a modo kernel 1 Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.32 Passaggio da modo utente a modo kernel 2 Per prevenire processi che eseguano cicli infiniti senza più restituire il controllo al SO Timer Emissione di un interrupt dopo un dato periodo di tempo, mediante l’uso di un generatore di impulsi e di un contatore Il SO inizializza il contatore al tempo massimo (stimato) di esecuzione del processo Il contatore viene decrementato ad ogni impulso Quando il contatore ha valore zero, si genera un interrupt Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.33 Gestione dei processi 1 Un processo è un programma in esecuzione Il programma è un’entità passiva, il processo un’entità attiva Il processo è l’unità di lavoro di un sistema Un processo necessita di alcune risorse per assolvere al proprio compito: tempo di CPU, memoria, file, dispositivi di I/O e dati di inizializzazione La terminazione di un processo prevede il recupero di tutte le risorse riutilizzabili ad esso precedentemente allocate Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.34 Gestione dei processi 2 I processi singlethread hanno un unico program counter, che indica la locazione in memoria della prossima istruzione da eseguire Le istruzioni di ogni processo vengono eseguite sequenzialmente, una dopo l’altra, fino al termine del processo I processi multithread hanno un program counter per ogni thread Normalmente, in un sistema vi sono molti processi di uno o più utenti, e alcuni processi del SO, che vengono eseguiti in concorrenza su una o più CPU La concorrenza è ottenuta effettuando il multiplexing delle CPU fra i vari processi/thread Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.35 Gestione dei processi 3 Il SO è responsabile delle seguenti attività relative alla gestione dei processi: Creazione e cancellazione di processi (utente e di sistema) Sospensione e riattivazione di processi Fornire meccanismi per la… …sincronizzazione di processi …comunicazione fra processi …gestione dei deadlock Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.36 Gestione della memoria centrale 1 La memoria centrale è un vettore di miliardi di parole, ciascuna con un proprio indirizzo È un deposito di dati rapidamente accessibili, condiviso dalla CPU e dai dispositivi di I/O …ma è lenta rispetto alla CPU La CPU legge le istruzioni dalla memoria durante la fase di fetch, oltre a leggere e scrivere i dati Il modulo per la gestione della memoria determina cosa è in essa contenuto ad un certo istante, per… …ottimizzare l’utilizzo della CPU ed il tempo di risposta del sistema agli utenti Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.37 Gestione della memoria centrale 2 Il SO è responsabile delle seguenti attività connesse alla gestione della memoria centrale: Tener traccia di quali parti della memoria sono attualmente usate e da chi Decidere quali processi caricare in memoria quando vi è spazio disponibile Allocare e deallocare lo spazio di memoria secondo necessità Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.38 Gestione della memoria secondaria Il SO garantisce una visione logica uniforme del processo di memorizzazione secondaria: Astrae dalle caratteristiche fisiche dei dispositivi per definire un’unità di memorizzazione logica il file Un file è l’astrazione informatica di un archivio di dati Il concetto di file è indipendente dal mezzo sul quale viene memorizzato (che ha caratteristiche proprie e propria organizzazione fisica) Ciascuna periferica viene controllata dal relativo device driver, che nasconde all’utente (ed al resto del sistema) le caratteristiche fisiche variabili dell’hardware Modalità e velocità di accesso, capacità, velocità di trasferimento Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.39 Gestione del file system Un file è una collezione di informazioni correlate I file contengono programmi e dati Gestione del FileSystem I file vengono organizzati in directory Controlli di accesso per determinare quali utenti possono accedere e come a quali risorse (file) Il SO è responsabile delle seguenti attività per la gestione di file: Creazione e cancellazione di file e directory Supporto alle funzioni elementari per la manipolazione di file e directory Associazione dei file ai dispositivi di memoria secondaria Backup di file su dispositivi stabili di memorizzazione Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.40 Gestione del disco La memoria centrale è volatile e troppo piccola per contenere permanentemente tutti i dati: Il sistema di elaborazione deve consentire l’archiviazione secondaria, per salvare i contenuti della memoria centrale La maggior parte dei moderni sistemi di elaborazione 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 Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.41 Gestione della memoria terziaria I dispositivi di memoria terziaria (utilizzati tipicamente offline) non devono essere particolarmente veloci Le memorie terziarie, tipicamente su supporti rimovibili, includono i dischi ottici, i dispositivi USB basati su memorie flash ed i nastri magnetici Devono comunque essere gestite in modo efficiente Variano tra memorie WORM (writeonce, readmany) e RW (readwrite) Supporto del SO: installazione/rimozione dei media, allocazione dei dispositivi ai processi che ne richiedono l’uso (esclusivo) Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.42 Il sottosistema di I/O Uno degli scopi del SO consiste nel nascondere all’utente le caratteristiche dei dispositivi hardware Il sottosistema di I/O è formato da: Una componente di gestione della memoria che include il buffering (la memorizzazione temporanea di dati in memorie locali alle periferiche, durante il trasferimento), il caching (la memorizzazione parziale dei dati in memorie ad accesso rapido), lo spooling (per la realizzazione della memoria virtuale) Un’interfaccia generale per i driver dei dispositivi I driver per i dispositivi specifici presenti nel sistema di calcolo Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.43 Protezione e sicurezza 1 Protezione è il meccanismo usato per controllare l’accesso da parte di processi o utenti a risorse del sistema di calcolo Le strategie di protezione devono fornire le specifiche dei controlli da attuare e gli strumenti per la loro applicazione Sicurezza è il meccanismo di difesa implementato dal sistema per proteggersi da attacchi interni ed esterni Denialofservice, worm, virus, hacker, cracker Più in dettaglio… La funzione della sicurezza riguarda l’uso illegale o le interferenze operate da persone o programmi fuori dal controllo del sistema operativo La funzione di protezione riguarda situazioni analoghe, ma causate da utenti accreditati Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.44 Protezione e sicurezza 2 In prima istanza, infatti, il sistema distingue i propri utenti, per determinare chi può fare cosa L’identità utente (user ID ) include nome dell’utente e numero associato uno per ciascun utente L’user ID garantisce l’associazione corretta di file e processi all’utente e ne regola la manipolazione L’identificativo di gruppo permette inoltre ad un insieme di utenti di accedere correttamente ad un insieme di risorse comuni (file e processi) Privilege escalation : l’utente acquisisce (temporaneamente) maggiori/pieni diritti per effettuare operazioni che, altrimenti, gli sarebbero precluse Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.45 Ambienti di calcolo 1 Elaborazione tradizionale Con l’evoluzione tecnologica, i confini tra i diversi ambienti di elaborazione tradizionali diventano sempre più sfumati Negli uffici… Fino a pochi anni fa: diversi PC connessi in rete, con server per servizi di accesso ai file e per stampa Ora: portali che permettono l’accesso alla rete Internet ed a risorse allocate su server interni e sistemi remoti Nelle case… Fino a pochi anni fa: un PC connesso alla rete via modem Ora: piccole reti locali, connessioni veloci ad Internet, barriere antiintrusione (firewall ) Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.46 Ambienti di calcolo 2 Sistemi distribuiti Un sistema distribuito è un insieme di processori che non condividono né la memoria né il clock; ciascun processore ha la sua propria memoria locale I processori nel sistema sono connessi attraverso una rete di comunicazione La comunicazione avviene secondo un dato protocollo Un sistema distribuito fornisce agli utenti l’accesso a varie risorse di sistema L’accesso a risorse condivise consente di: Accelerare l’elaborazione Aumentare la disponibilità di dati Migliorare l’affidabilità Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.47 Ambienti di calcolo 3 Modello ClientServer Terminale e mainframe soppiantati da PC e server I PC fungono da client e richiedono servizi a server I server permettono l’accesso a servizi e risorse (i.e., stampa, memorizzazione e reperimento di file, database, accesso alla rete Internet) Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.48 Ambienti di calcolo 4 Modello PeertoPeer Un modello diverso di sistema distribuito P2P non distingue client e server, ma è costituita da nodi equivalenti (peer, appunto) che fungono sia da client che da server verso altri nodi della rete Esempi storici famosi sono Napster (registro centralizzato), Gnutella (protocollo di scoperta), Skype, Torrent Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.49 Ambienti di calcolo 5 Computazione basata sul Web La rete Internet è divenuta onnipresente PC, palmari e telefoni cellulari sono i dispositivi d’eccellenza per la connessione al Web La computazione basata sul Web ha dato origine a nuovi dispositivi, come i bilanciatori di carico, che distribuiscono le connessioni di rete su un insieme di server simili I migliori SO possono fungere sia da server che da client Ad esempio, Linux funziona inalterato su cellulari, tablet, netbook, PC, (web)server e supercomputer Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.50 Sistemi operativi open-source 1 Disponibili in formato sorgente anziché come codice binario compilato Vantaggi Nessuna necessità di effettuare processi di reverse engineering per comprendere il funzionamento del sistema Costituzione di una comunità di programmatori e aziende che contribuiscono allo sviluppo, al debugging, all’assistenza e al supporto gratuito agli utenti Codice più sicuro e bug scoperti e risolti velocemente Libertà Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.51 Sistemi operativi open-source 2 Come nascono… 1983: Richard Stallman da vita al progetto GNU (è un acronimo ricorsivo che significa GNU is Not Unix), con la finalità di creare un SO gratuito, open-source e compatibile con UNIX Copyleft (1984) Il concetto di Copyleft nacque quando Richard Stallman stava lavorando ad un interprete Lisp La ditta Symbolics chiese di poter utilizzare l’interprete e Stallman accettò di fornire una versione di pubblico dominio Symbolics estese e migliorò l’interprete Lisp, ma quando Stallman volle accedere ai miglioramenti, Symbolics rifiutò Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.52 Sistemi operativi open-source 3 L’espressione inglese copyleft è un gioco di parole sul termine copyright nel quale la parola “right” significa “diritto” (in senso legale), ma giocando sul suo secondo significato (ovvero “destra”) viene scambiata con “left” (“sinistra”, ma anche “lasciato”) Copyleft individua un modello di gestione dei diritti d’autore basato su un sistema di licenze attraverso le quali l’autore (in quanto detentore originario dei diritti) indica ai fruitori dell’opera che essa può essere utilizzata, diffusa e modificata liberamente, nel rispetto di alcune condizioni essenziali Nella versione originaria del copyleft, la condizione principale obbliga i fruitori dell’opera, nel caso vogliano distribuire l’opera modificata, a farlo sotto lo stesso regime giuridico (e generalmente sotto la stessa licenza) In questo modo, il regime di copyleft e tutto l'insieme di libertà da esso derivanti sono sempre garantiti Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.53 Sistemi operativi open-source 4 1985: Viene pubblicato il manifesto GNU che sostiene che tutti i software dovrebbero essere gratuiti ed open-source; si costituisce la FSF, Free Software Foundation, con lo scopo di incoraggiare il libero scambio di sorgenti ed il libero utilizzo del software La FSF distribuisce il software con licenza GPL (General Public License ) GPL presuppone la distribuzione congiunta di sorgente e binario ed impone che qualsiasi cambiamento apportato al sorgente sia reso disponibile con licenza GPL Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.54 Sistemi operativi open-source 5 1991: Linus Torvalds rilascia un kernel rudimentale simile ad UNIX utilizzando compilatori, librerie, strumenti di GNU nasce LINUX Moltissime distribuzioni: Red Hat, SUSE, Fedora, Debian, Slackware, Ubuntu, Sabayon, etc. Attualmente: il progetto GNU ha prodotto molti strumenti compatibili con UNIX, quali compilatori, editor e varie utility, ma non ha mai prodotto (e rilasciato) un kernel Hurd, il kernel GNU, è in sviluppo, ma è ancora lontano dall’essere pronto all’uso quotidiano Utility e programmi di sistema GNU utilizzati con kernel LINUX: GNU/LINUX Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.55 Sistemi operativi open-source 6 UNIX BSD Derivato da UNIX di AT&T, risale al 1978, e le sue prime versioni furono rilasciate dalla UCB, in codice sorgente ed in binario, ma non open-source (necessaria la licenza AT&T) Sviluppo rallentato dalla querela di AT&T: versione completa open-source del sistema (4.4BSDlite) solo nel 1994 Varie distribuzioni: DragonflyBSD Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 FreeBSD, 1.56 NetBSD, OpenBSD, Sistemi operativi open-source 7 Solaris Sviluppato, a partire dal 1991, da Sun Microsystem come derivato di UNIX System V di AT&T Nel 2005, Sun rese disponibile parte del SO, continuando costantemente ad evolvere il codice opensource Ad oggi, tuttavia, parte del codice è ancora di proprietà AT&T Solaris può comunque essere compilato da sorgente e collegato (tramite linker) al codice binario delle componenti a codice chiuso Sistemi Sistemi Operativi Operativi a.a. A.A. 2009-10 2011-2012 1.57