Sei sulla pagina 1di 126

Laboratorio

di Informatica
- FONDAMENTI -

Università di Firenze
Facoltà di Lettere e Filosofia
Corso di Laurea in Lettere Moderne
a.a. 2010-11

alessandro.panunzi@unifi.it

Testi di riferimento
  L. Console, M. Ribaudo, U. Avalle, C. Carmagnola, F. Cena
Introduzione all'informatica (4ed)
UTET, Torino, 2010

  D. Curtin, K. Foley. K. Sen, C. Morin


Informatica di base (4ed)
McGraw Hill, Milano, 2008

  M. Lazzari, A. Bianchi, M. Cadei, C. Chesi, S. Maffei


Informatica umanistica
McGraw-Hill, Milano, 2010

  F. Tomasi
Metodologie informatiche e discipline umanistiche
Carocci, Roma, 2008

1
1. Teoria dell’informazione

Informatica

  Scienza che si occupa del trattamento


automatico dell’informazione

  Il computer è in grado di
  raccoglierel’informazione
  elaborare/modificare l’informazione
  trasmettere l’informazione
  permettere l’input/output dell’informazione

2
L’informazione

  Concetto chiave per la definizione


dell’informatica
  etimo: fr. informatique < inform(ation autom)atique
  en. computer science

  In senso intuitivo, l’informazione può essere


vista come il “dato sensibile”, che può essere di
diverso tipo; es.:
  dato numerico
  dato testuale ( interesse specifico)
  dato sonoro
  immagini & video

Gestire l’informazione

  Il computer può memorizzare ed elaborare


l’informazione se questa viene rappresentata in
un modo “gestibile” dalla macchina

  Necessità di sviluppare un codice simbolico in


grado di rappresentare l’informazione (nelle sue
diverse tipologie)

  Il codice è un sistema di simboli; ogni simbolo


associa un contenuto (significato) a una
rappresentazione (significante)

3
Codici

  L’esigenza di sviluppare codici per


comunicare l’informazione non nasce con
l’informatica
  linguaggio verbale
  scrittura
  segnaleticastradale
  codice morse
  comunicazione animale
  …

Discreto VS continuo
  Una delle proprietà fondamentale dei codici
riguarda la modalità con cui l’informazione
viene codificata e trasmessa

  Codici discreti (es. orologio digitale):


  esprimonola variazione di informazione
procedendo “a salti” (limiti definiti)

  Codici continui (es. orologio analogico)


  esprimono la variazione di informazione in
modo continuo

4
Discreto VS continuo

  Sia il linguaggio verbale che quello


dell’informatica usano codici discreti

  L’informazione è rappresentata attraverso


tratti distintivi (differenziali) del simbolo (o
meglio, del suo significante)

  Più avanti ci occuperemo di come sia


possibile un’informazione di tipo continuo
attraverso un sistema simbolico discreto

L’informazione sul computer

  Il calcolatore tratta simboli numerici

  Necessità di “quantificare”
l’informazione: rappresentazione digitale
  en. digit = “cifra, numero”
  Nell’accezione corrente, “digitale” si usa
spesso come sinonimo di “binario” (binary)

 rappresentazione binaria = 2 simboli (0/1)

5
La “profezia” di Leibniz
  Quali sono le ragioni della rappresentazione binaria
dell’informazione?

  Cfr. G.W Leibniz, Mathematische Schriften (citato in


Ciotti & Roncaglia, Il mondo digitale, p. 22):
  il calcolo binario, che utilizza lo ‘0’ e l’‘1’, a
ricompenso della sua maggiore lunghezza è il più
fondamentale per la scienza, ed è all’origine di nuove
scoperte […] la cui ragione è che allorché i numeri
sono ridotti a principi più semplici, e cioè allo ‘0’ e
all’‘1’, appare dunque un ordine meraviglioso

Alla base della moderna


teoria dell’informazione
  La codifica dell’informazione secondo il
paradigma della rappresentazione binaria
trae origini da studi che riguardavano le
tecniche di trasmissione dell’informazione
(telecomunicazione)

  Shannon, C. E. 1948. A Mathematical


Theory of Communication, Bell system
Technical Journal, vol 27
http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf

6
Informazione come scelta

  In questo articolo, Shannon propone il


concetto di scelta (choice) per misurare la
quantità di informazione presente in un dato
messaggio

  La quantità dell’informazione presente in un


messaggio corrisponde quindi al numero di
possibili alternative che il messaggio risolve
al momento in cui viene recepito dal suo
destinatario

A Mathematical Theory of
Communication (1)
  The fundamental problem of communication is that of
reproducing at one point either exactly or approximately a
message selected at another point. Frequently the
messages have meaning; that is they refer to or are
correlated according to some system with certain
physical or conceptual entities.
  These semantic aspects of communication are
irrelevant to the engineering problem. The significant
aspect is that the actual message is one selected
from a set of possible messages. […]
  If the number of messages in the set is finite then this
number or any monotonic function of this number can be
regarded as a measure of the information produced when
one message is chosen from the set, all choices being
equally likely.

7
Il bit

  Shannon introduce anche il concetto di bit


( en. b(inary dig)it, “cifra binaria”) come
quantità minima di informazione presente in
un messaggio

  Il bit corrisponde difatti al numero minimo di


alternative possibili: la scelta tra 2 valori
  1/0
  sì/no
  vero/falso
  acceso/spento

Rappresentare l’informazione
relativa a una scelta binaria
  Messaggio = stato di una lampadina:

acceso spento
1 0

  Attraverso 1 bit è possibile rappresentare


simbolicamente una scelta tra 2 stati

8
E quando le alternative sono
più di due?
  La scelta tra più alternative viene ridotta a
una serie di scelte tra due alternative

  Sistema a due lampadine: 4 stati diversi


 2 bit in successione (4 = 22 ):
00 (sx spenta, dx spenta)

01 (sx spenta, dx accesa)

10 (sx accesa, dx spenta)

11 (sx accesa, dx accesa)

Più alternative,
più informazione
  8 colori: 8 stati diversi
 codifica a 3 bit: (8 = 23)

000 - nero 100 - grigio

001 - giallo 101 - verde

010 - rosso 110 - viola

011 - blu 111 - arancio

9
Aumento dell’informazione

  In generale, per trasmettere un messaggio


più complesso, avremo necessariamente
bisogno di un “complicare” la nostra
rappresentazione

  Il quantità di informazione presente in un


messaggio aumenta in base a due fattori:
  Maggiore lunghezza del messaggio (es.
numero di lampade del sistema)
  Maggior numero di distinzioni da
codificare (es. numero dei possibili colori)

Codifica

  Il processo secondo cui si fa corrispondere ad


un’informazione complessa una sequenza di bit
prende il nome codifica dell’informazione

informazione

codifica decodifica

rappresentazione
binaria

10
Definizione formale della
quantità di informazione
  A livello matematico, il calcolo della quantità di
informazione si basa quindi sul numero di scelte
binarie che devono esser fatte al fine di poter
rappresentare tutti i possibili stati. In generale
possiamo dire che con X bit possiamo codificare 2X
informazioni

  Per codificare N informazioni devo usare un numero X


di bit tali che N = 2X
  cfr. X è un numero naturale! (N ≤ 2X)

  Tale funzione è definita come il logaritmo in base 2 di


N (logaritmo = l’inverso dell’elevamento a potenza)
X = log2 N

Successione esponenziale,
successione logaritmica
  21 =2 log2 2 = 1
  22 =4 log2 4 = 2
  23 = 8 log2 8 = 3
  24 = 16 log2 16 = 4
  25 = 32 log2 32 = 5
  26 = 64 log2 64 = 6
  27 = 128 log2 128 = 7
  28 = 256 log2 256 = 8

11
A Mathematical Theory of
Communication (2)
  As was pointed out by Hartley the most natural choice
is the logarithmic function. […]
  The choice of a logarithmic base corresponds to
the choice of a unit for measuring information. If
the base 2 is used the resulting units may be
called binary digits, or more briefly bits, a word
suggested by J. W. Tukey.
  A device with two stable positions, such as a relay or a
flip-flop circuit, can store one bit of information. N such
devices can store N bits, since the total number of
possible states is 2N and log2 2N =N.

La rappresentazione
dell’informazione sul computer
  Occorre sviluppare dei codici che
permettano di

  rappresentare l’informazione in modo


efficiente su un supporto fisico

  rappresentare l’informazione di tipo


analogico attraverso una sistema
simbolico discreto (binario)

12
Rappresentazione su
supporto fisico
  Un vantaggio pratico della codifica binaria è
quello di essere facilmente rappresentabile
da diversi fenomeni fisici:
  Stati di carica elettrica di una sostanza (+/-)
  Stati di polarizzazione di una sostanza
magnetizzabile (+/-)
  Passaggio/non passaggio di corrente in un
cavo elettrico
  Passaggio/assenza di passaggio di luce in
un cavo ottico

Rappresentazione
attraverso un codice discreto
  In generale: la rappresentazione binaria è
basato sulla presenza o assenza di un
fenomeno fisico (in un certo luogo, a un certo
punto di tempo)

  Codice discreto per eccellenza: il “salto” di


informazione tra i diversi valori avviene senza
possibilità di gradazione
  Il fenomeno che lo rappresenta è presente
oppure assente, senza via di mezzo

13
Unità di misura

  Esiste una particolare aggregazione di bit che


è costituita da 8 bit (28 = 256 informazioni) e
prende il nome di byte

  Di solito si usano i multipli del byte

Kilo KB 210 (~ un migliaio, 1024) byte


Mega MB 220 (~ un milione, 1KB x 1024) byte
Giga GB 230 (~ un milliardo, 1MB x 1024) byte
Tera TB 240 (~ mille miliardi, 1GB x 1024) byte

2. Elementi di calcolo binario

14
Premessa

There are only 10 types of people in


the world. Those who understand
binary, and those who don't.

Numeri

  Numero = entità astratta, rappresentabile


con una sequenza di simboli, dette cifre

  Il sistema di numerazione che usiamo


abitualmente è il sistema posizionale in
base 10

  10 simboli: 0, 1, 2, 3, 4, 5 , 6, 7 ,8, 9

15
Sistemi posizionali

  In un sistema posizionale, una cifra assume


un diverso valore in relazione alla posizione
che occupa all’interno di un numero
  3740 = 3 x 103 + 7 x 102 + 4 x 101 + 0 x 100
  4037 = 4 x 103 + 0 x 102 + 3 x 101 + 7 x 100
(n0 = 1)

  Sistemi non posizionali: es. numeri romani


  MMMDCCXL
  MMMMXXXVII
M=1000; D=500; C=100; L= 50; X=10; V=5; I=1

Vantaggi dei codici


posizionali
  I codici posizionali rendono le operazioni
aritmetiche molto piu’ semplici
  15 + 4 = 19
  XV + IV = XIX

  I codici posizionali sono potenzialmente illimitati


(non esiste un numero massimo rappresentabile)
  Massimo numero rappresentabile nel codice
romano semplice: MMMMCMXCIX = 4999
  cfr. = C x 1000 = 100.000
= M x 100.000 = 100.000.000

