Teoria e Applicazioni delle Macchine Calcolatrici a.a. 2000/01 Giorgio Delzanno Informazioni utili Giorgio Delzanno DISI (Dip. di Informatica) Via Dodecaneso 35, Genova Tel. 010-3536638 E-mail: [email protected] http://www.disi.unige.it/person/DelzannoG Orario Martedì 14-16 – Polo didattico Aula 2 Mercoledì e Giovedì 10-12: – DISI Aula 710(?) – via Dodecaneso 35 – in futuro: laboratorio PC ...spero! Potete usare il Laboratorio al Polo didattico (fondi) – Lu-Ma-Gio-Ve 14-17 La settimana prossima NON ci sarà lezione Scopi del corso Aspetti fondazionali – Cos’è un elaboratore – Cos’è un linguaggio di programmazione – Cos’è un algoritmo Aspetti pratici – Utilizzo di un elaboratore – Utilizzo di software applicativo – Esercizi di programmazione Contenuti 1 Architettura dei Sistemi Informatici – – – Elaboratori Memoria Periferiche Sistemi Operativi – – – Processi Gestione della memoria Windows Reti di Calcolatori – Internet, Posta Elettronica, Web Contenuti 2 Formattazione Testi – Word Elementi di Programmazione: – Visual Basic Fogli Elettronici – Excel Gestione Dati – Access SQL Testi di riferimento Istituzioni di informatica Ceri-Mandrioli McGraw-Hill Manuli Microsoft (Windows, word, ecc) Dispense on-line (sul web) e fotocopie Lucidi Esame Esercitazione pratica in laboratorio Orale o Scritto Informatica? Scienza della rappresentazione e dell’elaborazione dell’informazione ovvero Studio degli algoritmi che descrivono e trasformano l’informazione Algoritmo? Sequenza di passi per risolvere un determinato problema Calcolatore = Esecutore di algoritmi Gli algoritmi sono descritti tramite programmi scritti in linguaggi ad alto livello e poi tradotti in linguaggio macchina Algoritmo Concetti fondamentali: – Correttezza = l’algoritmo risolve il problema in modo completo (spesso occorre provare la correttezza manualmente usando tecniche matematiche) – Efficienza = lo risolve nel modo più veloce possibile (esistono criteri matematici di valutazione) Esempio: potenza Problema: Calcolare a elevato alla n (a^n) Utilizziamo le variabili N, Ris Inizialmente Ris=1 e N=n Algoritmo: Fino a che N>0 Calcola Ris*a e memorizzalo in Ris Decrementa N Correttezza: Al termine Ris=a^n Linguaggi di Programmazione Linguaggi per esprimere in maniera rigorosa un algoritmo Linguaggio macchina (seq. Istruzioni) Linguaggi ad alto livello (vicini al ling. naturale) – Esempi: Pascal C e C++ Java Basic Esempio in Pseudo Pascal Program potenza; Integer Ris,N,A; Read(N);Read(A); Ris=1; While (N>0) do Ris=Ris*A; N=N-1; Print(Ris); Esempio Il precedente programma va tradotto in linguaggio macchina (comprensibile all’elaboratore), i.e., viene compilato in sequenze di istruzioni Quando le istruzioni vengono eseguite, il programma prende dati in ingresso (valori iniziali di N e A) attraverso la tastiera (input) e poi stampa il risultato sul video (valore finale di Ris) (output) In generale un programma può essere visto infatti come una funzione da input ad output... Utilizzo di un elaboratore Come utente: – Uso software applicativo esistente per creare documenti e interfacce grafiche, effettuare calcoli, navigare in rete Come sviluppatore: – Creo nuovi programmi sullo strato del software esistente Nuovi programmi applicativi Nuovi programmi di sistema (cioè che fanno funzionae il calcolatore) Architettura dei Sistemi Informatici Sistemi Informatici: PC, Rete di Calc., ... Architettura: insieme delle componenti del sistema, descrizione delle loro funzionalità e della loro interazione Suddivisione principale: – Hardware – Software Hardware Unità di Elaborazione (Processore o CPU): – Svolge le elaborazioni – Coordina il trasferimento dei dati – Cioè ‘esegue’ i programmi Memoria Centrale – Memorizza dati e programmi per l’elaborazione – Volatile – Accesso rapido – Capacità limitata Hardware Memoria Secondaria (es. Harddisk,floppy) – Grande capacità – Persistente – Accesso piu lento della RAM Unità Periferiche – Interfaccia verso l’esterno – Terminali (tastiera, video) – Stampanti Hardware Bus di Sistema – Collega le altre componenti RAM Memorie Secondarie Periferiche – Insieme di collegamenti di vario tipo Esempi di S. I. : Personal Computer Contenitore con – CPU, RAM – Memoria Centrale Fisso Unità per Dischetti/CD Monitor Disco Tastiera Altri Sistemi Informatici Workstation – Calcolatore con elevate prestazioni Mini-computer – Servono reti di terminali con pochi utenti Main-frame – Servono reti di terminali con centinaia di utenti Altri Sistemi Informatici Reti di Calcolatori – Reti Locali: collegano terminali vicini tra loro; i terminali usufruiscono di servizi quali stampanti di diverso tipo, memoria di massa,... – Reti Geografiche: collegano dei calcolatori (detti) host a medio-grandi distanze; ad esempio possono collegare diverse reti locali tra loro Software Software di base: – Dedicato alla gestione dell’elaboratore – Esempio: sistema operativo Software applicativo: – Dedicato alla realizzazione di specifiche applicative – Esempio: programmi per scrittura, gestione aziendale, navigazione su internet, ecc Sistema Operativo Rende la componente hardware facile da usare Fornisce funzionalità ad alto livello agli utenti Ad esempio: – organizza la memoria di massa – gestisce comandi immessi dall’utente quali ‘Esegui un programmq’, ‘Mostra i dati su video’, ecc Se il sistema è multi-utente deve gestire le risorse disponibili cercando di soddisfare tutti gli utenti Esempi: MS DOS, OS 2, Windows, Unix Software Applicativo: Esempi Video Scrittura: per costruire e testi e definire formati di stampa Agende elettroniche: indirizzario, calendari Posta Elettronica: per comunicazione Fogli elettronici: per elaborazioni contabili Database: sistemi per la gestione di dati Esempi di Applicazioni Calcolo Numerico: statistiche, ecc Gestione Aziendale: banche, assicurazioni, Telematica: bancomat, ecc Automazione industriale:, robotica, ecc Internet: commercio virtuale, ecc Architettura dei calcolatori Per capire come utilizzare software appicativoe progettarne di nuovo occorre capire come funziona la componente Hardware. Vedremo – Cenni di rappresentazione dei dati – Circuiti per operazioni su dati – Struttura di un calcolatore Rappresentazione dei dati Si utilizzano standard internazionali per risolvere problemi di compatibilità tra calcolatori di tipo e marca diversi Vedremo brevemente: – Codifica dei numeri – Operazioni tra numeri attraverso circuiti logici – Codifica di caratteri e immagini Codifica dei numeri Gli elaboratori utilizzano la codifica binaria (cioè con 0 e 1) dell’informazione Perché solo due simboli? – differenti tensioni elettrici, polarità magnetiche, ... – Riduce errori (ad es. causati da rumore nei segnali) Unità elementare di informazione: bit interpretato come 0 o come 1 Unità derivata: byte = 8 bit Codifica dei numeri Esempio: 13 può essere espresso in funzione delle potenze di 2 come: 13 = 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1 Cioè può essere rappresentato dalla sequenza di bit 1 1 0 1 Codifica dei numeri Quindi – Numero = sequenza di bit (codifica in base 2) – Con K bit si rappresenta al max 2^K-1 Esempi: – 2 = sequenza 1 0 – 3 = sequenza 1 1 – 4 = sequenza 1 0 0 ....... Operazioni tra numeri Ad esempio: somma 5=1x4+0x2+ 1 x1 2=0x4+1x2+ 0 x1 _____________________ 7=1x4+1x2+1x 1 Esprimibile come operazione tra bit Operazioni logiche Operazioni logiche: AND, OR, NOT, ... – – – – 0 = falso, 1=vero X AND Y = 1 sse X=1 e Y=1 X OR Y = 1 sse X=1 oppure Y=1 NOT X = 1 sse X = 0 Circuiti logici: composizione degli operatori che trasformano ingressi (input) in uscite (output) Cioè un circuito definisce una funzione f: input output Input, output = sequenze di bit Circuiti logici X Y Z OR X or Y or Z OR Riassumendo... Numeri = codificati come sequenze di bit Operazioni = operazioni bit a bit Funzioni complesse = circuiti Hardware = implementazione fisica dei circuiti logici Hardware = fornisce operazioni primitive che vengono utilizzate per definire applicazioni attraverso programmi Codifica di numeri reali ecc Reali: si utizzano codifiche quali – Floating point – Fixed point Interi: si utilizzano codifiche quali – Bit di segno – Complemento a 1 e a 2 Codifica caratteri Codifica ASCII: associando un simbolo dell’alfabeto ad ogni numero possiamo codificare tutte le lettere – a-z A-Z 0-9 usando 7 bit (cioè in un byte)!! Esempio: 00000101 rappresenta la lettera ‘c’ Codifica di immagini Immagini = sequenze di bit! L’immagine viene digitalizzata cioè rappresentata con sequenze di pixel Ogni pixel ha associato un numero che descrive un particolare colore (o tonalit di grigio) Inoltre si mantengono la dimensione, la risoluzione (numero di punti per pollice), e il numero di colori utilizzati Com’è fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: – Un’unità di Elaborazione (CPU) – Memoria Centrale (RAM) per istruzioni e dati memorizzati come sequenze di dati – Periferiche – Bus di Sistema Programmi e dati I programmi (seq. istruzioni) e i dati sono memorizzati in memoria di massa (lenta) Per essere eseguito, un programma deve essere caricato in memoria centrale (veloce) Occorre anche allocare spazio per i dati utilizzati dal programma (es. Variabili N,Ris) in memoria centrale Come funziona l’elaboratore? Un programma viene caricato in memoria centrale Si alloca lo spazio per i dati necessari al programma La CPU estrae le istruzioni e dati dalla memoria centrale, le decodifica e le esegue utilizzando registri interni (accesso veloce) L’esecuzione può comportare il trasferimento di dati in input e output tra memoria centrale e periferiche attraverso il bus di sistema L’esecuzione viene scandita dal clock di sistema Memoria Centrale Organizzata come una tabella di celle – Cella = parola di memoria (sequenza di byte) – Es. Memoria da 16 bit (2 byte), 32 bit, 64 bit Indirizzo di memoria = posizione relativa alla prima cella La CPU mantiene due registri per gestirla: – Registro di indirizzamento (RI) = serve per recuperare le parole di memoria – Registro dati (RD) = mantiene dati input e output Funzionamento Memoria MEM RI RD REG.INDIRIZZI K bit REG. DATI. 16 bit MEMORIA: 2^ K-1 parole da 16 bit Tipi di Memoria Memoria RAM (Random Access): – Volatile, veloce, utilizzata per dalla CPU Memoria ROM (Read only): – Si può solo leggere, per operazioni critiche Memoria EROM, EPROM: – Cancellabili, cancellabili e programmabili Memoria di Massa: – Persistente, più lenta Bus di sistema Collegamento tra le varie componenti sempre sotto il controllo della CPU Il bus viene assegnato alle componenti per un certo intervallo di tempo in modo che possano scambiare dati – Bus dati – Bus indirizzi – Bus comandi Central Processing Unit - CPU Circuiti che coordinano il calcolatore Unità Aritmetico-Logica (ALU) Registri – – – – Registro dati e indirizzi Contatore di Programma Registro istruzione corrente Registro interruzioni Orologio di sistema (clock) Registri Registro istruzione corrente (RIC): contiene l’istruzione correntemente eseguita Contatore di Programma (PC): indirizzo della prossima istruzione da eseguire Registro interruzioni (RINT): contiene informazioni riguardo lo status delle periferiche Altri registri interni mantegono operandi e risultati CPU RIC PC ALU RINT RD RI A,B,.... CLOCK Come funziona la ALU? La CPU specifica l’operazione da eseguire attraverso il registro RIC (es. una somma) Gli operandi vengono trasferiti dalla memoria ai registri interni (es. A e B) L’esecuzione richiede un certo tempo di clock dopo il quale il risultato viene memorizzato in un registro interno (es A) e poi trasferito in memoria A questo punto si passa all’istruzione successiva utilizzando il registro PC Interfacce di ingresso/uscita Circuiti che gestiscono le periferiche – Registro dati (da e per la CPU) collegato al bus dati – Registro comandi per la periferica collegato al bus comandi – Informazioni sullo stato della periferiche (ad es collegato al reg. RINT) Periferiche: Terminali Terminali consistono di – Tastiera per acquisire dati in ingresso (input) – Video per mostrare dati immessi ed elaborati; il cursore seleziona una posizione nel video dove vengono immessi i dati – Mouse per controllare il cursore – Caratteristiche: numero di colori, dimensioni, risoluzione, capacità grafica – Modi: teletype/a blocchi Periferiche: Stampanti Producono su carta i risultati dell’elaboraz. Vari tipi: – – – – A margherita Ad aghi A getto d’inchiostro Laser Caratteristiche: velocità,risoluzione, set di caratteri, capacità grafica (colori ecc) Estensioni Co-processori dedicati a compiti specifici Cache memory (memoria veloce) Multi-processori Elaboratori PC IBM-compatibile – CPU 386, 486 a 32 bit – Sistema Operativi: MS DOS (Microsotf) OS 2 (Sun) McIntosh (Apple) Workstations Sun, HP, Apollo Sistema Operativo: – Unix