Software e Sistemi Operativi Prof. Maurizio Naldi A.A. 2015/16 Cosa vedremo • Il software applicativo – Categorie di SW • Il sistema operativo – Gestione programmi in esecuzione (processi) – Gestione memoria – Gestione dei file Esempio di Classificazione del Software Sw Sw di Sistema Sistema Operativo Sw Applicativo Office Automation Device Drivers Foglio di calcolo Librerie software Communication Enterprise Entertainment Navigazione Web Gestione contabilità Giochi in locale Elaborazione testi Messaggistica Gestione magazzino e prenotazioni Giochi in rete Presentazione Email Gestione personale Social Software Proprietario • L’utilizzo e la ridistribuzione sono proibiti se non si acquista una Licenza. • Nella maggior parte dei casi il software proprietario è “chiuso”. Non viene cioè reso disponibile nella forma (detta “sorgente”) che permette modifiche e la piena comprensione del funzionamento del software stesso. • All’interno del software proprietario trovano posto anche i programmi shareware – È possibile redistribuire il programma ma per continuare a usarlo (dopo un periodo di prova) è necessario acquistare una licenza Software Open Source • Il codice sorgente viene reso disponibile • Il termine “Open Source” indica un software la cui licenza prevede la possibilità per tutti gli utilizzatori di ottenere il codice sorgente • Offre la possibilità ad altri sviluppatori di migliorare il software • La collaborazione di molti sviluppatori permette ad un programma di essere più attentamente testato e più facilmente reso disponibile sulle diverse piattaforme rispetto al caso di un ristretto gruppo di sviluppatori • Si può dividere il software open source in – Software di pubblico dominio – Software con permesso d’autore copyleft Open Source e Free Software Non sono esattamente la stessa cosa. Rappresentano due “filosofie” diverse, anche se in accordo su molti aspetti • Open Source è una metodologia di sviluppo: • Il fatto che il software debba essere Open Source o meno è un problema pratico, non un problema etico. Quando è Open Source, il software a pagamento è un’alternativa difficile da gestire. • Free Software è un movimento basato su un principio: • Il software proprietario è un problema sociale e la libertà di run, copy, distribute, study, change and improve the software* è la soluzione. *http://www.gnu.org/philosophy/free-sw.html Free Software* Le quattro libertà offerte dal free software: 1. Libertà di usare il programma per qualsiasi scopo; 2. Libertà di studiare come funziona il programma e modificarlo in base alle proprie esigenze; 3. Libertà di aiutare il tuo vicino, cioè la possibilità di distribuire copie del software rielaborato, rendendolo così accessibile a tutti; 4. Libertà di pubblicare una versione modificata del software. *http://www.gnu.org/philosophy/free-sw.html Open Source Criteri dell’Open Source (http://opensource.org/osd) 1. Libertà di redistribuzione (sta poi al singolo decidere se farlo gratuitamente o se far pagare il prodotto); 2. Per ogni programma deve essere disponibile il sorgente; 3. Deve permettere lo sviluppo di programmi derivati; 4. Deve garantire l’integrità del sorgente di ogni autore; 5. Nessuna discriminazione verso singoli o gruppi di persone; 6. Nessuna discriminazione verso i settori di applicazione; 7. La licenza deve essere distribuibile; 8. La licenza non può essere specifica per un prodotto; 9. La licenza non può essere imposta ad altri software; 10. La licenza deve essere tecnologicamente neutrale; Pubblico Dominio • Di solito si usa il termine “pubblico dominio” come sinonimo di “libero” (gratuito…) ma in realtà ha un significato giuridico preciso • È un particolare software completamente privo di diritto di autore (privo di copyright) • L’autore declina qualsiasi interesse proprietario sull'opera, assegnandola al pubblico dominio. • Significa che il programma è modificabile e distribuibile imponendo anche vincoli sul suo utilizzo • Quindi un software può nascere come pubblico dominio ed essere modificato e redistribuito a pagamento • È il caso di X11, un noto software per la gestione della grafica in ambiente Unix/Linux Permesso d’autore (copyleft) • ll software con permesso d'autore (copyleft) è software libero le cui condizioni di distribuzione non permettono di porre alcuna restrizione addizionale all'atto di ridistribuire o modificare il software. • Questo significa che ogni copia del software, anche se modificata, deve essere software libero. • Un esempio di copyleft è la licenza GPL (General Public Licence) utilizzata dalla maggior parte delle comunità open source • Copyleft è un gioco di parole – copyright tende a tutelare il diritto d'autore, anche attraverso limitazioni all'accesso della conoscenza; – copyleft intende tutelare il più generale diritto della collettività a fruire dei prodotti Free download • Il software liberamente scaricabile non appartiene necessariamente ad una categoria precisa tra quelle viste • Spesso anche software proprietario può essere scaricato ed adoperato (ad esempio i vari plug-in per Internet Explorer che permettono di vedere animazioni) • Si usa il termine Freeware per indicare questo tipo di software che può essere liberamente scaricato e redistribuito ma non modificato • Un’ulteriore categoria è rappresentata dal software che può essere utilizzato, redistribuito e modificato senza fini di lucro, ma che richiede una licenza commerciale se utilizzato per altri scopi (esempio il software Qt). Sistemi Operativi Cos’è un S.O. È un insieme di componenti software che gestisce hardware e fornisce servizi (comuni) alle applicazioni Principali Obiettivi • Efficienza: cercare di utilizzare al meglio le risorse del calcolatore • Semplicità: cercare di rendere più semplice l’utilizzo dell'hardware sottostante nascondendo i dettagli Intermediazione del SO Una singola applicazione perde la possibilità di controllare direttamente tutte le risorse Ma presenta vantaggi legati alla definizione di modalità standard di interfaccia con i dispositivi fisici, in modo da rendere possibile: • • sviluppare applicazioni in modo semplice, modulare ed indipendente dallo specifico hardware su cui viene fatto funzionare il sistema operativo; aggiornare il software di base e l'hardware in modo trasparente ai programmi applicativi e all'utente, ossia senza che vengano influenzati dall'operazione. Visioni fornite da un SO • Dall'alto: il sistema operativo fornisce all'utente un modo semplice ed uniforme di accedere le risorse disponibili • Dal basso: gestisce tutti le parti di un sistema integrato, allocando in modo efficiente le diverse risorse: processori, memorie, dischi, interfacce di rete, stampanti e altre periferiche. Sviluppo di Unix/Linux/Mac OS Componenti di un S.O. • Sistema di gestione del processore, • Sistema di gestione della memoria, • Sistema di gestione delle periferiche, • Sistema di gestione dei file (file system) • Sistema di gestione degli utenti e dei relativi comandi (interprete comandi), • Sistema di gestione della rete. Componenti di un S.O. Utente Interprete comandi Sistema Operativo Gestione memoria Gestione periferiche Software applicativo File system Nucleo (o kernel) [gestione processore] Hardware Interfaccia con la rete SO vs. programmi applicativi • Programmi applicativi – hanno accesso a un insieme ridotto di risorse; – possono utilizzare solo un sottoinsieme non privilegiato delle istruzioni del processore (esecuzione in modalità utente); – non possono decidere autonomamente quando e come avere accesso alle risorse del sistema (richiedono al sistema operativo l’esecuzione di alcuni servizi); – … • Sistema operativo – ha accesso a tutte le risorse; – può utilizzare tutte le istruzioni del processore (esecuzione in modalità supervisore); – stabilisce in che ordine e come le richieste che riceve devono essere soddisfatte; – … Multiprogrammazione elaborazione attesa per operazioni di I/O Tempo In ogni istante, in memoria centrale sono presenti diversi programmi applicativi (oltre al SO) Progr. 1 Progr. 2 Progr. 3 Tempo elaborazione attesa per operazioni di I/O Processo vs Programma • Programma: entità statica composta dal codice eseguibile dal processore. • Processo: entità dinamica che corrisponde al programma quando viene mandato in esecuzione, ovvero: – l’insieme delle istruzioni; – dati (su cui operano le istruzioni); – stato (a che punto dell’esecuzione ci si trova, cosa c’è nei registri, …). Organizzazione di un SO Gerarchia di “macchine virtuali” La visione della macchina virtuale a livello n è quella fornita dall’HW e dagli strati del SO fino all’n-mo (incluso) Nucleo (Kernel) • Scopo principale: gestire i processi corrispondenti a tutti i programmi che sono contemporaneamente attivi. – mette a disposizione risorse (CPU) virtuali tali che ogni processo può essere eseguito come se fosse l’unico attivo – controlla l’esecuzione dei processi in modo da impedire che un programma possa danneggiarne un altro • Attua una politica di alternanza (scheduling) nell’accesso alla CPU reale da parte dei processi in esecuzione. • Interagisce con i diversi dispositivi hardware tramite componenti software chiamati device drivers • Si occupa della risposta agli eventi esterni generati dalle unità periferiche (interrupt) e degli errori di esecuzione (eccezioni). Gestore della memoria centrale • Assegna parti (dette “pagine”) della memoria centrale ai vari processi in modo da soddisfare le relative esigenze in modo trasparente ed efficiente. • Consente ai programmi di lavorare in un proprio spazio di memoria virtuale senza dover tener conto delle pagine di memoria reale occupata. • Si occupa di: – proteggere programmi e relativi dati caricati nella memoria di lavoro; – mascherare la collocazione fisica dei dati; – permettere, in modo controllato, la parziale condivisione degli spazi di memoria associati ai vari programmi in modo che possano scambiarsi dati durante l’esecuzione. • Fornisce ai processi la possibilità di lavorare come se avessero a disposizione una memoria dedicata di capacità anche maggiore di quella realmente disponibile come RAM (memoria virtuale). Gestore delle periferiche • Fornisce una visione del sistema in cui i processi possono operare mediante periferiche virtuali • Maschera le caratteristiche fisiche delle periferiche e le specifiche operazioni di ingresso/uscita • Permette di effettuare operazioni contemporaneamente su diversi dispositivi (tastiera, dischi, schede di rete). File System (gestore dei file) • Organizza i contenuti dei dispositivi di memoria di massa (dischi, CD, DVD, etc.) • Gestisce i file offrendo una visione logica indipendente dalla reale rappresentazione fisica sui dispositivi di memoria di massa Organizzazione delle memorie di massa • Obiettivo: presentare agli utenti ed ai programmi una struttura coerente dei dati e delle 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 di dati preesistenti; copia di dati (e.g., da un disco interno ad un disco rimovibile) per backup o per il trasferimento; – … • I servizi vengono forniti sia ai programmi sia agli utenti. In questo caso tramite comandi (copia, incolla, etc.) File system • FILE (letteralmente “schedario”) – contenitore logico di informazioni (dati o istruzioni); – entità permanente per conservare le informazioni anche dopo la terminazione del processo che lo ha generato. • Per ogni file: – Identificatore mnemonico (nome.estensione, e.g., informatica.docx) – Date ed orari associati al file (creazione, ultima modifica, etc.) – Dimensione – Posizione effettiva dei dati nella memoria di massa – Altre informazioni • diritti di accesso al contenuto del file • utente proprietario del file… – Dati File • I nomi dei file (soprattutto sotto Windows) sono in genere composti da due parti: – nome (vero e proprio), che viene assegnato dall’utente – estensione, associata al programma che ha generato il file e consente quindi di identificare, almeno sotto Windows, la tipologia dei dati contenuti nel file • Ogni sistema operativo pone dei vincoli sulla lunghezza dei nomi di file e sui caratteri di cui possono essere costituiti – MS-DOS imponeva una lunghezza massima di 8 caratteri per il nome e 3 per l’estensione – Windows ha un limite di 260 caratteri (compreso il path) • I file sono generalmente organizzati in cartelle (directory) e sottocartelle in una gerarchia ad albero (o, al limite, a grafo aciclico). Esempio di file system ad albero Organizzazione fisica dei dati I file sono salvati sui dispositivi di memoria di massa in modalità diverse a seconda del SO Accesso ai file I Sistemi Operativi moderni sono multi-utente • L’utente è riconosciuto quasi sempre sulla base della coppia di informazioni: nome-password – Altre informazioni nella lezione sulla sicurezza! • Ogni file ha un proprietario, in genere l’utente che lo ha creato. Ad esempio un utente che crea un documento Word, quando lo salva diventa il proprietario del file che contiene il documento • Il proprietario può permettere ad altri utenti di leggere, modificare o anche cancellare i propri file manipolando i permessi associati al file • Esiste un utente privilegiato (Administrator sotto Windows, root sotto Unix) che può accedere ai file di tutti gli utenti indipendentemente dai permessi concessi o negati dal proprietario del file. Interprete dei comandi • Programma applicativo incluso nel Sistema Operativo e direttamente accessibile dall’utente • Ha la funzione di interpretare i comandi che gli giungono (da tastiera e/o point & click) e di attivare i programmi corrispondenti. • Le operazioni che svolge sono: – lettura dalla memoria di massa del programma da eseguire; – allocazione della memoria centrale; – caricamento del programma e dei relativi dati nella memoria allocata; – creazione e attivazione del processo corrispondente.