16
Cambiare la base
  Base = numero di cifre disponibili nel sistema

  Rappresentare il numero 1510

  con 8 cifre: 178


1x81 + 7x80

  con 16 cifre: F16


cfr. notazione= 0-9, A-F

  con 2 cifre: 11112


1x23 + 1x22 + 1x21 + 1x20

Generalizzazione
  Caso generale: considerare un sistema con base b
  La sequenza cn cn-1cn-2 … c1c0 (ogni “ci” è una cifra del
sistema) rappresenterà il numero

La cifra meno c0 x b0 +
significativa
c1 x b1 +
c2 x b2 +
… +
cn-1 x bn-1 +
La cifra più cn x bn 

significativa

17
Convertire un numero
binario in numero decimale
  È un’operazione piuttosto semplice: basta esplicitare
la conversione in base 10 di ogni singola cifra
  101000112 =
1 x 20 + 1x1 + 1 +
1 x 21 + 1x2 + 2 +
0 x 22 + 0x4 + 0 +
0 x 23 + 0x8 + 0 +
0x2 +4 0 x 16 + 0 +
1 x 25 + 1 x 32 + 32 +
0 x 26 + 0 x 64 + 0 +
1x2 =7 1 x 128 = 128 =
16310

Convertire un numero
decimale in numero binario
  Metodo delle divisioni successive: per
convertire un numero in base dieci nel
corrispondente in base due si devono

  trovare
i resti delle divisioni successive del
numero N per due

  leggere i resti in ordine inverso per ottenere


la rappresentazione binaria di N (dalla cifra
più significativa alla cifra meno significativa)

18
Convertire un numero
decimale in numero binario
  Metodo delle divisioni successive
  5410 =

1101102

Conversione di numeri binari


in esadecimali
  Facilitàdi conversione: in una sequenza
binaria, ogni stringa di 4 bits corrisponde
ad una cifra esadecimale

  1111 0110 numero binario


(15) (6)
F 6 numero esadecimale

  Unbyte è rappresentato da una coppia di


numeri esadecimali

19
3. Operazioni logiche:
l’algebra di Boole

Logica binaria

  Algebra booleana: rappresentazione di


operazioni logico (insiemistiche) in codifica
binaria

  Le funzioni logiche booleane associano a


una sequenza di variabili un valore
rappresentato da due soli stati:
  vero VS falso
  1 VS 0

20
Applicazioni

  Nell’informatica, l’algebra booleana assume


un ruolo importante nella rappresentazione
del calcolo proposizionale; es.:
  una certa istruzione può essere eseguita da
un programma se si verifica “una certa
condizione C e un’altra condizione D”
  potremmo ritenere soddisfatta una query
relativa a una base di dati se si verifica “una
certa condizione C o un’altra condizione
D” (cfr. teoria degli insiemi)

Operatori booleani di base


  NOT: restituisce il valore inverso di quello in entrata.
Nella teoria degli insiemi corrisponde al
COMPLEMENTO

  OR (somma logica): restituisce 1 (vero) se almeno uno


degli elementi è 1; altrimenti restituisce 0 (falso) solo
se tutti gli operandi sono 0 (falso). Nella teoria degli
insiemi corrisponde all‘UNIONE

  AND (prodotto logico): restituisce come valore 1 (vero)


solo se tutti gli operandi hanno valore 1, altrimenti
restituisce 0 (falso). Nella teoria degli insiemi
corrisponde all‘INTERSEZIONE

21
Altri operatori
  XOR: nella sua versione a due elementi restituisce 1
(vero) se e solo se un unico dei due operandi è 1,
mentre restituisce 0 (falso) in tutti gli altri casi.
  A XOR B = ((NOT A) AND B) OR (A AND (NOT B))

  NOR: equivale alla negazione (NOT) del risultato


dell’operatore OR

  NAND: equivale alla negazione (NOT) del risultato


dell’operatore AND

  XNOR: equivale alla negazione (NOT) del risultato


dell’operatore XOR

Tavole di verità e
rappresentazioni di controllo

22
Operazioni logiche e numeri
binari
  Le operazioni logiche possono essere applicate anche ai
numeri binari
 operazioni logiche bit a bit

NOT 01001011 =
10110100

01001011 OR
10001111 =
11001111

01001011 AND
10001111 =
00001011

4. La codifica dei caratteri

23
Codifica

  Il processo secondo cui si fa corrispondere ad


un’informazione complessa una sequenza di bit
prende il nome codifica dell’informazione

informazione

codifica decodifica

rappresentazione
binaria

Codifica del testo

  Due livelli di codifica del testo digitale

  codifica di basso livello (codifica di livello 0)


•  riguarda la rappresentazione binaria della
sequenza ordinata dei caratteri

  codifica di alto livello


•  arricchisce il testo codificato al livello zero con
informazione relativa a dimensioni strutturali
•  organizzazione del testo in strutture macrotestuali
•  articolazione del testo in strutture linguistiche

24
La codifica di basso livello

 Repertorio di caratteri
  un insieme di caratteri (es. “A”, “a”, “!”, “à”,
“P”, ecc.)
  i caratteri sono entità astratte, da non
confondersi con il modo in cui sono realizzati
graficamente (glyphs  fonts)
•  “a”, “a”, “a”, “a” rappresentano lo stesso carattere
•  la stessa realizzazione grafica può corrispondere
a caratteri diversi (es. “P” latino e “P” cirillico)
•  CCCP

La codifica di basso livello

  Set di carattere (codice)


  una tabella che definisce una corrispondenza
biunivoca (1-a-1) tra un repertorio di caratteri e un
insieme di numeri interi non negativi
•  a ogni carattere è assegnato un codice numerico
(“punto di codice” o code position)

  Codifica di carattere
  algoritmo che determina come i codici dei caratteri
sono rappresentati in sequenze di bits (bytes)

25
Il codice ASCII
American Standard Code for
Information Interchange
  Primo standard per l’assegnazione di codici a caratteri
(dal 1963)
  set di caratteri riconosciuto da tutti i computer
  conosciuto come “ASCII Standard” o ISO-646

  Codifica
  ciascun punto di codice è rappresentato con il numero
binario corrispondente di 7 bits (+ 1 “bit di parità”)
  7 bits = 27 punti di codice = 128 caratteri rappresentati

  Sufficiente per rappresentare l’inglese


  mancano i caratteri accentati, umlauts, ecc. per
rappresentare altri alfabeti occidentali

ASCII binario

26
ASCII decimale, esadecimale e ottale

Codifica di parole
  Parole sono sequenze di caratteri

  Codifica della parole cane


01100011 01100001 01101110 01100101
c a n e

  Decodifica: data una sequenza di bit, il testo che essa


codifica può essere ottenuto nel modo seguente:
  si divide la sequenza in gruppi di otto bit (byte)
  si determina il carattere corrispondente ad ogni byte

27
Extended ASCII

  L’estensione di ASCII è stata necessaria per


rappresentare un numero maggiore di
caratteri

  ASCII esteso: set di caratteri sufficienti a


rappresentare gli alfabeti delle lingue
europee occidentali
  utilizza8 bit (1 byte) per carattere
  8 bits = 28 punti di codice = 256 caratteri
  confluito nello standard ISO 8859

28
ISO 8859

  15 set di caratteri standardizzata dalla ISO


(International Standard Organization)
  Codifica = 1 byte

  Ciascun set è un soprainsieme dei caratteri


dell’ASCII Standard
  punti 0-127: parte comune (ASCII Standard)
  punti 128-159: codici di controllo
  punti 160-255: parte variabile (caratteri
aggiuntivi per rappresentare gli alfabeti delle
varie lingue implementate)

29
ISO 8859-1 (Latin-1)

ISO 8859-5 (Cyrillic)

30
Problemi di ISO 8859

  I vari set che compongono ISO 8859 sono


tra di loro incompatibili
  es. punto di codice 232 (hex: E8)
 ISO 8859-1 (Latin-1) = “è”
 ISO 8859-5 (Cyrillic) = “ш”
  cfr. documenti multilingui!

  ISO 8859 non copre lingue come il cinese, il


giapponese etc.
  migliaia di caratteri da rappresentare

UNICODE (ISO 10646)


  Universal Character Set: standard internazionale
che permette di rappresentare qualsiasi carattere
appartenente ai sistemi grafici esistenti

  Assegna un numero di codice univoco a ogni


carattere
 “è” = 232
 “ш” = 1096

  Risolve i problemi di ISO 8859


  estensione dei charset
  multilinguismo

31
Codifica UNICODE
  Unicode è un soprainsieme di ASCII

  Originariamente pensato come una codifica a 16 bit


(216 = 65.536 caratteri), è stato esteso ad oltre 1
milioni di punti di codice
  Recentemente è stato implementato il centomillesimo
carattere UNICODE

  I caratteri sono organizzati in 17 “piani” di 216 di


caratteri
  17 x 216 = 1.114.112 punti di codice

Codifica UNICODE
  Diversi sistemi di codifica
  UTF-8 (1 byte), UTF-16 (2 byte), UTF-32 (4 byte)
  codici meno lunghi per i caratteri più frequenti
  Distinzione tra:
  Repertorio di caratteri rappresentati
  Punto di codice unico del carattere (es. U+0041)

32
Problemi di “carattere”

Risoluzione dei problemi legati


alla codifica dei caratteri
  Analisi dei caratteri del testo
  Verificare il set di caratteri utilizzato per la codifica
 ASCII Standard, ISO 8859, UNICODE...
  Verificare i caratteri accettati dall’editor di testo
  Verificare i caratteri non-standard
 hex editor

  Eventuale sostituzione dei caratteri che non


appartengono al set accettato dal programma
  Attenzione alla perdita di informazione!
è ≠ e’ š≠s

33
5. La codifica del suono

Il suono

  Il suono è una grandezza che varia in modo


continuo (può assumere infiniti valori)

  Fisicamente un suono è rappresentato come


un’onda che descrive la variazione della sua
intensità (pressione dell’aria) nel tempo
 onda sonora

  Problema: rappresentazione discreta di


questa variazione continua

34
L’onda sonora

  ampiezza
  corrisponde all’intensità del suono (dB)
  frequenza = 1/periodo
  misura il numero delle oscillazioni al secondo (Hz);
  corrisponde alla qualità dell’altezza del suono

Campionamento

  Attraverso una membrana interna, il


microfono trasforma le oscillazioni dell’onda
sonora in impulsi elettrici

  Il segnale elettrico viene convertito in


segnale digitale dall’Analogue to Digital
Converter (ADC), che preleva dei
“campioni” ad istanti temporale fissi e li
memorizza

  Ogni campione viene codificato in numero

35
Campionamento

  Il numero di campioni raccolti per unità di


tempo definisce la frequenza di
campionamento (sample rate)
  campioni al secondo, misurati in Hz
  es. telefono: 8.000 Hz
CD audio: 44.100 Hz = 44,1 MHz

Quantizzazione

  Scelta del numero di bit che vengono utilizzati


per codificare le variazioni di intensità
corrispondenti a ogni campione
  profondità di bit, o risoluzione
  es. CD audio: 16 bit = 65.536 valori possibili
  L’ampiezza misurata dal campionamento viene
