INFORMATICA ……… La parola INFORMATICA indica l’insieme delle discipline e delle tecniche che permettono la trattazione automatica delle informazioni che sono alla base delle nostre conoscenze e delle loro comunicazioni. Il termine INFORMATICA è nato nel 1966 in Francia dalla contrazione delle parole INFORmazione e autoMATICA. INFORMATICA Elaborazione e trattamento automatico delle informazioni Informazione “Sequenza (o stringa) di simboli associata a un significato” Possibili supporti fisici per l’informazione: suono (conversazioni tra persone) onde radio (radio e televisione) correnti e tensioni elettriche (cavi telefonici) campi magnetici (audiocassette, floppy disk) segni su carta (libri, giornali) Sull’informazione si possono effettuare numerose operazioni: creazione trasmissione immagazzinamento (archiviazione) recupero copia distruzione elaborazione (trasformazione) Informazione “Sequenza (o stringa) di simboli associata a un significato” I simboli che fanno parte della sequenza vengono scelti all’interno di un insieme detto alfabeto. Esempi di alfabeti: - Alfabeto italiano, 21 simboli (lettere): {A, B, …., V, Z} - Alfabeto numerico decimale, 10 simboli (cifre): {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} - Alfabeto telegrafico Morse, 2 simboli: {., -} - Alfabeto del Totocalcio, 3 simboli: {1, X, 2} Esempi di stringhe composte da simboli tratti da questi alfabeti, assieme al loro significato convenzionale: AULA “ambiente destinato alle lezioni WANTED “ricercato” 123 “il numero decimale 123” TZOCAW “nessun significato convenzionale” Da questi esempi risulta evidente la necessità di regole che associno un significato a queste stringhe di simboli. Un siffatto insieme di regole prende il nome di codice. Alfabeto: k simboli diversi Lunghezza della stringa: n posizioni Numero di configurazioni= k x k x ··· xk=kn n volte Nei sistemi per l’elaborazione dell’informazione viene adottato un alfabeto composto da soli 2 simboli, rappresentati dalle cifre 0 e 1. Tale alfabeto è detto alfabeto binario. Una cifra binaria viene definita bit (da binary digit, “cifra binaria”). Quindi essendo k=2 configurazioni è 2n. il numero totale di Una stringa di 8 bit è definita byte (28=256 valori diversi) Quale tipo di oggetti possiamo rappresentare con delle stringhe binarie? Numeri, lettere, colori, forme!!!! Qualsiasi informazione può essere trasformata in una stringa di bit A tutti i tipi di informazione corrispondono codici differenti, che stabiliscono la corrispondenza fra i valori da rappresentare e le stringhe di bit che abbiamo a disposizione. Tipi di informazioni: 1. Informazione di tipo numerico: Il dato rappresenta una quantità numerica 2. Informazione di tipo alfanumerico: Il dato rappresenta un carattere {A, …, Z, a, …, z, 0, …, 9, ;, :, ., @, $, ... } 3. Informazione di tipo logico: Il dato rappresenta grandezze logiche, cioè grandezze che possono avere soltanto due valori: vero o falso. Questo tipo di informazione è associato al valore di verità di un determinato enunciato: vero se l’enunciato è vero, falso se l’enunciato è falso. Le informazioni di tipo logico si possono manipolare in maniera simile ai numeri; la differenza è che invece delle operazioni aritmetiche (+, -, etc) si utilizzano delle operazioni logiche (AND, OR, NOT). L’operazione AND agisce su due operandi. Il valore dell’AND di due operandi è vero soltanto quando entrambi gli operandi hanno valore vero. falso AND falso = falso falso AND vero = falso vero AND falso = falso vero AND vero = vero L’operazione OR agisce su due operandi. Il valore dell’OR è vero se almeno uno dei due operandi è vero. falso OR falso = falso falso OR vero = vero vero OR falso = vero vero OR vero = vero L’operatore NOT agisce su un solo operando e ha come valore il contrario del valore dell’operando. NOT falso = vero NOT vero = falso Esempi di Espressioni logiche: 7 è pari OR 7 è dispari = vero 7 è pari AND 7 è dispari = falso NOT l’Italia è una monarchia = vero 4. Informazione di tipo istruzione: Il dato rappresenta un’operazione da eseguire . Il codice che associa ad ogni stringa binaria l’azione da eseguire viene detto linguaggio macchina, che è interpretabile dalla CPU. Alcuni tipi di operazioni supportate dal linguaggio macchina sono: le operazioni aritmetico-logiche tra due operandi, il trasferimento di controllo (“salto”) ad un’istruzione che non sia la prossima ed etc….. 5. Informazione di altri tipi: Il dato rappresenta suoni, immagini, filmati, oggetti tridimensionali ……... Elaborazione dei dati - immissione dei dati nel sistema (dati di input) - elaborazione dei dati secondo istruzioni di lavoro ben determinate - emissione all’esterno del sistema di elaborazione dei risultati (dati di output) Dati di ingresso Sequenza di Operazioni Dati di uscita Esempi di elaborazione…... Elaborazione numerica - dati ingresso: i numeri 3 e 4 - elaborazione: moltiplicare 3 per 4 - dati in uscita: il risultato 12 Elaborazione non numerica - dati ingresso: i numeri del vecchio elenco, i nomi da inserire - elaborazione: confrontare ed ordinare i dati - dati in uscita: nuovo elenco Ma dove avviene l’elaborazione dell’informazione? ISTRUZIONI DATI COMPUTER RISULTATI COMPUTER è il “sistema per l’elaborazione dell’informazione” Questo sistema è costituito da due componenti: Hardware e Software Hardware Software Insieme di tutti i circuiti delle macchine e dei componenti elettronici, elettrici e meccanici di un sistema di elaborazione Insieme dei programmi operanti su di esso Caratteristiche di un computer Digitale (o numerico): - i suoi principi di funzionamento sono fondati su basi logiche e matematiche - il sistema ha un numero di stati finito, cioè in ogni circuito elettronico ci sono idealmente solo due tensioni diverse possibili ed ogni locazione di memoria può conservare soltanto un numero finito di stringhe binarie differenti. In generale, si può intendere come matematicamente preciso. Automatico: il sistema evolve da uno stato iniziale a uno stato finale eseguendo automaticamente, senza interventi esterni, un numero finito di operazioni. Elettronico: sono elettronici i circuiti preposti all’esecuzione delle istruzioni, così come gli elementi bistabili che costuiscono le memorie del sistema. A programma registrabile: La sequenza di istruzioni costituenti il programma è immagazzinata nella stessa memoria dell’elaboratore. Ciò conferisce ampia flessibilità al sistema, poiché cambiando il programma registrato si può cambiare l’elaborazione che viene compiuta. Unità di Controllo (CU, Control Unit) Presiede a tutte le operazioni eseguite dall’elaboratore, interpretando le istruzioni prelevate in sequenza dalla memoria centrale e inviando alle specifiche unità i segnali abilitanti. Unità logico-aritmetica (ALU, Arithmetical Logical Unit) Esegue le operazioni aritmetiche e logiche richieste dall’unità di controllo. Memoria centrale (RAM, Random Access Memory) Insieme ordinato di celle destinate a memorizzare le istruzioni costituenti il programma e i dati oggetti dell’elaborazione. Unità di Ingresso (Input devices) Impiegate per immettere il programma in fase di caricamento e i dati in fase di esecuzione. Unità di Uscita (Output devices) Impiegate per presentare i risultati dell’elaborazione. Il processore Il processore è detto CPU (Central Processing Unit, unità centrale di elaborazione) ALU Registri Interni Unità di Controllo I registri servono per memorizzare i dati sui quali il processore sta operando, come ad esempio i risultati intermedi dei calcoli. Memory CACHE C A C H E RAM BUS ALU CU CPU La memoria CACHE serve a limitare il numero di accessi alla RAM. L’accesso alla RAM richiede l’accesso al BUS di comunicazione (molto tempo). Il tempo di accesso a un dato presente nella CACHE è simile al tempo di accesso ai registri interni della CPU. Microprocessore Le tecnologie per la lavorazione dei materiali semiconduttori hanno consentito di integrare le varie componenti della CPU in un unico circuito integrato (chip). CISC (Complex Instruction Set Computer): interpreta un set di istruzioni (300-400) RISC (Reduced Instruction Set Computer): interpreta un set di istruzioni molto ridotto, dove ciascuna istruzione può essere eseguita in tempi molto brevi rispetto ai processori CISC MEMORIA I tipi di memoria: - Memoria Centrale (RAM) - Memorie di massa - ROM (Read Only Memory) Caratteristiche: - tempo di accesso: il tempo necessario a compiere una singola operazione di lettura o scrittura - capacità: la massima quantità di informazioni memorizzabili - persistenza: la capacità di mantenere le informazioni memorizzate in assenza dell’alimentazione elettrica --volatili e permanenti. MEMORIA - Gerarchie di memorie Le funzioni di memoria di un elaboratore sono distribuite in una gerarchia con il principio di allocare negli strati più bassi le informazioni che vengono richiamate più spesso e gestire il loro trasferimento fra i diversi strati. periferiche Liv.2 Memorie di massa Cache Liv.1 Memoria centrale Capacità e tempo di accesso crescenti Cache Liv.0 Registri di CPU centro La memoria cache, che si interpone fra due livelli della gerarchia, ha lo scopo di ricordare le ultime informazioni richiamate dalla memoria più periferica. Infatti, se c’è un nuovo accesso allo stesso dato, quest’ultimo sarà richiamato dalla memoria più veloce (meno periferica) piuttosto che da quella più lenta (più periferica) . Memoria Centrale La RAM consiste in un insieme ordinato di locazioni (anche dette celle) numerate in successione. Ogni locazione è identificata dal suo numero d’ordine, che prende il nome di indirizzo della locazione. 0 1 2 3 n-2 n-1 ….. RAM di n byte vista come successione di celle Indirizzo di memoria: Posizione occupata da una locazione nell’insieme ordinato che costituisce la memoria. Spazio degli indirizzi: L’insieme degli indirizzi specificabili su un certo sistema di elaborazione. La sua dimensione è 2n, dove n è la lunghezza in bit delle stringhe binarie usate dalla CPU per indicare un indirizzo in RAM. - Il tempo necessario per accedere a una locazione è indipendente dal suo indirizzo (che si tratti della prima o dell’ultima locazione) e dipende solo dal tipo di RAM. Questa caratteristica si definisce accesso casuale (e ciò è messo in evidenza dal termine RAM). Altri dispositivi hanno invece il vincolo di non poter accedere ad un dato senza aver prima letto tutti i dati precedenti (accesso sequenziale) - L’operazione di scrittura in una locazione consiste nell’alterare lo stato dei singoli bit che la costituiscono in modo da registrare la sequenza di 0 e 1 da memorizzare. Tale operazione è distruttiva. - L’operazione di lettura di una locazione consiste nel riprodurre (copiare) lo stato dei singoli bit che la costituiscono nei bit corrispondenti di un’altra locazione o registro. Tale operazione è non distruttiva perché l’informazione letta viene preservata e può essere letta di nuovo Altri tipi di memoria Le memorie di massa sono dischi rigidi, floppy disk, CD-ROM, nastri ed etc. La ROM (Read Only Memory): E‘ elettronica e ad accesso casuale come la RAM. E’ permanente e a sola lettura: una volta che le informazioni vi sono state memorizzate non è più possibile modificarle. I chip di ROM (che vengono inizializzati in fabbrica all’atto della produzione) contengono software specializzato: - gestione di periferiche; - set aggiuntivi di caratteri per stampanti; - programma di avvio del sistema (boot loader) Periferiche - Unità di ingresso - Unità di uscita - Interfacce o porte - Memorie di massa Le memorie di massa Sono periferiche con funzioni di memoria ausiliaria I supporti magnetici usati sono: - nastri (bobine o cassette), rimovibili, accesso sequenziale; - dischi floppy (floppy disk), rimovibili, accesso casuale; - dischi rigidi (hard disk), fissi o rimovibili, accesso casuale. Le memorie magnetiche hanno le seguenti caratteristiche: - persistenza; - elevata capacità, fino a diversi Gbyte; - costi contenuti; - tempi di accesso elevati, soprattutto per i nastri. E’ da precisare che ….. - le informazioni residenti nelle unità di memoria di massa devono essere copiate nella RAM prima di poter essere elaborate dalla CPU. - i risultati dell’elaborazione presenti in memoria centrale devono essere copiati nelle unità di memoria di massa se vogliamo che siano immagazzinati permanentemente. Quindi le memorie di massa sono unità di I/O e unità di memoria ausiliaria. RAM Memorie di massa CPU Flusso di controllo Flusso di dati Disco magnetico Il disco è ricoperto da uno strato di materiale capace di conservare i campi magnetici. La superficie è divisa in cerchi concentrici, detti tracce, e in spicchi, detti settori. Prima di essere utilizzato un disco deve essere formattato (per marcare su ogni traccia i punti di inizio dei settori e altri valori che servono a temporizzare la rotazione del disco. Esempio di 6 tracce e 8 settori: Dischi a lettura ottica CD-ROM: sono dispositivi di sola lettura; infatti non è possibile scrivere dati senza utilizzare un masterizzatore. Sono in materiale rigido ricoperti da un sottile strato di metallo. Hanno elevata capacità. Le interfacce o porte Sono dispositivi elettronici che consentono di collegare le più disparate apparecchiature periferiche al BUS di sistema, alla RAM o alla CPU. Interfacce parallele: trasferiscono i caratteri con numerosi fili lunghi pochi metri. Hanno 8 fili separati per i dati (più diversi altri per segnali di controllo) e quindi trasmettono un byte (8 bit) in parallelo. [Esempio: stampante] Interfacce seriali: trasferiscono i dati bit a bit. Il cavo di collegamento è costituito da pochi fili e permettono di trasferire caratteri su cavi molto lunghi. [Esempio: collegamento del modem] Unità di ingresso Servono ad immettere il programma in fase di caricamento e i dati in fase di esecuzione. - tastiera; - mouse; - penna ottica; - floppy disk drive (unità a floppy); - hard disk drive (unità a disco rigido); - CD-ROM (lettore di CD-ROM); - scanner; - modem; - telecamera; - scheda per la connessione in rete locale (Ethernet); - microfono. La tastiera serve ad immettere testo o programmi (80-100 tasti): - caratteri alfanumerici (cifre, maiuscole, minuscole); - segni di interpunzione; - caratteri speciali ($, >, <, @,…); - tasti speciali (ESC, CTRL, DEL,…); - il tasto ENTER, che invia la linea di testo al sistema; - tasti cursore ( , , , ); - tasti funzione (F1, F2,…) che sono programmabili - Il mouse e la penna ottica sono dispositivi di puntamento. - Lo scanner serve a digitalizzare un’immagine che, immagazzinata in memoria, può essere elaborata in vari modi. Funziona come una fotocopiatrice. - Il modem traduce i dati digitali presenti in memoria in segnali adatti ad essere trasmessi lugo una linea telefonica (modulazione) oppure fa la traduzione opposta. Quindi funziona come periferica di input ed output. - La scheda per la connessione diretta in rete locale serve a collegare tra di loro sistemi di elaborazione diversi. Si parla di ethernet perché la rete (net) è eterogenea potendo essere composta da sistemi e periferiche diverse. Anche questa periferica funziona come periferica di input ed output. Unità di uscita Servono a presentare i risultati ottenuti dall’ elaborazione. Quindi sono periferiche di output tutte quelle che ricevono dati dalla CPU o dalla RAM - monitor; - stampante; - plotter; - floppy disk drive e hard disk drive; - masterizzatore di CD-ROM; - modem; - interfacce varie; - scheda per la connessione in rete locale; -dispositivi audio. Esistono monitor che funzionano solo in modo testo e monitor grafici. Le tecnologie più diffuse per i monitor sono: - CRT (Cathode Ray Tube, tubi a raggi catodici) - LCD (Liquid Crystal Display, display a cristalli liquidi) - Plasma display In modo testo i monitor possono visualizzare 24 o 25 linee di 80 caratteri. In modo grafico possono visualizzare diagrammi, disegni e immagini. In questo caso lo schermo consiste in una matrice di pixel (una griglia di puntini luminosi). Le capacità grafiche di un video display dipendono anche dalle caratteristiche dell’adattatore grafico, anche detto scheda grafica. Si tratta di un dispositivo composto da circuiti elettronici per la generazione dei segnali elettrici necessari per pilotare il video display. Oltre a tali circuiti, la scheda grafica contiene anche della memoria RAM dedicata che serve a memorizzare l’immagine attualmente mostrata sullo schermo (la video RAM). Un sistema per l’elaborazione dell’informazione consiste di due componenti : l’hardware ed il software Si può parlare di una macchina reale, che è costituita dall’hardware e di una macchine virtuali costituite dalla macchina reale + software. La macchina reale esplica le funzioni fondamentali del sistema di elaborazione. Essa è in grado di effettuare un grande numero di operazioni elementari in tempi molto ridotti rispetto a quelli umani Costantini Susan - (Hardware e Software – 2005) Costantini Susan - (Hardware e Software – 2005) La macchina reale è programmabile esclusivamente in linguaggio macchina ed è, pertanto, molto scomoda da utilizzare direttamente: infatti, la programmazione in linguaggio macchina è ardua e poco efficace. E’ difficile adattare la logica sintetica del pensiero umano a quella analitica ed elementare della macchina reale. Le difficoltà maggiori: - è necessario pianificare accuratamente l’impiego della memoria; - i codici operativi vanno riferiti utilizzando il formalismo rigoroso della macchina; -bisogna gestire programmi di notevole complessità, composti da un elevatissimo numero di istruzioni elementari, con conseguente elevato rischio di commettere errori; - un programma realizzato in linguaggio macchina non funzionerà su hardware diverso da quello utilizzato per la sua stesura Costantini Susan - (Hardware e Software – 2005) Per superare queste difficoltà si realizzano degli strati di software che vanno a ricoprire la macchina reale. macchina reale + software--->macchina virtuale Software: - Software di base: Insieme di programmi necessari per lo stesso funzionamento del sistema che costituiscono macchine virtuali di basso livello. -Software applicativo: Programmi orientati alla risoluzione di problemi specifici utilizzati direttamente dall’utente finale. Le macchine virtuali sono orientate alla rappresentazione più efficace (cioè più vicina all’uomo) di problemi specifici da risolvere. La macchina reale è invece ciò fisicamente possibile la soluzione. che rende Costantini Susan - (Hardware e Software – 2005) Schema macchine virtuali ad alto livello Richiedono grandi quantità (memoria e tempo di calcolo) di risorse Le macchine virtuali di livello più basso (e quindi dal software di base) comprendono la gestione delle periferiche e la possibilità di programmare impiegando linguaggi simbolici Costantini Susan - (Hardware e Software – 2005) Il sistema operativo È una collezione di moduli software che gestiscono le risorse hardware e software e controllano lo svolgimento delle diverse procedure di elaborazione. Le macchine virtuali di livello più basso sono tutte realizzate da moduli di sistema operativo. Fra i vari moduli c’è un supervisore o kernel che risiede stabilmente in memoria centrale,ossia viene caricato una tantum all’atto dell’accensione del sistema. Gli altri moduli, residenti in memoria di massa, vengono richiamati dal supervisore e caricati in memoria centrale quando devono svolgere i compiti specifici di loro competenza Costantini Susan - (Sistema operativo – 2005) I compiti del sistema operativo: 1. Gestione delle risorse disponibili Ogni sistema elaborativo consiste di un processore, memoria centrale, schermo, interfacce, stampanti, tastiera, mouse. Il S.O. deve fare in modo che le richieste per accedere a tali risorse vengano servite in maniera ottimale (come l’esecuzione di vari programmi, le code di stampa, l’accesso ai file su disco..) 2. Gestione delle periferiche Per ogni periferica presente nel sistema operativo ha un modulo chiamato driver. I driver di periferica sono programmi specializzati nel tradurre richieste formulate dall’utente in una forma comprensibile dalla periferica. (Es. Driver per una stampante) 3. Controllo dell’esecuzione dei programmi Quando si ci propone di eseguire un programma, esso risiede in memoria di massa; ma sappiamo che per essere eseguito deve trovarsi in memoria centrale. Viene avviato un modulo di S.O. chiamato loader, che si occupa di copiare il programma dalla memoria di massa nella RAM. Costantini Susan - (Sistema operativo – 2005) 4. Interazione con l’utente Uno dei moduli all’interno del S.O è l’interprete di comandi, anche detto shell. Esso è un interprete che risponde i comandi forniti dall’utente tramite la tastiera o il mouse e li traduce uno ad uno in comandi di livello più basso che portino a termine le azioni specificate dall’utente. Esempio: 1. La shell di MS-DOS con comandi quali DIR, per listare i file contenuti in una directory, o COPY, per copiare i file (shell che ricevono i comandi in forma testuale). 2. Alcune shell interpretano gesti compiuti dall’utente mediante il mouse o altri dispositivi di puntamento (shell visuale in Windows) Costantini Susan - (Sistema operativo – 2005) (a) Monoprogrammazione, monoutenza: il sistema serve un solo utente per volta ed è in grado di eseguire un solo programma per volta (b) Multiprogrammazione, monoutenza: il sistema serve un solo utente per volta ed è in grado di eseguire più programmi contemporaneamente. (c) Multiprogrammazione, multiutenza: (a) (b) (c) INPUT ELABORAZIONE OUTPUT INPUT ELABORAZIONE OUTPUT INPUT ELABORAZIONE OUTPUT INPUT ELABORAZIONE OUTPUT UTENTE 1 UTENTE 2 UTENTE 3 UTENTE 4 UTENTE 5 UTENTE 6 Costantini Susan - (Sistema operativo – 2005) Multiprogrammazione, multiutenza:serve più utenti contemporaneamente. Il S.O. impiega una tecnica basata sulla suddivisione del tempo macchina detta time sharing per assegnare le risorse del sistema ai vari utenti. Ogni utente ha l’impressione di avere la CPU interamente a propria disposizione, mentre quello che succede è che la CPU passa rapidamente da un processo all’altro. Fig III.9 Costantini Susan - (Sistema operativo – 2005) I sistemi operativi più diffusi: MS-DOS Questo S.O. viene caricato da disco, invece, di risiedere in ROM. Esso implementa la monoprogrammazione per singolo utente, con delle limitatissime capacità di multiprogrammazione. Windows Inizialmente non si trattava di un sistema operativo ma di un programma applicativo che aggiungeva al sistema operativo (MS-DOS) una macchina virtuale di alto livello nella quale far girare altro software applicativo. Oggi è il più diffuso S.O. ed implementa la multiprogrammazione in monoutenza e permette la condivisione di risorse fra elaboratori connessi in rete. Unix Fu il primo sistema operativo ad essere scritto quasi interamente in un linguaggio ad alto livello (il C). Unix permette la multiprogrammazione e multiutente; l’accesso al sistema è possibile anche attraverso terminali remoti. Costantini Susan - (Sistema operativo – 2005)