Precorso di Informatica 2007/2008 A.A. 2007/2008 Precorso di Informatica - A.A. 2007/2008 Programma del corso ✔ 8 ore di lezioni teoriche Lunedì 10 e venerdì 14 settembre Algoritmi e Programmazione Architettura degli elaboratori Sistemi Operativi Networking ✔ 8 ore di pratica in laboratorio Da lunedì 17 settembre a giovedì 20 settembre [email protected] Precorso di Informatica - A.A. 2007/2008 Il corso di laurea in Informatica «Computer science is no more about computers than astronomy is about telescopes.» Edgser Dijkstra, Turing award in 1972 In questo corso di laurea non si insegna ad utilizzare il computer o a programmare (anche se sono inevitabili effetti collaterali) Precorso di Informatica - A.A. 2007/2008 Una corretta alimentazione Programmazione, Ing. del Software, Architettura, Sistemi Operativi, Basi di Dati.... Linguaggi e Programmazione Basi Matematiche Algoritmi e strutture dati Logica, Algebra, Teoria dei grafi, Matematica discreta, Calcolo numerico, Computabilità.... Algoritmi, Complessità, Correttezza, Terminazione, Strutture dati.... Precorso di Informatica - A.A. 2007/2008 Il mestiere dell'informatico Il laureato in materie informatiche è flessibile: Programmatore Sistemista Progettista Docente Call center operator Altro.... Non tutti i compiti hanno lo stesso grado di desiderabilità... (...e di difficoltà) Precorso di Informatica - A.A. 2007/2008 Un po' di storia • L'ingresso del calcolatore nel mondo del lavoro risale all'inizio del 1900; la tecnologia delle macchine di calcolo prodotte all'inizio del secolo era meccanografica • Con queste macchine si eseguivano calcoli ad una discreta velocità (per quei tempi), dell'ordine di 60 operazioni al minuto; la loro gestione era tuttavia molto complessa • I “programmi” venivano “scritti” su schede perforate che venivano interpretate meccanicamente dall’elaboratore. Una scheda perforata Precorso di Informatica - A.A. 2007/2008 Alan Turing • Nel 1936 il logico inglese Alan Turing definisce il modello del calcolatore moderno, la cosiddetta 'macchina di Turing' • Essa è in grado di eseguire operazioni elementari secondo uno schema di calcolo ricorsivo, che consenta di risolvere ogni tipo di problema di logica simbolica in un numero finito di passi • Non ne verranno costruiti esemplari reali, ma la sua idea costituirà la base dell'architettura dei futuri computer. Precorso di Informatica - A.A. 2007/2008 La guerra ed ENIAC Con lo scoppio della Seconda Guerra Mondiale, il progresso nell'area dei computer subirà degli sconvolgimenti: le esigenze strategiche e militari daranno impulso a nuovi tipi di ricerche e di macchine, tra cui l’ENIAC (Electronic Numerical Integrator and Calculator), che impiegò per la prima volta valvole elettroniche, e venne utilizzato per calcolare traiettorie balistiche. ENIAC Precorso di Informatica - A.A. 2007/2008 Enigma • Enigma è una macchina crittografica utilizzata durante la guerra dalle armate tedesche per cifrare le comunicazioni • La macchina era stata inventata da un ingegnere polacco e non è chiaro come sia potuta finire nelle mani dei tedeschi • A causa di questo elaboratore, gli inglesi ebbero grossi problemi a decifrare i messaggi intercettati. Precorso di Informatica - A.A. 2007/2008 Gli anni '50 • Il 1955 vede la nascita di IBM 702: la prima macchina commerciale completamente costruita con transistor e messa sul mercato da IBM. • Dal 1956 fu introdotto il FORTRAN, primo linguaggio di programmazione ad alto livello, a cui seguirono LISP, COBOL, ALGOL e BASIC (Beginner's All-purpose Symbolic Instruction Code). IBM 702 Precorso di Informatica - A.A. 2007/2008 Gli anni '60 • Nel 1962 nasce al MIT il primo video game, sviluppato da Steve Russell; tuttavia non era molto economico, visto che una partita di un'ora costava circa 300$. • Nel 1964 La Epson inventa la stampante a matrice di punti (dot matrix printer). Precorso di Informatica - A.A. 2007/2008 Il 1969 • I laboratori Bell sviluppano il sistema operativo UNIX. • Viene disegnata una semplice combinazione di un processore e di una unità di calcolo (la prima CPU), che sarà poi effettivamente realizzata dalla Intel. Il processore Intel 4004 a 4 bit diede inizio alla rivoluzione elettronica; in un unico chip era contenuta tutta la potenza di calcolo dell’ENIAC. • Su commissione del Dipartimento della Difesa USA, ARPANET studia la prima rete (ha solo 4 nodi), che diverrà la più grande rete mondiale: Internet. Precorso di Informatica - A.A. 2007/2008 Il Computer entra in casa • Fino al 1977 gli elaboratori erano utilizzati soltanto da aziende e organismi governativi, ed avevo prezzi esorbitanti • In quell’anno viene annunciato l'APPLE II, il primo personal computer, con programmi di videoscrittura, fogli di calcolo, giochi e tanto altro. • Nel 1984 viene annunciato dalla Apple il personal computer Macintosh; si tratta una macchina interamente grafica, dal prezzo abbordabile. PC APPLE II Apple Macintosh Precorso di Informatica - A.A. 2007/2008 Microsoft windows Nel 1977 Bill Gates e Paul Allen fondano la Microsoft • Otto anni dopo la Microsoft sviluppa Windows 1.0, introducendo aspetti tipici del Macintosh nei computer DOS. • Si verificheranno continue dispute legali tra Microsoft ed Apple a causa dell’eccessiva somiglianza di Windows e Macintosh. Precorso di Informatica - A.A. 2007/2008 File System • Negli ultimi dieci anni la potenza di calcolo dei PC ha avuto una crescita continua; tuttavia la loro complessità è irrisoria rispetto a quella dei supercomputer: – elaboratori dedicati ad utilizzi in cui vi sia la necessità di sostenere elevati volumi di elaborazione, come in enti di difesa, centri di ricerca, istituti di meteorologia, aziende aerospaziali ecc. Precorso di Informatica - A.A. 2007/2008 I concetti chiave dell'Informatica In effetti l'informatica è una scienza piuttosto semplice, in quanto si occupa unicamente di due cose: Informazione (cosa) Algoritmi (come) Precorso di Informatica - A.A. 2007/2008 Il concetto di informazione Informazione è qualsiasi cosa che possa essere: ✔ Comunicata ✔ Capita ✔ Interpretata ed assimilata A questa idea corrispondono tre livelli di definizione dell'informazione: ✔ Livello sintattico ✔ Livello semantico ✔ Livello cognitivo Precorso di Informatica - A.A. 2007/2008 Livello sintattico L'informazione per essere comunicata ha bisogno di: ✔ Un linguaggio con cui esprimerla ✔ il linguaggio naturale il linguaggio dei segni il linguaggio matematico ✔ Un messaggio (espresso in tale linguaggio) che la codifichi ✔ una frase in italiano una sequenza di 13 simboli scelti in {1,2,X} Precorso di Informatica - A.A. 2007/2008 Livello sintattico Esempio: il numero dieci ✔ In italiano: dieci ✔ In inglese: ten ✔ In notazione decimale: 10 ✔ In notazione binaria: 1010 ✔ In notazione esadecimale: A ✔ In numeri romani: X ✔ Tutti questi messaggi esprimono il numero dieci, ciascuno in un linguaggio diverso, ma nessuno è il numero dieci Precorso di Informatica - A.A. 2007/2008 Livello semantico Definisce il significato di ciò che è rappresentato in un messaggio: ✔ Nell'esempio precedente il numero “dieci” (dal punto di vista concettuale) Il livello semantico riguarda “concetti” e quindi prevede un agente in grado di “capire” il significato veicolato dal messaggio ✔ Tale comprensione necessità una definizione rigorosa del livello sintattico comune a chi invia e a chi riceve il messaggio: ✔ L'interpretazione del messaggio “X” cambia a seconda che mi stia esprimendo secondo la sintassi italiana, del totocalcio o dei numeri romani ✔ Precorso di Informatica - A.A. 2007/2008 Livello semantico In prima approssimazione i computer sono macchine completamente stupide Non sono in grado di “capire” nessun concetto, ma solo di manipolare simboli (di un determinato linguaggio): ✔ Spostare simboli ✔ Confrontare simboli ✔ Combinare simboli ✔ In questo senso il computer opera sempre a livello sintattico Precorso di Informatica - A.A. 2007/2008 Livello semantico I “programmi” (che sono scritti da umani per svolgere compiti specifici) fanno sì che il computer manipoli l’informazione a livello sintattico in modo coerente con il livello semantico che a questa informazione è associato (dagli umani, che lo capiscono) Il complesso computer/programma diventa un po’ meno stupido: se il programma è scritto correttamente, è in grado di veicolare messaggi che sono coerenti con la semantica ad essi attribuita (sempre dagli umani) Precorso di Informatica - A.A. 2007/2008 Livello semantico Esempio: Se uso un motore di ricerca su Internet e digito “Università di Genova”, il programma che gestisce il motore non ha idea di cosa sia l’università e del fatto che Genova sia una città, ma mi restituirà comunque i documenti che trova che contengono la frase “Università di Genova”, che sono esattamente quel che voglio ottenere. Precorso di Informatica - A.A. 2007/2008 Livello cognitivo Il livello cognitivo invece: ✔ Riguarda la conoscenza veicolata dal messaggio e segue il livello semantico ✔ Prevede l'integrazione dell'informazione data dal messaggio nel contesto della conoscenza propria di chi lo riceve ✔ Implica l'idea di imparare (o dedurre) qualcosa di nuovo dai messaggi ricevuti ✔ Precorso di Informatica - A.A. 2007/2008 Livello cognitivo Il livello cognitivo è proprio degli esseri intelligenti Il trattamento automatico dell’informazione a questo livello viene studiato in alcune aree interdisciplinari che coinvolgono l’informatica: ✔ Intelligenza artificiale ✔ Information retrieval ✔ Machine learning ✔ Con i prodotti di queste discipline i computer possono effettuare un trattamento dell’informazione a livello cognitivo (possono “imparare”) anche se restano ancora lontani dall’essere “intelligenti” Precorso di Informatica - A.A. 2007/2008 Il concetto di informazione Riassumendo: ✔ Il computer è una macchina che sa manipolare sintatticamente simboli in un linguaggio proprio e lo sa fare in modo molto efficiente ✔ Ci occuperemo di rappresentazione e manipolazione dell’informazione a livello sintattico (quel che fanno i computer) ✔ Vedremo i programmi (algoritmi) come strumenti per istruire il computer a manipolare l’informazione sintatticamente in modo consistente con il livello semantico ✔ Rendere i computer in grado di “capire” e “imparare” è molto complicato e la scienza sta solo muovendo i primi passi in questa direzione Precorso di Informatica - A.A. 2007/2008 Definizione di algoritmo “Sequenza non ambigua di istruzioni elementari che permettono la soluzione di un problema in un numero finito di passi” Sequenza = esiste un ordine ben definito Non ambigua = esiste un'interpretazione certa Passi finiti = è definita una terminazione Ciascun algoritmo risolve un problema specifico e deve funzionare su qualunque istanza di tale problema. Precorso di Informatica - A.A. 2007/2008 Definizione di algoritmo Nel dettaglio ✔ Un algoritmo consta di una sequenza di istruzioni che spiegano come affrontare il problema in dipendenza dei dati ✔ I dati sono informazioni che definiscono l’istanza del problema e che saranno manipolate dall’algoritmo ✔ Cambiando i dati possono cambiare le azioni che l’algoritmo prevede, ma tutto resta consistente con l’idea generale di risolvere quel problema specifico ✔ Per essere eseguito un algoritmo deve essere codificato in un programma, che traduce le istruzioni in un linguaggio comprensibile al computer Precorso di Informatica - A.A. 2007/2008 Esempio di algoritmo Scattare una foto con una macchina digitale 1) Se la macchina è spenta, accenderla 2) Inquadrare il soggetto 3) Finché il campo inquadrato non va bene 1) Se è troppo largo, aumentare lo zoom 2) Se è troppo stretto, diminuire lo zoom 4) Scattare 5) Controllare la foto sul visore 6) Se è venuta male 1) Cancellarla 2) Tornare al punto 2 Precorso di Informatica - A.A. 2007/2008 Struttura classica di algoritmo Un algoritmo è costituito di una sequenza di passi Ci sono tre tipi di successione temporale dei passi: ✔ Sequenziale ✔ Condizionale ✔ Iterativa ✔ Le istruzioni condizionali ed iterative consentono di cambiare il flusso dell’algoritmo secondo quel che succede (ossia secondo la situazione creata dai dati su cui si sta lavorando) Precorso di Informatica - A.A. 2007/2008 Rappresentazione in pseudocodice Esempio: Una classe di dieci studenti partecipa a un test. Dati i voti di ciascuno studente, determinare il voto medio riportato dalla classe Poni il totale a zero Inizializza il contatore degli studenti a 1 while( il contatore è minore o uguale a 10){ Leggi il prossimo voto Aggiungi il voto al totale Aggiungi uno al contatore degli studenti } Il voto medio è il totale diviso 10 Stampa il voto medio Precorso di Informatica - A.A. 2007/2008 Diagramma di flusso Totale = 0 Studenti = 1 Studenti <= 10 ? Si No Leggi il prossimo voto Media = Totale / 10 Totale = Totale + Voto Studenti = Studenti + 1 Stampa Media Precorso di Informatica - A.A. 2007/2008 Linguaggio macchina • Rappresenta l’unico linguaggio direttamente eseguibile dall’elaboratore • Non necessita quindi di una “traduzione” ulteriore • La sua rappresentazione è la codifica binaria • Risulta di difficile comprensione da parte dell’utente, che solitamente programma in linguaggi di alto livello. Precorso di Informatica - A.A. 2007/2008 Linguaggio di alto livello • Ogni istruzione di questi linguaggi esprime una serie di azioni elementari • L’esecuzione di un programma scritto in linguaggio di alto livello necessita una traduzione in linguaggio macchina (compilazione) • Questi linguaggi astraggono dai dettagli legati all’architettura e sono di semplice comprensione. Precorso di Informatica - A.A. 2007/2008 Ricapitolando I computer sanno solo eseguire un numero molto ridotto di operazioni sintattiche su simboli di un dato linguaggio (i numeri binari, che vedremo) Per funzionare, un computer ha bisogno di: ✔ Un programma che lo istruisca su cosa fare ✔ Dati sui quali agire Abbiamo quindi bisogno di tradurre sia gli algoritmi che i dati in un linguaggio “comprensibile” al computer ✔ Parleremo di rappresentazione e codifica dell’informazione Precorso di Informatica - A.A. 2007/2008 Codifica dell'informazione Per rappresentare l’informazione in modo fruibile dai computer abbiamo bisogno di codici che la possano esprimere in modo semplice, sintetico e non ambiguo. Un codice (o un linguaggio) si basa su: ✔ Un alfabeto di simboli ✔ Una sintassi con sui comporre tali simboli in sequenze ✔ Una semantica da associare ai simboli o alle sequenze Nella codifica dei dati, la semantica resterà per lo più dominio degli umani che tali dati interpretano Nella codifica dei programmi, la semantica sarà interpretata dal computer in termini di operazioni elementari che questo è in grado di eseguire Precorso di Informatica - A.A. 2007/2008 Codifica dell'informazione I computer hanno un grosso limite: possono gestire solo rappresentazioni finite codificate attraverso un insieme finito di simboli Dato qualunque insieme finito di n simboli, questo può essere messo in relazione con i primi n numeri interi (partendo da zero) Quindi basta trovare un modo efficiente e opportuno (per il computer) di rappresentare i numeri interi e si può in questo modo codificare qualunque rappresentazione (finita) Precorso di Informatica - A.A. 2007/2008 Codifica decimale La codifica decimale la conosciamo bene: ✔ Alfabeto di dieci simboli (cifre): 0 1 2 3 4 5 6 7 8 9 ✔ Assumiamo per il momento di rappresentare numeri di non più di n cifre ✔ Ogni numero si rappresenta con una sequenza (stringa) di n cifre ✔ A ogni cifra si assegna una semantica (quella solita) ✔ Ogni cifra ha una posizione nella sequenza e ad ogni posizione di assegna una semantica: unità, decine, centinaia, migliaia, ecc… 105 104 103 102 101 100 Precorso di Informatica - A.A. 2007/2008 Codifica decimale La semantica di una stringa si ottiene moltiplicando ciascuna cifra per la potenza di dieci corrispondente al posto che occupa e sommando il tutto 0 0 0 1 2 7 105 104 103 102 101 100 ✔ 0x100000+0x10000+0x1000+1x100+2x10+7x1 = 127 ✔ Con questa regola il numero 127 si scriverà in effetti 000127 e il numero più grande che si riesce a rappresentare è il 999999 ✔ Normalmente non abbiamo questi limiti perché assumiamo l’esistenza di un simbolo separatore (ad esempio lo spazio) che ci indica dove inizia e dove finisce un numero Precorso di Informatica - A.A. 2007/2008 Codifica binaria Stesso meccanismo, ma: ✔ l’alfabeto è di soli due simboli: 0 1 ✔ La semantica assegnata alle posizioni in una stringa di cifre binarie corrisponde (da destra a sinistra) potenze successive di due: 1, 2, 4, 8, 16, … ✔ La semantica di una stringa si ottiene moltiplicando ciascuna cifra per la potenza di due corrispondente al posto che occupa e sommando il tutto 1 0 1 0 0 1 25 24 23 22 21 20 Precorso di Informatica - A.A. 2007/2008 Operazioni binarie Sottrazione Somma + 0 1 ­ 0 1 0 0 1 0 0 (1)1 1 1 (1)0 1 1 0 In parentesi è indicato il riporto 1 1 0 0 1 + 1 1 0 1 = ___________ 1 0 0 1 1 0 25 + 13 = ____ 38 In parentesi è indicato il prestito 1 1 0 0 1 ­ 1 1 0 1 = ________ 1 1 0 0 25 ­ 13 = ____ 12 Precorso di Informatica - A.A. 2007/2008 Esempio di sommatore I S + O a Ro a Ro b b Ri Σ c c Ri S I O 0 0 0 0 1 1 1 0 1 1 1 0 a b Ri c Ro 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Precorso di Informatica - A.A. 2007/2008 Numeri binari e computer Qualunque informazione rappresentata nel computer (sia dati che programmi) viene codificata in forma binaria Ragioni pratiche: ✔ I simboli 0 e 1 si fanno corrispondere a due livelli di tensione elettrica e l’elaborazione dell’informazione avviene attraverso commutazioni tra questi due livelli di tensione, operati da circuiti logici, fatti di un numero elevatissimo di transistor miniaturizzati, ciascuno molto semplice ✔ Conviene costruire molti circuiti molto semplici piuttosto che meno circuiti più complessi Precorso di Informatica - A.A. 2007/2008 Numeri binari e computer Ragioni filosofiche: ✔ La numerazione binaria è adeguata a rappresentare il ragionamento creativo (Leibnitz, XVII secolo): ogni cifra può rappresentare una decisione (cfr istruzioni condizionali) ✔ C’è corrispondenza tra la matematica in base 2 e la logica (Boole, XIX secolo), quindi possiamo formalizzare il ragionamento (logico) attraverso procedure algoritmiche (matematiche) ✔ Si può ottenere un modello del cervello umano rappresentando una rete di neuroni ciascuno dei quali può assumere due stati attivo/inattivo (McCulloch & Pitts, 1943) Precorso di Informatica - A.A. 2007/2008 Numeri binari e computer Una cifra binaria (rappresentata in un computer) si chiama genericamente bit (contrazione di binary digit = cifra binaria) Un gruppo di 8 bit si chiama byte Il byte è l’unità di misura usata per quantificare l’informazione rappresentata in un computer (ad esempio, la capacità della sua memoria) I multipli del byte si ottengono moltiplicandolo per potenze di 2 che si avvicinano a potenze di 10 Precorso di Informatica - A.A. 2007/2008 Numeri binari e computer Precorso di Informatica - A.A. 2007/2008 la memoria del computer Una memoria è un contenitore fatto di “scatolette” (celle) ciascuna delle quali può contenere un gruppetto di bit La capacità di una cella di memoria di solito è di qualche byte (8, 16, 32 o 64 bit) ✔ 8 bit = numeri da 0 a 255 ✔ 16 bit = numeri da 0 a 65.535 ✔ 32 bit = numeri da 0 a 4.294.967.295 ✔ 64 bit = numeri da 0 a circa 18,5 miliardi di miliardi Precorso di Informatica - A.A. 2007/2008 I dati I dati sono informazioni rappresentate secondo una certa codifica In ultima analisi, qualunque dato viene codificato attraverso numeri binari immagazzinati nelle celle di memoria del computer Per arrivare a questo possono essere però necessari diversi passaggi, che aumentano con la complessità strutturale dei dati da rappresentare Precorso di Informatica - A.A. 2007/2008 I dati Esempio: i numeri naturali ✔ Dobbiamo prima di tutto decidere quanti ne vogliamo rappresentare e quindi quanti bit servono per rappresentarne uno ✔ Quindi per esempio se abbiamo scelto n=4 possiamo rappresentare solo numeri tra 0 e 15 e la sequenza 0010100011110001 rappresenta nell’ordine i numeri 2 8 15 1 ✔ Se scegliessimo n=8 la stessa sequenza rappresenterebbe nell’ordine i numeri 40 e 241 l’informazione codificata nei dati si può recuperare solo se è nota la semantica del codice utilizzato per rappresentarli ! Precorso di Informatica - A.A. 2007/2008 I dati Esempio: il testo Vogliamo rappresentare sequenze composte da: ✔ lettere dell’alfabeto maiuscole e minuscole ✔ cifre decimali ✔ segni di punteggiatura ✔ parentesi varie ✔ simboli speciali ✔ spazi Servirebbero almeno 7bit per rappresentare ciascun simbolo Con questo metodo è stata ottenuta la tabella ASCII, largamente usata Precorso di Informatica - A.A. 2007/2008 Tabella ASCII Precorso di Informatica - A.A. 2007/2008 I dati composti I dati come numeri e caratteri di testi si dicono elementari perché abbiamo una regola semplice per definire come codificarli A partire da questi, si possono definire tipi di dato più complessi, ottenuto per composizione Per esempio, la scheda di un cliente in un archivio di contabilità potrà contenere diversi campi di diverso tipo: ✔ codice cliente (numero intero) ✔ nome e cognome (stringhe di testo) ✔ partita iva (numero intero) ✔ ecc… Precorso di Informatica - A.A. 2007/2008 Trasmissione dell'informazione Sorgente Messaggio Sistema di trasmissione Trasmettitore Rumore Canale di trasmissione Segnale Messaggio Ricevitore Destinazione Precorso di Informatica - A.A. 2007/2008 Errore di trasmissione • A causa del rumore, non è sempre possibile garantire che i dati ricevuti da un canale di trasmissione siano corretti. • Si verifica un errore di trasmissione quando il dato ricevuto in uscita dal canale è diverso dal dato immesso. – L’errore si definisce singolo, doppio, triplo ecc. in base al numero di bit errati. • Esistono appositi codici di rilevazione e correzione degli errori di trasmissione. Precorso di Informatica - A.A. 2007/2008 Rilevazione degli errori • Codice di parità: al dato da trasmettere si aggiunge un bit di parità, che indica se gli 1 del dato sono pari o dispari. – parità pari: es. a 01001110 si aggiunge 0 per ottenere 01001110 0 – parità dispari: es. a 01101110 si aggiunge 1 per ottenere 01001110 1 • In questo modo i dati ricevuti devono avere sempre un numero pari di 1, altrimenti sono errati. • Tuttavia questo codice permette di rilevare solo gli errori singoli o dispari. Precorso di Informatica - A.A. 2007/2008 Trasmissione dei segnali Segnale Canale Canale analogico digitale Modulazione Digitalizzazione analogico (AM,FM,PM) Segnale Modulazione digitale (modem) (campionamento e quantizzazione) Codifica Precorso di Informatica - A.A. 2007/2008 Modello concettuale di un calcolatore Elaborazione Interconnessione Comunicazione Memorizzazione Precorso di Informatica - A.A. 2007/2008 Schema di riferimento Schermo Tastiera Mouse Altre periferiche Interfaccia I/O Interfaccia I/O Interfaccia I/O Interfacce I/O Bus Dati Bus Indirizzi Bus di Controllo Memoria centrale CPU Precorso di Informatica - A.A. 2007/2008 Caratteristiche del collegamento a bus Vantaggi • Semplicità: unica linea di connessione implica costi ridotti • Estendibilità: aggiunta di nuovi dispositivi molto semplice • Standardizzabilità: regole precise di comunicazione tra dispositivi diversi Svantaggi • Lentezza: il bus è utilizzabile solo in mutua esclusione • Limitata capacità: al crescere del n. di dispositivi collegati • Sovraccarico del processore: la CPU funge infatti da master sul controllo del bus Precorso di Informatica - A.A. 2007/2008 Organizzazione “bus oriented” Dispositivi di I/O Unità di controllo Terminale Unità aritmetico logica (ALU) Registri Memoria centrale Stampante Unità disco BUS Precorso di Informatica - A.A. 2007/2008 Tipologie di istruzioni • Istruzioni aritmetico­logiche – somma, sottrazione, divisione, … – AND, OR, XOR, … – maggiore, minore, uguale, minore o uguale, … • Controllo del flusso delle istruzioni – flusso sequenziale – selezione semplice, a due vie, a n vie, ... – ciclo a condizione finale, iniziale, … • Trasferimento di informazione – trasferimento dati e istruzioni tra CPU e memoria – trasferimento dati e istruzioni tra CPU e dispositivi di I/O attraverso le relative interfacce Precorso di Informatica - A.A. 2007/2008 Elementi della CPU • Unità di controllo: legge le istruzioni dalla memoria e ne determina il tipo. • Unità aritmetico­logica: esegue le operazioni necessarie per eseguire le istruzioni. • Registri ­ caratteristiche: – memoria ad alta velocità, usata per risultati temporanei e informazioni di controllo – il valore massimo memorizzabile in un registro è determinato dalle dimensioni del registro – registri specifici sono ad esempio: program counter (PC), che indica l’indirizzo dell’istruzione successiva, l’instruction register (IR), che indica l’istruzione che si sta eseguendo, lo stack pointer (SP) ecc. Precorso di Informatica - A.A. 2007/2008 Esecuzione delle istruzioni • Prendi l’istruzione corrente (in linguaggio macchina) dalla memoria e mettila nel registro istruzioni IR (fetch); • Incrementa il program counter PC in modo che contenga l’indirizzo dell’istruzione successiva; • Determina di che tipo è l’istruzione corrente (decode); • Se l’istruzione usa una parola in memoria, determina dove si trova; • Se necessario carica la parola in un registro della CPU; • Esegui l’istruzione (execute); • Ripeti il ciclo. Precorso di Informatica - A.A. 2007/2008 Evoluzione delle CPU Frequenza Dimensione registri ­ bus dati (MHz) Numero transistor CPU Anno 8086 1978 4.77 ­ 12 8 ­ 16 29 000 80286 1982 8 ­ 16 16 ­ 16 134 000 80386 1986 16 ­ 33 32 ­ 32 275 000 80386 SX 1988 16 ­ 33 32 ­ 16 275 000 80486 1989 33 ­ 50 32 ­ 32 1 200 000 Pentium 1993 60 ­ 200 32 ­ 64 3 100 000 Pentium II 1997 233 ­ 400 32 ­ 64 7 500 000 Pentium III 1999 450 ­ 1133 32 ­ 64 24 000 000 Pentium 4 2000 1600 ­ 2000 32 ­ 64 42 000 000 Precorso di Informatica - A.A. 2007/2008 Legge di Moore “Il numero di transistor per cm2 raddoppia ogni 18 mesi” Ovvero di circa il 60% ogni anno. Precorso di Informatica - A.A. 2007/2008 Incrementare le prestazioni: il parallelismo • La frequenza di clock influenza direttamente il tempo di esecuzione delle istruzioni ed è limitata dalla tecnologia disponibile. • Il parallelismo permette di migliorare le prestazioni senza modificare la frequenza di clock. Esistono due forme di parallelismo: – parallelismo a livello delle istruzioni (architetture pipeline e superscalari) – parallelismo a livello di processori (multiprocessori e multicomputer). Precorso di Informatica - A.A. 2007/2008 Architettura pipeline Consiste nell’organizzare la CPU come una “catena di montaggio” • la CPU viene suddivisa in stadi, ognuno dedicato all’esecuzione di un compito specifico • l’esecuzione di una istruzione richiede il passaggio attraverso tutti o alcuni degli stadi della pipeline • in un certo istante, ogni stadio esegue la parte di istruzione di sua “competenza” • in un certo istante esistono diverse istruzioni contemporaneamente in esecuzione, una per stadio. Precorso di Informatica - A.A. 2007/2008 Esempio di pipeline a 5 stadi • S1. lettura istruzioni dalla memoria e loro caricamento in un apposito buffer • S2. decodifica dell’istruzione per determinarne il tipo e gli operandi richiesti • S3. individuazione e recupero degli operandi dai registri o dalla memoria • S4. esecuzione dell’istruzione • S5. invio dei risultati all’apposito registro. Precorso di Informatica - A.A. 2007/2008 Multiprocessori e multicalcolatori • Nei Multiprocessori diverse CPU condividono una memoria comune: – le CPU devono coordinarsi per accedere alla memoria – esistono diversi schemi di collegamento tra CPU e memoria; quello più semplice prevede ci vi sia un bus condiviso. • Nei Multicalcolatori si utilizzano più calcolatori, ognuno dei quali dotato di una memoria privata: – la comunicazione tra CPU è basata su scambio di messaggi – si è arrivati a costruire multicalcolatori con ~10000 CPU. Precorso di Informatica - A.A. 2007/2008 La memoria • Supporto alla CPU: deve fornire alla CPU dati ed istruzioni il più rapidamente possibile • Archivio: deve consentire di archiviare dati e programmi garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo • Esigenze: – velocità per il supporto alla CPU – non volatilità ed elevate dimensioni per l’archivio • Tecnologie: – elettronica: veloce ma costosa e volatile – magnetica e ottica: economica e non volatile, ma molto lenta. Precorso di Informatica - A.A. 2007/2008 Caratterizzazione di una memoria • Velocità: – tempo di accesso: quanto trascorre tra richiesta e relativa risposta – velocità di trasferimento: quanti byte/sec si possono trasferire • Volatilità: – cosa succede quando la memoria non è alimentata? – per quanto tempo i dati vi rimangono immagazzinati? • Capacità: quanti byte può contenere? • Costo per bit • Modalità di accesso: – diretta (o casuale): il tempo di accesso è indipendente dalla posizione – sequenziale: il tempo di accesso dipende dalla posizione – mista – associativa: indicato il dato, la memoria risponde indicando l’eventuale posizione che il dato occupa. Precorso di Informatica - A.A. 2007/2008 Memoria centrale • Mantiene al proprio interno dati e istruzioni dei programmi in esecuzione. • È una memoria ad accesso “casuale” (Random Access Memory) • Tecnologia elettronica (veloce ma volatile e costosa) • Due diversi tipi di memoria elettronica: – R.O.M. (Read Only Memory): permanente e di sola lettura (serve ad esempio a memorizzare le istruzioni da effettuare all’accensione del calcolatore (bootstrap)) – Flash: permanente e riscrivibile (USB, memorie per piccoli apparecchi elettronici quali palmari, cellulari, fotocamere, ...). Precorso di Informatica - A.A. 2007/2008 Il principio di località: la cache • Località spaziale: “quando si accede all’indirizzo A, è molto probabile che gli accessi successivi richiedano celle vicine ad A.” • Località temporale: “quando si accede all’indirizzo A, è molto probabile che gli accessi richiedano di nuovo la cella A.” • Si utilizza quindi una memoria che consenta accessi estremamente veloci su blocchi utilizzati di recente. Questa memoria è la cache: veloce ma molto costosa, quindi piccola. Precorso di Informatica - A.A. 2007/2008 Gerarchia di memorie CPU Dimensioni Registri Velocità Costo/bit min max max max min min Cache Memoria centrale Dischi magnetici / ottici Nastri magnetici Precorso di Informatica - A.A. 2007/2008 Dischi magnetici • Sono piatti, generalmente di alluminio, ricoperti di materiale ferromagnetico • Fattore di forma (diametro) – sempre più piccolo, consente velocità di rotazione maggiori – 3.5 pollici per sistemi desktop e fino ad 1 pollice per i portatili. • Testina (strumento di lettura/scrittura) – è sospesa appena sopra la superficie magnetica – scrittura: il passaggio di corrente positiva o negativa attraverso la testina magnetizza la superficie – lettura: il passaggio sopra un’area magnetizzata induce una corrente positiva o negativa nella testina. Precorso di Informatica - A.A. 2007/2008 Tracce e settori • Traccia (track): sequenza circolare di bit scritta mentre il disco compie una rotazione completa. Tra una traccia e l’altra c’è un piccolo spazio separatore (gap). • Settore (sector): parte di una traccia corrispondente ad un settore circolare del disco – un settore contiene 512 byte di dati, preceduti da un preambolo e seguiti da un codice di correzione degli errori • Altre sottostrutture sono i cluster e i blocchi. • Formattazione: operazione che predispone tracce e settori per la lettura/scrittura – circa il 15% dello spazio si perde in gap, preamboli e codici di correzione errori. Precorso di Informatica - A.A. 2007/2008 Tracce e settori Traccia Settore Precorso di Informatica - A.A. 2007/2008 Hard disk L’Hard Disk è composto da più superfici (piatti) e da una testina di lettura per superficie. Precorso di Informatica - A.A. 2007/2008 Floppy disk • Funzioni: distribuzione del software su larga scala (con l’avvento dei PC) e archiviazione dati • Struttura analoga a quella di un disco magnetico – il disco si ferma quando non è operativo – l’avvio della rotazione comporta un ritardo di ½ secondo • Caratteristiche tipiche di un floppy da 3.5’’: – – – – capacità: 1.44 MB tracce × settori: 80 × 18 giri per minuto (RPM): 300 velocità di trasferimento: 500 Kbps. Precorso di Informatica - A.A. 2007/2008 Dischi ottici • Lettura ottica basata sulla riflessione (o sulla mancata riflessione) di un raggio laser sul supporto • Densità di registrazione più alta che nei dischi magnetici • Creati in origine per registrare programmi televisivi, successivamente applicati ai calcolatori. • Tipologie: – CD­ROM, CD­R, CD­RW, DVD, DVD­RAM, ... Precorso di Informatica - A.A. 2007/2008 Compact Disk (CD) • Supporto proposto nel 1980 da Philips e Sony per sostituire i dischi musicali in vinile • Standard di fabbricazione IS­10149: – diametro: 12 cm; spessore: 1.2 mm e foro di 15 mm al centro – produzione: • laser ad alta potenza che brucia fori di 0.8 μm in un disco master (le depressioni sono dette pit e le aree tra i pit sono dette land) • dal master si ricava uno stampo • nello stampo viene iniettata una resina liquida di policarbonato che forma un CD con la stessa sequenza di pit del master • sul policarbonato viene depositato uno strato molto sottile di alluminio riflettente • copertura con strato protettivo e poi con una etichetta. Precorso di Informatica - A.A. 2007/2008 Lettura dei CD • Un laser a bassa potenza emette una luce infrarossa sul disco • I pit appaiono come cunette su una superficie piatta • I passaggi pit/land o land/pit indicano un 1, e la loro assenza indica uno 0 • Pit e land sono impressi in una spirale unica che compie 22.188 giri attorno al disco • La lettura viene effettuata a velocità costante (120 cm/sec), molto meno della velocità di lettura degli hard disk. Precorso di Informatica - A.A. 2007/2008 Pit e Land su CD Passaggio da pit a land Passaggio da land a pit Precorso di Informatica - A.A. 2007/2008 CD-Rom • Nel 1984 Philips e Sony definiscono uno standard per i CD­ROM (Compact Disk­Read Only Memory) in cui si definiva la struttura ed il formato da utilizzare per memorizzare dati digitali invece che “musica” • Rispetto ai CD audio i CD­ROM hanno: – stesse dimensioni – compatibilità dell’ottica e della meccanica – stesso processo produttivo – migliore capacità di correggere gli errori • Nel 1986 si definisce la possibilità di mischiare audio, video e dati nello stesso settore. Precorso di Informatica - A.A. 2007/2008 Velocità e capacità dei CD-Rom • Velocità base (1x): – 75 settori/sec – 153.6 KByte/sec – velocità superiori (n x) crescono in proporzione • Capacità – 74 minuti di musica ~ 640 MB – 80 minuti di musica ~ 700 MB • Tempo di accesso – alcune centinaia di millisecondi. Precorso di Informatica - A.A. 2007/2008 CD Recordable (CD-R) • Sono CD che vengono scritti una sola volta (WORM) – si utilizzano per backup, produzioni in piccole serie, generazione di master, … – hanno le stesse dimensioni dei CD­ROM • La riflettività di pit e land è simulata – c’è uno strato di colore tra il policarbonato e lo strato riflettente: nello stato iniziale questo strato è trasparente – per scrivere, un laser ad alta potenza colpisce un punto nello strato della superficie colorata, rompe un legame chimico e crea una macchia scura. Precorso di Informatica - A.A. 2007/2008 CD ReWritable (CD-RW) • Dischi ottici riscrivibili • Lo strato di registrazione utilizza una lega di argento, indio, ammonio e tellurio che ha due stati stabili: – lo stato cristallino, con elevata capacità di riflessione (land) – lo stato amorfo, con ridotta capacità di riflessione (pit) • Si usa un laser con tre potenze diverse: – alta potenza: il laser scioglie la lega e un raffreddamento rapido la porta dallo stato cristallino a quello amorfo – media potenza: la lega si scioglie e si raffredda tornando nel suo stato cristallino – bassa potenza: si rileva solo lo stato del materiale. Precorso di Informatica - A.A. 2007/2008 Digital Versatile Disk (DVD) • Pit più piccoli, spirale più serrata, utilizzo del laser rosso • Caratteristiche dei DVD: – capacità di 4.7 GB = 133 minuti di video ad alta risoluzione, con colonna sonora in 8 lingue e sottotitoli in 32 lingue • Diversi formati di DVD: – lato unico strato unico (4.7 GB) – lato unico strato doppio (8.5 GB) – due lati strato unico (9.4 GB) – due lati strato doppio (17 GB) Precorso di Informatica - A.A. 2007/2008 Nastri magnetici e unità DAT Inter­record gap Record Traccia 1 Traccia 9 • Capacità di diversi GB • Accesso sequenziale ai dati • Molto lenti • Utili solo per operazioni di backup Precorso di Informatica - A.A. 2007/2008 Architettura della macchina di Von Neumann Unità di ingresso Memoria ALU Programmi e dati Unità di controllo CPU Unità di uscita Risultati CPU: Central Processing Unit Unità centrale I microprocessori attuali sono dispositivi elettronici in grado di implementare all'interno di un unico circuito integrato le funzioni di un'intera CPU Precorso di Informatica - A.A. 2007/2008 Unità centrale A D D R E S S B U S CPU ALU Unità di controllo MBR MAR Memoria ROM MBR MAR Memoria RAM D A T A B U S C O N T R O L B U S Precorso di Informatica - A.A. 2007/2008 Microprocessori e bus • I microprocessori sono dispositivi elettronici che implementano in un unico circuito integrato le funzioni di una intera CPU. I microprocessori attuali hanno bus dati a 8, 16, 32, 64 bit. • Il bus dati (data bus) esprime la capacità di elaborazione del processore (quanti bit possono essere elaborati in parallelo) • Il bus indirizzi (address bus) esprime la capacità di memorizzazione del processore (2m celle di memoria, se m è il numero dei bit del bus) • La capacità di indirizzamento indica il numero di celle diverse cui si può accedere: 210 Byte = 1024 byte = 1 KByte 220 Byte = 1048576 byte = 1 Mbyte 230 Byte = 1073741824 byte = 1 GByte Precorso di Informatica - A.A. 2007/2008 Un esempio • Variazione nella precisione di misura di 1 Kg. in un sistema di pesatura basato su microprocessori con diversa dimensione del bus dati Numero di bit bus dati 4 8 16 Dati rappresentabili 24=16 28= 256 216= 65536 Precisione relativa 6.25% ~3.9 ‰ ~0.015‰ Precisione max. 62.5 gr ~3.9 gr ~0.015 gr Precorso di Informatica - A.A. 2007/2008 Osservazioni • I microprocessori a 8 bit di dato hanno tipicamente bus indirizzi a 16 bit con capacità di indirizzamento di 64 KB • I microprocessori a 16 bit di dato hanno tipicamente bus indirizzi a 20­24 bit con capacità di indirizzamento di 1­16 MB • I microprocessori a 64 bit di dato hanno bus indirizzi a 64 bit con capacità di indirizzamento fino a circa 1019 byte • I microprocessori Single Chip riuniscono in un unico circuito integrato più di uno dei blocchi costituenti un microcalcolatore (eventualmente tutti). Precorso di Informatica - A.A. 2007/2008 Architettura di una CPU BUS DATI ESTERNO BUS DATI INTERNO ACC SP PC R e g 0 …. R e g N F L A G ALU C D I O E N N C S T O T. R. D. R E BUS INDIRIZZI INTERNO BUS IND. ESTERNO G. Precorso di Informatica - A.A. 2007/2008 Ciclo di esecuzione delle istruzioni •FETCH (prelevamento dell’istruzione) •DECODIFICA •ESECUZIONE La memoria (ROM e RAM) contiene il programma e i dati sui quali opera la CPU. Il Program Counter (PC) contiene l’indirizzo della cella di memoria con la prossima istruzione da eseguire. Codice Operativo Operando 1 Operando 2 FORMATO DELLE ISTRUZIONI Campo che caratterizza le varie istruzioni Gli operandi possono essere 0, 1, 2 Precorso di Informatica - A.A. 2007/2008 Sequenza delle operazioni elementari •FETCH: vengono letti i campi che costituiscono l’istruzione: 1) (PC)→MAR 2) ((MAR)) →MBR; (PC)+1 →PC 3) (MBR) →IR I passi 1, 2, 3 permettono di caricare in IR (instruction register) il codice operativo (OP Code) dell’istruzione corrente. Passi analoghi permettono di caricare in opportuni registri della CPU gli operandi presenti nell’istruzione. In tal caso, nel passo 3 la destinazione del dato proveniente dalla memoria non è più IR, ma opportuni registri. •DECODE: viene identificata l’istruzione corrente sulla base dell’OP Code •EXECUTE: è diversa a seconda del tipo di istruzione. In pratica consiste nell’inviare comandi e dati alle unità interessate. •P.S. MAR= Memory Address Register; MBR: Memory Buffer Register •Notazione: (X) →Y significa: “Il contenuto della cella puntata dal registro X viene trasferito nel registro Y Precorso di Informatica - A.A. 2007/2008 Formato delle istruzioni • Le istruzioni sono codificate da stringhe di bit. • Una volta caricata nell’IR, un’istruzione deve essere decodificata ed eseguita. A tal scopo l’unità di controllo deve conoscere: • codice operativo • sorgente: dati su cui operare • destinatario: dove porre il risultato e, se sorgente e destinazione sono in memoria, la modalità di indirizzamento Codice Operativo Sorgente Destinazione Mod. indirizzamento Esempio 1: Somma tra il contenuto del registro R2 e il contenuto dell’accumulatore. Il risultato va nell’accumulatore FORMATO codice operativo FETCH come in precedenza ESECUZIONE (R2)+(ACC)→ACC Precorso di Informatica - A.A. 2007/2008 Esempio di esecuzione di istruzioni Esempio 2: somma tra il contenuto della cella di memoria il cui indirizzo è specificato nell’istruzione ed il contenuto dell’accumulatore; il risultato va nell’accumulatore •FORMATO: codice operativo+operando •FETCH: 1) (PC)→MAR 4) (PC)→MAR 2) ((MAR)) →MBR; (PC)+1 →PC 5) ((MAR)) →MBR; (PC)+1 →PC 3) (MBR) →IR 6) (MBR) →Rn •EXECUTE: 1) (Rn) →MAR 3) (MBR) →Rn 2) ((MAR)) →MBR 4) (Rn)+(ACC) →ACC Precorso di Informatica - A.A. 2007/2008 Esempio di esecuzione di istruzioni Esempio 3: saltare all’istruzione che è memorizzata nella cella il cui indirizzo è specificato all’interno dell’istruzione corrente: •FORMATO: codice operativo+operando •FETCH: 1) (PC)→MAR 4) (PC)→MAR 2) ((MAR)) →MBR; (PC)+1 →PC 5) ((MAR)) →MBR; (PC)+1 →PC 3) (MBR) →IR 6) (MBR) →Rn •EXECUTE: 1) (Rn) →PC Precorso di Informatica - A.A. 2007/2008 I sistemi operativi • I sistemi operativi permettono di gestire le risorse efficientemente – tengono traccia di chi accede alle risorse – accettano e soddisfano le richieste di uso di risorse – risolvono i conflitti tra più risorse • Possono essere visti come una macchina di calcolo estesa – rappresentano la base su cui è possibile scrivere programmi applicativi in modo più semplice che utilizzando direttamente l’HW. Precorso di Informatica - A.A. 2007/2008 Vantaggi dei sistemi operativi • I sistemi operativi permettono definire uno standard per interfacciare i dispositivi fisici, per cui: – lo sviluppo dei programmi risulti più semplice ed indipendente dal calcolatore che si utilizza – l’aggiornamento del SW di base e dell’HW sia trasparente all’utente ed alle applicazioni. Precorso di Informatica - A.A. 2007/2008 Il SO come intermediario tra HW e SW HW HW SW SO Software = SO + applicazioni SW SW (appl) Precorso di Informatica - A.A. 2007/2008 Composizione di un sistema operativo Utente Interprete comandi Gestione periferiche Gestione SW applicativo memoria Gestione processore HW File system Sistema Operativo Precorso di Informatica - A.A. 2007/2008 Processi e programmi • Un programma è una entità statica composta dal codice eseguibile del processore. • Un processo è una entità dinamica relativa al programma in esecuzione, ed è composto da: – codice del programma – dati necessari all’esecuzione del programma – stato dell’esecuzione Precorso di Informatica - A.A. 2007/2008 Esecuzione di un processo Operazione I/O completata Processo Processo attivo in attesa Richiesta di operazione I/O Ogni operazione di I/O consiste in una chiamata al SO e successiva sospensione del processo utente per attendere l’esecuzione dell’operazione di I/O Precorso di Informatica - A.A. 2007/2008 La multiprogrammazione Progr. 1 Progr. 2 Progr. 3 tempo Attesa per operazioni di I/O Elaborazione Precorso di Informatica - A.A. 2007/2008 Time sharing • È possibile condividere la CPU tra più processi interattivi, suddividendo il tempo di esecuzione del processore tra più utenti • Ogni processo utilizza periodicamente un intervallo di tempo prestabilito (quanto) • Durante il quanto di esecuzione di un processo, tutti gli altri processi sono sospesi • Al termine di ogni quanto (context switch), il processo in esecuzione viene sospeso e si assegna la CPU ad un altro processo. Precorso di Informatica - A.A. 2007/2008 Processi pronti ed in attesa • Quando un processo non è in esecuzione può assumere due diversi stati: – attesa: il processo è sospeso finché un determinato evento esterno non si verifica (i.e., I/O) – pronto: il processo è sospeso finché non gli viene concesso l’uso della CPU – in ogni instante di tempo vi è un solo processo attivo, e tutti gli altri sono o in attesa o pronti, e memorizzati in apposite code che ne indicano l’ordine di esecuzione. Precorso di Informatica - A.A. 2007/2008 Diagramma di esecuzione Selezione primo processo pronto e sua esecuzione Inizio esecuzione (accodamento) Coda Processo processi Termine elaborazione attivo pronti Termine quanto di tempo Completamento operazione I/O Coda processi in attesa Richiesta operazione I/O Precorso di Informatica - A.A. 2007/2008 Round robin Richiesta I/O Fine utilizzo I/O Proc. 1 E P P E A A A P P E Proc. 2 P E P P E P E E P P Proc. 3 P P E P P E P P E P tempo quanto Context switch Precorso di Informatica - A.A. 2007/2008 Macchina astratta del kernel processo 1 CPU virtuale processo n Periferiche Interfacce I/O CPU virtuale Bus Dati Bus Indirizzi Bus di Controllo Memoria di lavoro Precorso di Informatica - A.A. 2007/2008 Gestione della memoria • Ogni processo necessita di una certa quantità di memoria (ad esempio per immagazzinare il codice ed i dati utilizzati) • Spesso l’effettiva memoria fisica non è sufficiente a contenere tutto lo spazio richiesto per n processi • Il gestore della memoria risolve i conflitti garantendo uno spazio di memoria virtuale anche superiore alla capacità della memoria fisica. Precorso di Informatica - A.A. 2007/2008 Swapping • Nonostante le diverse politiche di gestione della memoria, spesso le memoria centrale non è sufficientemente estesa per contenere tutti i programmi concorrenti • Una soluzione consiste nel trasferire il contenuto di un’area di memoria centrale in un’area della memoria di massa (area di swap). • La memoria di massa è molto più lenta della memoria centrale, quindi lo swap è utile per processi in attesa ma non per processi pronti. Precorso di Informatica - A.A. 2007/2008 Paginazione • Un miglioramento nell’efficienza dell’uso della memoria si ha grazie alla paginazione, ovvero la suddivisione della memoria in sezioni di dimensioni fisse (pagine) • Si basa sul principio di località spaziale e temporale: si possono utilizzare zone di memoria non fisicamente contigue e tenere in memoria centrale solo la porzione di codice che si sta eseguendo. Precorso di Informatica - A.A. 2007/2008 Pagine logiche e pagine fisiche Memoria centrale (spazio fisico) pagina 0 Spazio logico Spazio logico pagina 1 processo 2 processo 1 pagina 2 pagina 0 pagina 0 pagina 3 pagina 1 pagina 1 pagina 4 pagina 2 pagina 5 pagina 6 pagina 7 pagina 3 Precorso di Informatica - A.A. 2007/2008 Macchina astratta della memoria Processo 1 Processo n Memoria logica Memoria logica Periferiche Memoria di massa CPU virtuale CPU virtuale Interfacce I/O Interfaccia I/O Bus Dati Bus Indirizzi Bus di Controllo Precorso di Informatica - A.A. 2007/2008 Gestore delle periferiche • Il gestore delle periferiche permette la comunicazione tra il calcolatore e tutti i dispositivi esterni ad esso collegati (video, tastiera, stampanti, mouse, ecc.); inoltre: – garantisce un comportamento asincrono dell’ambiente rispetto al calcolatore e gestisce di accessi contemporanei da parte di più periferiche – nasconde ai processi il numero (spesso limitato) di risorse HW disponibili (i.e. più stampe su un’unica stampante) – non permette ai processi di distinguere tra differenti risorse dello stesso tipo. Precorso di Informatica - A.A. 2007/2008 Sistemi Plug&Play • Nelle versioni più recenti dei sistemi operativi, la necessità di configurare “manualmente” ogni periferica tramite appositi driver viene sostituita da funzioni Plug&Play: – ad ogni accensione del calcolatore il SO scandisce tutte le risorse HW rilevando quelle non ancora configurate – ogni periferica comunica al SO i driver di cui necessita ed il SO installa gli appositi driver senza l’intervento dell’utente. Precorso di Informatica - A.A. 2007/2008 Lo spooling • La tecnica di spooling è utilizzata dai driver per rendere virtuali più periferiche non condivisibili; ad esempio, nel caso di una stampante e più processi che intendono stampare: – ogni processo invia il file da stampare al driver della stampante, che lo mette in coda nella directory di spooling – i file in coda vengono stampati secondo l’ordine di arrivo – a directory di spooling vuota il driver rimane in memoria in attesa di una nuova richiesta di stampa. • In questo modo i processi evitano lunghe attese ed operano indipendentemente dalla periferica. Precorso di Informatica - A.A. 2007/2008 Macchina astratta dell I/O Memoria logica I/O virtuale Memoria logica I/O virtuale Memoria di massa CPU virtuale I/O virtuale CPU virtuale I/O virtuale Interfaccia I/O Processo 1 Processo n Bus Dati Bus Indirizzi Bus di Controllo Precorso di Informatica - A.A. 2007/2008 Evoluzione dei sistemi operativi • I primi calcolatori non prevedevano l’uso di sistemi operativi, ed erano direttamente programmati in linguaggio macchina. • Con l’aumento della complessità degli elaboratori e del codice da implementare si è reso necessario introdurre un intermediario tra HW e SW che facilitasse la gestione del lavoro. • Uno dei primi SO fu OS/360. • Con l’introduzione della multiprogrammazione furono progettati sistemi come CTSS e MULTICS, che spianarono la strada alla nascita di UNIX uno dei più popolari ed efficienti sistemi operativi. Precorso di Informatica - A.A. 2007/2008 Evoluzione dei sistemi operativi • In seguito nacque l’MS­DOS, fin troppo “ispirato” a UNIX, ma particolarmente semplice ed adatto ai personal computer. • Una nota particolare merita Linux, un discendente diretto di UNIX ed apparso per la prima volta nel 1991. • Uno dei suoi pregi è di essere completamente gratuito ed “open source”, ovvero qualsiasi utente può modificarne il codice sorgente. • Tuttavia i sistemi che hanno registrato il maggior successo negli ultimi anni sono Macintosh e Windows, grazie alla loro estrema semplicità e chiarezza dell’interfaccia grafica. Precorso di Informatica - A.A. 2007/2008 File System È un meccanismo per memorizzare e accedere a dati e programmi Le informazioni (dati/programmi) sono codificate in sequenze di byte, e sono raccolte in file. I file possono avere varie semantiche, a seconda del tipo di dati che contengono. La semantica si capisce (nella maggior parte dei casi) guardando l’estensione del file: .txt .jpg .pdf .exe .c .gif .ps .xls .html .mp3 .doc Precorso di Informatica - A.A. 2007/2008 Interfaccia testuale al File System Precorso di Informatica - A.A. 2007/2008 Interfaccia grafica al File System Precorso di Informatica - A.A. 2007/2008 File System I file sono raggruppati in directory, che possono contenere file o altre directory. Si forma così una struttura gerarchica ad albero, le cui foglie sono i file e le directory vuote / floppy bin usr lib games home mario Prova.c Precorso di Informatica - A.A. 2007/2008 Pathname Ciascun file ha un pathname che lo identifica in modo univoco all’interno del file system. Un pathname e’ una sequenza di nomi di directory che conducono da una directory di partenza ad un certo file, attraverso l’albero del file system. / usr bin games lib home mario Prova.c Pathname assoluto: /home/mario/Prova.c Pathname relativo: Prova.c Precorso di Informatica - A.A. 2007/2008 Home Directory Ogni utente del sistema Linux ha associata una directory personale, dove può raccogliere e organizzare i propri file. La directory personale si chiama home directory e si inserisce nel file system sotto la directory /home/ Il nome della propria home directory corrisponde alla propria login: / usr lib anna home luigi mario Precorso di Informatica - A.A. 2007/2008 Directory corrente Quando un utente si collega al sistema, il s.o. gli fa guardare il file system partendo dalla sua home directory. All’inizio la directory corrente è la vostra home dir / home lib mario Prova.c con more Prova.c Il file è cercato nella directory corrente Per leggere un file si usano i comandi more <pathname> less <pathname> Prova.c altrimenti si deve specificare il pathname assoluto, cioè more /lib/Prova.c Precorso di Informatica - A.A. 2007/2008 Navigare nel File System Per cambiare la directory corrente e navigare nel file system cd <pathname> I pathname possono contenere dei simboli speciali: denota la directory corrente . .. denota la directory soprastante / cd ../../usr usr bin lib games more ../home/mario/Prova.c cd ./bin corrisponde a cd bin home mario Prova.c Precorso di Informatica - A.A. 2007/2008 Navigare nel File System Comandi per visitare il file system: • cd <pathname> sposta la directory corrente • pwd ritorna il path assoluto della directory corrente • ls [<pathname>] visualizza il contenuto della directory. Prova le opzioni –l e –a • more <pathname> visualizza il contenuto del file • cp <path1><path2> copia il primo file nel secondo (path2 viene sovrascritto) Precorso di Informatica - A.A. 2007/2008 Shell consente all’utente di interagire con il sistema operativo (ne esegue i comandi) è un processo eseguito automaticamente ogni volta che l’utente apre una sessione di lavoro Esistono diversi tipi di shell: shell grafica: basata su mouse, finestre, menu. I comandi si lanciano cliccando (e.g. Windows, KDE, …) shell testuale: comandi inseriti da tastiera in forma testuale. Precorso di Informatica - A.A. 2007/2008 Comandi di base: ls claudio@silver ~/prova $ ls ­l total 2 drwxr­xr­x+ 2 claudio Nessuno 0 Sep 9 12:34 programmi ­rw­r­­r­­ 1 claudio Nessuno 354 Sep 9 12:34 prova.txt ­rw­r­­r­­ 1 claudio Nessuno 112 Sep 9 12:34 prova2.txt claudio@silver ~/prova $ ls ­la total 2 drwxr­xr­x+ 3 claudio Nessuno 0 Sep 9 12:34 . drwxrwxrwx+ 12 claudio Nessuno 0 Sep 11 22:37 .. drwxr­xr­x+ 2 claudio Nessuno 0 Sep 9 12:34 programmi ­rw­r­­r­­ 1 claudio Nessuno 354 Sep 9 12:34 prova.txt ­rw­r­­r­­ 1 claudio Nessuno 112 Sep 9 12:34 prova2.txt Precorso di Informatica - A.A. 2007/2008 Comandi di base: pwd e cd pwd visualizza la directory corrente $ pwd /home/claudio/prova cd <pathname> cambia directory corrente claudio@silver ~ $ cd prova claudio@silver ~/prova $ Precorso di Informatica - A.A. 2007/2008 Comandi di base: mkdir mkdir <pathname> crea directory claudio@silver ~ $ mkdir prova claudio@silver ~ $ mkdir /home/claudio/prova/programmi mkdir –p <pathname> crea tutte le directory del percorso specificato claudio@silver ~/prova $ mkdir –p /home/claudio/prova/programmi Precorso di Informatica - A.A. 2007/2008 Comandi di base: rmdir rmdir <pathname> elimina directory (se vuota) claudio@silver ~ $ rmdir /home/claudio/prova/programmi claudio@silver ~ $ rmdir prova rmdir –p <pathname> elimina tutte le directory del percorso specificato claudio@silver ~/prova $ rmdir –p /home/claudio/prova/programmi Precorso di Informatica - A.A. 2007/2008 Comandi di base: cat ● cat <pathname> visualizza contenuto di un file claudio@silver ~/prova $ cat prova.txt EPSG:4123 ­ KKJ EPSG:4131 ­ Indian 1960 EPSG:4201 ­ Adindan EPSG:4202 ­ AGD66 EPSG:4203 ­ AGD84 EPSG:4204 ­ Ain el Abd EPSG:4205 ­ Afgooye EPSG:4209 ­ Arc 1950 EPSG:4210 ­ Arc 1960 EPSG:4216 ­ Bermuda 1957 Precorso di Informatica - A.A. 2007/2008 Comandi di base: less less <pathname> ● ● ● ● visualizza contenuto di un file a tutto schermo Tasto Q per uscire Tasti freccia, PgUp, PgDn, Invio, Spazio per spostarsi Tasto / per ricercare una parola Tasto H per visualizzare l’elenco dei comandi Precorso di Informatica - A.A. 2007/2008 Comandi di base: cp cp <pathname1> <pathname2> copia il contenuto del primo file nel secondo file ● Se pathname2 è una directory, il file mantiene il nome che aveva in pathname1. Es: claudio@silver ~/prova/programmi $ cp ­v ../prova.txt . `../prova.txt' ­> `./prova.txt' . .. Rappresenta la directory corrente Rappresenta la directory che contiene quella corrente Precorso di Informatica - A.A. 2007/2008 Comandi di base: echo echo <messaggio> visualizza messaggio claudio@silver ~/prova/programmi $ echo testo messaggio testo messaggio claudio@silver ~/prova/programmi $ echo “testo & messaggio” testo & messaggio $ echo testo \& messaggio testo messaggio Precorso di Informatica - A.A. 2007/2008 Comandi di base: redirezione output comando > filename scrive l’output del comando nel file specificato (eliminandolo) claudio@silver ~/prova/programmi $ ls .. > lista.txt claudio@silver ~/prova/programmi $ cat lista.txt Documenti programmi prova.txt prova2.txt Precorso di Informatica - A.A. 2007/2008 Comandi di base: redirezione output comando >> filename scrive l’output del comando nel file specificato aggiungendolo alla fine claudio@silver ~/prova/programmi $ ls .. > lista.txt claudio@silver ~/prova/programmi $ ls .. >> lista.txt claudio@silver ~/prova/programmi $ cat lista.txt prova.txt prova2.txt prova.txt prova2.txt Precorso di Informatica - A.A. 2007/2008 Comandi di base: rm rm <pathname> elimina un file claudio@silver ~/prova/programmi $ rm messaggio.txt claudio@silver ~/prova/programmi $ rm ­v messaggio.txt removed `messaggio.txt' Precorso di Informatica - A.A. 2007/2008 Comandi di base: grep grep “stringa” pathname visualizza le linee dei file che contengono la stringa specificata claudio@silver ~/prova/programmi $ grep main *c prova.c: int main(void) { grep ­­help visualizza la lista delle opzioni Precorso di Informatica - A.A. 2007/2008 Accesso ai file Ogni file ha un proprietario: l’utente che lo ha creato. Ogni utente appartiene ad uno (o più) gruppi. Per ogni file e directory è indicata una modalità di accesso, che specifica quali sono le operazioni che e’ consentito compiere su quel file/dir. Precorso di Informatica - A.A. 2007/2008 Accesso ai file Le modalità di accesso specificano quali sono le operazioni che e’ consentito compiere su quel file/dir. Chi può accedere ad un file/directory? •Il proprietario •Un utente del gruppo a cui appartiene il file/dir •Tutti gli altri utenti Quali operazioni sono possibili su un file/dir? •Lettura del file o del nome della directory •Scrittura e cancellazione del file/directory •Esecuzione del file o accesso alla directory Precorso di Informatica - A.A. 2007/2008 Accesso ai file ls ­l visualizza tutti gli accessi consentiti ai file diritti propr gruppo dim data creazione nome d rwx rwx r­x 3 mario stud 4096 ago 18 19:44 Desktop/ d rwx r­x r­x 2 mario stud 4096 ago 18 17:09 Docs/ d rwx ­­­ ­­­ 8 mario stud 4096 giu 23 11:00 private/ d rwx r­x r­x 6 mario stud 4096 mag 13 11:10 lib/ d rwx ­­­ ­­­ 7 mario stud 4096 apr 29 11:24 Mail/ d rwx r­x r­x 2 mario stud 4096 ago 17 19:22 folder/ ­ rwx r­x r­x 1 mario stud 11783 giu 18 22:16 prova ­ rw­ r­­ r­­ 1 mario stud 1064 giu 18 22:16 prova.c Diritti di read-write-exec di utente generico Diritti di read-write-exec di utente del gruppo Diritti di read-write-exec del proprietario Precorso di Informatica - A.A. 2007/2008 Comandi di base: chmod chmod cambia i permessi di accesso ad un file chmod ­­help visualizza lista opzioni man chmod help completo Formato permessi: u,g,o,a : utente, gruppo, altri, tutti +,­ : consenti, vieta r,w,x : lettura, scrittura, esecuzione Precorso di Informatica - A.A. 2007/2008 Evoluzione dei sistemi informatici Precorso di Informatica - A.A. 2007/2008 Tassonomia delle reti (per estensione) Rete locale Rete metropolitana Rete geografica Precorso di Informatica - A.A. 2007/2008 Tassonomia delle reti (per estensione) Rete locale (LAN - Local Area Network) ● ● collega due o piu’ computer in un area non piu’ grande di un palazzo. Collega i computer di un laboratorio, gruppo di lavoro, ufficio, ditta. Rete metropolitana (Metropolitan Area Network) ● ● concettualmente simile ad una rete locale collega computer di una singola organizzazione nella stessa area urbana (es.: banca con filiali cittadine). Precorso di Informatica - A.A. 2007/2008 Tassonomia delle reti (per estensione) Rete geografica (Wide Area Network) ● ● Nodi distribuiti su medio-lunga distanza (nazione, continente) Trasmissione dati: attraverso messaggi Reti di reti ● ● ● Collega più reti differenti mediante opportuni elementi di interfaccia (es.: Internet) Può avere estensione mondiale Esempio: Internet Precorso di Informatica - A.A. 2007/2008 Tassonomia delle reti (per topologia) Lineare Anello Stella Punto-punto Mista Precorso di Informatica - A.A. 2007/2008 Reti lineari (a bus) PC1 PC2 PC3 PC4 Ethernet e’ il tipo di rete locale piu’ diffuso ● Qualsiasi computer di qualsiasi tipo prevede la possibilità di usare una scheda Ethernet per connettersi alla rete locale Precorso di Informatica - A.A. 2007/2008 Reti ethernet Quando un computer vuole comunicare invia il segnale sul cavo di collegamento ● ● Se un computer si accorge che un altro sta trasmettendo, aspetta Se si verifica un conflitto (due computer hanno tentato di comunicare contemporaneamente) i due computer si fermano e aspettano per un tempo T casuale, poi riprovano. Velocita’: 10/100/1000 Megabit/s Precorso di Informatica - A.A. 2007/2008 Reti ad anello PC1 PC4 PC2 PC3 La tecnica token-ring viene usata per la comunicazione tra gli elaboratori ● ● ● Un token (un gruppo di byte) viene continuamente passato da un computer all’altro Un computer può trasmettere sulla rete solo quando e’ in possesso del token. Se un computer riceve un messaggio non destinato a lui, lo rimette in circolo. Precorso di Informatica - A.A. 2007/2008 Reti punto-punto PC1 PC2 PC3 PC4 Ottima tolleranza ai guasti; ma altissimi costi per i collegamenti ( O(n2) ) Utilizzabile solo per reti con pochissimi nodi. Precorso di Informatica - A.A. 2007/2008 Reti a stella PC1 PC3 PC2 hub HUB: dispositivo hardware specializzato che smista le comunicazioni dei computer PC4 hub Precorso di Informatica - A.A. 2007/2008 Reti a topologia mista Precorso di Informatica - A.A. 2007/2008 I servizi di una rete L’utente di un calcolatore in rete può: ● ● ● Fruire di risorse informatiche condivise ● stampanti, dischi, calcolatori più potenti, ... Scambiare dati e messaggi con utenti di altri calcolatori connessi in rete ● documenti, e-mail, newsgroups, mailing-list, web, ... Eseguire applicazioni di uso individuale o di gruppo Precorso di Informatica - A.A. 2007/2008 I sistemi operativi di rete In una LAN si vogliono condividere risorse ● di solito, almeno, stampanti e hard disk Il S.O. deve permettere anche l’uso di quelle risorse che non sono fisicamente collegate al computer su cui si sta lavorando ● I S.O. dei computer in rete devono quindi dialogare fra loro per permettere la condivisione delle risorse. Precorso di Informatica - A.A. 2007/2008 Scambio di informazioni Affinché due calcolatori possano scambiarsi dei dati sono necessari – – – – un insieme di regole che regolano lo scambio di dati un canale fisico di comunicazione tra i due calcolatori la componente hardware della comunicazione il software per la comunicazione Precorso di Informatica - A.A. 2007/2008 Protocolli di comunicazione ● ● ● Utilizzati dai calcolatori per dialogare Come nel caso della codifica dei dati occorre utilizzare degli standard internazionali per problemi di compatibilità! Esempi – – Modello ISO/OSI (Open System Interconnection) Modello TCP/IP (standard de facto) Precorso di Informatica - A.A. 2007/2008 Protocolli di comunicazione ● Il solo collegamento fisico non è sufficiente per permettere la comunicazione fra calcolatori – ● ● è necessario anche che ciascun calcolatore sia dotato di una applicazione in grado di effettuare il trasferimento delle informazioni Nella comunicazione tra calcolatori, è necessaria la presenza di uno strato software che consenta lo scambio di dati sulla base di un protocollo un protocollo di comunicazione è un insieme di regole e convenzioni che controllano lo scambio di informazioni in una comunicazione – messaggi consentiti e loro formato Precorso di Informatica - A.A. 2007/2008 I mezzi di trasmissione ● Qual è il mezzo fisico utilizzato per realizzare il canale di trasmissione? – mezzi guidati ● ● ● ● – linee fisiche che portano il segnale fino al ricevitore, supportano la trasmissione di segnali elettrici oppure ottici, segnali elettrici: doppino telefonico o cavo coassiale; segnali ottici: fibre ottiche. mezzi non guidati ● ● irradiazione di segnali elettromagnetici nello spazio, in modo più o meno diretto; antenne, satelliti, infrarossi, … Precorso di Informatica - A.A. 2007/2008 Mezzi guidati Doppino telefonico Cavo coassiale Conduttore di segnale Isolante Calza Guaina protettiva Cladding Fibra ottica Fonte di emissione luminosa (laser) Core Guaina protettiva opaca Precorso di Informatica - A.A. 2007/2008 Mezzi non guidati i segnali vengono trasmessi e ricevuti mediante antenne ● ● l’antenna del trasmettitore irradia nello spazio onde elettromagnetiche, che l’antenna ricevente capta può essere direzionale (punto-a-punto) o non direzionale (multipunto). Lo spettro di frequenze utilizzato nelle trasmissioni non guidate può essere suddiviso in tre intervalli: ● [30 MHz, 1 GHz] ● ● ● [2 GHz, 40 GHz] (microonde) ● ● ● adatto alle trasmissioni non direzionali le trasmissioni cellulari utilizzano 900 Mhz e 1800 Mhz; trasmissioni direzionali, punto-a-punto, utilizzato anche per le comunicazioni via satellite (multipunto); [300 GHz, 200 THz] (infrarossi) ● ● trasmettitore e ricevitore devono essere visibili l’uno all’altro; molto importante in applicazioni locali punto-a-punto e multipunto in aree limitate. Precorso di Informatica - A.A. 2007/2008 Linea dedicata/commutata ● linea dedicata – La comunicazione avviene lungo un canale (linea fisica o “parte” di essa) dedicato esclusivamente ad essa ● ● Es: due PC connessi da un cavo di comunicazione linea commutata – Il canale viene “costruito” per ogni nuova sessione di comunicazione, collegando singoli tratti di linee dedicate ● Esempio: comunicazione tra due computer in Internet – – – altri computer fanno da tramite tra i due che devono comunicare, ritrasmettendo i loro messaggi Con le linee commutate si riducono i costi 2 modalità: ● ● commutazione di circuito commutazione di pacchetto Precorso di Informatica - A.A. 2007/2008 Commutazione di circuito ● ● ● I telefoni di un distretto telefonico fanno capo ad una centrale di smistamento, che comunica con le centrali degli altri distretti. Quando telefoniamo, la chiamata viene fatta passare attraverso una o più centrali, fino a raggiungere il numero chiamato. Comunicando fra loro, le centrali costruiscono una connessione diretta fra i due telefoni, che dura tutto (e solo) il tempo della telefonata. Precorso di Informatica - A.A. 2007/2008 Commutazione di circuito ● ● ● Quando due telefoni comunicano, la linea e’ occupata: nessuno puo’ chiamare quei telefoni. Che succede se usiamo una comunicazione a commutazione di circuito su internet? DISASTRO: qualsiasi servizio offerto sarebbe disponibile ad un solo utente per volta. – Ad esempio, chi riesce a connettersi ad un sito web lo puo’ usare in esclusiva per tutto il tempo che vuole !!! Precorso di Informatica - A.A. 2007/2008 Commutazione di pacchetto ● ● ● Ogni messaggio e’ diviso in tanti pacchetti numerati di dimensione fissa. Ogni pacchetto contiene l’indirizzo del computer destinatario e del mittente. Ogni pacchetto e’ trasmesso separatamente – ● Una volta inviato, il mittente se ne disinteressa Ogni pacchetto fa (virtualmente) una strada diversa per arrivare al destinatario Precorso di Informatica - A.A. 2007/2008 Commutazione di pacchetto ● I pacchetti non arrivano necessariamente nello stesso ordine con cui sono stati inviati – ● Il destinatario aspetta di aver ricevuto tutti i pacchetti per ricomporli e ricostruire il messaggio Ogni pacchetto occupa il mezzo di trasmissione e la scheda di rete per un tempo molto breve – Si ha un effetto di parallelismo: ogni computer puo’ essere coinvolto contemporaneamente in piu’ comunicazioni Precorso di Informatica - A.A. 2007/2008 Routing ● ● ● Come far arrivare i pacchetti a destinazione? Ogni nodo della rete mantiene una tabella che indica a quale/quali vicini ritrasmettere un pacchetto non destinato a lui, in base all’indirizzo di destinazione del pacchetto La scelta del nodo a cui inoltrare il pacchetto dipende anche da situazioni temporanee di carico della rete, guasti, ecc. Precorso di Informatica - A.A. 2007/2008 Internet ● ● Nata dalla fusione di reti di agenzie governative americane (ARPANET) e reti di università E’ una rete di reti, di scala planetaria, pubblica, a commutazione di pacchetto – ● ● sistema di comunicazione tra reti e sistemi eterogenei, oltre che geograficamente distribuiti. Utilizza protocolli di comunicazione di dominio pubblico derivati dal modello TCP/IP Al giorno d’oggi è accessibile a tutti tramite provider che sono fisicamente collegati a internet Precorso di Informatica - A.A. 2007/2008 Collegamento ad accesso diretto Precorso di Informatica - A.A. 2007/2008 Collegamento ad accesso commutato Precorso di Informatica - A.A. 2007/2008 Caratteristiche del protocollo TCP/IP ● ● ● Internet usa un protocollo universale, TCP/IP, per far dialogare tra loro hardware e sistemi operativi diversi indipendenza del protocollo dal modo in cui la rete è fisicamente organizzata il protocollo è di dominio pubblico Precorso di Informatica - A.A. 2007/2008 Caratteristiche del protocollo TCP/IP ● Suddivide i dati in uscita in pacchetti recanti le informazioni circa la loro destinazione (Internet è una rete a commutazione di pacchetto) ● ● I pacchetti (datagrammi) hanno piccole dimensioni (1500 byte) I pacchetti sono spediti separatamente e poi riassemblati dal ricevente Provvede all’instradamento dei messaggi Controlla che la comunicazione vada a buon fine meccanismo di messaggi di conferma della ricezione avvenuta o di segnalazione di errori, onde la trasmissione venga ripetuta Precorso di Informatica - A.A. 2007/2008 Caratteristiche del protocollo TCP/IP Il protocollo dell’indirizzo: analizza la parte rete se la rete è quella locale, i dati sono inviati direttamente all’host indicato nell’indirizzo; altrimenti sono inviati al router. Ogni router ha in memoria una tabella (tabella di routing) degli indirizzi dei router responsabili di altre sottoreti che conosce direttamente, più uno per gli indirizzi di rete che gli sono sconosciuti. Precorso di Informatica - A.A. 2007/2008 La struttura di Internet Posta elettronica Login remoto protocollo applicativo: NNTP SMTP/POP Copia di files World Wide Web TELNET livello applicativo protocolli di trasmissione: livello di trasmissione infrastruttura telematica: livello di connessione fisica TCP/IP FTP HTTP Precorso di Informatica - A.A. 2007/2008 Architettura a livelli ● La trasmissione dell’informazione avviene simulando la connessione tra i livelli corrispondenti (peer) dei due sistemi che si scambiano blocchi formattati di dati, seguendo le regole stabilite dal protocollo definito per quel livello. Gli elementi chiave di un protocollo sono pertanto: – – – ● la sintassi da seguire per la formattazione dei blocchi dei dati; la semantica, che riguarda, per esempio, le modalità di controllo della trasmissione e di gestione degli errori; la temporizzazione, ovvero l’adattamento della comunicazione alla velocità di trasmissione e la sequenzializzazione delle attività. Modello ISO-OSI: – – – International Standard Organization (ISO), Open Systems Interconnect (OSI). Nel modello ISO-OSI, la comunicazione è originata dal livello più alto della stazione che invia il messaggio, passa ai livelli inferiori (sette in tutto), in cui il messaggio viene elaborato e preparato per la trasmissione, fino a giungere al livello fisico, che si occupa dell’effettiva trasmissione verso la stazione di destinazione. Precorso di Informatica - A.A. 2007/2008 I livelli ISO/OSI Applicazione Unità di trasmissione dati a livello applicazione Applicazione Presentazione Unità di trasmissione dati a livello presentazione Presentazione Sessione Unità di trasmissione dati a livello sessione Sessione Trasporto Unità di trasmissione dati a livello trasporto Trasporto Limite della sottorete di interconnessione Rete Pacchetto Rete Pacchetto Rete Pacchetto Rete Data link Frame Data link Frame Data link Frame Data link Fisico Bit Fisico Bit Fisico Bit Fisico HOST A Router Router HOST B Precorso di Informatica - A.A. 2007/2008 Indirizzamento TCP/IP ● Schema di indirizzamento generale su due livelli: indirizzo IP + porta TCP – Indirizzo IP ● ● – indirizzo associato a ogni calcolatore collegato a una sottorete; si tratta di un indirizzo Internet globale unico, utilizzato da IP per l’instradamento e la consegna dei pacchetti. Porta TCP ● ● ● indirizzo unico all’interno dell’host che individua un processo attivo sull’host; utilizzato da TCP per consegnare i dati al processo giusto; TCP aggiunge altre informazioni di controllo/servizio: – – – il numero d’ordine nella sequenza (riordinare i messaggi dopo il loro arrivo a destinazione); codici di controllo della correttezza (checksum), che permettono al destinatario di verificare l’assenza di errori; … Precorso di Informatica - A.A. 2007/2008 Indirizzi TCP/IP Livello Applicazione HOST A HOST B Livello Applicazione App. Y App. Y App. X App. X Punti di accesso al servizio (porte) Livello TCP Livello IP Connessione logica (TCP) Livello TCP Livello IP Indirizzo di rete (globale) Protocollo di accesso alla rete 1 Livello Fisico (collegato a rete 1) Indirizzo del punto di collegamento alla sottorete Protocollo di accesso alla rete 2 ROUTER Livello Fisico (collegato a rete 2) Livello IP Protocollo di accesso alla rete Rete 1 Livello Fisico Rete 2 Precorso di Informatica - A.A. 2007/2008 Da un livello all'altro ● Ogni livello attraversato aggiunge un’intestazione (contiene informazioni utili alle funzioni proprie di quel livello): – – – – TCP (porta TCP, checksum, numero d’ordine, …) IP (indirizzo host destinazione, indirizzo host mittente, …) rete (MAC address destinazione, MAC address mittente, …) Flusso dati proveniente … Dati utente dall’applicazione Intestazione TCP Intestazione IP Intestazione di rete Unità dati a livello TCP Unità dati a livello I P (datagramma) Unità dati a livello rete (frame) Precorso di Informatica - A.A. 2007/2008 Indirizzo IP (versione 4) ● ● 32 bit (cioè 4 byte) per un totale di 232 possibili indirizzi diversi; rappresentato in forma “dotted decimal” – – ● successione di quattro numeri (uno per byte), separati da un punto (e.g. 102.54.94.97) ognuno dei quattro numeri della notazione dotted decimal è compreso tra 0 e 255. strutturato in due parti: – – – una parte che individua la rete fisica a cui la stazione è collegata, l’altra che identifica la singola stazione nell’ambito della rete fisica; esistono tre classi primarie, chiamate A, B e C, ognuna caratterizzata da una diversa suddivisione dei 32 bit: ● ● ● A - un byte (8 bit) per la rete + 3 byte (24 bit) per i calcolatori; inizia per “0”; B - 2 byte (16 bit) per la rete + 2 byte (16 bit) per le stazioni; inizia per “10”; C - 3 byte (24 bit) per la rete + 1 byte (8 bit) per i calcolatori; inizia per “110”. Precorso di Informatica - A.A. 2007/2008 Il paradigma client/server 1. L’utente usa il client per esprimere le sue richieste 2. Il client si collega al server e trasmette la richiesta 3. Il server risponde al client 4. Il client presenta la risposta all’utente Internet Client Utente Server Precorso di Informatica - A.A. 2007/2008 Il client ● ● ● ● Si preoccupa di dialogare con l’utente Sfrutta tutte le possibilità fornite dal calcolatore su cui viene eseguito (audio, video, ...) Fornisce all’utente un’interfaccia intuitiva Elabora le richieste dell’utente e le risposte dei server – la comunicazione avviene secondo un formato standard (protocollo) Precorso di Informatica - A.A. 2007/2008 Il server ● ● Rende disponibili delle risorse Accetta richieste e risponde automaticamente – – ● ● non bada alla provenienza della richiesta il processo client può trovarsi in qualsiasi punto della rete Si può organizzare un insieme di server in modo che siano collegati tra loro Potrebbe essere eseguito dallo stesso calcolatore che esegue il processo client! Precorso di Informatica - A.A. 2007/2008 Indirizzi numerici e simbolici ● ● ● Gli indirizzi IP sono machine-oriented, quindi difficili da utilizzare per un utente “umano”; è stato definito un sistema per passare da indirizzi numerici (gli indirizzi IP) a nomi facilmente memorizzabili, il Domain Name System; Domain Name System (DNS) – – ● associa a ogni indirizzo IP uno o più indirizzi simbolici, gestisce la conversione tra indirizzi simbolici e indirizzi IP organizzato in maniera gerarchica (domini, sottodomini, sotto-sotto-domini, …) per semplificarne l’utilizzo. 193.205.101.6 DNS server1.isec.liuc.it Precorso di Informatica - A.A. 2007/2008 DNS ● ● Il nome DNS di un calcolatore è costituito da una successione di stringhe alfanumeriche separate da punti (per esempio, server1.isttec.liuc.it) ogni stringa identifica un “dominio”: – la stringa più a destra rappresenta il dominio di primo livello (detto anche dominio generale) ● ● – la seconda stringa, sempre proseguendo da destra verso sinistra, indica il dominio di secondo livello ● ● – identifica la nazione di appartenenza (it per Italia, uk per Gran Bretagna, fr per Francia…) identifica la categoria cui appartiene la società proprietaria del calcolatore (com per commerciale, edu per università o istituzioni che si occupano di formazione, org per organizzazioni non-profit di vario genere…); è un sottodominio del dominio di primo livello di solito individua una singola organizzazione (università, azienda, ente…) Le stringhe successive indicano i domini di terzo livello (sottodomini dei domini di secondo livello), quelli di quarto livello, e così via finché non si arriva a individuare un dominio che comprende il singolo host. Precorso di Informatica - A.A. 2007/2008 Come si passa da DNS a IP ● A ogni dominio è associato a un calcolatore responsabile del dominio – si consideri, per esempio, l’indirizzo server1.isttec.liuc.it: ● ● ● ● ● Il calcolatore responsabile di un dominio mantiene un elenco dei calcolatori responsabili dei suoi sottodomini (e ne conosce i relativi indirizzi IP), – – ● c’è un computer responsabile per il dominio it; un computer per il dominio liuc.it; un terzo computer per il dominio isttec.liuc.it; un ulteriore computer per server1.isttec.liuc.it. il calcolatore responsabile del dominio it, per esempio, deve sapere chi sono (cioè deve sapere qual è il loro indirizzo IP) i calcolatori responsabili di tutti i suoi sottodomini, tra cui c’è liuc.it, ma anche polimi.it, miur.it… il calcolatore responsabile del dominio liuc.it, per esempio, deve sapere chi sono i calcolatori responsabili di tutti i suoi sottodomini, tra cui c’è isttec.liuc.it, ma anche cetic.liuc.it, … Per tradurre l’indirizzo DNS di un calcolatore nel suo indirizzo IP si deve interrogare il responsabile di ciascuno dei domini (di I, II, … livello) cui quel calcolatore appartiene: – – – il calcolatore responsabile del dominio di I livello sa dove si trova il calcolatore responsabile del dominio di II livello il calcolatore responsabile del dominio di II livello sa dove si trova il calcolatore responsabile del dominio di III livello … Precorso di Informatica - A.A. 2007/2008 World Wide Web ● ● Architettura software per gestire dati distribuiti geograficamente basata sulla nozione di ipertesto Pagine web: ipertesti che possono contenere testo, immagini, suoni, programmi eseguibili – ● un utente legge le pagine, se seleziona un link la pagina viene sostituita con quella richiesta (scaricata dal sito remoto) Si appoggia a TCP/IP e quindi è compatibile con ogni tipo di macchina collegata ad Internet Precorso di Informatica - A.A. 2007/2008 URL: indirizzi nel web ● ● URL (Uniform Resource Location) è uno standard per il formato degli indirizzi delle risorse sul Web Specifica: – – – ● Come si vuole accedere alla risorsa (metodo) Dove si trova la risorsa (indirizzo server) Nome della risorsa (nome) Formato: – Metodo://host/nome Precorso di Informatica - A.A. 2007/2008 HTTP Gestisce il trasferimento di file ES: quando un browser deve aprire la pagina http://www.dsi.unive.it/index.html 1. 2. 3. Si connette con il server www.dsi.unive.it Richiede il documento /index.html Visualizza il documento e se contiene altri elementi (es: immagini) ripete dal punto 1 (dal punto 2 con HTTP/1.1) Precorso di Informatica - A.A. 2007/2008 HTTP RICHIESTA: GET / HTTP/1.0 RISPOSTA: HTTP/1.1 200 OK Date: Wed, 13 Sep 2006 04:54:16 GMT Server: Apache/2.0.58 Content­Length: 4668 Connection: close Content­Type: text/html <html> Prova </html> Precorso di Informatica - A.A. 2007/2008 FTP Trasferimento file All’inizio del collegamento l’utente viene identificato tramite username/password (per i collegamenti anonimi, user: anonymous) E’ possibile elencare il contenuto della directory remota (ls) e locale (lls), cambiare directory (cd, lcd), richiedere un file (get, mget), inviare un file (put, mput) Può anche essere utilizzato per trasferire un solo file specificandolo in un url (ftp://server/file) Precorso di Informatica - A.A. 2007/2008 Proxy Riceve le richieste dai client (browser oppure altri proxy) Inoltra le richieste al server (oppure ad un altro proxy) Inoltra la risposta al client Permette di oltrepassare (in modo controllato) i firewall Se la stessa richiesta arriva da più client, viene inviata una volta sola al server (caching) Precorso di Informatica - A.A. 2007/2008 Telnet ● ● ● ● Accesso remoto Shell testuale I comandi vengono eseguiti sul server remoto Es: telnet squit.dsi.unive.it Precorso di Informatica - A.A. 2007/2008 HTTP, FTP e Telnet non sono sicuri ! ● Chiunque abbia accesso al canale di comunicazione, oppure ad un proxy, può intercettare i contenuti – – FTP, Telnet il nome utente e la password sono leggibili HTTP altri dati sensibili possono essere Precorso di Informatica - A.A. 2007/2008 Posta elettronica ● ● ● SMTP: gestisce l’invio dei messaggi di posta POP3: permette di recuperare i propri messaggi da un server IMAP: permette di recuperare i propri messaggi e di organizzarli in cartelle sul server Precorso di Informatica - A.A. 2007/2008 Crittografia ● ● ● I dati scambiati vengono modificati in modo da non essere letti da chi non conosce la chiave Esistono diversi tipi di algoritmi crittografici Alcuni richiedono che la stessa chiave sia nota sia a chi codifica che a chi decodifica. Questo li Precorso di Informatica - A.A. 2007/2008 Crittografia a chiave asimmetrica ● ● Gli algoritmi asimmetrici utilizzano un paio di chiavi una privata ed una pubblica La chiave pubblica del destinatario può essere utilizzata per codificare un messaggio che solo il destinatario può leggere utilizzando la propria chiave Precorso di Informatica - A.A. 2007/2008 Crittografia a chiave asimmetrica ● ● Il mittente può utilizzare la propria chiave privata del mittente per provare la propria identità. Chiunque possieda la chiave pubblica del mittente può verificarne l’identità, senza accedere alla sua chiave privata Precorso di Informatica - A.A. 2007/2008 HTTPS, SSH, SFTP ● ● Analoghi a HTTP, telnet ed FTP basati su canali sicuri. Un indirizzo web sicuro inizia per https://..........