approssimata al più vicino tra i valori
predeterminati

36
Un esempio

  Quanti byte occorrono per campionare un


minuto di audio con le seguenti impostazioni?

Un esempio

  Soluzione:
  1 minuto = 60 secondi
  44.100 campioni al secondo
  16 bit per ogni campione
  60 x 44.100 x 16 = 42.336.000 bit
= 5.292.000 byte ≈ 5 MB

  Nel caso della qualità CD audio, il numero


dei byte raddoppia ≈ 10 MB
  segnale stereo

37
Il peso dell’informazione

  Aumentando la frequenza di
campionamento e/o la profondità di bit per
ogni campione, aumenta la dimensione del
file audio corrispondente

  Necessità di ridurre il numero delle cifre che


costituiscono la sequenza di bit
immagazzinata dal file, mantenendo
l’informazione il più possibile simile a quella
originale
  COMPRESSIONE

La compressione audio

  Il formato più diffuso è l’MP3


  Motion Picture Expert Group-1/2 Audio Layer 3
  compressione con perdita di informazione (lossy)

  Eliminazione dell’informazione sonora


difficilmente percepibile (modello psicoacustico
con analisi della soglia di udibilità)
  la quantità di informazione eliminata è
inversamente proporzionale sia alla dimensione
del file compresso che alla qualità audio finale.
  Lo standard permette un fattore di compressione
di 5:1-10:1 (1-2 MB per minuto di audio)

38
6. La codifica dell’immagine

L’informazione relativa
all’immagine
  Anche nel caso dell’immagine,
l’informazione che si vuole digitalizzare ha
carattere continuo

  Continuità della variazione di forma


  rendere discreta la forma dell’immagine

  Continuità della variazione di colore


  rendere discreta la rappresentazione dei
colori

39
Digitalizzazione di immagini
in bianco e nero

  L’immagine viene suddivisa in settori tramite


una griglia di righe orizzontali e verticali

Digitalizzazione di immagini
in bianco e nero
  Ogni quadratino derivante da tale
suddivisione prende il nome di pixel (picture
element) e può essere codificato in binario
secondo la seguente convenzione:
  Il simbolo “0” viene utilizzato per la codifica
di un pixel corrispondente ad un quadratino
in cui il bianco è predominante
  Il simbolo “1” viene utilizzato per la codifica
di un pixel corrispondente ad un quadratino
in cui il nero è predominante

40
Digitalizzazione di immagini
in bianco e nero

0 0 0 1 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0
0 0 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0

Digitalizzazione di immagini
in bianco e nero
0 0 0 1 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0
0 0 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
  Poiché una sequenza di bit è lineare, è
necessario definire convenzioni per ordinare la
griglia dei pixel in una sequenza. Assumiamo
che i pixel siano ordinati dal basso verso l’alto e
da sinistra verso destra:
0000000000 0011111000 0011100000 0001000000

41
Digitalizzazione di immagini
in bianco e nero
  Non sempre il contorno della figura coincide
con le linee della griglia. Quella che si
ottiene nella codifica è un’approssimazione
della figura originaria

  Se riconvertiamo la sequenza di stringhe


0000000000 0011111000 0011100000 0001000000
in immagine otteniamo

Digitalizzazione di immagini
in bianco e nero
  La rappresentazione sarà più fedele
all’aumentare del numero di pixel,
ossia al diminuire delle dimensioni dei
quadratini della griglia in cui è
suddivisa l’immagine: aumento della
risoluzione

42
Codifica del colore

  Assegnando un bit ad ogni pixel è possibile


codificare solo immagini in bianco e nero

  Per codificare le immagini con diversi livelli


di grigio oppure a colori si usa la stessa
tecnica: ad ogni pixel viene assegnata una
sequenza di bit che ne codifica il colore
  profondità
di colore = numero di bit usati per
rappresentare il colore

Codifica del colore

  Per memorizzare un pixel non è più


sufficiente un solo bit

  es.
se utilizziamo quattro bit possiamo
rappresentare 24 = 16 livelli di grigio o
16 colori diversi

  con otto bit ne possiamo distinguere


28 = 256

43
RGB

  Modello di colori basati sulla sintesi


additiva: 3 colori primari

rosso (Red)

verde (Green)

blu (Blue)

  Ogni colore è codificato attraverso l’uso di 8


bit (un byte)

Codifica del colore

  Rosso: 28 = 256 tonalità


Verde: 28 = 256 tonalità
Blu: 28 = 256 tonalità

  Mescolando i tre colori si ottengono


2563 = 16.777.216 diversi colori

  Immagini Truecolor: per ogni pixel vengono


utilizzati 3 byte per la codifica

44
Esempi di colore
00000000 00000000 00000000 → nero
11111111 11111111 11111111 → bianco
11111111 00000000 00000000 → rosso
11111111 11111111 00000000 → giallo
00000000 11111111 00000000 → verde
00000000 11111111 11111111 → cyan
00000000 00000000 11111111 → blu
11111111 00000000 11111111 → viola

10000000 10000000 10000000 → grigio


(un certa tonalità di…)

“Operazioni” sui colori

  Per modificare i colori:


  sipossono usare operazioni aritmetiche
  per esempio, per ottenere una tonalità più
chiara di grigi si può aggiungere una certa
quantità al valore di grigio alla tonalità
descritta nella diapositiva precedente:

100000001000000010000000+
010000000100000001000000=
110000001100000011000000

45
Codifica esadecimale

  Codifica dei colori predefiniti di HTML


http://en.wikipedia.org/wiki/Web_colors

La dimensione delle
immagini
  Esempio: quanti bytes ci vogliono per
codificare un’immagine Truecolor nello
standard SVGA con risoluzione 800 x 600?

  Soluzione:
  3 byte per pixel
  800 x 600 = 480.000 pixel
  480.000 x 3 = 1.440.000 byte ≈ 1,37 MB

  Immagine bitmap: codificata pixel per pixel

46
La compressione delle
immagini
  Ridurre le dimensioni di un’immagine bitmap:
  es. se più punti vicini di un’immagine assumono lo
stesso colore, si può memorizzare la codifica del
colore una sola volta e poi ricordare per quante volte
deve essere ripetuta

  Formati di compressione:
  Lossless: compressione senza perdita di informazioni
(GIF, PNG; dalla versione compressa, si può
ricostruire la versione non-compressa)
  Lossy: compressione con perdita di informazioni
(JPEG; dalla versione compressa, non è possibile
recuperare la versione originale)

Codifica del video

  Video = immagini in sequenza


  codifica dei singoli fotogrammi

  Esempio: byte necessari a codificare un


minuto di video di 30 fotogrammi al
secondo, risoluzione 800 x 600
  1,37 MB x 30 x 60 = 2,466 MB = 2,4 GB
  più l’audio...

  Formati di compressione video


  es. MPEG codifica solo le differenze di pixel
tra immagini consecutive

47
7. La macchina di Turing

L’elaboratore:
uno sguardo dall’esterno
  Il computer è una macchina in grado di elaborare
informazione, ovvero di:
  ricevere l’informazione in ingresso (input)
  PROCESSARLA secondo determinate regole
  restituire l’informazione in uscita (output)

  L’input e l’output dell’informazione sono possibili


attraverso l’uso di dispositivi dedicati
  input: tastiera, mouse, scanner…
  output: schermo, stampante, casse…

  Per poter gestire i dati sarà anche necessario


memorizzare l’informazione

48
Un modello astratto
  Per dare conto del funzionamento di un elaboratore,
può essere utile analizzare un modello astratto
composto da:
  un nastro di lunghezza potenzialmente infinita,
composto da singole celle di memoria in cui può
essere scritta l’informazione (in codifica binaria)
  una testina in grado di scorrere liberamente sul nastro
e di leggere/scrivere l’informazione
  un’unità centrale che contiene: (a) l’insieme finito
degli stati possibili che la macchina può assumere; (b)
l’insieme finito delle istruzioni che determinano il
comportamento della macchina

  Macchina di Turing (On computable numbers, 1936)

La Macchina di Turing

49
Funzionamento di una MdT

  Una particolare configurazione di una MdT è


costituita da
  lo stato interno attuale della macchina
  il contenuto del nastro
  la posizione sul nastro della testina di I/O

  Configurazione iniziale della MdT: all’istante


iniziale I0
  la macchina si trova in un determinato stato iniziale S0
  il nastro contiene una stringa che rappresenta il
problema che viene sottoposto alla macchina
  la testina ha un posizione iniziale P0

Funzionamento di una MdT

  Negli istanti successivi la macchina si sposta


dalla sua configurazione iniziale ad altre
configurazioni attraverso una serie di passi
  evoluzione della MdT in una sequenza discreta di
istanti successivi [istante 0, 1, 2, …, n]

  Ogni passo è determinato dalla scelta di


un’istruzione, che prende in considerazione
due variabili:
  lo stato attuale S in cui si trova la MdT (conosciuto
dalla macchina stessa)
  il carattere C che la testina trova scritto nella cella di
memoria su cui è posizionata (letto dalla testina)

50
Funzionamento di una MdT

  La scelta di un’istruzione comporta


l’esecuzione di:
  un’eventuale modifica del carattere C contenuto della
casella (effettuato dalla testina di I/O)
  un eventuale spostamento della testina di una
posizione verso destra o verso sinistra
  un eventuale cambiamento di stato

  La serie finita di istruzioni che una MdT è in


grado di eseguire costituiscono il suo
programma. Ogni istruzione è rappresentabile
da una quintupla di elementi:
  [stato attuale], [simbolo letto]  [simbolo scritto],
[movimento della testina], [stato successivo]

Funzionamento di una MdT

  Nei casi più semplici, l'evoluzione si arresta


in quanto non si trova nessuna istruzione in
grado di farla proseguire.
  arresto in una configurazione "utile": ciò che
si trova registrato sul nastro all'atto
dell'arresto rappresenta il risultato
dell'elaborazione
  arresto in una configurazione "inutile“:
conclusione erronea dell'elaborazione
  può anche accadere che un'evoluzione non
abbia mai fine

51
Una MdT per l’addizione:
configurazione iniziale
  Stato iniziale
  A
  Contenuto iniziale del nastro
  tutte le celle contengono il simbolo 0, tranne due
gruppi (non contigui) formati rispettivamente da due e
da tre celle che contengono il simbolo 1
  Posizione iniziale della testina
  prima cella occupata da un 1

A …0 0 1 1 0 1 1 1 0 0 …

Una MdT per l’addizione:


set delle istruzioni e passi
stato simbolo simbolo movimento stato
attuale letto scritto della testina successivo
A 1 0 destra B
B 1 1 destra B
B 0 1 STOP END
LETTURA ESECUZIONE

A …0 0 1 1 0 1 1 1 0 0 … > scrivi 0, spostati a DX,


passa allo stato B

B …0 0 0 1 0 1 1 1 0 0 … > scrivi 1, spostati a DX,


passa allo stato B

scrivi 1, fermati, passa


B …0 0 0 1 0 1 1 1 0 0 … >
allo stato END

END …0 0 0 1 1 1 1 1 0 0 … > stato finale

