SOFTWARE, FILE E DATO 1 INFORMATICA GENERALE SOFTWARE Software (sw) = programmi Le famiglie: Sw di base o di sistema Sw applicativo Sw da Internet Sw di utilità 2 INFORMATICA GENERALE SOFTWARE DI BASE (O DI SISTEMA) Software di base = programmi che rendono utilizzabile il computer e ne arricchiscono le funzionalità Il sw di base include: 1. Sistema operativo (SO) 2. Compilatori, linker, loader 3. Interpreti 3 INFORMATICA GENERALE SOFTWARE APPLICATIVO Tutti i programmi utilizzati dall’utente per la propria attività 4 INFORMATICA GENERALE SOFTWARE DI UTILITÀ Sono programmi applicativi utilizzati per mantenere in efficienza il sistema informatico e migliorarne le prestazioni. - BACKUP - ANTIVIRUS - DIAGNOSTICI – analizzano lo stato fisico del computer e rilevano I vari possibili problemi (Scandisk, Defrag) 5 INFORMATICA GENERALE SOFTWARE DA INTERNET Sono programmi applicativi resi disponibili dalle aziende per farsi pubblicità e per vendere i propri software: - Freeware Shareware Adware Pubblico dominio 6 INFORMATICA GENERALE SISTEMA OPERATIVO: FUNZIONALITÀ 1. Gestire le risorse della macchina in simbiosi con il BIOS (CPU, memoria, dispositivi di I/O, file) 2. Dialogare con l’utente (interpreta tutti i comandi forniti dall’utente e li traduce in Linguaggio Macchina) 3. Gestire l’istallazione e l’uso dei programmi applicativi 7 INFORMATICA GENERALE 1. GESTIONE DELLE RISORSE SO mono e multiutente Protezione delle informazioni; Multiprogrammazione o multitasking Più attività possono (o debbono) essere svolte “contemporaneamente” Competizione per le risorse Parallelismo e concorrenza 8 INFORMATICA GENERALE 2. DIALOGO CON L’UTENTE Interazione basata su comandi testuali 9 INFORMATICA GENERALE 2. DIALOGO CON L’UTENTE (2) 10 INFORMATICA GENERALE 2. DIALOGO CON L’UTENTE (3) Interazione mediante interfaccia grafica 11 INFORMATICA GENERALE DIALOGO CON L’UTENTE (4) 12 INFORMATICA GENERALE Dispositivi Esistono diversi dispositivi elettronici che per gestire la loro complessità si sono dotati di un sistema operativo. Palm m505 Sendo z100 Nokia 7650 Tra questi, agende elettroniche e telefoni cellulari sono alcuni esempi. Sistemi operativi: un po’ di storia Sistemi operativi: storia I primi sistemi operativi sono stati progettati negli anni ’50 per i calcolatori allora disponibili. Consistevano in poche centinaia di istruzioni per il caricamento del programma in memoria centrale e per la produzione, su un dispositivo di output, dei risultati dell’elaborazione. L’interfaccia era quella comune interruttori e spie luminose. allora I comandi venivano impartiti in codice binario. – Sistemi operativi: storia Anni ’60, alla AT&T nasce UNIX, capostipite di una numerosa e varia famiglia di sistemi operativi. Anni ’70, iniziano a diffondersi i primi micro computer. Anni ‘80, a Seattle venne sviluppato il sistema operativo QDOS (Quick and Dirty Operating System). Sistemi operativi: storia (DOS) Dopo pochi mesi, un’altra ditta di Seattle, la Microsoft di Bill Gates, ne acquista i diritti per rivendere il DOS ad un cliente importante. Il cliente è l’IBM, che nel 1981 lancerà il primo PC, dando il via alla rivoluzione dei personal computer. Sistemi operativi: storia (Win & Mac) 1984, lancio dell’Apple Macintosh, e del suo sistema operativo a interfaccia grafica, il System 1.0 http://it.wikipedia.org/wiki/Storia_del_Mac_OS#Pre-System_6 L’anno successivo, il 1985, la Microsoft lancia la prima versione di Windows. http://it.wikipedia.org/wiki/Windows#Storia_di_Microsoft_Win dows Sistemi operativi: storia (Linux) Nel 1991 uno studente finlandese, Linus Torvalds, sviluppò il kernel per un sistema operativo basato su una variante di UNIX. Lo distribuì in rete secondo la GNU General Public License, una licenza che ne consentiva l’uso, la redistribuzione e la modifica (a certe condizioni). Iniziò a ricevere da subito contributi da altri sviluppatori. Sistemi operativi: storia (Linux) Nasceva così Linux, una delle varianti UNIX oggi più diffuse. Il kernel di Linux è continuamente aggiornato, e disponibile anche gratuitamente. Uno dei punti di forza di questo sistema è la comunità che lo supporta, e la filosofia su cui si basa, quella del software libero. SISTEMA OPERATIVO: ARCHITETTURA Modello cosiddetto “a buccia di cipolla” (o semplicemente a strati): 1. Ogni strato realizza una “macchina virtuale” 2. Usa le funzionalità della macchina sottostante 3. Fornisce servizi alla macchina che segue nella gerarchia 4. Gestisce delle risorse mediante politiche invisibili ai livelli superiori 21 INFORMATICA GENERALE IL MODELLO A STRATI Hardware Gestione CPU (nucleo) Gestione Memoria Gestione I/O Gestione file (file system) Interprete dei comandi 22 INFORMATICA GENERALE Livelli L’hardware è dunque “ricoperto” da una serie di strati di software. Ciascun livello: – usa le funzionalità di quello sottostante – fornisce servizi al livello che segue nella gerarchia – gestisce delle risorse mediante politiche invisibili ai livelli superiori Macchine virtuali Si crea, in questo modo, una gerarchia di “macchine virtuali”. • l’esperto che scrive un sistema operativo vede il sistema come un insieme di risorse fisiche da comandare direttamente; • colui che progetta un ambiente di programmazione vede la macchina come l’insieme delle funzioni messe a disposizione dal sistema operativo; Macchine virtuali • l’utente che usa un linguaggio di alto livello per progettare un programma applicativo vede l’elaboratore come l’insieme delle funzionalità messe a disposizione dall’ambiente di programmazione; • per l’utilizzatore di un programma applicativo, infine, il sistema appare virtualmente come l’insieme dei comandi che può fornire alla macchina per soddisfare le sue esigenze. Macchine virtuali Riassumendo: l’utente finale del sistema interagisce solo con il livello più esterno della gerarchia. Idealmente, l’utente finale è ignaro di tutti i dettagli delle operazioni svolte dai livelli inferiori. Potrebbe (sempre idealmente) essere a conoscenza solo delle operazioni che è interessato ad effettuare. Gestione CPU Il livello più basso è quello del kernel (nucleo). Questa parte del sistema operativo si occupa di gestire l’esecuzione dei programmi. Un programma in esecuzione è detto processo. Il kernel distribuisce le risorse di calcolo tra i vari processi attivi. Gestione CPU Una prima distinzione è dunque tra quei sistemi che eseguono un processo per volta e quelli in grado di gestirne diversi “contemporaneamente”. Questi ultimi sono detti multitasking. Gestione memoria La memoria è una risorsa essenziale e limitata. Essenziale, perché ogni programma in esecuzione (processo) deve essere “caricato” in memoria, e così i dati su cui opera. Limitata - nei sistemi moderni possono essere attivi più processi nello stesso tempo. Gestione memoria Dal momento che la memoria di sistema (RAM) è una risorsa finita, nell’allocarla ai vari processi il sistema operativo deve risolvere vari problemi: • trovare spazio per i vari processi; • “rilocare” il codice caricato in memoria; • ridurre la frammentazione. Memoria virtuale L’elaboratore può disporre, in apparenza, di una quantità di memoria maggiore di quella fisica installata. L’utilizzo di una memoria secondaria (su disco) per estendere la memoria di sistema consente di parlare di memoria virtuale. Gestione memoria: swapping Il sistema operativo può riservare un’area di un disco per lo swapping. D A B C A B C D C D viene caricato in memoria. In memoria sono presenti A, B, e C. D non trova spazio. C viene copiato su un disco dal gestore della memoria. Gestione Input/Output L’accesso alle periferiche di I/O viene gestito dal sistema operativo insieme ai driver di periferica. Questi sono programmi specifici per ciascun dispositivo che si colleghi all’elaboratore (stampanti, scanner dischi…). Gestione Input/Output L’interazione tra un programma e una periferica è standardizzata. Un programma di elaborazione testi, ad esempio, può inviare un comando di stampa senza curarsi del tipo di stampante collegata al computer. Spetta al sistema operativo smistare la richiesta al driver della stampante. Gestione Input/Output A questo livello è implementato anche un sistema di gestione degli errori di I/O (ad es. dischetto mancante o danneggiato, carta esaurita, ecc.). Anche il controllo dell’ordine di accesso ai dispositivi è cruciale. Il sistema operativo deve prevenire, o risolvere, eventuali conflitti. Gestione file Il file system è il modo in cui il sistema operativo organizza i file (documenti) sulle unità di memorizzazione. Un file è un’astrazione che rappresenta un insieme di byte logicamente collegati. Gestione file: funzioni Il file system deve mettere a disposizione diverse funzioni per la manipolazione dei file: • creazione/eliminazione • lettura/scrittura/esecuzione • coordinamento accessi contemporanei • controllo degli accessi (nei sistemi multiutente) Inteprete dei comandi (shell) L’interprete dei comandi è quella parte del sistema operativo che riceve ed elabora le istruzioni impartite da un utente. E’ possibile utilizzare lo stesso sistema operativo con shell differenti. Questo può rendere molto diverso il modo di impartire comandi. Inteprete dei comandi (shell) La shell è dunque lo strato più esterno di un sistema operativo. Di fatto, rappresenta l’interfaccia tra utente e sistema. MacOS X Windows XP Linux – KDE 3.0 Sistemi operativi: implicazioni La scelta di un sistema operativo ha un’importanza sia teorica che culturale. Un sistema operativo non è solo una realizzazione ingegneristica, ma rispecchia in qualche misura la filosofia che scegliamo di adottare nel nostro rapporto con il computer. Bisogna dunque guardarsi dal considerare il sistema operativo come una sorta di “dato” tecnologico: si tratta, piuttosto, del risultato di un processo che ha anche fondamentali aspetti culturali e comunicativi. Inteprete dei comandi (shell) L’interprete dei comandi è quella parte del sistema operativo che riceve ed elabora le istruzioni impartite da un utente. Inteprete dei comandi (shell) e interfaccia L’interprete dei comandi” o “shell” (letteralmente “guscio”), rappresenta lo strato più esterno di un sistema operativo. Interfaccia L’interfaccia è il mezzo attraverso il quale l’utente invia comandi alla shell. Esistono diverse interfacce possibili per l’interazione uomo-macchina. Il loro successo dipende, oltre che da un’accurata progettazione, dal tipo di utente cui sono rivolte. Interfacce Due sono i tipi di interfaccia più diffusi per interagire con un computer: • Interfacce a caratteri, dette “a riga di comando” (CLI, command line interfaces) • Interfacce grafiche (GUI, graphical user interfaces), in particolare di tipo WIMP (Windows, Icons, Menus, Pointing device) Xerox Star Interfacce grafiche: Magic Cap Magic Cap, della General Magic Interfacce grafiche: BOB Microsoft BOB (1995). Interfacce grafiche: Macintosh L’interfaccia grafica dell’Apple Macintosh: il Finder (ver. 0.97) Interfacce grafiche: Windows 1.0 Un’interfaccia per il DOS: Windows 1.0 Interfacce grafiche: Windows 3.1 Un’interfaccia per il DOS: Windows 3.1 Interfacce grafiche: Windows 95 Interfacce grafiche: Windows vista Interfacce grafiche Macintosh Windows Linux (KDE) NUCLEO E GESTIONE DEI PROCESSI Richiesta da soddisfare Programma in esecuzione Processo Uso di un foglio elettronico Stampa di un documento Ricezione di dati da modem … Stati di un processo: Running Ready Waiting 54 INFORMATICA GENERALE SCHEDULING (SCHEDULAZIONE) DEI PROCESSI 1. Coda dei processi 2. Politica di assegnazione della CPU 3. Sincronizzazione ed interruzioni Running Fine quando Ready CPU allocata Richiesta Risorsa Waiting 55 INFORMATICA GENERALE Risorsa allocata GESTIONE DELLA MEMORIA: ESEMPIO Processi in esecuzione concorrente: A. Sistema operativo (WinNT: > 30MB) B. Word processor (Winword: 48 MB) C. Browser di rete (Netscape: 612 MB) D. Posta elettronica (Eudora: 1.54 MB) …. Problemi specifici (tutti correlati): 1. “trovare spazio” per i programmi 2. “rilocare” il codice (programma) 3. evitare/ridurre la frammentazione 56 INFORMATICA GENERALE FRAMMENTAZIONE: ESEMPIO 1) 2) S.O. S.O. Nuovo processo A B A B C C Il processo B termina 3) S.O. A La memoria libera complessiva sarebbe sufficiente per D C 57 INFORMATICA GENERALE Nuovo processo: non trova spazio D FRAMMENTAZIONE: UNA SOLUZIONE Si “compatta” la memoria (copiando C “più in alto”) S.O. S.O. A A C C Nuovo problema: “aggiustare”, nel programma copiato, i riferimenti (eventuali) ad istruzioni e dati in memoria “rilocare” il codice 58 INFORMATICA GENERALE ALTRE TECNICHE DI GESTIONE DELLA MEMORIA Swapping memorizzazione di processi pronti o in attesa in un’area della memoria di massa (non sulla RAM, ma sul hard-disk) Paginazione suddivisione di un programma in pagine logiche (e della memoria centrale in pagine fisiche) Memoria virtuale swapping + paginazione (in prima approssimazione) 59 INFORMATICA GENERALE SWAPPING Nuovo processo 1) D S.O. A B C C viene copiato su disco Tempo D viene caricato in memoria 2) S.O. A B D Area di Swap 60 INFORMATICA GENERALE D PAGINAZIONE 1) 2) S.O. S.O. Nuovo processo A B 3) A B C C 4) S.O. Nuovo processo A Il processo B termina S.O. A D C C 61 INFORMATICA GENERALE Pagine fisiche non adiacenti PAGINAZIONE (2) Proc A 0 1 2 Memoria fisica (RAM) 3 4 Proc B 0 1 2 Proc C 0 1 62 INFORMATICA GENERALE 0 1 2 3 4 5 6 7 8 9 GESTIONE DELLE PERIFERICHE (I/O) Componente fisica: 1. Dispositivo di I/O (inclusi dischi e nastri) 2. Scheda di I/O (collegata al bus) Inoltre: 3. Componente “logica” (software) 4. Programma driver 5. Installazione 6. Manuale 7. Plug&Play (PnP) 63 INFORMATICA GENERALE DRIVER LOGICI 1. sono programmi del S.O. 2. driver “standard” 3. driver forniti da costruttori di periferiche 4. nascondono la struttura fisica 5. comandi di I/O 6. standardizzano l’interazione stampante laser e stampante inkjet floppy, hard disk e CD ROM 64 INFORMATICA GENERALE COMANDI DI I/O 65 INFORMATICA GENERALE IL SISTEMA OPERATIVO MS-DOS MS-DOS = Microsoft Disk Operating System Sistema monoutente e “monotasking” Interazione con l’utente tramite comandi testuali L’interprete dei comandi è detto SHELL 66 INFORMATICA GENERALE ESEMPI DI INTERAZIONE IN DOS 67 INFORMATICA GENERALE ESEMPI DI INTERAZIONE IN DOS (2) 68 INFORMATICA GENERALE ESEMPI DI INTERAZIONE IN DOS (3) 69 INFORMATICA GENERALE FILE (MANAGEMENT) SYSTEM 1. Creazione e cancellazione dei file 2. Modifica e aggiornamento 3. Protezione dei file e modalità di accesso 4. Copia, spostamento, creazione di collegamenti, ecc. 5. Gestione della memoria di massa 70 INFORMATICA GENERALE ORGANIZZAZIONE DEI DATI SULLE MEMORIE DI MASSA Ogni “entità referenziabile ” su disco è un file 1. un programma 2. un insieme di dati utilizzati da un programma 3. una base di dati (o un archivio) 4. un grafico I file sono identificati da un nome (filename) nome Estensione Esempi: tesi.doc, sort.tif, sort.exe 71 INFORMATICA GENERALE ANCORA SUI FILE Regole per i nomi 1. lunghezza massima (256 caratteri) 2. “case sensitive” o “insensitive” 3. caratteri speciali 4. Informazioni ausiliarie a. lunghezza file b. data creazione e modifica c. diritti di accesso 72 INFORMATICA GENERALE ORGANIZZAZIONE LOGICA DI UN FILE SYSTEM Struttura ad albero (file system gerarchici) Radice dell’albero Nodo interno Foglia Ai nodi e alle foglie possono essere associate informazioni 73 INFORMATICA GENERALE ORGANIZZAZIONE LOGICA DI UN FILE SYSTEM (2) Struttura ad albero La radice è un’unità disco (o una partizione di unità) I nodi interni sono cartelle (directory) Le foglie sono file Una cartella può contenere file e/o altre cartelle percorso di identificazione di un file c:\Mauro\Didattica\InfGen\algoritmi.ppt 74 INFORMATICA GENERALE ORGANIZZAZIONE LOGICA DI UN FILE SYSTEM (3) Esempio C: WinNT Programmi Mauro Didattica Ricerca Personale InfGen Tesi 75 INFORMATICA GENERALE algoritmi.ppt hardware.ppt Software.ppt STRUMENTI GRAFICI DI ESPLORAZIONE DI UN F.S. 76 INFORMATICA GENERALE DIRECTORY CORRENTE PER UN APPLICATIVO 77 INFORMATICA GENERALE DIRECTORY CORRENTE PER UN APPLICATIVO (2) 78 INFORMATICA GENERALE DIRECTORY CORRENTE PER UN APPLICATIVO (3) 79 INFORMATICA GENERALE DIRECTORY CORRENTE PER UN APPLICATIVO (4) 80 INFORMATICA GENERALE DIRECTORY CORRENTE PER UN APPLICATIVO (5) 81 INFORMATICA GENERALE