Informatica Generale Software Il software L’hardware da solo non è sufficiente per il funzionamento dell’elaboratore ma è necessario introdurre il software … ovvero un insieme di programmi che permettono di trasformare un insieme di circuiti elettronici in un oggetto in grado di svolgere varie funzioni Il software Una programmazione diretta della macchina hardware da parte degli utenti è davvero difficile l’utente dovrebbe conoscere l’organizzazione fisica dell'elaboratore e il suo linguaggio macchina. Ogni programma dovrebbe essere scritto utilizzando delle sequenze di bit ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso Il software Inoltre, l’utente deve: usare nello stesso modo, o in modo molto simile, macchine diverse dal punto di vista hardware avere un semplice linguaggio di interazione con la macchina avere un insieme di programmi applicativi per svolgere compiti diversi Il software Nei moderni sistemi di elaborazione questi obiettivi vengono raggiunti grazie alla definizione di macchine virtuali che vengono realizzate al di sopra della macchina hardware reale Macchina Virtuale Si dice virtuale in quanto essa non esiste fisicamente ma viene realizzata mediante il software (software di base) L'utente interagisce con la macchina virtuale grazie ad un opportuno linguaggio di comandi (semplice). La macchina virtuale si preoccupa della traduzione di ogni comando impartito dall’utente nella sequenza di comandi riconosciuti dalla macchina fisica sottostante che realizzano la stessa funzione Linguaggio di comandi Il processore è in grado di eseguire istruzioni scritte in un insieme di codici binari, detto linguaggio macchina Usare direttamente il linguaggio macchina per programmare è estremamente tedioso e difficile L’interfaccia del sistema operativo permette un livello di programmazione molto semplice Passaggio di informazioni L’interfaccia del sistema operativo permette un ………………. Interfaccia = 1. Elemento di collegamento tra l’elaboratore e un’entità esterna che consente il passaggio delle informazioni da uno all’altra 2. Elemento di contatto o di intermediazione fra entità, sistemi, cose, persone ecc .. Software:: Classi Conosciamo due classi di software: Programmi Applicativi Sistemi Operativi Software: Programmi applicativi programmi di video-scrittura (es. Microsoft Word) browser, usati per “navigare il Web” e spedire posta elettronica (es. MS Explorer, Netscape Communicator) fogli elettronici, usati per manipolare e analizzare numeri e dati (es. Microsoft Excel) programmi per la gestione di banche di dati (database), utilizzati per conservare ed elaborare dati strutturati programmi per creare applicazioni multimediali/grafiche, manipolare foto, fare presentazioni con audio/video, ecc. videogiochi Software: Sistemi Operativi Dos Windows 95, 98, 2000, XP … sVista … Linux/Unix BeOs Apple FreeBSD Evoluzione del software Il software evolve perchè evolve l’hardware su cui viene eseguito perchè muta l’ambiente in cui viene utilizzato perchè viene adattato ad ambienti diversi da quello iniziale perchè cambiano le sue funzioni Infatti si parla di versioni di un software, sia esso sistema operativo o applicazione. Sistema Operativo Classi di sistemi Cos’è un sistema operativo Servizi "documento-centrici " Funzioni e servizi del SO L’interfaccia La nozione di processo La nozione di file Classi di sistemi I sistemi di elaborazione li possiamo vedere come: Calcolatori Organizzatori di informazioni Strumenti di comunicazione Classi di sistemi I Calcolatori: un sistema di elaborazione è un dispositivo di calcolo molto veloce; il concetto centrale è quello di algoritmo; lo strumento principale di accesso ai servizi è il linguaggio di programmazione Ordinatori di informazioni: un sistema di elaborazione è capace di archiviare, elaborare e accedere a tanti dati; un sistema operativo è il gestore del servizio di archiviazione; lo strumento principale di accesso è l’interfaccia del sistema operativo Classi di sistemi II Strumenti di comunicazione: un sistema di elaborazione è capace di comunicare con altri sistemi collegati in rete, trasportando quantità di dati ad una certa velocità; il concetto centrale è quello di servizio di comunicazione (posta elettronica, WWW); lo strumento principale di accesso ai servizi di comunicazione è il browser Nota: ricordiamo anche che in molti casi i sistemi di elaborazione si usano come giocattoli Cosa è un Sistema Operativo È il componente software fondamentale di un sistema di calcolo. È formato da un insieme di programmi che interagiscono tra loro per realizzare due obiettivi: 1. 2. Gestire efficientemente l’elaboratore e i suoi dispositivi Creare un ambiente virtuale per l’interazione con l’utente Il sistema operativo Dal punto di vista strutturale il sistema operativo è formato da un insieme di livelli, che formano la cosiddetta struttura a cipolla Idealmente l’utente è ignaro di tutti i dettagli delle operazioni svolte ai livelli inferiori e conosce solo le operazioni del livello più alto Sistemi documento-centrici L'utente di un computer di solito è interessato a "manipolare" un documento mediante un programma applicativo. I sistemi operativi moderni ( Windows, MacOS di Apple, Linux ) sono “documento-centrici”, cioè offrono servizi di gestione per documenti di varia natura (testi, grafica, audio, video, programmi) I documenti vengono conservati da un servizio chiamato “file system”, che contiene, organizza e classifica i documenti. Servizi documento-centrici I servizi che un utente chiede al sistema operativo riguardano tutti in ultima analisi la manipolazione di archivi Archivi di dati (.xsl) Archivi "documenti" ( .html, .doc) Archivi programmi (.exe) Archivi di archivi Esempi Strumenti di creazione e modifica di documenti editor: wordpad, MS Word, staroffice Visualizzatori: Acroread Reader, ghostview Strumenti di formattazione e stampa di documenti Acrobat distiller TeX, MS Frontpage Strumenti di programmazione Strumenti di archiviazione e compressione WinZip, tar, compress, gzip Clienti di servizi di comunicazione Outlook Express, Eudora, Internet Explorer, Netscape, Konqueror, Mozilla Sistema Operativo Il s.o. integra e rende più facilmente usabili una quantità di risorse di natura diversa: processore, memoria centrale, memoria secondaria, dispositivi di I/O, schede di rete, ecc. Il s.o. può essere caratterizzato come gerarchia di macchine astratte, strutturate in una architettura di sistema Funzionalità OS Avvio dell’elaboratore Bootstrap (caricamento in memoria centrale di una parte del SO) Gestione dei servizi Gestione dei dispositivi Interazione con l’utente (Interfaccia) Servizi Condivisione di dispositivi e memorizzazione permanente Condivisione di dispositivi I/O (es. stampanti, modem) Gestione degli archivi. l’utente identifica gli archivi con nomi simbolici e dispone di comandi per la creazione, il reperimento, la lettura, la scrittura e l’eliminazione all'interno del file system Editing (scrivere o modificare) degli archivi dal terminale (editor). Servizi Archiviazione di dati e programmi database di progetto librerie Esecuzione di programmi ambiente di programmazione esecutori Gestione Ingresso e uscita dispositivi di Input dispositivi di Output Servizi e funzioni Comunicazione e gestione dell’informazione remota gestione di messaggi di posta elettronica remote login (telnet) remote file transfer (ftp) accesso servizi news (USENET) accesso servizi WWW Funzioni Allocazione di risorse (processore, memoria, dispositivi) Ottimizzazione della gestione (politiche) Soluzione dei conflitti di uso di risorse indivisibili Esempi di Servizi Il pannello di controllo di Windows Il Pannello di Controllo è una funzione chiave del sistema operativo del Windows (è presente anche in Macintosh) che permette di configurare una serie di comportamenti dei principali servizi del sistema operativo Servizi Interfaccia amichevole: Nei sistemi più primitivi (es. MSDOS) l’interfaccia utente è il terminale è grafico si usano le interfacce grafiche e le loro librerie (MacOS, Windows, X-Window di Linux) Multiprogrammazione I primi sistemi operativi per PC erano monoprogrammati; dagli anni ’90 è normale avere la funzione di multiprogrammazione, per cui in memoria centrale si possono caricare simultaneamente più programmi Interfaccia OS Quando c’è un’interfaccia testuale il sistema operativo sollecita un comando testuale dal video (shell DOS) Quando c’è un’interfaccia grafica il s.o. facilita l’utente proponendo sullo schermo un menu di comandi selezionabili mediante mouse , che permette anche di manipolare icone disposte su una scrivania virtuale (desktop) Esempio Interfaccia Grafica L'interfaccia utente rappresenta il piano di una scrivania (desktop) su cui alcune icone rappresentano documenti, programmi o cassetti (folders) apribili cliccando col mouse Un sistema di menù definisce i principali servizi, tra cui: come spegnere il computer come creare o cancellare un archivio come visualizzare il contenuto di un archivio come proteggere un archivio Interfaccia dentro interfaccia La nozione di macchina astratta permette di costruire software molto complessi, per esempio sistemi operativi emulati: in questo modo un Macintosh può eseguire applicazioni Windows, o Playstation Lo screenshot seguente (www.uk.research.att.com/vnc) mostra l’interfaccia di Windows emulata entro l’interfaccia di un Macintosh I processi del SO Un sistema operativo è una macchina astratta complessa. Viene di solito descritta definendo un insieme di agenti chiamati processi processi di interfaccia utente (shell e finestre) processi delle applicazioni processi di servizio (serventi) Un processo, o agente, è un’attività controllata da un programma, che si svolge su un processore, ed è capace di interagire con i vari dispositivi OS Multiprogrammato Un sistema operativo multiprogrammato include parecchie distinte attività chiamate processi Queste attività si alternano sul processore (multitasking): quando un processo P1 si sospende per una lettura o una scrittura, il processore viene utilizzato da un altro processo P2 I processi dunque non avanzano con continuità; le loro attività sono interrotte per brevi intervalli di tempo dato che condividono tra loro risorse (processori, dispositivi) Esempio Processo 1 Processo 2 Processo 3 Processore utilizzato per eseguire un programma utente Processore utilizzato dai programmi che controllano i dispositivi Stati di un processo az i on e Attesa so tiv ne si o en sp Ogni processo durante la sua “vita” alterna gli stati di pronto, esecuzione, e attesa passando attraverso transizioni di stato ri a t as segnazione Pronto Esec uzione prerilas cio Stati di avanz amento dei processi Transizioni di stato I Transizione da esecuzione ad attesa: sospensione avviene per esplicita azione del processo in esecuzione; il processo che si sospende si pone in attesa di un evento E Per esempio,un processo Pi si sospende in attesa di: interruzione da parte di un dispositivo, sincronizzazione con un altro processo, ricezione di un messaggio Transizioni di stato II Transizione da stato di attesa a stato di pronto: riattivazione. Schema tipico: Pi sospeso in attesa di evento E, viene riattivato da Pj che segnala E. Esempi di eventi: interruzione, sincronizzazione, arrivo di un messaggio Transizione da pronto a esecuzione: assegnazione del processore (da parte dello scheduler) Transizione da esecuzione a pronto: prerilascio del processore (da parte dello scheduler) Gestione dei processi L’avanzamento dei processi è determinato dalla disponibilità del processore e dalla politica con la quale l’uso del processore è ripartito tra i processi Le politiche di assegnazione del processore ai processi pronti hanno come obiettivo un uso efficiente del processore. Alcune politiche: consiste nel fare avanzare i processi in ordine di arrivo (FIFO: first in first out) consiste nel fare avanzare i processi con velocità dipendenti dalla loro priorità Multiprogrammazione e risorse In caso di multitasking lo scheduler sceglie di volta in volta il processo da fare avanzare tra quelli pronti I processi che controllano i dispositivi (driver) hanno la precedenza sui processi normali [ Dipendente anche dal tipo di dispositivo controllato] L’avanzamento “contemporaneo” di più processi è possibile perché la memoria centrale è ripartita tra i programmi. Ripartizione effetttuata dal gestore della memoria del sistema operativo La nozione di File Su cosa operano i sistemi operativi? Sui documenti immagazzinati nei dischi volatili o fissi. Operano sugli archivi, o f i l e Definizione. Un file (o archivio, o documento elettronico) è sequenza di caratteri (byte) identificata da un nome L’organizzazione dei file Si usano “contenitori” di file detti directory (che sono essi stessi file) Definizione. Un folder (o directory) è un archivio contenitore di file. Folder è il meccanismo di base per strutturare l’insieme dei file di un sistema detto file system. File System Directory p rincipal e Stu denti Gino Mario Fa col tà Le onard o Corsi Corso A Prof.Rossi do cum enti Corso B Prof.Verd i Prof. Bia nch i Bors e Sem inari SOSP Fi le COST-11 File System La definizione nome e contenuto delle cartelle è una scelta dell’utente; Alcuni folder sono tuttavia a disposizione del s.o. Es. in Windows esistono predefiniti i folder “Risorse del Computer” “Risorse di rete” Descrittori Ad ogni file è associato un descrittore che ne descrive le proprietà e ne definisce la struttura logica e la struttura fisica Mediante il descrittore le operazioni definite sulla struttura logica possono essere tradotte in operazioni sulla struttura fisica, eseguite a cura del s.o. Esempio Directory Elemento Elemento Elemento Elemento Informazioni su ogni file Nome del file Tipo del file Dimensione del file Proprietario Informazioni sulla protezione Contatore d’uso Tempo di creazione Tempo dell’ultima modifica Lista dei blocchi di disco usati File Allocation Table Tutte le informazioni sui file vengono gestite e immagazzinate nei sistemi operativi. Ad esempio Nei sistemi operativi della classe Windows la struttura detta FAT (File Allocation Table) ricorda dove sono allocati i vari file FAT Table FAT X X EOF 13 2 9 8 FREE 4 12 3 FREE EOF EOF FREE BAD 0 Dimensione 1 del disco 2 File A:6 8 4 3 4 5 File B:5 9 12 6 7 8 File C:10 3 13 9 10 11 12 13 14 15 Questo blocco è marcato come blocco rotto 2 File: Interfaccia Grafica Il sistema operativo fornisce un servizio (di solito una interfaccia grafica) che mostra i file in forma di icona; e alcune proprietà di ciascun file tipo: se è un documento o un programma o una cartella la data (e l’ora) di ultima modifica la dimensione su disco l’applicazione che l’ha creato, ecc. Nomi dei Documenti L’attributo più importante di un file è il suo nome; Quando un file system viene organizzato ad albero esistono due metodi per specificare in modo testuale il nome del file: Nel primo metodo, ogni file viene identificato da un cammino assoluto che consiste della sequenza di directory contenute una entro l’altra dalla radice del file system al file L’altro tipo di nome è il cammino relativo, che presuppone il concetto di directory di riferimento Cammini Relativi Nota: Esistono due simboli importanti per riferire directory in modo implicito: ~ directory “home” .. directory “superiore” Cammini relativi ~/sdc/lucidi.ps (il cammino parte dalla home) ../../lucidi.ps (il cammino parte da 2 dir in su) Esempio Esempio di cammino assoluto C:\Documents and Settings\studenteCP\MyDocuments\DIDATTICA\IG1 Esempio di cammino relativo .\MyDocuments\DIDATTICA\IG1 Attributi dei files Nei sistemi multi-utente, per ogni archivio sono definiti un proprietario e alcuni diritti di accesso, di lettura, scrittura o esecuzione Un altro attributo importante è il tipo del file, che descrive la struttura del contenuto. La maggior parte dei sistemi operativi supporta molti tipi di file, si distinguono per l’estensione (suffisso che si appende al nome). Formati Esistono parecchi formati diversi di file spesso distinguibili dall’estensione: .txt o .asc .doc .rtf .htm o .html .zip .gz .tar .tar.z .tgz file in formato ASCII file in formato MS Word file in Rich Text Format file in formato HTML file compresso file compresso archivio TAR archivio TAR e poi compresso archivio TAR e poi compresso Formati .gif .jpg .pic .wav .au .mpg .mov .ps .eps .pdf file contenente immagine in formato GIF file contenente immagine in formato JPEG file contenente immagine in formato PIC file contenente audio file contenente audio file contenente filmato MPEG file contenente filmato QuickTime file in formato PostScript file in formato Encapsulated PostScript Portable Document Format Formati Molte applicazioni definiscono in modo particolare, privato, di solito binario, il formato dei documenti che tipicamente creano Formato .doc per Microsoft Word L’uso di un formato proprietario è di solito giustificato con ragioni di efficienza, ma l’unica vera ragione è commerciale: il formato proprietario protegge il mercato dell’applicazione che è l’unica che può gestire quel formato La richiesta di interoperabilità tra le applicazioni giustifica l’introduzione di formati di interscambio Formato di interscambio Formato di documenti, solitamente testuale e quindi leggibile, riconosciuto da applicazioni di diversi produttori Lo scambio di documenti in rete rinforza la necessità di formati interscambiabili tra diversi computer e tra diverse applicazioni: nasce la nozione di formato aperto, indipendente sia dalle applicazioni che dall’hardware (ASCII non è sufficiente perché troppo elementare) HTML è un formato “aperto”, non proprietario, e leggibile; PDF è un formato “chiuso”, proprietà di Adobe, e binario Esempio: MS Office Word – elaborazione di testi PowerPoint – sistema di preparazione di presentazioni Excel – foglio elettronico FrontPage – sistema di creazione di documenti Web Outlook – agenda elettronica e cliente email Access – sistema gestione di banche di dati Esempio: Adobe Framemaker – elaborazione di testi su canali multipli Pagemaker - business publishing, small offices InDesign - progettazione struttura grafica dei documenti Acrobat – creazione di documenti digitali Illustrator - creazione di grafica Photoshop – ritocco fotografico GoLive – creazione di documenti Web Esempio: Macromedia Director – creazione presentazioni multimediali su CD Dreamweaver - creazione di documenti Web Fireworks - progettazione struttura grafica dei documenti Flash – creazione presentazioni multimediali per il Web Elaborazione di testi Esistono diverse applicazioni per elaborare documenti che contegono testo (text processing applications). Tali applicazioni possono essere classificate in tre grandi categorie: applicazioni per acquisire il testo di documenti cartacei applicazioni di word processing applicazioni di text formatting Elaborazione di testi Le applicazioni per acquisire documenti cartacei si basano sull’uso di dispositivi scanner e di software di riconoscimento dei caratteri (OCR – optical character recognition) Le applicazioni di word processing permettono di editare a schermo testi. Il testo viene visualizzato nella forma in cui verrà stampato (WYSIWYG: what you see is what you get) Le applicazioni di text formatting permettono di configurare graficamente le pagine (layout) di un testo; sono state introdotte per sfruttare le più avanzate funzionalità tipografiche delle stampanti avanzate