52
Limiti di computabilità

  Secondo la congettura di Church-Turing,


l’insieme delle funzioni computabili dalla
macchina di Turing coincide con l’insieme delle
funzioni effettivamente computabili
  ad oggi, tale congettura non è stata mai smentita

  Problemi non computabili


  es. halting problem: lo stesso Turing ha dimostrato
che, data una MdT “X” e una stringa di dati in
ingresso, non è possibile costruire una MdT “Y” che
sia in grado di decidere se “X” si fermerà o no

Una macchina universale

  Turing propose un modello teorico di


macchina universale, ovvero una MdT
capace di emulare il comportamento di
qualsiasi altra macchina

  Idea base: la MdTu è in grado di leggere


non solo i dati, ma anche le istruzioni (il
programma) dal nastro stesso
  analogia con i moderni elaboratori:
macchine universali programmabili

53
8. L’architettura di von Neumann:
l’Unità Centrale dell’elaboratore

Turing e von Neumann


  Tra il ’37 e il ’38 Turing trascorse un periodo di
ricerca a Princeton, dove incontrò, tra gli altri John
von Neumann

  Von Neumann applicò l’idea di una macchina


universale alla costruzione di un calcolatore reale:
  nella memoria (simile al nastro bidimensionale)
risiedevano dati e programmi
  c’era un unico controllo logico che, sulla base della
tavola di istruzioni (programma), gestiva in modo
centralizzato tutte le operazioni in successione
  esistevano organi di input e di output (che nella MdTu
erano porzioni del nastro)

54
Primi elaboratori elettronici
  Von Neumann prese parte alla progettazione e alla
realizzazione di due fra i primi computer
  l’ENIAC (Electronic Numerical Integrator and
Computer, 1946), fino al 1973 ritenuto il primo
calcolatore elettronico programmabile
•  30 armadi alti quasi 3m, peso 30t, superficie 180mq
•  300 moltiplicazioni al secondo
  l’EDVAC (Electronic Discrete Variable Automatic
Computer, 1951), primo computer con programmi in
memoria
•  lo schema generale dell’architettura di von Neumann fu
pubblicata in un report tecnico relativo a questo
elaboratore (http://www.virtualtravelog.net/entries/
2003-08-TheFirstDraft.pdf)

L’architettura di
von Neumann
  Cinque componenti fondamentali:
  CPU (Central Processing Unit) o unità di
lavoro che si divide a sua volta in
•  unità operativa, nella quale uno dei sottosistemi
più rilevanti è l'ALU (Arithmetic Logic Unit), che
esegue le operazioni aritmetiche e logiche
•  unità di controllo, che controlla tutti i processi
  Unità di memoria, intesa come memoria di
lavoro o memoria principale (RAM,
Random Access Memory)
•  CPU + memoria principale = Unità Centrale

55
L’architettura di
von Neumann
  Cinque componenti fondamentali:
  Bus, un canale che permette ai dati, agli
indirizzi e ai risultati di viaggiare dentro la
CPU e fuori di essa verso la memoria
  Unità di input, tramite la quale i dati
vengono inseriti nel calcolatore per essere
elaborati
  Unità di output, necessaria affinché i dati
elaborati possano essere restituiti
all'operatore

L’architettura di von Neumann


(schema semplificato)

56
CPU e memoria principale

  La CPU è in grado di
  eseguire una dopo l’altra (sequenzialmente) le
istruzioni di un programma
  inviare e ricevere dati da e verso la memoria
principale

  All'interno dell'ALU è presente un registro


(accumulatore), che è in grado di memorizzare
questi dati, al fine di poterle avere a disposizione
nell’elaborazione
  parola (word), sequenze di bit di una determinata
dimensione gestita come unità dal microprocessore
  dimensioni standard di una parola nei processori
moderni: 32 bit / 64 bit

Generalità dell’architettura di
von Neumann
  È importante sottolineare che tale
architettura, a differenza di altre, si distingue
per la caratteristica di immagazzinare
all'interno dell'unità di memoria, sia i dati dei
programmi in esecuzione che il codice di
questi ultimi

  La schematizzazione di von Neumann,


seppure molto sintetica, è molto potente:
basti pensare che i computer di uso comune
sono progettati ancora oggi secondo
un’architettura molto simile

57
Architettura di un
elaboratore moderno

La scheda madre

58
9. La memoria

Le memoria principale

  Insieme al processore forma l’Unità


Centrale di un elaboratore

  Mette a disposizione del processore i


programmi e i dati da usare

  È costituita da una sequenza di celle di


memoria
  ad
ogni cella è associato un indirizzo (un
numero progressivo a partire da 0)

59
RAM

  Random Access Memory:


  si può accedere direttamente alle varie celle,
una volta noto il loro indirizzo
  il tempo necessario per accedere ad una
cella è lo stesso, indipendentemente dalla
posizione della cella nella sequenza
  il termine “random” (casuale) indica proprio il
fatto che non vi sono differenze nell’accesso
alle varie celle della memoria (il computer
può accedere in qualsiasi momento a
qualsiasi locazione)

Proprietà della memoria


principale
  Volatile: è fatta di componenti elettronici, togliendo
l’alimentazione si perde tutto

  Veloce: tempo di accesso dell’ordine di poche


decine di nanosecondi (miliardesimi di secondo)
  tempo di accesso: il tempo tra Il momento in cui il
processore specifica l’indirizzo della cella sui cui
vuole operare (lettura/scrittura) e il momento in cui
l’operazione è terminata (il dato letto e disponibile
oppure il dato scritto è in memoria)

  Relativamente costosa (costo per bit)


  i costi sono comunque in continua diminuzione

60
Struttura della RAM
Contenuto (in questo
Indirizzi esempio, 8 bit)
  Tutte le celle hanno la
stessa dimensione: 8, 0
16, 32, o 64 bit 1
  Le operazioni che si 2
3
eseguono sulla memoria
4
sono operazioni di 5
lettura e scrittura
  Una cella può contenere
(parte di) un dato o
un’istruzione
N

Indirizzi

  Ogni calcolatore usa un numero di bit


costante per rappresentare gli indirizzi
  Maggiore è il numero di bit usati, maggiore
sarà il numero di celle indirizzabili: spazio di
indirizzamento
  se si usano 16 bit per codificare gli indirizzi,
si potranno indirizzare fino a 65.536 celle
(circa 64 KB di memoria, nell’ipotesi di celle
di memoria di 1 byte)
  con 32 bit si potranno indirizzare fino a
4.294.967.296 celle (circa 4 GB di memoria)

61
Dimensioni della RAM

  Le unità di misura della memoria RAM


variano a seconda del tipo di calcolatore
  vengono espresse in MB o GB
  attualmente, nei moderni PC si va
generalmente dai 128 MB ai 4 GB

  La RAM, fino ad un certo limite, è


espandibile
  slot di espansione

ROM

  Read Only Memory, memoria di sola lettura


  non può essere modificata
  non è volatile
  veloce quasi come la RAM
  contiene una serie di istruzioni che hanno lo
scopo di avviare il PC (bootstrap) e di
consentirgli di interagire con altri componenti
tramite l'implementazione di protocolli di
comunicazione o interfacce di
programmazione (cfr.  BIOS)

62
Memoria cache

  Livello di memoria intermedio tra i registri (unità


di memoria interne al processore) e la RAM
  Memorizza i dati usati più spesso senza doverli
recuperare tutte le volte dalla RAM (che è più lenta)
  Influisce moltissimo sulle prestazioni e sul costo della
CPU (e quindi del computer)
  È molto più costosa della RAM
  In genere è interna al processore (cache L1),
ma esiste anche una cache secondaria (L2)
esterna al processore
  Le sue dimensione tipiche vanno dai 256KB a
1MB

Buffer

  Piccole parti di RAM con funzioni di


memoria temporanea

  Usati per il passaggio delle informazioni da


un programma o dispositivo ad un altro

  In Windows si parla spesso di Clipboard


(appunti) memoria temporanea usata per
esempio per le operazioni di Copia e Incolla

63
Famiglie di memoria
  DRAM (RAM dinamiche):
  tempi di accesso di 40-60 nanosecondi
  normalmente usate per la RAM
  SDRAM: DRAM sincrono
  DDR DRAM: Double Data Rate, raddoppia la velocità
di trasferimento di dati tra la memoria e il processore

  SRAM (RAM statiche):


  tempi di accesso molto ridotti
  costi elevati
  normalmente usate per la memoria cache

  VRAM (RAM video): usate per la gestione delle immagini

La memoria secondaria

  È in grado di memorizzare i programmi e i


dati in modo permanente

  È più lenta rispetto alla memoria principale


(presenza di dispositivi meccanici)

  È meno costosa della memoria principale:


di conseguenza, le sue dimensioni possono
essere molto maggiori

64
Caratteristiche della
memoria secondaria
  La memoria principale permette di indirizzare
ogni singola cella (8, 16, 32 o 64 bit)

  Nel caso della memoria secondaria, le


informazioni sono organizzate in blocchi di
dimensioni più grandi (da 512 byte a 4 KB)
  si riducono le dimensioni degli indirizzi
  si velocizzano le operazioni di lettura e scrittura

Tipi di memoria secondaria

  Per memorizzare in modo permanente le


istruzioni dei programmi e i dati, la memoria
secondaria utilizza principalmente tecnologie
basate:
  sul magnetismo (tecnologia magnetica)
•  dischi magnetici (hard disk e floppy disk)
•  nastri magnetici
  sull’uso dei raggi laser (tecnologia ottica)
•  dischi ottici (CD-ROM, DVD)
  sulla memoria flash (memoria elettronica allo
stato solido)
•  USB memory card

65
La memoria magnetica

  Sfrutta il fenomeno fisico della


polarizzazione
  sul supporto ci sono delle particelle
magnetiche
  i due diversi tipi di magnetizzazione (positiva
e negativa) corrispondono alle unità
elementari di informazione (0 e 1)
  la testina di lettura/scrittura rileva (e,
nell’operazione di scrittura, può cambiare) la
polarizzazione

Dischi magnetici

  I dischi magnetici: sono i supporti di


memoria più diffusi

  Nel corso delle operazioni:


  i dischi vengono mantenuti in rotazione a
velocità costante
  le informazioni vengono lette e scritte da
testine del tutto simili a quelle utilizzate nelle
cassette audio/video

66
Struttura di un disco
magnetico
  I dischi sono suddivisi in tracce
concentriche e settori (“fette” di disco)
  i settori suddividono ogni traccia in porzioni
dette blocchi
Traccia Blocco
Testina
Settore

Formattazione

  La suddivisione della superficie di un disco in


tracce e settori viene detta formattazione
  tutti i blocchi contengono la stessa quantità di
informazione, indipendentemente dalla loro
posizione sul disco
  la tracce adiacenti e i settori consecutivi sono
separati da una parte vuote (gap)

  Il blocco è la minima unità indirizzabile


  il suo indirizzo è dato da una coppia di numeri
che rappresentano il numero della traccia e il
numero del settore

67
Accesso ai dischi magnetici

  I dischi magnetici consentono l’accesso diretto


  noto il numero della traccia e il numero del settore, è
