Software e Sistemi Operativi SOFTWARE “L’hardware è la parte che si può prendere a calci; il software quella contro cui si può solo imprecare”. SOFTWARE E’ l’insieme dei dati e dei programmi che rendono possibile l’inserimento dei dati e dei comandi da parte dell’utente, volti all’elaborazione da lui desiderata e perseguita. I programmi si dividono in sistemi operativi (che svolgono le funzioni di base) e programmi applicativi (nati per funzioni specifiche) . Introduzione SO − 1 Il software può essere diviso in due grandi classi: i programmi di sistema, sistema che gestiscono le funzionalità del sistema di calcolo i programmi applicativi, applicativi che risolvono i problemi degli utenti L’insieme dei programmi di sistema viene comunemente identificato con il nome di Sistema Operativo (SO) Definizione Un sistema operativo è un programma che controlla l’esecuzione di programmi applicativi ed agisce come interfaccia fra le applicazioni e l’hardware del calcolatore Introduzione SO − 2 Tutte le piattaforme hardware/software richiedono un sistema operativo Quando si accende un elaboratore, occorre attendere alcuni istanti per poter iniziare a lavorare: durante questa pausa il computer carica il SO Scopo del sistema operativo Gestione EFFICIENTE delle risorse del sistema di elaborazione Rendere AGEVOLE l’interfaccia tra l’uomo e la macchina Compiti del sistema operativo Gestione dei processi Gestione della memoria principale Gestione della memoria di massa (file system) Realizzazione dell’interfaccia utente Gestione dell’accesso simultaneo di più utenti alla stessa macchina Esecuzione simultanea di più processi sulla stessa macchina Rilevamento e gestione degli errori Accounting Esempio: il 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 Esempio: il SO come gestore risorse – 2 Il capo–cuoco è 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 Esempio: il SO come gestore risorse – 3 Problemi del capo–cuoco: 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: Efficienza nell’uso delle risorse (processori, memoria, dischi, etc.) Protezione nell’uso delle risorse Coordinamento dei processi Tipologie di SO Tipologie di SO: Sistemi mono-utente - sistemi multi-utente i sistemi mono-utente sono destinati ad elaboratori per usi personale (tipo PC) mentre i sistemi multi-utente sono destinati ad elaboratori utilizzati da piu` utenti contemporaneamente Sistemi mono-programmati - sistemi multi-programmati i sistemi mono-programmati gestiscono l’esecuzione di un solo programma alla volta, mentre i sistemi multi-programmati gestiscono piu` programmi contemporaneamente Sistemi interattivi-sistemi batch classificazione basata sull’ interazione con l’utente Il SO come macchina estesa – 1 Visione a strati delle componenti hardware/software che compongo un elaboratore Il SO come macchina estesa – 2 Il SO può essere inteso come uno strumento che virtualizza le caratteristiche dell’hardware sottostante, offrendo all’utente la visione di una macchina astratta più potente e più semplice da utilizzare di quella fisicamente disponibile In questa visione, un SO… …nasconde a programmatori/utenti i dettagli dell’hardware e fornisce un’interfaccia conveniente e facile da usare …agisce come intermediario tra programmatore/utente e hardware Parole chiave Indipendenza dall’hardware Comodità d’uso Programmabilità Il SO come macchina estesa – 3 L’utente è in grado di utilizzare la macchina fisica senza conoscere i dettagli della sua struttura interna e del suo funzionamento 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 programmi applicativi dellʼutente Programmi Applicativi — definiscono le modalità di utilizzo delle risorse del sistema, per risolvere i problemi di calcolo degli utenti (compilatori, database, video game, programmi gestionali) Utenti — persone, altri macchinari, altri elaboratori ations softwa plic re p A s softw tem ar s e Sy Hardware Visione “a cipolla” cipolla” del sistema di calcolo Architettura del sistema operativo I SO sono costituiti da un insieme di moduli, ciascuno dedicato a svolgere una determinata funzione I vari moduli del SO interagiscono tra loro secondo regole precise, al fine di realizzare le funzionalità di base della macchina Interfaccia utente Gestore dell’I/O Gestore dei Processi Gestore del File System Gestore della Memoria Centrale KERNEL L’insieme dei moduli per la gestione della CPU e della memoria centrale è il kernel Ancora sul sistema operativo Riassumendo: Il sistema operativo fornisce un ambiente per eseguire programmi in modo conveniente ed efficiente; funge infatti da… Allocatore di risorse — controlla, distribuisce ed alloca le risorse (in modo equo ed efficiente) Programma di controllo — controlla l’esecuzione dei programmi utente e le operazioni sui dispositivi di I/O Esempio: Esempio il filesystem Si ha a che fare con file, directory, etc., e non ci si deve preoccupare di come i dati sono memorizzati sul disco Windows & GUI Barra degli strumenti Menu a discesa Icone Esempio • Per ogni carattere immesso tramite la tastiera viene generato un codice corrispondente • Il codice, grazie ad una componente hardware, viene memorizzato in un’area di memoria riservata(buffer) e viene inviato un segnale alla CPU (interrupt) • Quando la CPU riceve l`interrupt dalla tastiera attiva un modulo (un piccolo programma) chiamato terminal driver • Il terminal driver invia al monitor una copia del codice del carattere immesso per visualizzare il carattere Software: device driver I driver di periferica (device driver, appunto) sono programmi specializzati nella gestione di un particolare componente hardware. E’ il sistema operativo a caricarli in memoria durante la procedura di avvio di un computer. Software: applicazioni Sono tutti quei programmi che svolgono funzioni specifiche, e che vengono “lanciati” dall’interno dei sistemi operativi: 1. 2. 3. 4. 5. 6. fogli di calcolo elaborazione testi fotoritocco, disegno, grafica 3D editing o riproduzione audio editing o riproduzione video “utilities” (compressione, antivirus, ecc.) Elaboratore testi Foglio elettronico Database Presentazioni Desktop Publishing Agenda, Posta, Calendario, Rubrica PROCEDURA DI AVVIO DI UN COMPUTER Quando si accede un computer la memoria RAM è vuota. La memoria ROM contiene il BIOS che permette alla macchina di compiere le prime operazioni di verifica ed enumerazione dei componenti installati (memoria, video, dischi, tastiera,ecc…) e di comunicazione tra gli stessi. In questa fase viene compiuta un’operazione di diagnosi del sistema (conteggio memoria, controllo periferiche, assegnazione irq, ecc..) ed avviata la procedura di BOOTSTRAP da disco. In una particolare traccia del disco fisso (o, se presenti, dal floppy o dal cd-rom) è contenuto il codice di avvio del sistema operativo installato. Il bootstrap termina con l’avvio del caricamento dell’intero sistema operativo. Una volta terminato il caricamento del sistema operativo, il computer è pronto ad essere utilizzato, e possono essere avviati i programmi applicativi per elaborare i documenti. ALGORITMI Un algoritmo è una sequenza finita, non ambigua, di passi eseguibili e ripetibili un numero finito di volte per portare alla soluzione di un dato problema. Un algoritmo, a partire da informazioni in ingresso, produrrà un risultato in uscita. Esempi di algoritmi: ricette di cucina, istruzioni di montaggio di un oggetto, calcolo dell’ipotenusa dai cateti, calcolo del Massimo Comun Divisore, procedura per cambiare una ruota forata, ordinamento di una rubrica, pagamento di un bollettino postale, ecc... Il metodo più naturale per esprimere un algoritmo è descriverne i passi da seguire nel linguaggio naturale. Vediamo un esempio di espressione della procedura per pagare un bollettino postale: recarsi ad un ufficio postale compilare il bollettino di conto corrente postale effettuare il pagamento NON AMBIGUITA’ DI UN ALGORITMO La sequenza precedentemente vista non rappresenta un algoritmo in maniera corretta in quanto non è priva di ambiguità. Infatti non indica quale ufficio postale, che cifra indicare, non verifica che si disponga di tale contante, ecc… L’algoritmo andrebbe riscritto come: recarsi al più vicino ufficio postale consultare la tabella degli importi da pagare compilare il bollettino di ccp assicurarsi di avere la cifra necessaria al pagamento effettuare il pagamento Tale descrizione è più dettagliata, ma non è ancora del tutto priva di ambiguità. Ciò è dovuto alla natura stessa del linguaggio naturale. Sono stati pertanto definiti dei linguaggi specifici per la definizione degli algoritmi, chiamati linguaggi di programmazione. RAPPRESENTAZIONE DI UN ALGORITMO Per rappresentare il flusso di esecuzione di un algoritmo può essere utile ricorrere ai diagrammi a blocchi che indicano graficamente la sequenza di operazioni da eseguire. Vediamo due modi equivalenti di esprimere lo stesso algoritmo (di Euclide) per il calcolo del M.C.D. inizio 1. Prendi i valori da tastiera VAL1 e VAL2 finchè RESTO<>0 INPUT: VAL1, VAL2 Falso se VAL1 < VAL2 Vero Vero scambia VAL1 e VAL2 RESTO:= VAL1 MOD VAL2 VAL1:=VAL2 VAL2:=RESTO RESTO:= VAL1 MOD VAL2 OUTPUT: “MCD:” VAL2 fine Falso 2. Se VAL1<VAL2 allora scambiali 3. Metti in RESTO il resto tra VAL1 e VAL2 4. Ripeti finchè RESTO<>0 5. Metti in VAL1 il contenuto di VAL2 6. Metti in VAL2 il contenuto di RESTO 7. Metti in RESTO il resto tra VAL1 e VAL2 8. Fine Ripeti 9. Mostra il MCD che è pari a VAL2 LINGUAGGI DI BASSO LIVELLO Come esprimere un algoritmo affinché un computer possa interpretarlo ed eseguirlo? In realtà la CPU è in grado di eseguire un numero molto ristretto di operazioni estremamente semplici. E tali istruzioni sono espresse in termini numerici, cioè ad ogni istruzione corrisponde un numero. Il linguaggio di programmazione le cui istruzioni hanno una corrispondenza biunivoca con le operazioni svolte dal microprocessore si chiama LINGUAGGIO MACCHINA. Questo linguaggio si dice di BASSO LIVELLO in quanto è strettamente legati alle istruzioni della CPU, quindi poco naturale per l’uomo. LINGUAGGI DI ALTO LIVELLO Fortunatamente, per facilitare l’implementazione degli algoritmi, a partire dalla metà degli anni ’50, sono stati creati anche dei linguaggi di programmazione più evoluti, più simili al linguaggio umano, e non legati all’architettura dell’elaboratore sul quale vengono utilizzati. Tali linguaggi si dicono di alto livello. Tali linguaggi devono essere convertiti in linguaggio macchina affinché la cpu possa eseguirli. Tuttavia, essendo le istruzioni di questi linguaggi molto potenti e simili al linguaggio umano, a ognuna corrispondono molte istruzioni in linguaggio macchina. CALCOLO DEL MCD IN PASCAL Questo programma, scritto nel linguaggio ad alto livello Pascal viene trasformato, grazie al COMPILATORE, in linguaggio macchina. Si ottiene così un FILE ESEGUIBILE (estensione .EXE nei sistemi windows) formato da migliaia di istruzioni direttamente comprensibili per la CPU. program CalcoloMCD(input,output); var VAL1,VAL2,RESTO:long; function Scambia(var V1, V2:long); var VTMP: long; begin VTMP:=V1; V1:=V2; V2:=VTMP end; begin (* main *) readln(V1); readln(V2); if (V1<V2) then Scambia(V1,V2); RESTO:= V1 mod V2; while RESTO<>0 do begin V1:=V2; V2:=RESTO; RESTO:=V1 mod V2 end; writeln(‘Il MCD è ‘,V2) end. Shareware & Freeware Shareware - È software reso disponibile gratuitamente per un breve periodo (per consentire delle valutazioni). A conclusione di tale lasso temporale, sarà necessario corrispondere una somma in denaro per proseguirne l’utilizzo. Una volta pagato e registrato, sono spesso rese disponibili funzionalità aggiuntive non incluse nella versione di valutazione. Freeware - È software reso disponibile gratuitamente (come i browser Web MS Internet Explorer e Netscape Navigator). Lo sviluppatore potrebbe aver comunque posto delle limitazioni (per esempio per evitare utilizzo commerciale). Licenze Free Free “as in beer”: gratis Free “as in speech”: libero Open Source non significa automaticamente software libero Protezione & Privacy Il diritto alla privacy è stato definito per cittadini della Comunità Europea da una specifica direttiva, la 95/46/CE del 24 ottobre 1995, per la "tutela delle persone fisiche con riguardo al trattamento dei dati personali, nonché alla libera circolazione di tali dati". Ogni stato europeo l’ha poi coniugata in legge del proprio parlamento. In Italia, la direttiva è stata tradotta nella Legge 675/96 Tutela delle persone e degli altri soggetti rispetto al trattamento dei dati personali. Vi è inoltre un organismo preposto a garanzia dell’attuazione di tale legge: in proposito si può consultare il sito www.garanteprivacy.it.