possibile posizionare direttamente la testina su un
qualunque blocco

  Il disco gira, mentre la testina sposta solo in


senso radiale:
  seek time (o tempo di ricerca): il tempo necessario
per posizionare la testina sulla traccia richiesta
  latenza di rotazione: è il tempo per arrivare al settore
cercato (dato che la traccia è raggiunta)
  tempo di accesso totale = tempo di lettura/scrittura +
seek time + latenza di rotazione

Schema dei dischi magnetici

  Floppy disk (dischetti   Hard disk (disco rigido/fisso):


rimovibili): 3,5 pollici di più dischi sovrapposti; vari
diametro, 1,44 MB, GB; circa 5.000 - 10.000 giri/
circa 300 giri/minuto minuto

testina testine
piatto piatti

briaccio

68
La memoria ottica

  Usa un raggio laser e sfrutta la riflessione della


luce
  il raggio laser viene riflesso in modo diverso da
superfici diverse
  superfici con dei piccolissimi forellini (ogni unità di
superficie può essere forata o non forata)
  lettura in base alla riflessione del raggio laser

1 0 0 1

Uno sguardo ravvicinato

1 0 1 0 0 1 0 0 1

69
I dischi ottici

  I dati non sono organizzati in tracce e settori:


  sono organizzati in un spirale dal centro del
disco alla periferia
  accesso sequenziale, non diretto

  Hanno un capacità di memorizzazione


superiore rispetto ai dischi magnetici estraibili

  Hanno costo inferiore rispetto ai dischi


magnetici, sono più affidabili e difficili da
rovinare

10. Struttura interna e


funzionamento della CPU

70
Inside the memory

  Programmi
  sequenze di istruzioni per l’elaborazione
delle informazione
  definiscono quale debba essere il
comportamento del processore
  i computer eseguono deterministicamente
istruzioni

  Dati
  sequenze di bit, interpretabili in diversi modi

Programmi e dati

  I programmi e i dati risiedono stabilmente


nella memoria secondaria

  Per essere eseguiti (i programmi) e usati (i


dati), vengono copiati nella memoria
principale (RAM)

  A questo punto, il processore è in grado di


eseguire le istruzioni di cui sono composti i
programmi

71
Istruzioni macchina

  Per ogni tipo di processore è associato un


insieme di istruzioni, chiamate istruzioni
macchina, ognuna delle quali corrisponde
ad un’operazione elementare

  Operazioni più complesse possono essere


realizzate mediante sequenze di operazioni
elementari
  combinando in modo diverso sequenze
anche molto lunghe di istruzioni si possono
far svolgere al computer molti compiti diversi

Tipi di istruzioni macchina

  Istruzioni aritmetico-logiche:
  addizione, sottrazione, confronto tra due numeri…
  AND, OR, NOT, XOR…

  Istruzioni di trasferimento dati:


  indicano quali dati trasferire e in quale direzione
(memoria, CPU, input, output)

  Istruzioni di controllo:
  permettono modificare il flusso di esecuzione delle
istruzione (per esempio, sulla base di eventi esterni o
di risultati ottenuti dalle istruzioni precedenti)

72
Caratteristiche delle
istruzioni
  Le istruzioni possono avere formati diversi, e
contemplano degli “argomenti”
  Formatodi un’istruzione:
CODICE istruzione | ARG1 | ARG2 | … ARGn

  Per le istruzioni aritmetico-logiche e quelle di


trasferimento dati è necessario specificare
ogni volta “dove” si trovano i dati che devono
essere elaborati/caricati, o dove devono
essere scritti i dati che risultano da
un’elaborazione

Esempi di istruzioni
(in assembly)
  Istruzioni aritmetico-logiche
  ADD R1 R2 R3: recupero dei valori nei registri
(memoria interna al processore) R2 e R3 e inserimento
del risultato della loro somma nel registro R1

  Istruzioni di trasferimento dati


  LOAD 3568 R2: lettura del valore nella cella con
indirizzo 3568 e caricamento nel registro R2

  Istruzioni di controllo
  IF_EQ […]: se una condizione è vera, proseguire in un
certo modo, altrimenti proseguire in un altro modo
  GOTO 1013: salta all’istruzione contenuta nella cella di
memoria con indirizzo 1013

73
Il linguaggio macchina
  Il linguaggio in cui si scrivono le istruzioni macchina
prende il nome di linguaggio macchina
  una sequenza di tali istruzioni prende il nome di
programma in linguaggio macchina
  Il linguaggio macchina è in formato binario (l’unico
interpretabile da un processore)

  Ogni tipo di processore è in grado di eseguire un


numero (molto) limitato di istruzioni macchina
  processori CISC (Complex Instruction Set Computer):
qualche centinaia di istruzioni
  processori RISC (Reduced Instruction Set Computer):
60-80 istruzioni

I programmi e i processori

  Famiglie di processori: Intel, Motorola, Sun, …

  Processori della stessa famiglia normalmente


possono eseguire gli stessi programmi scritti in
linguaggio macchina (ma non sempre)

  Processori di famiglie diverse normalmente non


possono eseguire gli stessi programmi scritti in
linguaggio macchina
  le istruzioni che “capiscono” sono diverse

74
Programmi, elaboratori e
programmatori
  Il computer esegue le istruzioni di un programma
codificato in formato binario, ma un programmatore
non scrive codice in linguaggio macchina
  Linguaggio assembly: traduce le istruzioni del
linguaggio macchina in un formato non binario
  I programmatori scrivono i programmi usando
linguaggi con un maggiore livello di “astrazione”
  linguaggi di programmazione di alto livello (Java, C…)
  un singolo commando di un linguaggio di
programmazione può corrispondere a più istruzioni
macchina

CPU

  La CPU è costituita da diversi componenti che


svolgono compiti diversi
REGISTRI
Bus Interno Program Counter
Registro di Stato
Unità di Registro Istruzioni
controllo

… Registri Generali 8 o 16
Unità
aritmetico
logica Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo

75
Unità di controllo

  L’unità di controllo è la parte più importante


del processore:

  esegue le istruzioni dei programmi

  coordina le attività del processore

  controlla il flusso delle istruzioni tra il


processore e la memoria

Unità di controllo

  Svolge la sua attività in modo ciclico


(implementa il ciclo macchina):

  fetch istruzione
•  preleva dalla memoria principale la “prossima”
istruzione da eseguire
  decodifica istruzione
  fetch dati
•  preleva dalla memoria gli operandi specificati
nell’istruzione
  esecuzione istruzione
  restituzione risultato

76
Unità di controllo

  L’esecuzione comporta l’invio di comandi


opportuni all’unità relativa

  calcoli  Unità Aritmetico Logica

  lettura/scrittura dati  memoria

  acquisizione/stampa  dispositivi di I/O

Bus
  Bus interno: permette la comunicazione tra i
componenti del processore
  Bus esterno: permette la comunicazione tra il
processore e gli altri componenti dell’elaboratore

CPU RAM Interfaccia

dati
indirizzi
controllo

77
Bus
CPU RAM
…

REGISTRI 1000


LOAD
4809
R2

Bus Interno
1001


LOAD
3568
R1

1002


ADD
R1
R2

Unità di
controllo 1003


STORE
R1
3568

1004


GOTO
1001

… …

Unità
aritmetico
3568
25

logica …

4809
30

…
 Interfaccia

Registri

  I registri sono delle unità di memoria


estremamente veloci

  Sono usate per mantenere le informazioni di


necessità immediata per il processore

  Le dimensioni dei registri variano da 16, 32,


64 bit

78
Registri

  Program Counter
  memorizza l’indirizzo della “prossima”
istruzione da eseguire
•  normalmente le istruzioni di un programma sono
memorizzati in sequenza nella memoria principale
•  il Program Counter è aumentato (di 1) ogni ciclo
(indirizzo della prossima istruzione da eseguire)
•  eccezione: istruzione di controllo (es. GOTO)

  Registri Generali
  registri
utilizzati come memorie temporanee
per svolgere le operazioni matematiche

Unità aritmetico logica

  L’Unità aritmetico logica (ALU) si occupa di


eseguire le operazioni di tipo aritmetico/
logico
  somme, sottrazioni, …, confronti, operatori
logici, …
  Preleva gli operandi delle operazioni dai
Registri Generali
  Deposita il risultato delle operazioni nei
Registri Generali
  Insieme all’unità di controllo collabora al
completamento di un ciclo macchina

79
Clock
  Abbiamo detto che il processore svolge la sua
attività in modo ciclico (ciclo macchina)
  ad ogni ciclo corrisponde l’esecuzione di
un’operazione elementare (un’istruzione macchina)

  Il clock fornisce una cadenza temporale per


l’esecuzione delle operazioni elementari

  La frequenza del clock del processore si misura in


Hz (MHz, GHz…)
  es 3.0 GHz = 3.000.000.000 di cicli al secondo

Clock
  Ipotesi semplificata: ogni battito di clock corrisponde
esattamente l’esecuzione di una sola istruzione
macchina
  es. il clock ha ~66 milioni di battiti per secondo 
il computer può eseguire ~66 milioni di operazioni al
secondo

  In realtà, l’esecuzione di una istruzione può richiedere


più battiti di clock. oppure nello stesso ciclo di clock si
possono eseguire (parti) di istruzioni diverse
  dipende dal tipo di processore
  es. moltiplicazione tra due numeri: Intel 80286  20
battiti di clock; Intel 80486  1 battito di clock

80
Esecuzione di un
programma
  I programmi e i dati risiedono nella memoria
secondaria
  all’aumentare della capacità di memoria di massa,
aumenterà il numero di programmi e di dati che
potete conservare nel vostro computer

  Per essere eseguiti (i programmi) e usati (i dati)


vengono copiati dalla memoria secondaria (di solito un
hard disk) nella memoria principale
  caricamento del programma, eseguito dal sistema
operativo

  A questo punto, il processore è in grado di eseguire le


istruzioni di cui sono composti i programmi e di
elaborare i dati

11. Il sistema operativo

81
Il computer

  HARDWARE: parte fisica


  non
è sufficiente per il funzionamento del
computer

  È necessario introdurre il SOFTWARE


  insieme dei programmi in grado di
funzionare su di un elaboratore
  proprietàfondamentale dell’elaboratore:
essere programmabile (in grado di svolgere
funzioni di natura diversa)

Il software

  Software di base
  gestione del sistema (controlla l’hardware,
gestisce l’interfaccia con utente, coordina le
applicazioni; cfr. sistema operativo,
interfaccia di rete…)

  Software applicativo
  uso del sistema (programmi che permettono
di svolgere le varie funzioni richieste
all’elaboratore)

82
Programmazione
dell’elaboratore
  Una programmazione diretta della macchina
hardware da parte degli utenti creerebbe
delle serie difficoltà
  l’utente dovrebbe conoscere
l’organizzazione fisica dell’elaboratore e il
suo linguaggio macchina
  ogni programma dovrebbe essere scritto
utilizzando delle sequenze di bit ed ogni
piccola differenza hardware comporterebbe
una riscrittura del programma stesso

Verso la macchina virtuale

  Ènecessario fornire un meccanismo per


astrarre dall’organizzazione fisica della
macchina

  L’utente deve:
  poter usare nello stesso modo (o comunque
in un modo molto simile) macchine diverse
dal punto di vista hardware
  avere un linguaggio di interazione semplice
con la macchina
  avere un insieme di programmi applicativi
per svolgere compiti diversi

83
La “macchina virtuale”

  Nei moderni sistemi di elaborazione questi


obiettivi vengono raggiunti grazie alla
definizione della macchina virtuale
  realizzata attraverso il software di base, al di
sopra della macchina (hardware) reale
  virtuale in quanto non esiste fisicamente
  si può fare in modo che macchine (fisicamente)
differenti siano usabili in modo simile

  L’utente interagisce con la macchina virtuale


grazie ad un opportuno linguaggio di comandi

Il linguaggio di comandi

  Ogni computer ha un linguaggio macchina, le


cui istruzioni sono direttamente eseguibili dalla
macchina hardware
  Al di sopra di queste istruzioni di base è
possibile definire comandi e istruzioni di livello
“più alto” (più complesse, più astratte, più vicine
all’utente)
  La macchina virtuale si preoccupa di tradurre le
istruzioni impartite dall’utente in sequenze di
istruzioni macchina che realizzano la funzione
richiesta

84
Funzioni principali del
sistema operativo
  Gestione del processore e dei programmi in
esecuzione (processi)

  Gestione della memoria


  principale
  virtuale
  secondaria

  Gestione dei dispositivi di input/output

  Interazione con l’utente

Interfaccia testuale

  MS-DOS, Unix shell, Linux shell


  Lavorando con una interfaccia testuale i
comandi vengono impartiti mediante la tastiera
  Ogni comando ha un suo nome e una sintassi
ben precisa

C:> print foo1.doc


Can’t find file foo1.doc
prompt
C:>

85
Interfaccia grafica

  Nei calcolatori con interfaccia grafica molti


comandi sono impartiti mediante
l’interazione attraverso il mouse e la tastiera

  Il clic (o doppio clic) del mouse su un’icona,


ad esempio, viene di volta in volta tradotto
in una opportuna sequenza di istruzioni che
il computer esegue per soddisfare la
richiesta dell’utente

Schema del
sistema operativo
Utente

0111000101
Hardware
1101010100
0011110

Avvio

Gestione: processi, memoria, dispositivi di input/output

Interfaccia utente

86
Struttura “a cipolla”

  Dalpunto di vista strutturale il sistema


operativo è formato da un insieme di livelli,
che formano la cosi detta struttura “a
cipolla”

  Idealmente l’utente è ignaro di tutti i dettagli


delle operazioni svolte dai livelli inferiori
della gerarchia e conosce solo le operazioni
del livello più alto

Tipi di sistema operativo

  Mono-utente o multi-utente (mono/multi-


user)
  elaboratori di tipo personale VS elaboratori
utilizzabili da più utenti
(contemporaneamente)

  Mono-programmati o multi-programmati
(mono/multi-tasking)
  elaboratori
in grado di eseguire un solo
programma alla volta VS più programmi
“contemporaneamente”

87
Avvio dell’elaboratore

  Il sistema operativo viene mandato in


esecuzione al momento dell’accensione del
computer (bootstrap)
  In questa fase, viene caricata nella memoria
principale una parte del sistema operativo, che
comprende programmi per
  la gestione del processore
  la gestione della memoria
  la gestione dei dispositivi di input/output
  la gestione delle risorse hardware
  la gestione del file system
  la creazione dell’interfaccia verso l’utente

Avvio dell’elaboratore
0
  Una parte del 1
2
sistema operativo 3 S.O.
deve essere 4
5
sempre mantenuta
in MEMORIA
PRINCIPALE e
deve essere spazio
sempre pronta per utente
l’esecuzione
N

88
Gestione del processore e
dei programmi in esecuzione
  Sistemi MONO-tasking: l’utente può eseguire
un solo programma alla volta
  forzato a “sequenzializzare” i programmi
  il programma viene lanciato, eseguito e
quindi terminato
  il processore non viene sfruttato al meglio: si
spreca molto tempo, in quanto
• il processore è molto più veloce dei supporti di
memoria secondaria e delle altre periferiche
• passa la maggior parte del suo tempo in attesa
(stato inattivo, idle)

Sistema mono-tasking:
esempio 1
  Un processo è costituito da 1000=103
istruzioni
  ogni istruzione richiede 10-6 secondi per
essere eseguita dal processore
  tempo totale di esecuzione: 103 * 10-6 = 10-3
= 1 millisecondo
  A metà esecuzione è richiesta la lettura di un
dato dal disco. Il tempo di lettura è 1
millisecondo
  Tempo totale di esecuzione = 2 millisecondi
  Idle time = 1 millisecondo: 50% del tempo
totale di esecuzione è tempo sprecato

89
Sistema mono-tasking:
esempio 2
  Un processo è costituito da 1000=103
istruzioni
  Ogni istruzione richiede 10-6 secondi per
essere eseguita dal processore
  Tempo totale di esecuzione: 103 * 10-6 = 10-3
= 1 millisecondo
  A metà esecuzione è richiesta un dato
al’utente. Il tempo di reazione è 1 secondo
  Tempo totale dell’esecuzione = 1001
millisecondi
  Idle time = 1 secondo: 99,9% del tempo totale
di esecuzione è tempo sprecato

Esecuzione sequenziale

Processo P1 Processo P2
inizio fine inizio fine

esecuzione in attesa

Processore

attivo idle

90
Gestione del processore e
dei programmi in esecuzione
  Sistemi MULTI-tasking
  quando il processore è nello stato di idle lo si
può sfruttare per eseguire (parte di) un altro
processo
  quando un processo si ferma (per esempio
in attesa di un dato dall’utente) il processore
può passare ad eseguire le istruzioni di un
altro processo
  il sistema operativo si occupa dell’alternanza
tra i processi in esecuzione

Sistemi multi-tasking

Dal punto di vista dei processi


P1

P2

Dal punto di vista del processore

esecuzione P1 esecuzione P2

91
Sistemi multi-tasking

  Più programmi sembrano essere eseguiti


“contemporaneamente”

  In realtà in esecuzione c’è sempre un solo


processo
  ma, se l’alternanza è molto frequente (cfr.
frequenza di clock!), si ha un’idea di simultaneità

  Durante le varie fasi di gestione del processore,


un processo può trovarsi in tre diversi stati: in
esecuzione, in attesa, pronto

Gestione della memoria


secondaria
  La memoria secondaria serve per
memorizzare programmi e dati in modo
permanente

  File system: parte del sistema operativo che


si occupa di gestire e strutturare le
informazioni memorizzate sulla memoria
secondaria

  I file vengono utilizzati come supporto per la


memorizzazione di programmi e dati

92
Il file system

  Mediante il file system il sistema operativo


fornisce una visione astratta dei file su disco, e
permette di
  identificare ogni file mediante il suo nome
  effettuare l’accesso alle informazioni grazie ad
operazioni di alto livello, che non tengono conto
del tipo di memorizzazione (Hard-Disk. CD-
ROM…)
  strutturare i file, organizzandoli in sottoinsiemi
secondo le loro caratteristiche, per avere una
visione “ordinata” e strutturata delle informazioni
sul disco
  proteggere i propri file in un sistema multi-utente

Organizzazione gerarchica
dei file
  Un unico spazio (“contenitore”) di file è
scomodo
  non è possibile avere due file con lo stesso nome
nella stessa contenitore
  le operazioni di ricerca dei file diventano onerose

  L’idea è quella di raggruppare i file in


sottoinsiemi, memorizzati all’interno di
contenitori dette cartelle (directory)
  I nomi dei file sono locali alle directory
  si possono avere due file con lo stesso nome purché
siano in due directory diverse

93
12. Reti di Computer

Potenzialità delle reti

  Condivisione risorse:
  dati e programmi (es. base di dati a cui molti
utenti possono accedere da diversi computer)
  risorse fisiche (es. stampante)

  Comunicazione tra utenti in locazioni fisiche


differenti (scambio di messaggi e dati)
  in ambito di ricerca, lavoro cooperativo,
possibilità di volgere attività di lavoro a casa
(tele-lavoro), ecc.

94
Il modello centralizzato

  Anni ’70: modello centralizzato (time-sharing


multi-utente)  collegamento di molti utenti ad
un unico elaboratore potente (centralizzato)
attraverso terminali
  terminale: usato solo per inserire dati e ricevere
dati per la visualizzazione (per esempio, con
tastiera, schermo, mouse)  senza capacità di
elaborazione

  Svantaggio: più utenti  necessità di usare


computer (centralizzati) più potenti

Il modello distribuito

  Anni ’80: modello distribuito  collegamento in


rete di molti elaboratori (di varie potenze, tipi,
nella stessa località o in località diverse)

  Vantaggi rispetto al modello centralizzato:


  flessibilità: in un sistema centralizzato, in caso di
guasto all’elaboratore centrale nessuno può lavorare;
in un sistema distribuito, la rottura di una macchina
blocca un solo utente
  economicità: in termini di costi, è più conveniente
acquistare più elaboratori personali e collegarli in rete

95
Evoluzione dei modelli

Cos’è una rete?

  Dalpunto di vista FISICO è un insieme di


hardware, collegamenti e protocolli di
trasmissione che permettono la
comunicazione tra risorse remote

  Dal punto di vista LOGICO è un sistema


distribuito di dati, risorse di elaborazione, ed
utenti

96
Tipi di rete

  Dal punto di vista fisico, le reti possono


essere classificate in base a tre
parametri

  topologia (NODI e ARCHI; cfr. costo,


velocità, affidabilità)

  tecnologia di trasmissione

  scala

Topologia delle reti :


reti peer to peer
  Consistono di molte connessioni individuali tra coppie
di elaboratori
  Alta velocità
  la comunicazione deve attraversare un solo nodo
  Alta affidabilità
  se si rompe un nodo, la rete funziona
  Costo elevato
  numero di archi!

97
Topologia delle reti:
reti lineari (a bus)
  Unico canale di comunicazione (dorsale)
condiviso da tutte le macchine della rete

  I messaggi vengono inviati a tutti i nodi, ma solo


il nodo destinatario elaborerà il messaggio (gli
altri lo ignoreranno)

Topologia delle reti:


reti lineari (a bus)
  Buona velocità
  la comunicazione deve attraversare un solo
nodo, ma può risentire di problemi di traffico
elevato

  Buona affidabilità
  se si rompe un nodo, viene isolato ma la rete
funziona; se si rompe la dorsale, si creano due
sottoreti

  Costo limitato
  un nodo per ogni elaboratore collegato

98
Topologia delle reti:
reti ad anello
  I nodi sono organizzati secondo una
configurazione ad anello e non sono tutti
direttamente collegati
  Il segnale emesso da un nodo passa al nodo
successivo; se non è indirizzato a quel nodo,
viene ritrasmesso al nodo seguente, finché non
raggiunge il destinatario

Topologia delle reti:


reti ad anello
  Minore velocità
  attraversamento di nodi intermedi

  Minore affidabilità
  se un nodo non funziona, l’anello si interrompe
  l’aggiunta di un nuovo nodo comporta l’apertura
dell’anello

  Costo ridotto
  simile a quello delle reti lineari (n nodi  n archi)

99
Topologia delle reti:
reti a stella
  Architettura tipica per reti locali (LAN)
  I nodi sono tutti collegati a un nodo centrale,
tipicamente a un server
  Le comunicazioni tra due nodi non sono dirette
ma passano attraverso il server che provvede a
smistarle verso il nodo destinazione

SERVER

Topologia delle reti:


reti a stella
  Buona velocità
  la comunicazione deve attraversare due soli
nodi, ma può risentire di problemi di traffico
verso il server

  Buona affidabilità
  se si rompe un nodo esterno, la rete funziona;
tutto dipende dall’affidabilità del server

  Costo ridotto
  n nodi  n archi (+ costo del server)

100
Tecnologia di trasmissione

  Leconnessioni tra computer prevedono che


su ogni elaboratore sia presente una
scheda di rete (network card)

  Latrasmissione di dati tra calcolatori può


avvenire tramite
  mezzi guidati: linee fisiche che portano il
messaggio al ricevitore (doppino telefonico,
fibre ottiche...)
  mezzi non guidati: irradiazione di segnali
nello spazio (satelliti, wireless)

Metodi di trasmissione:
digitale VS analogica
  Reti locali
  si possono usare connessioni specializzate
dedicate solo a trasmissione di segnali
DIGITALI

  Reti a lunga distanza / Internet


  sicerca di sfruttare le reti esistenti, in
particolare la rete telefonica, che però è
progettata per trasmettere dati ANALOGICI
  occorre un metodo per trasformare da digitali
ad analogici, e viceversa (es. modem)

101
Metodi di trasmissione: linee
dedicate VS commutate
  Linee dedicate: usate esclusivamente per la
comunicazione tra due calcolatori

  Linee commutate: il canale di


comunicazione viene “costruito” di volta in
volta
  commutazione di circuito (rete telefonica; per
collegare due nodi, si crea un circuito)
  commutazione di pacchetto (Ethernet,
Internet; il messaggio viene suddiviso in parti
che vengono spedite indipendentemente)

Scala
  Un criterio alternativo per classificare le reti è legato
alla loro scala, che si determina in base alla
dimensione dei processori e alla loro distanza

10 m Stanza Rete locale LAN

100 m Edificio LAN

1 km Università LAN

10 km Città Rete metropolitana MAN

100 km Nazione Rete geografica WAN

1000 km Continente Internet

10000 km Pianeta Internet

102
LAN
(Local Area Network)
  Reti private per la condivisione di risorse
all’interno di un edifico o in edifici vicini
  risorse come computer, stampanti, dati

  Sono generalmente di dimensioni ridotte

  Sipossono distinguere a seconda della


topologia
  peer-to-peer, lineare, ad anello, a stella

MAN
(Metropolitan Area Network)
  Unarete metropolitana è sostanzialmente
una versione ingrandita di una LAN

  Può coprire un gruppo di uffici, aziende


diverse, una città

  Può essere pubblica o privata

103
WAN
(Wide Area Network)
  Una rete WAN copre una grande area
geografica
  es. rete GARR, che collega tutte le Università
italiane

  Nella maggior parte delle reti WAN la


sottorete di comunicazione è formata da
  linee di trasmissione (che spostano i dati fra i
vari nodi)
  elementi di commutazione (router), usati per
collegare due o più linee di trasmissione

13. Internet

104
Sviluppo di Internet
  Nasce da ARPAnet (creato alla fine degli anni ’60,
una rete singola e chiusa) e altre reti (reti
proprietarie)
  Rete delle reti: basata sull’interconnessione delle
reti (eterogenee) già esistenti (inter-networking)
  l'idea di interconnessione tra le reti è dei primi anni
’70
  Esplosione di Internet
  primi anni ’90: creazione del World Wide Web
  2002: accesso ad Internet per 457 milioni di persone
(di cui 174 milioni negli Stati Uniti)
  2006: accesso ad Internet per 1 miliardo di persone
(37% in Asia, 28% in Europa, 22% in Nord America)

Tipi di comunicazione
  Sincronizzazione tra mittente e destinatario
  Sincrona: il mittente e il destinatario sono attivi nello
stesso momento; es. conversazione telefonica
  Asincrona: l’invio e la ricezione hanno luogo in istanti
diversi; es. cartolina
  Rapporto tra mittente e destinatari
  Broadcast: un singolo mittente e molti destinatari; es.
radio, TV
  Multicast: un singolo mittente e un numeri limitato di
destinatari; es. riviste
  Point-to-point: un singolo mittente e un singolo
destinatario; es. telefono

105
Tipi di comunicazione

  Internet può essere considerato come un


mezzo di comunicazione universale
  Asincrona point-to-point: es. posta
elettronica
  Sincrona point-to-point: es. Instant
Messaging, Voice over IP
  Multicast: es. gruppi di piccola o media
dimensione che comunicano nelle chat
  Broadcast: es. pagine web

Componenti di Internet

  Host (o sistema terminale)


  tradizionalmente, un PC, un workstation, o un
computer più potente
  sempre più connessi i sistema terminali come portatili,
PDA, televisori, telefoni cellulari, automobili,
elettrodomestici, ecc.

  Collegamenti (communication link)


  di vari tipi: cavi (di rame, fibre ottiche ecc.), onde
elettromagnetiche (collegamenti senza fili, satellitari
ecc.)

106
Componenti di Internet

  Commutatori di pacchetto (router /switch)


  i computer vengono connessi in un modo indiretto
tramite dispositivi di instradamento
  prendono informazioni da uno dei collegamenti e
ritrasmettono su un altro collegamento (verso la
destinazione finale)
  ISP (Internet Service Provider)
  insieme di collegamenti e commutatori di pacchetto
(es. compagnie telefoniche, aziende, università ecc.)
  accesso ad Internet per i sistemi terminali (dial-up a
56 Kbps via modem, a banda larga, senza fili...).
  accesso a Internet per i fornitori di contenuti (es.
pubblicare un sito web a Internet)

Client/Server
  Gli host possono essere identificati come client e/o
server
  client: il computer che richiede servizi da un altro
computer
  server: il computer che fornisce un servizio a un client

  Tipicamente, in un certo intervallo di tempo


  un host può essere client di molti server
  un host può essere server di molti client
  es. un client può richiedere molti siti web da diversi
server, un web server può fornire una pagina web a
molti client

107
Server
  Server in una rete locale
  Server gestore dei dati (file server): gestisce la
memorizzazione e la condivisione di dati
  Server di stampa (printer server): gestisce le
stampanti disponibili nella rete
  Server di comunicazione: permette l’accesso ad altre
reti locali o ad Internet

  Server in Internet
  Web server: risponde alle richieste per accedere a
una pagina web
  Server di posta elettronica: riceve e memorizza email,
permette la lettura della casella di posta elettronica

Software per reti

  Programma client: un programma eseguito da un


host che richiede e riceve un servizio da un
programma server in esecuzione su un altro host

  Programmi peer-to-peer (P2P): un programma P2P


sul host funziona sia come client che come server
  un host in questo caso viene chiamato peer
  un host agisce come client quando richiede un
documento da un altro peer, e agisce come server
quando invia un file a un altro peer
  es. telefonia Internet (Voice over IP), file sharing

108
I protocolli
  I protocolli controllano l’invio e la ricezione di
informazione in Internet, e nelle reti in generale
  usati dai sistemi terminali, i commutatori di pacchetto
e altre parti di Internet
  “definiscono il formato e l’ordine dei messaggi
scambiati tra due o più entità in comunicazione”
  “definiscono le azioni intraprese in fase di
trasmissione e/o di ricezione di un messaggio o di un
altro evento” (Kurose e Ross, Internet e Reti di
Calcolatori)
  Principali protocolli in Internet: nome collettivo di
TCP/IP (Transmission Control Protocol / Internet
Protocol)

I protocolli

  Esempio: protocollo usato quando si invia


una richiesta per una pagina web:
  il nostro computer invia la richiesta per una
connessione al server web (il computer che
fornisce la pagina web)
  il server web risponde con un messaggio di
risposta di connessione
  il nostro computer invia il nome della pagina
che vuole prelevare tramite il messaggio
“Get”
  il server web restituisce la pagina (<file>) al
nostro computer

109
I protocolli

  Un protocollo “monolitico” che realizzi tutte le


funzionalità necessarie per la comunicazione
tra elaboratori in rete è difficile da realizzare

  Inoltre, se cambia qualche componente della


rete, si deve modificare l’intero protocollo

  Per ridurre la complessità di progettazione la


maggior parte dei protocolli è organizzata come
una serie di livelli
  il numero dei livelli, il loro nome, le funzionalità
differiscono da una rete ad un’altra

I protocolli

  Nei protocolli di comunicazione nelle reti si


ipotizzano dei livelli: Il livello n di un dispositivo in
rete comunica (virtualmente) con il livello n di un
altro dispositivo
  In realtà, fatta eccezione per il livello fisico, nessun
dato viene trasferito da un dispositivo ad un altro
dispositivo: il dato passa ad un livello sottostante
  un protocollo di livello n usa i servizi forniti dal livello
n-1 e fornisce i servizi al livello n+1
  Per ogni coppia di livelli adiacenti esiste
un'interfaccia
  Al di sotto del livello più basso c’è il mezzo fisico
che serve per il trasferimento dei dati
  Un livello di protocollo può essere implementato via
software, hardware, o in modo combinato

110
I protocolli Internet: TCP/IP

  Famiglia di protocolli TCP/IP


 struttura a 5 livelli
CLIENT SERVER

Applicazione Applicazione
Trasporto Trasporto
Rete Rete
Collegamento Collegamento
Fisico Fisico

I protocolli Internet: TCP/IP


Livello di applicazione

HTTP FTP SMTP TELNET … DNS …

TCP UDP Livello di trasporto

IP Livello di rete

Livello di collegamento

Livello fisico

111
Livello di applicazione

  I protocolli a questo livello creano messaggi di


vari tipi (es. messaggi di richiesta per la
visualizzazione di una pagina web, messaggio
che contiene un’email, ecc.)
  SMTP: Simple Mail Transfer Protocol
  FTP: File Transfer Protocol
  TELNET
  HTTP: HyperText Transfer Protocol
  DNS: Domain Name System

Livello di trasporto

  In Internet, due protocolli di trasporto


  TCP (Transmission Control Protocol):
garantisce il trasferimento dei messaggi,
controlla il flusso in rete (fa il confronto della
velocità tra il mittente e il destinatario);
fraziona il messaggio in frammenti più brevi
(pacchetti)
  UDP: non fornisce nessuna garanzia di
consegna di un messaggio (tipicamente
usati per la telefonia Internet e la
videoconferenza)

112
Livello di rete

  Spesso chiamato livello IP

  Due principali componenti


  protocollo IP: definisce l’informazione che
deve essere aggiunta al pacchetto per
realizzare il trasferimento nella rete
  protocolli per instradamento: determinano i
percorsi che i pacchetti devono seguire nella
rete (diversi da rete a rete)

Livello di collegamento

  Alcuniprotocolli del livello di collegamento


garantiscono la consegna dei pacchetti in
modo affidabile
  un pacchetto potrebbe essere gestito da
differenti protocolli lungo il suo percorso
dall’origine alla destinazione
  Esempi
  Ethernet,WiFi
  PPP (protocollo punto-a-punto)

113
Livello fisico

  Trasferimento dei singoli bit da un nodo


della rete (host, commutatore ecc.) a un
altro
  unico livello in cui avviene una
trasmissione effettiva di dati

  Dipendente dall’effettivo mezzo trasmissivo


del collegamento
  protocolli diversi per tipi di cavi diversi, per
collegamenti satellitari diversi, ecc.

Indirizzi IP e DNS

  Ogni computer collegato in Internet ha un


indirizzo unico: il suo indirizzo IP
  Un indirizzo IP (IPv4) contiene 32 bit (~ 4
miliardi di indirizzi), che sono suddivisi in 4
campi da 8 bit ciascuno
  10000000000101000011111010101011
  10000000 00010100 00111110 10101011
  Di solito si usa una rappresentazione formata
da 4 numeri decimali (tra 0 e 255) separati da
un punto
  128.20.62.171

114
Indirizzi IP e DNS

  Gli indirizzi IP devono essere univoci


  per questo motivo è stata istituita una
organizzazione, Internet Assigned Number
Authority, preposta ad assegnare gli indirizzi IP
garantendone l’univocità
  Quando ci si collega ad Internet da casa, è il
provider (ISP) che assegna un indirizzo IP
scegliendolo tra quelli che ha acquistato
  I futuri indirizzi IP (IPv6) consisteranno di 128
bit (~ 3,4 x 1038 possibilità) per aumentare i
numeri degli indirizzi disponibili

Indirizzi IP e DNS

  Gli indirizzi IP numerici sono difficili da ricordare:


vengono usati indirizzi simbolici più significativi per
l’essere umano
  dit.unifi.it, cs.bham.ac.uk, developer.netscape.com
  Questi nome vengono tradotti in indirizzi IP numerici
mediante il Domain Name System (DNS)
  Gli indirizzi simbolici hanno un formato tipo:
  nome5.nome4.nome3.nome2.nome1
  Non vi è alcuna corrispondenza diretta tra i domini e
le reti che costituiscono Internet
  computer nella stessa rete fisica possono essere in
domini logici diversi, e computer in reti fisiche diverse
possono trovarsi nello stesso dominio logico

115
Indirizzi IP e DNS
  Schema gerarchico di nomi basato sul concetto di
dominio
root

com edu gov mil net org au … it … zw Livello 1

gnu unifi unige Livello 2


www.gnu.org
www dit math disi Livello 3

www.dit.unifi.it www www elios Livello 4

Indirizzi IP e DNS
  Struttura degli indirizzi di posta elettronica
  parte a destra della @: struttura basata sui domini
(interpretato dal computer che spedisce il messaggio)
  parte a sinistra della @: identificativo dell’utente
(interpretato dal computer che riceve il messaggio)

  Ogni dominio deve essere in grado di risolvere i nomi


(convertire i nomi di dominio in indirizzi IP e viceversa)
dei calcolatori di sua competenza

  Si usano i name server (anche chiamati i server DNS)


che gestiscono la corrispondenza tra nomi simbolici e
indirizzi IP numerici (organizzazione gerarchica)

116
Indirizzi IP e DNS
  Quando un’applicazione deve collegarsi ad una risorsa
di cui conosce il nome logico (“www.unifi.it”), invia una
richiesta al suo name server locale per sapere l'IP a
cui devono essere indirizzati i pacchetti
  Se il name server locale conosce la risposta, la invia
direttamente al richiedente; altrimenti interroga il name
server di livello più alto (root)
  questo può conoscere l’indirizzo oppure inoltrare
l’interrogazione ai suoi figli nella gerarchia
  Si continua con le interrogazioni fino a quando non si
ottiene l’indirizzo IP numerico della risorsa a cui ci si
vuole collegare
  Quando l’applicazione riceve la risposta crea una
connessione TCP con la destinazione, usando
l’indirizzo IP appena ricevuto

Pacchetti IP

  Abbiamo visto che


  uno dei ruoli del protocollo TCP è di
suddividere il messaggio in frammenti più
brevi (pacchetti)
  il protocollo IP definisce l’informazione che
deve essere aggiunto al pacchetto per
realizzare il trasferimento nella rete

  Come funziona il trasferimento dei pacchetti


in Internet?

117
Trasferimento di pacchetti IP

  Analogia di Vint Cerf, uno dei inventori di


Internet: mandare un romanzo da Tahiti alla
casa editrice a New York usando solo cartoline
postali
  spezzare il romanzo in frammenti (ognuno di poche
righe)
  numerare ogni cartolina (in modo tale che la
sequenza corretta possa essere ricostruita)
  scrivere l’indirizzo della casa editrice (il destinatario)
su ogni cartolina
  mettere le cartoline nella casella di lettere
  poi il servizio postale di Tahiti le invierà alla casa
editrice

Trasferimento di pacchetti IP

  Non è detto che tutte le cartoline seguano lo


stesso itinerario
  alcune arrivano a New York via Hong Kong
  alcune arrivano a New York via Los
Angeles...

  Alla casa editrice, la numerazione delle


cartoline permette la ricostruzione del
romanzo

118
Trasferimento di pacchetti IP

  Il pacchetto IP contiene lo spazio per scrivere:


  informazione (una quantità limitata)
  un numero progressivo (identificatore)
  l’indirizzo IP del destinatario
  I pacchetti IP sono inviati attraverso Internet
uno alla volta
  Possono seguire percorsi diversi dallo stesso
mittente allo stesso destinatario
  Giunti la destinazione sono riordinati secondo il
numero identificatore

Trasferimento di pacchetti IP

  Vantaggi della possibilità di seguire diversi


percorso in rete:
  nel caso di congestioni in rete (potrebbe
essere più efficiente seguire un percorso
invece di un altro)
  nel caso di un guasto di un dispositivo di un
percorso (in questa situazione, il percorso
non è più disponibile)

119
14. Il World Wide Web

WWW

  World Wide Web: deriva da un progetto di Tim


Berners Lee (Enquire) sviluppato al CERN di
Ginevra, intorno alla fine deli anni '80
  Costituito da tutti i web server (che hanno il
ruolo di inviare file ai browser) e i loro file
  I file normalmente sono le pagine web, ma
anche possono essere file di audio, filmati ecc.
  Distinzione tra Internet e il WWW
  Internet: cavi e router che collegano i computer
che hanno un indirizzo IP
  WWW: un servizio di Internet fornito dal
sottoinsieme di quei computer (i web server)

120
WWW

  Il Web è un servizio di Internet che mette a


disposizione degli utenti
  uno spazio elettronico e digitale (memoria
dei server web) per la pubblicazione di
contenuti multimediali (testi, immagini, audio,
video, ipertesti, ipermedia, ecc.)
  un mezzo per la distribuzione di software
(programmi, dati, applicazioni, videogiochi,
ecc.)
  la fornitura di servizi particolari sviluppati
dagli stessi utenti

URL

  Richiesta di visualizzare una pagina web:


attraverso un Universal Resource Locator
http://www.dit.unifi.it/CMpro-l-s-8.html
  Protocollo (http://)
  indica al computer come gestire i file
  Nome del server (www.dit.unifi.it)
  nome simbolico dell'indirizzo IP del web server della
pagina richiesta, risolto dal DNS
  Percorso della pagina (/CMpro-l-s-8.html)
  identifica il file e la sua posizione nel file system del
web server

121
Page source

  Le pagine sono rappresentate


(memorizzate, spedite) sotto forma di
sorgente
  sorgente: una descrizione di come la pagina
deve apparire all'utente
  il programma di visualizzazione (browser)
può adattare la pagina
  codice sorgente: tipicamente scritto nel
linguaggio HTML (Hypertext Markup
Language)

HTML

  Hypertext Markup Language (linguaggio di


marcatura per ipertesti)
  linguaggio usato per descrivere la struttura dei
documenti ipertestuali disponibili nel World Wide Web
  tutti i siti web sono scritti in HTML, codice che viene
letto ed elaborato dal browser, il quale genera la
pagina che viene visualizzata sullo schermo del
computer
  L'HTML non è un linguaggio di
programmazione, ma un linguaggio di markup
  descrive il contenuto (testuale e non) di una pagina
web

122
HTML

  Sviluppato alla fine degli anni '80 da Tim


Berners-Lee al CERN di Ginevra.

  Basato su un altro linguaggio di markup avente


scopi più generici, l'SGML (Standard
Generalized Markup Language)

  È un linguaggio di pubblico dominio, la cui


sintassi è stabilita dal World Wide Web
Consortium (W3C)

File, elementi e tag

  Ogni documento ipertestuale scritto in HTML


deve essere contenuto in un file (con
estensione .htm o .html)  file di testo !!!
  Il componente principale della sintassi di questo
linguaggio è l'elemento, inteso come struttura
di base a cui è delegata la funzione di
formattare i dati o indicare al browser delle
informazioni.
  Ogni elemento è racchiuso all'interno di
marcature dette tag, costituite da una sequenza
di caratteri racchiusa da due parentesi angolari,
cioè i segni minore (<) e maggiore (>)

123
Servizi web
  I documenti HTML vengono immagazzinati di solito
sui dischi rigidi di macchine costantemente collegate
ad Internet
  su queste macchine vi è installato un software detto
web server, che si occupa di produrre e inviare i
documenti ai browser che ne fanno richiesta
  Spesso il documento HTML viene generato da un
software residente sul server, che può così inviare al
browser una pagina adattata a particolari situazioni
  è il caso di software scritti nei linguaggi come ASP,
PHP o Perl. Questi linguaggi permettono la
realizzazione delle cosiddette pagine “dinamiche”

Tecnologie nel web

  Attualmente i documenti HTML


incorporano molte tecnologie, che
offrono la possibilità di aggiungere al
documento ipertestuale delle animazioni
interattive o degli effetti particolari
  linguaggi CSS, JavaScript o Java
  applicazioni multimediali di animazione
vettoriale (Flash) o di streaming audio/video

124
Comportamento del browser
  Il browser richiede le informazioni inviando una
richiesta a un certo indirizzo.
  In caso di una tipica pagina web, il testo HTML di
una pagina è richiesto per primo ed
immediatamente interpretato dal browser
  Successivamente, il browser richiede eventuali
immagini o file che saranno incorporate per formare
la pagina definitiva.
  Una volta ricevuti i file richiesti, il browser formatta la
pagina sullo schermo seguendo le specifiche HTML,
CSS, o di altri linguaggi web.

125
Credits

  Parte del materiale del corso proviene da:

  Corso di Informatica di Jeremy Sproston (Università di


Torino)

  Corso di Informatica Umanistica di Massimo Poesio


(Università di Trento)

  WIKIPEDIA
•  http://it.wikipedia.org

126

Potrebbero piacerti anche