Sei sulla pagina 1di 46

INFORMATICA

Termine informatica deriva dal francese: informatique = information + automatique:


contrazione d’informazione automatica.
ACM (Association for Computer Machinery) ha definito l’informatica come lo studio
sistematico degli algoritmi che descrivono l’informazione: scienza della
rappresentazione e dell’elaborazione dell’informazione.
Un dato (dal latino datum= fatto) è una descrizione elementare, spesso codificata, di
una cosa. L'elaborazione dei dati può portare alla conoscenza di una info che associa
un significato ai dati.
Dal punto di vista informatico: il dato è un elemento conosciuto, un’informazione
elementare ed è costituito da simboli elaborati.
L’informazione è un elemento che deriva dall’elaborazione di più dati e che permette
di venire a conoscenza di qualcosa; è portata, trasmessa, memorizzata o contenuta in
qualcosa, cioè in un supporto fisico che NON è l’informazione stessa: l’informazione
richiede un supporto fisico ma non coincide con esso. Ogni supporto fisico ha le sue
caratteristiche in quanto mezzo su cui può essere scritta dell’informazione.
Alcuni supporti sono adatti alla trasmissione dell’informazione, ma non alla sua
memorizzazione (cavi, etere, ...); per altri supporti vale il viceversa (CD, DVD, ...).
Condizione necessaria perché un supporto sia in grado di portare informazione è che
esso possa assumere configurazioni (o stati) differenti, a ognuna delle quali venga
associata una differente entità d’informazione. Un supporto che non può avere ≠
configurazioni non può portare informazione.
Per interpretare le differenti configurazioni del supporto è necessario un codice,
regola valida per convenzione tra tutti coloro che usano quell’informazione con quel
supporto. Il codice associa ad ogni configurazione un’entità di informazione.
Generalmente si adottano supporti fisici le cui configurazioni sono costituite da
insiemi ordinati di configurazioni più semplici: “configurazioni elementari”. Così l’info.
portata dal supporto, chiamato messaggio, si ricava dall’insieme ordinato di simboli,
cioè dalle entità d’informazione che corrispondono alle singole configurazioni
elementari.
Informazione sintattica: un certo supporto fisico è adatto a mantenere un certo
messaggio; semantica: quale significato sia da attribuire ad una certa configurazione
del supporto fisico; pragmatica: quale valore sia da attribuire ad una certa
configurazione del supporto fisico.
L’alfabeto binario per la codifica dei dati e istruzioni: costituito da 2 simboli: “0” e “1”. I
calcolatori impiegano per la memorizzazione di dati dei dispositivi bistabili, BIT
(binary digit: cifra binaria): elemento atomico (binario) che codifica un dato; può
essere rappresentato da un dispositivo che assume due stati.
BYTE: combinazione di 8 bit à 256 ≠ caratteri.
Con 1 bit ? (0, 1) ci codificano 2 oggetti; 2 bit ? (00, 01, 10, 11) 4 oggetti; 3 bit ? (000,
001, 010, ..., 111) 8 oggetti. K bit à 2k oggetti.


In generale si usa il sistema posizionale (in base alla posizione, quel numero ha un
peso ≠) decimale (potenza di 10 e l’esponente è dato dalla posizione); qui si usa quello
binario: base è 2 e l’esponente è dato dalla posizione.
Le grandezze dimensionali misurano le informazioni: bit: 21 =2; byte: 23 =8 bit;
kilobyte: 210 = 1024 byte; megabyte: 220 byte; gigabyte: 230 byte.
Stringa= singoli caratteri alfanumerici e le loro successioni: (es. stringa “fare”
composta dai caratteri “f” “a” “r” “e”).
Sistema più diffuso nella rappresentazione di caratteri alfanumerici è il codice ASCII
(American Standard Code for Information Interchange).
Tabella ricavata digitando Alt + numero decimale (nel tastierino numerico). Diffuse
codifiche più estese (es. UNICODE) per rappresentare anche le lingue orientali.
Per rendere possibile l’esecuzione di programmi da parte di un calcolatore è
necessario che questi siano codificati tramite un “linguaggio macchina”; anch’esso si
definisce usando un alfabeto composto da 2 soli simboli, “0” e “1”. Si possono
interpretare ed eseguire al massimo 28=256 ≠ istruzioni. Ad ogni istruzione è
assegnato un codice univoco (detto codice operativo, opcode) che l’esecutore deve
decodificare per identificare che operazioni effettuare.
Numeri decimali Numeri binari
1……………………… 00
2……………………… 01
3……………………... 11
4……………………… 000
5……………………… 001
Codifica: operazione con cui il dato viene scritto su un supporto fisico; decodifica:
operazione con cui il dato viene letto da un supporto fisico.
L’info può essere analogica (usa grandezze variabili con continuità) o digitale (più
precisa).
Analogico: relazione di analogia tra struttura delle configurazioni e struttura delle
entità d’informazione. Si basa su una definizione intensionale (basata su una regola
implicita). Vi è un’onda continua.
Digitale: informazione rappresentata solo nella codifica. Si basa su una definizione
estensionale (basato sull’elencazione delle corrispondenze valide tra configurazioni ed
entità d’informazione). Vi è l’approssimazione.
Gli elaboratori elettronici hanno natura discreta: ogni grandezza in gioco può essere
rappresentata soltanto da un numero finito di elementi.
Per essere elaborati da un calcolatore, segnali intrinsecamente continui quali suoni,
immagini, video ecc., devono essere discretizzati (digitalizzati) attraverso operazioni
di campionamento e quantizzazione.
Con il campionamento il segnale continuo viene misurato (“campionato”) ad intervalli
di tempo regolari t (t = intervallo di campionamento).


Il segnale risultante è un insieme finito di punti equidistanti nel tempo. Tuttavia le
ampiezze devono essere ancora approssimate ad intervalli discreti, ovvero
quantizzate.
Si noti che campionamento e quantizzazione comportano una perdita di informazione.
La quantizzazione suddivide l’intervallo di possibili valori del segnale in n sotto
intervalli uguali che vengono poi codificati in binario.
Ogni valore del segnale campionato viene approssimato al più vicino valore discreto.
Più sotto intervalli (e quindi più bit) si utilizzano, più l’approssimazione risultante sarà
precisa.
Queste 2 operazioni si possono applicare anche quando si vuole ottenere una codifica
digitale di grandezze che variano nel tempo e nello spazio invece che nel tempo. Es. la
codifica di un’immagine: il campionamento consiste nel dividere l’immagine in
sottoinsiemi per ognuno dei quali si dovrà prelevare un campione rappresentativo del
colore di tutto il sottoinsieme: sottoinsiemi chiamati pixel.
Il digitale si usa per la qualità della trasmissione: il segnale digitale è molto più pulito
di quello analogico e consente di trasmettere > quantità di dati all'interno della stessa
banda.

Infrastrutture hardware
Componenti di un sistema di elaborazione:
1. Hardware: insieme dei componenti materiali (CPU, memoria, dispositivi di I/O).
2. Sistema Operativo: software di base che controlla e coordina l’uso dell’hardware tra
le varie applicazioni dei vari utenti (e.g., Windows, Mac OS, iOS, Android)
3. Programmi applicativi: software che utilizza le risorse del sistema per risolvere i
problemi degli utenti (e.g., compilatori, database, video game, programmi di gestione)
4. Utenti (persone, macchine, altri computer).
Calcolatore: sistema composto da un numero elevato di componenti strutturati in
forma gerarchica.
Funzioni di un calcolatore: 1. Elaborazione di dati; 2. Memorizzazione di dati; 3.
Trasferimento di dati da o verso l’esterno; 4. Controllo.
I calcolatori sono impiegati per elaborare dati provenienti dall’ambiente esterno e per
fornire all’ambiente i risultati ottenuti; memorizzare i dati sia per brevi periodi che per
periodi più lunghi; trasferire i dati all’ambiente esterno. Compiti, questi, svolti da
dispositivi ausiliari connessi al calcolatore: periferiche; le operazioni di trasferimento
dei dati tra ambiente e calcolatore da parte delle periferiche sono chiamate operazioni
d’ingresso /uscita (I/O): mouse, tastiera, stampante.
Tali operazioni poi devono essere sottoposte ad un controllo.
Per ognuna delle funzioni svolte da un calcolatore vi sono componenti fisiche:
l’architettura presentata ricalca i principi di funzionamento della macchina di von
Neumann: il calcolatore interagisce con l’ambiente esterno attraverso dispositivi
ausiliari, le periferiche. Il componente principale all’interno del calcolatore è l’unità di


elaborazione centrale (CPU: Central Processing Unit) cui sono affidate le operazioni di
controllo e di elaborazione; da tempo sono chiamate microprocessori. Per la
memorizzazione dell’informazione è presente un’unità detta memoria centrale che
ospita i dati necessari per le elaborazioni svolte dalla CPU; la memoria è un insieme di
celle ognuna caratterizzata da un identificatore univoco: indirizzo (memory adress).


Una volta caricata nella memoria centrale un’intera sequenza d’istruzioni
(programma), l’unità di controllo prende in considerazione la prima istruzione, la
interpreta e ordina all’unità aritmetico-logica di eseguirla. Il processore registra quindi
il risultato della prima istruzione nella memoria centrale e prende in esame
l’istruzione successiva. Il ciclo si ripete fino a quando tutte le istruzioni sono state
eseguite.
Un’istruzione, rappresentata come sequenza di bit, si compone di ≠ parti:
- codice operativo che indica il tipo di operazione (es. la somma)
- provenienza degli operandi (es. quali numeri sommare)
- destinazione del risultato.
Collegamento tra CPU e memoria centrale: struttura standard basata sui concetti di
master-slave e bus: linea a cui sono connesse le unità del calcolatore e consente il
trasferimento di queste unità; la CPU svolge un ruolo master: gestione dell’intero
sistema. Il bus viene integrato nella scheda madre del calcolatore su cui sono montati
anche la CPU, la memoria centrale e alcune interfacce d’ingresso/uscita. Collegamento
a bus caratterizzato da: - semplicità: ∃ una singola linea di connessione utilizzata da ≠
dispositivi per il collegamento della CPU; - estendibilità i nuovi dispositivi possono
essere connessi tramite un’interfaccia al bus senza influenzare l’hardware.
Bus suddiviso in: bus dati utilizzato per trasferire dati tipicamente tra memoria e CPU;
bus indirizzi che identifica la posizione delle celle di memoria in cui la CPU scrive o
legge; bus di controllo che seleziona le unità coinvolte in un trasferimento dati,
definisce la direzione dello scambio e coordina il sistema.
In un programma eseguito da un calcolatore basato sull’architettura Von Neumann:
dati e istruzioni sono memorizzati in una memoria unica; le istruzioni vengono
eseguite in modo sequenziale. La CPU si comporta da esecutore usando un linguaggio
macchina: insieme delle istruzioni che è in grado di eseguire; ogni istruzione è
identificata da un codice operativo.
Nell’esecuzione di un programma la CPU opera 3 fasi: lettura: acquisizione della
memoria di una delle istruzioni del programma; decodifica: riconoscimento delle


operazioni che devono essere svolte; esecuzione: effettuazione delle operazioni
corrispondente all’istruzione.
In un processore ci sono 2 parti principali: unità di controllo e data path (percorso
dati) che comprende dispositivi in grado di elaborare i dati (unità aritmetica logica:
ALU) e unità di memorizzazione: i registri, il cui insieme forma il banco dei registri.
Compito principale dell’unita di controllo è di provvedere al prelievo della memoria
delle istruzioni da eseguire; l’indirizzo dell’istruzione corrente viene conservato
all’interno di un apposito registro, Program Counter.
Nella fase di lettura il contenuto del PC viene trasferito sul bus indirizzi e trasmesso
alla memoria indicando sul bus di controllo che si tratta di un’operazione di lettura; la
memoria legge il contenuto della cella e lo trasferisce al sul bus dati il cui contenuto
viene copiato nel registro istruzione corrente.
Per descrivere la struttura e funzionamento di un processore si prende in riferimento
un’architettura: load/store che indica le operazioni di caricamento dei dati della
memoria nei registri (load) e di archiviazione dei risultati dai registri nella memoria
(store).
Per comprendere il funzionamento del processore si deve analizzare il processo di
esecuzione di un’istruzione eseguita in 4 passi: 1. Prelevata dalla memoria e scritta
nell’IR; 2. Letto il contenuto dei 2 registri RX e RY; 3. L’ALU opera sui dati letti dal
banco dei registri; 4. Il risultato calcolato dall’ALU viene scritto nel registro RZ.
Molte operazioni effettuate per completare l’esecuzione di un’istruzione si ripetono
identiche per tutte le istruzioni: 1. Invio del contenuto del PC alla memoria che
contiene le istruzioni per prelevare quella corrente e trasferirla nell’IR; 2. Lettura del
contenuto di uno o due registri utilizzando pezzi dell’istruzione registrata nell’IR per
selezionare i registri a cui accedere.
Le istruzioni dopo aver letto i registri usano l’ALU; poi le azioni si differenziano in base
all’istruzione da eseguire.
Architettura del processore: nella fase di lettura si ha il prelievo dell’istruzione
corrente e il suo caricamento dell’IR; le istruzioni aritmetico-logiche leggono 2 registri
ed effettuano un’operazione che coinvolge l’ALU; per le istruzioni di trasferimento dei
dati si deve calcolare l’indirizzo della cella di memoria cui si vuole accedere; per le
istruzioni di salto condizionato l’esecuzione dell’istruzione deve prevedere 2 azioni:
calcolo dell’indirizzo di destinazione del salto e il confronto del contenuto dei registri
indicati dall’istruzione per capire se il salto deve essere effettuato; per le istruzioni di
salto incondizionato viene sostituita una parte del PC con alcuni dei bit contenuti
nell’IR.
Per migliorare le prestazioni di un processore si può ridurre il tempo necessario per
l’esecuzione delle singole istruzioni o aumentare il numero delle istruzioni eseguite
contemporaneamente.
Per sfruttare tutte le unità che compongono la CPU si usa una modalità operativa dove
ogni stazione è specializzata nel completare una particolare fase della lavorazione:


modalità pipelining: il lavoro svolto in una CPU pipeline per eseguire un’istruzione
viene suddiviso in parti ciascuna eseguita da un pezzo della CPU che corrisponde ad
uno stadio della pipeline; gli stadi sono collegati in successione e devono tutti operare
in modo sincrono affinché il tempo sia ridotto. Tutti gli stadi hanno una durata
prefissata.

Evoluzione dei processori
Le prime CPU a microprocessore raggiungevano frequenze dell’ordine dei MHz; oggi si
superano i 3GHz. Negli ultimi anni non si è assistito ad un notevole aumento della
frequenza di clock dei processori a causa, principalmente, delle dimensioni sempre più
ridotte e dell’aumento dell’energia richiesta e del calore da dissipare.
Per questo sono nate le architetture multicore (dual core, quad core, etc.): più nuclei,
processori "fisici" montati sullo stesso package: possono eseguire più processi
contemporaneamente sebbene per poter sfruttare le caratteristiche di questi
processori è necessario che i programmi siano ottimizzati per un uso parallelo (cioè
per sfruttare più processori assieme).
Questo consente di aumentare la potenza di calcolo di una CPU senza aumentare la
frequenza di clock di lavoro.
Esistono pipeline che superano i 20 stadi (superpipeline): una pipeline molto lunga
prevede stadi molto ridotti in termini di funzionalità che hanno un tempo di reazione
piccolo e possono quindi essere utilizzati a frequenza >.
Nelle CPU più recenti gli stadi della pipeline sono in grado di elaborare due o più
istruzioni contemporaneamente (CPU detta superscalare il cui limite è che tutte le
istruzioni contemporaneamente in esecuzione devono ∈ allo stesso flusso di
elaborazione, cioè devono costituire una successione logica d’istruzioni dello stesso
processo di elaborazione).
Esistono processori con tecnologia simultaneous multithreading, coppia di processori,
di cui uno è quello principale e l’altro è costituito dalla seconda unità di controllo che
interviene sui cicli liberi.

Memoria
Nell’architettura di Von Neumann l’unità di memoria ha il compito di archiviare in
forma digitale i programmi e i dati su cui opera la CPU per il tempo di elaborazione.
3 categorie di memoria: memoria centrale-principale (contiene i programmi in
esecuzione e i relativi dati; agisce come supporto/esterna alla CPU a cui deve fornire
dati e istruzioni ad elevata velocità; non è permanente); memoria di massa-secondaria
(contiene grandi moli di dati non usati frequentemente; è stabile e permanente;
acceduta tramite il sottosistema di I/O); memoria interna alla CPU (registri, ad accesso
molto veloce ma in grado di mantenere solo poca info e in modo temporaneo).
Criteri di una memoria:


1. Volatilità: mantengono l’info finché vengono alimentate: in caso di spegnimento
perdono il loro contenuto.
2. Velocità d’accesso: rapidità per operazione di lettura/scrittura.
3. Velocità di trasferimento dati: quantità di dati che la memoria riesce a trasferire
nell’unità di tempo.
4. Capacità: numero di bit che possono essere memorizzati; misurata in byte.
5. Costo per bit: rapporto tra il costo dell’unità di memoria e la sua capacità espressa in
bit.
Memorie: - elettroniche: elevata velocità ma continuamente alimentate, pena la perdita
delle info; costo per bit elevato; - magnetiche: basso costo per bit e capacità di
mantenere le info anche senza alimentazione; - ottiche: adatte alla distribuzione di
grandi quantità di dati.
Memoria centrale: elettronica con prezzo di vendita accettabile.
Memoria di massa: magnetica e ottica; costituita da dispositivi (CD, DVD) di memoria
periferici accessibili dalla CPU attraverso interfacce d’I/O.
Memorie centrali più veloci delle memorie di massa.
Gerarchia di Memoria:
1º livello: memoria più veloce, piccola e costosa: registri, contenuti nella CPU
(svolgono funzione di memorizzazione di dati e istruzioni che devono essere elaborati
immediatamente), cache, esterna alla CPU (memoria elettronica volatile), memoria
principale ROM/RAM.
2º livello: memoria più grande, lenta ed economica: dischi magnetici, nastri magnetici e
dischi ottici.


Spostandosi verso il basso: aumenta il tempo di accesso; aumenta la capacità di
memorizzazione; diminuisce costo per byte.
Memoria centrale: costituita da una successione ordinata di elementi binari; gli
elementi di memoria binari sono raggruppati in unità minime, celle; una successione di
bit, byte, è detta parola di memoria; ogni cella ha un indirizzo che rappresenta la sua
posizione rispetto alla prima cella della memoria alla quale è attribuito l’indirizzo 0.
4 modalità d’accesso alle celle dato l’indirizzo della cella da leggere o scrivere:
-Accesso sequenziale: celle dette record: posizionate in successione e l’accesso ad un
dato comporta la lettura di tutti quelli che lo precedono; usato per accedere a dati
memorizzati su nastri magnetici.


-Accesso casuale: l’accesso ad una cella non richiede la lettura delle precedenti: si può
selezionare ogni parola indipendentemente dalle altre. Memoria centrale esempio di
memoria caratterizzata da un metodo di accesso casuale: RAM (Random Access
Memory).
-Accesso misto: l’indirizzo di una cella di memoria non consente di determinare con
precisione la collocazione fisica sul dispositivo di memorizzazione; si giunge in
prossimità del dato e poi si compie ricerca sequenziale. Es. unità a dischi.
-Accesso associativo: metodo ad accesso casuale che permette di effettuare un
confronto tra alcuni bit in posizioni specifiche all’interno di una parola di memoria per
verificare l’uguaglianza con una parola di riferimento; usato dalle memorie cache.
Memoria principale e secondaria:
≠ obiettivi: (P) supporto alla CPU: deve fornire alla CPU dati e istruzioni il più
rapidamente possibile; (S) archivio: deve consentire di archiviare dati e programmi
garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo.
≠ esigenze: (P) velocità per il supporto alla CPU; (S) non volatilità ed elevata capacità.
≠ tecnologie: (P) elettronica: veloce, ma costosa e dinamica (volatile); (S) stato solido,
magnetica e ottica: economica, ma lenta.

Memoria centrale: RAM ad accesso casuale: mantiene al proprio interno dati ed
istruzioni dei programmi in esecuzione; tecnologia elettronica, volatile (conserva dati
solo se alimentata), veloce e costosa. Tutte le applicazioni (più i processi del SO) per
essere eseguite devono essere caricate nella memoria RAM.
Si può eseguire un numero di programmi che supera la dimensione della RAM grazie
all’utilizzo della memoria virtuale: porzione della memoria secondaria-di massa
che si comporta come estensione della RAM: operazione di swap.

ROM (Read Only Memory): memoria elettronica a semiconduttori di tipo non volatile,
permanente, scritta al momento della sua produzione e che non può essere cancellata,
utilizzabile solo in lettura: i dati sono memorizzati tramite collegamenti elettronici
definiti nella fase di costruzione che di solito non possono essere modificati
successivamente.

Flash: memorie elettroniche riscrivibili non volatili: informazioni registrate in
transistor in grado di mantenere la carica elettrica per un tempo lungo (effetto di
campo); es. chiavetta USB.
Interazione tra CPU e Memoria Centrale: una volta caricato l’intero programma
nella memoria centrale, l’unità di controllo prende in considerazione la prima
istruzione, la decodifica e ordina all’ALU di eseguirla; il processore memorizza quindi il
risultato della prima istruzione e prende in esame la successiva.
Per l’esecuzione delle istruzioni, si considera la memoria centrale come un'unità
monolitica cui si accede tramite le linee del bus:


- bus indirizzi trasferisce gli indirizzi delle celle cui si vuole accedere;
- sulle linee del bus dati vengono trasmessi i dati;
- i segnali del bus di controllo specificano il tipo di operazione richiesta: lettura o
scrittura.
Lettura: operazione che rende disponibile all'uscita della memoria la parola presente
nella cella selezionata dall'indirizzo trasmesso sul bus indirizzi senza modificare la
parola. Scrittura: operazione con cui il contenuto della parola di memoria indirizzata
viene modificato, al fine di renderlo identico a quello presente agli ingressi della
memoria, ovvero al valore trasmesso sul bus dati.
Parametri per valutare le prestazioni di un’unità di memoria:
-Tempo di accesso: intervallo tra il momento in cui la richiesta di accesso viene
presentata alla memoria della CPU e l’istante in cui la memoria termina il proprio
compito rendendo disponibile il dato da leggere.
-Ciclo di memoria: valutato sommando al tempo di accesso l’intervallo di tempo che
deve trascorrere prima che possa iniziare un successivo accesso alla memoria.
-Velocità di trasferimento: quantità di dati trasferiti in unità di tempo da/verso la
memoria.

Memoria e CPU: CPU più veloci delle memorie; nelle memorie è aumentata la capacità
più che la velocità. Si possono inserire memorie cache molto più veloci nello stesso
chip della CPU, ma le dimensioni sono piccole ed i costi molto elevati. Se la CPU chiede
un dato, lo cerca prima nei registri della CPU, poi nella cache, quindi nella memoria
centrale.
Memorie veloci, integrate nello stesso chip della CPU, ma costose: MPV (memorie
piccole e veloci). Memorie di grande capacità, relativamente lente, economiche ed
accessibili tramite il bus: capacità circa 100 volte superiori; tempi d’accesso circa 10
volte superiori: MGL (memorie grandi e lente).
Memoria formata da una MPV e una MGL: MPV contiene una copia di alcune celle della
MGL; quando la CPU chiede una cella di memoria, la richiesta viene intercettata dalla
MPV: se il dato si trova nella MPV, viene passato direttamente alla CPU; altrimenti, il
dato si ottiene dalla MGL, e viene anche caricato nella MPV.
Principio di località: le info usate più recentemente e quelle in posizioni contigue
verranno molto probabilmente utilizzate nel prossimo futuro.
Località spaziale: quando si accede all’indirizzo A, è molto probabile che gli accessi
successivi richiedano celle vicine ad A.
• le istruzioni vengono in genere lette da locazioni consecutive della memoria;
• gli accessi a vettori o a strutture dati sono “vicini”.
Quando si copia un dato dalla MGL alla MPV, dovremmo copiare anche i dati vicini
(cache line o blocco); servirebbero blocchi grandi.
Località temporale: quando si accede all’indirizzo A, è molto probabile che negli
accessi successivi si richieda di nuovo la cella A.


• cicli d’istruzioni accedono ripetutamente alle stesse locazioni di memoria;
• istruzioni vicine tendono ad utilizzare le stesse variabili.
I dati prelevati dalla MGL dovrebbero essere conservati nella MPV il più a lungo
possibile; servirebbero blocchi piccoli (se c’è spazio per tanti blocchi un blocco resta
nella MPV più a lungo).
Politica di sostituzione: LRU: combinazione di una memoria piccola e veloce con una
grande e lenta che consente di ottenere un sistema di memoria che unisce le 2
caratteristiche migliori delle 2 memorie: capacità e costi di quella grande e velocità di
quella piccola.

Memorie di massa: ottiche e magnetiche; dispositivi di memorizzazione magnetici
sono costituiti da un supporto ricoperto da un sottile strato di materiale magnetico in
cui stato di magnetizzazione consente di memorizzare i dati; i primi dispositivi di
memoria di massa furono i nastri magnetici (audio e video cassette). Nei dischi
magnetici le info sono memorizzate sul disco in cerchi concentrici, tracce, tutti della
stessa lunghezza corrispondente alla dimensione della testina, e tutti contenenti lo
stesso numero di bit. L’insieme delle tracce è suddiviso in settori ognuno dei quali
ospita un blocco di dati, record, che rappresenta in genere l’unità minima di
trasferimento tra disco e memoria centrale.
-disco fisso (Hard-disk)
-dischi rimovibili (capacità come gli HD)
-combinazione di parti meccaniche ed elettroniche.
Per utilizzare un disco la sua superficie dev’essere organizzata in tracce e settori con
un’operazione detta formattazione che consente di identificare la posizione di ogni
settore all’interno di ogni traccia mediante un insieme di dati di controllo memorizzati
sul disco.
Un hard disk (“disco fisso” o “disco rigido”) è alloggiato all’interno di un disco drive
dove si trovano più dischi sovrapposti a distanza di pochi millimetri uno dall’altro,
testine di lettura/scrittura, un motore per far ruotare i dischi e tutti gli elementi
elettronici necessari per il controllo e l’esecuzione delle operazioni di lettura e
scrittura.
Funzionamento di un hard disk: per effettuare un’operazione di lettura o scrittura è
necessario che la testina si posizioni in corrispondenza del blocco desiderato. La
velocità di rotazione del disco può arrivare a 15000 giri al minuto. La dimensione del
blocco varia da 512 byte a qualche KiloByte.
Meccanica dell’hard disk: la capacità di lettura è più elevata grazie a meccanismi di
pre-caricamento ed alla presenza di memorie più veloci di appoggio.

Dischi ottici: CD-ROM (Compact Disk a sola lettura), DVD (Digital Versatile Disk). Per
la loro elevata capacità sono utilizzati per memorizzare grandi quantità di dati
organizzati secondo un unico percorso a spirale che dal centro del disco arriva fino alla


periferia. A differenza dei dischi magnetici quelli ottici possono essere prodotti in serie
stampando direttamente su di essi dei dati riducendo i costi di produzione. ∃ dischi
ottici scrivibili CD-R, DVD-R, DVD+R senza alcun contenuto. Dischi detti WORM perché
le info che vengono scritte non possono essere modificate ma possono essere lette
molte volte. Vi sono anche dischi ottici riscrivibili CD-RW, DVD-RW in cui le info
registrate sul supporto possono essere cancellate e riscritte.

Unità a stato solido: non è un disco; tipiche di smartphone, tablet, laptop di fascia alta.
L’unità a stato solido o drive a stato solido, SSD (solid-state drive), utilizza memoria
Flash (di tipo Nand) per l'archiviazione di massa dei dati. Principale differenza con i
classici dischi: possibilità di memorizzare in modo non volatile grandi quantità di dati,
senza utilizzare parti meccaniche.
Un SSD ha un limite sul numero massimo di operazioni di scrittura, ha minori consumi
e tempi di accesso ridotti.
Funzione principale di un calcolatore (computer): comunicazione con l’ambiente
esterno attraverso dispositivi d’ingresso e uscita: periferiche, controllate da
un’interfaccia che ha il compito di tradurre i segnali interni al calcolatore; il
collegamento con le periferiche avviene attraverso porte d’ingresso e uscita
predisposte sulla scheda e accessibili dall’esterno.
La trasmissione di dati tra interfaccia d’ingresso/uscita e periferica può avvenire
secondo 2 modalità: seriale in cui 1 byte viene trasmesso 1 bit per volta; parallela in
cui tutti bit del byte vengono trasmessi contemporaneamente. Ogni dispositivo
d’ingresso/uscita è dotato di 2 registri: registro dati (transitano i dati che vengono
scambiati); registro di controllo (fornisce una serie di informazioni sullo stato della
periferica).
La sincronizzazione tra calcolatore e periferica può avvenire in 3 modi:
1. a controllo di programma: riduce la velocità della CPU e quella del dispositivo
periferico;
2. a interruzione: i tempi di esecuzione delle varie attività vengono sovrapposti per
migliorare il rendimento complessivo del sistema richiedendo l’intervento della CPU
per ogni trasferimento dati;
3. accesso diretto la memoria: si ha quando la quantità di dati da trasferire è elevata: la
CPU ha solo il compito di dare inizio al trasferimento controllando non la periferica ma
imponendo al controllore dell’accesso diretto alla memoria l’inizio del trasferimento e
comunicandogli la quantità di dati da trasferire.
Tipi di periferiche: video (schermo o monitor costituito da una matrice di punti
indirizzabili singolarmente, detti pixel), tastiera, dispositivi di puntamento (mouse
meccanici e ottici, touchpad), stampanti a getto d’inchiostro e laser (qualità elevata e
buona velocità), macchina fotografica, musica digitale (lettori MP3), video e telefoni
cellulari.



Infrastrutture software
SW= SO + SW applicativo à SO (es. nella Apple è IOS) intermediario tra HW
(componenti fisici: disco, memoria RAM, tastiera, schermo) e SW applicativi
(programmi che usa l’utente) rendendo così meno efficiente l’esecuzione delle singole
applicazioni; ma presenta vantaggi: può definire modalità standard di interfaccia con i
dispositivi fisici così da: - sviluppare applicazioni in modo semplice, modulare ed
indipendente dallo specifico hardware su cui viene fatto funzionare il SO; - aggiornare
il software di base e l'hardware in modo trasparente ai programmi applicativi e
all'utente, ossia senza che vengano influenzati dall'operazione.
SO: insieme di componenti software che gestisce hardware e fornisce servizi ai
programmi applicativi. Il SO deve: -garantire la correttezza e la precisione
nell’elaborazione e nella trasmissione dell’informazione; -consentire all’utente di
superare il problema della localizzazione delle risorse sfruttando la presenza di una
rete che permetta di accedere alle applicazioni in ogni momento; -garantire sicurezza
dei sistemi; -assicurare privatezza dei dati; -essere efficiente utilizzando al meglio le
risorse del calcolatore; -cercare di rendere più semplice l’utilizzo dell'hardware
sottostante.
Problemi di un S.O.: -esecuzione delle applicazioni (programmi utente); -efficienza
nell'uso delle risorse (processore, memoria, dischi, etc.); -coordinamento dei processi;
-protezione nell'uso delle risorse.
Funzioni del SO: -controllo dell’esecuzione di applicazioni; -accesso ai dispositivi d’I/O;
-archiviazione dei dati e programmi: fornisce un’organizzazione logica dei dati sotto
forma di cartelle (directory); -controllo di accesso: introduce meccanismi di
protezione; -contabilizzazione; -gestione di malfunzionamenti.
Componenti di un SO che interagiscono tra loro per coordinare l’accesso alle risorse da
parte degli utenti e del software applicativo: -sistema di gestione del processore:
controlla l’unità centrale e definisce quali compiti sono da assegnare alla CPU; -sistema
di gestione della memoria; -sistema di gestione delle periferiche; -sistema di gestione
dei file (file system); -sistema di gestione degli utenti e dei relativi comandi (interprete
comandi); -sistema di gestione della rete.
Differenze tra SO e programmi applicativi:
1. PA hanno accesso a un insieme ridotto di risorse; possono utilizzare solo un
sottoinsieme delle istruzioni del processore (esecuzione in modalità utente); non
possono decidere autonomamente quando e come avere accesso alle risorse del
sistema (richiedono al SO l’esecuzione di alcuni servizi);
2. SO (insieme di programmi impiegato per controllare altri programmi eseguiti dallo
stesso processore) ha accesso a tutte le risorse; può utilizzare tutte le istruzioni del
processore (esecuzione in modalità supervisore); stabilisce in che ordine e come le
richieste che riceve devono essere soddisfatte.
I primi calcolatori elettronici non prevedevano un SO: ∃ uno schema di elaborazione
seriale dei programmi (meccanismo manuale di caricamento ed esecuzione dei dati).


Questa elaborazione seriale (JOB) venne poi migliorata con l’introduzione dei sistemi
operativi a lotti (batch) basati sull’impiego di un componente software detto monitor
in grado di automatizzare l’avviamento e l’esecuzione di programmi eliminando così i
tempi morti e sgravando gli utenti da interventi manuali attraverso un linguaggio
specifico: Job Control Language (JCL). Unico svantaggio= tempo di latenza che
intercorre tra il momento in cui un job è sottoposto al sistema e il momento in cui
vengono presentati i risultati dell’elaborazione di quel job. Per ridurre il tempo
necessario per passare dall’esecuzione di un programma all’esecuzione del successivo
e per ridurre i tempi morti si è passati a mantenere in memoria
contemporaneamente ≠ programmi oltre al SO: da sistemi UNIPROGRAMMATI ai
sistemi MULTIPROGRAMMATI: la memoria centrale può contenere più di un
programma applicativo. In questi sistemi vi è gestione delle attività d’ingresso/uscita;
capacità di protezione della memoria; interattività con un utente umano con tempi di
risposta accettabili.
SO: insieme di processi di servizio e di un gestore (nucleo o kernel) che opera come un
sistema di controllo dei processi. 2 modelli organizzativi: 1. modello monolitico: SO
costituito da un solo processo che provvede all’esecuzione delle procedure per la
gestione del sistema; vi sono 2 modalità di funzionamento: utente (non è possibile
accedere liberamente a tutte le risorse del sistema); supervisore (∄ nessun limite alle
operazioni effettuabili); 2. modello a strati: SO strutturato in una successione di strati
ognuno costruito a partire da quelli sottostanti; le funzioni di gestione delle risorse
vengono svolte direttamente dai processi utente. Grazie a questa struttura a moduli, le
funzioni realizzate dal SO sono ripartite in componenti fra loro indipendenti e
implementate dei processi gestiti dal nucleo, unico componente dipendente dalle
caratteristiche hardware del calcolatore. Ogni strato corrisponde ad una macchina
virtuale che usa i servizi del livello sottostante per fornirne altri di tipo più astratto.
Caratteristiche delle macchine virtuali: - ogni macchina virtuale è un insieme di
programmi che realizza funzionalità utilizzando i servizi forniti dal livello inferiore;
ogni m.v. gestisce risorse specifiche del sistema, fornendo meccanismi logici di accesso
che regolamentano l’uso della macchina virtuale stessa e sono accessibili con modalità
standardizzate e indipendenti dalla loro realizzazione.



Nucleo: interagisce direttamente con l’hardware; si occupa dell’esecuzione dei
programmi e della risposta agli eventi esterni generati dalle unità periferiche; scopo
principale: gestire i processi corrispondenti ai programmi che sono


contemporaneamente attivi; fornisce alle macchine virtuali di livello superiore la
visione di un insieme di unità di elaborazione virtuali ciascuna dedicata a un processo
presente in memoria; gestisce il contesto di esecuzione dei vari processi; attua una
politica di alternanza (scheduling) nell’accesso alla CPU da parte dei processi in
esecuzione.



Gestore della memoria: controlla la memoria centrale, consente ai programmi di
lavorare in un proprio spazio d’indirizzamento virtuale, protegge i programmi e i
relativi dati caricati nella memoria di lavoro e fornisce alle macchine di livello
superiore la possibilità di lavorare come se esse avessero a disposizione una memoria
dedicata, di capacità anche maggiore di quella fisicamente disponibile. Poiché la
memoria centrale non può contenere tutti i programmi che occorre eseguire, per
evitare di non attivare i nuovi processi per mancanza di memoria, il SO viene abilitato
a trasferire il contenuto di un’area della memoria centrale in un’area della memoria di
massa (area di swap) per rendere così la memoria disponibile per i processi rimasti in
memoria centrale: tecnica di swapping applicata trasferendo su disco i dati relativi ai
processi in stato di attesa o di pronto per l’esecuzione.
Altro miglioramento nell’uso della memoria si ottiene suddividendo il programma in
pagine logiche e la memoria fisica in pagine fisiche così da tenere in memoria solo la
porzione di programma che si sta utilizzando.
Per ottimizzare l’uso della memoria è possibile tenere in memoria solo le pagine
logiche del processo a cui si sta accedendo più frequentemente e ogni volta che si vuole
accedere ad un indirizzo relativo ad una pagina non in memoria il SO libera dello
spazio in memoria e carica la pagina richiesta: memoria virtuale.
La suddivisione della memoria di un processo in base alla tipologia di informazione
che contiene si chiama segmentazione, cosicché la struttura viene suddivisa in vari
segmenti: codice, contiene solo le istruzioni del programma e dati, contiene sia la parte
statica che dinamica.



Gestore delle periferiche: fornisce una visione del sistema in cui i processi possono
operare mediante periferiche astratte e ne virtualizza le interfacce mediante i driver di
periferica, consentendo ai processi di leggere e scrivere dati.
Driver o moduli: programmi software finalizzati alla gestione delle periferiche;
possono virtualizzare la presenza di periferiche non fisicamente condivisibili tramite
la tecnica di spooling; esempio è la gestione di una stampante: quando un processo
desidera stampare un file, lo invia al driver che lo accoda in una directory di spooling
in attesa che venga stampato; il gestore dello spooling consente di visualizzare i file in
coda di stampa.
Controller: dispositivi hardware che servono ad effettuare a livello fisico le operazioni
di trasferimento dei dati con le periferiche.



Interprete dei comandi: modulo del SO direttamente accessibile dall’utente; ha la
funzione di interpretare i comandi che gli giungono (da tastiera) e di attivare i
programmi corrispondenti; svolge operazioni di: lettura dalla memoria di massa del
programma da eseguire; allocazione della memoria centrale; caricamento del
programma e dei relativi dati nella memoria allocata; creazione e attivazione del
processo corrispondente.


MIDDLEWARE: software applicativo che permette di rendere disponibili funzionalità
del SO in librerie organizzate che facilitano la gestione di alcuni problemi di


programmazione. La disponibilità di sistemi (framework) che aggregano in modo
strutturato queste librerie, determina un ulteriore strato nell’architettura dei sistemi
operativi attuali detto middleware (software che sta in mezzo) con funzionalità di
mediatore tra il SO vero e proprio e i programmi applicativi. Middleware permette agli
sviluppatori di realizzare applicazioni complesse utilizzando componenti messi a
disposizione del middleware stesso.

Gestore dei file: organizza dati e programmi in contenitori logici, file, e definisce dei
diritti di accesso ai file. Il file system gestisce la memoria di massa con l’obiettivo di
presentare all’utente l’organizzazione logica dei dati e le operazioni che è possibile
compiere su di essi. Le operazioni di base di un file system sono: -recupero di dati
precedentemente memorizzati; - eliminazione di dati obsoleti; -
modifica/aggiornamento di dati preesistenti; - copia di dati per backup o per il
trasferimento.
Tali servizi sono forniti sia ai programmi applicativi che direttamente agli utenti.
File: contenitore logico d’informazioni (dati o istruzioni); oggetto a “lunga vita”, per
conservare le informazioni anche dopo la terminazione del processo che lo ha
generato.
Per ogni file: - identificatore (nome.estensione), - periferica (drive) e percorso sulla
periferica, - data creazione, - dimensione, - posizione effettiva dei dati nella memoria
di massa.
I nomi dei file sono in genere composti da 2 parti: nome (vero e proprio), che viene
assegnato dall’utente; estensione, associata al programma che ha generato il file e
consente quindi d’identificare la tipologia dei dati contenuti nel file.
Ogni SO pone dei vincoli sulla lunghezza dei filename e sui caratteri di cui possono
essere costituiti: es. Windows ha un limite di 254 caratteri.
I file sono generalmente organizzati in cartelle (directory) e sottocartelle in una
gerarchia ad albero.


Il SO deve soddisfare condizioni di efficienza, impiego ottimale di tutte le risorse,


interattività diretta con l’utente e sincronizzazione/cooperazione tra più agenti.
L’elaborazione parallela si ha dei dati, istruzioni e programmi; per quest’ultimi si fa
riferimento ai processi (programmi in esecuzione): ogni processo è caratterizzato da
un programma eseguibile, dai relativi dati e delle informazioni relative al suo contesto
necessarie per l’esecuzione del programma.
Programma: entità statica composta dal codice eseguibile dal processore.
Processo: entità dinamica che corrisponde al programma con il suo contesto di
esecuzione, ovvero: codice (il programma); dati (quelli che servono per l’esecuzione
del programma); stato (a che punto dell’esecuzione ci si trova, cosa c’è nei registri, ...).
Gestione dei processi: componente in grado di eseguire i processi: processore; in
sistemi con più processori ogni processo può essere assegnato a un processore ≠. Il
processore può lavorare in modalità utente (non consente l’accesso a tutte le risorse
fisiche e possono essere seguite solo alcune istruzioni) o in modalità supervisore (il
processore ha accesso a tutta la memoria ed è in grado di eseguire tutte le istruzioni
dette privilegiate).
Nella gestione dei processi da parte del SO, ogni processo può trovarsi in uno dei 4
stati: in esecuzione in modalità utente, in esecuzione in modalità supervisore, pronto
(in grado di essere eseguito; i processi vengono posti in coda), in attesa (non in grado
di essere eseguito dal processore perché in attesa del verificarsi di un evento esterno).
Coda dei processi pronti: insieme di tutti i processi che risiedono nella memoria
principale e sono pronti all’esecuzione.
Coda dei dispositivi: insieme dei processi in attesa di un dispositivo di I/O.
Scheduler a lungo termine: seleziona quali processi inserire nella coda dei processi
pronti.
Scheduler a breve termine: seleziona i processi che saranno eseguiti dalla CPU.
Modalità di esecuzione processi può essere: in foreground ( il processo è abilitato
all’interazione con l’utente attraverso dispositivi d’ingresso/uscita), in background (il
processo non è in grado d’interagire direttamente con l’utente).

Modello client-server: minimizza le dimensioni del nucleo spostando alcune
componenti del sistema verso gli strati applicativi. In questi modelli i processi server
vengono eseguiti con un livello di priorità analogo a quello dei processi client.
Nell’architettura client server lo scambio di messaggi è l’unica forma d’interazione
consentita, mentre nel modello a strati i dati possono essere allocati in aree comuni di
memoria.

Modello ibrido: in organizzazioni ibride i processi (thread) sono suddivisi in gruppi,
ognuno dei quali consente solo ai propri componenti la condivisione dei dati mentre
l’interazione con thread di altri gruppi può avvenire solo mediante lo scambio di
messaggi. Si semplificano le interazioni tra processi appartenenti allo stesso gruppo di
t., aumentando lo sfruttamento della CPU e incrementando il grado di concorrenza tra


processi del sistema. Tecnica del multithreading utile per le applicazioni che svolgono
compiti indipendenti da non necessitare di essere serializzati.
“Open Source”: software la cui licenza prevede la possibilità per tutti gli utilizzatori di
ottenere il codice sorgente. Questo dà la possibilità a tutti gli sviluppatori di migliorare
il software. La collaborazione di molti sviluppatori permette ad un programma di
evolvere in modo più veloce rispetto al caso di un ristretto team di programmatori.
Si può dividere il software open source in: software di pubblico dominio, software con
permesso d’autore copyleft.
Open source e software libero rappresentano 2 correnti filosofiche ≠ pur coesistendo
su molti aspetti specifici; open source è una metodologia di sviluppo, il software libero
è un movimento sociale (è una questione di libertà: libertà di eseguire il programma
per qualsiasi scopo, libertà di studiare come funziona il programma e adattarlo alle
proprie necessità, libertà di migliorare il programma).
Pubblico dominio: particolare software privo di diritto di autore (privo di copyright).
L’autore declina qualsiasi interesse proprietario sull'opera, assegnandola al pubblico
dominio. Significa che il programma è modificabile e redistribuibile imponendo anche
vincoli sul suo utilizzo; quindi un software può nascere come pubblico dominio ed
essere modificato e redistribuito a pagamento.
Permesso d’autore (copyleft): software libero le cui condizioni di distribuzione non
permettono ai ridistributori di porre alcuna restrizione addizionale all'atto di
ridistribuire o modificare il software. Ciò significa che ogni copia del software, anche
se modificata, deve essere software libero.
Free download: il software liberamente scaricabile non appartiene necessariamente
ad una categoria precisa tra quelle viste. Spesso anche il codice proprietario può
essere scaricato ed adoperato (ad esempio i vari plug-in per internet explorer che
permettono di vedere animazioni). Termine Freeware: indica questo tipo di software
che può essere liberamente scaricato e redistribuito ma non modificato.

Infrastrutture di rete



Internet è un’infrastruttura che, basandosi su protocolli (insieme di regole) di
comunicazione, mette in collegamento reti di computer dando loro la possibilità di
scambiare dati. WWW è un servizio/ applicazione che si basa sull’infrastruttura di
Internet e permette di condividere, richiedere e visualizzare contenuti (ipertestuali,


multimediali). Internet è qualcosa di essenzialmente fisico mentre il Web è qualcosa di
virtuale: insieme d’informazioni variamente codificate, oggetti virtuali, realizzato
sfruttando la possibilità data da Internet di collegare sistemi tra loro.
Rete di calcolatori: insieme di calcolatori autonomi tra loro collegati mediante una rete
di comunicazione; gli utenti in genere sanno se le risorse che stanno utilizzando sono
locali o remote; i calcolatori connessi alla rete mantengono un certo grado
d’indipendenza: in caso di guasto o indisponibilità della rete ogni calcolatore continua
a mantenere gran parte delle sue funzionalità. Sistemi distribuiti: gli utenti non hanno
visibilità sull’architettura del sistema; il sistema si presenta come un sistema
omogeneo, progettato per eseguire un’applicazione particolare (e.g., Bancomat); in
effetti, si dovrebbe parlare di applicazioni distribuite piuttosto che di sistemi
distribuiti.
Con la rete vi è: • condivisione di risorse software ed hardware (utilizzo razionale di
dispositivi costosi, affidabilità e disponibilità), • comunicazione tra utenti (scambio
informazioni, collaborazione a distanza). Evoluzione dei sistemi informatici: prima vi
era organizzazione centralizzata: tanti “terminali” collegati allo stesso calcolatore (in
genere un mainframe, sistema di grandi dimensioni e costo); poi organizzazione
distribuita: tanti PC collegati tra di loro; poi attraverso operazioni di downsizing
(riduzione delle dimensioni): crescita e diffusione delle reti sono state disomogenee: in
ogni sede o edificio dell’azienda si è dapprima realizzata una rete locale che servisse
alle proprie esigenze e poi si è rivelato utile collegare le ≠ sedi con una rete su scala
geografica; infine con operazioni di internetworking (collegamento di reti ≠ ):
evoluzione bottom-up della rete aziendale: integrazione delle ≠ reti locali e interesse
verso la connessione con le reti di altre organizzazioni.
Sistema informativo è costituito dall'insieme delle informazioni utilizzate, prodotte e
trasformate da un'azienda durante l'esecuzione dei processi aziendali, dalle modalità
in cui esse sono gestite e dalle risorse sia umane sia tecnologiche coinvolte. Ciò
partendo da dati di carattere aziendale o esterni all’azienda.
Sistema informatico: porzione di sistema informativo che fa uso di tecnologie
informatiche e automazione.

Tassonomia delle reti:
1. Tecnologia di comunicazione/connessione: reti broadcast (multipunto): canali di
trasmissione condivisi da tutti i sistemi connessi alla rete; ogni sistema (computer,
stampante, etc.) viene identificato tramite un indirizzo di rete univoco, associato al
dispositivo fisico (scheda) utilizzato per connettersi alla rete; un dato inviato “sulla
rete” raggiunge tutti i sistemi connessi, ma solo il calcolatore il cui indirizzo
corrisponde a quello presente nel messaggio lo tratterrà per elaborarlo. Reti punto a
punto: connessioni individuali tra coppie di calcolatori; la comunicazione avviene tra
dispositivi connesso attraverso un canale di trasmissione diretto: connessione


dedicata; a volte uno stesso canale di trasmissione è condiviso tra più calcolatori:
connessione commutata.


2. Dimensione delle reti: reti locali (Local Area Network, LAN) di limitata estensione e
collegano dispositivi collocati nello stesso edificio o in edifici adiacenti; reti
metropolitane (Metropolitan Area Network, MAN) collegano dispositivi collocati nella
stessa area urbana; reti geografiche (Wide Area Network, WAN) collegano dispositivi
diffusi in un’ampia area geografica (nazione, continente); “reti di reti” (internetwork)
collegano più reti differenti (a livello sia hardware sia software) con elementi di
interfaccia che si possono estendere su tutto il pianeta (es. Internet).
Servizi classificati in base alla velocità:
Bassissima velocità: telemetria, telecontrollo, teleallarmi;
Bassa velocità: fonia, fax, transazioni remote (es. prenotazione di tratte aeree);
Media velocità: audio Hi-Fi, video a bassa risoluzione, fax a elevata risoluzione;
Alta velocità: interconnessione di reti di calcolatori, trasferimento di file;
Altissima velocità: distribuzione di segnali video, video on demand, TV ad alta
definizione.
2 classi di mezzi di trasmissione: •mezzi guidati: linee fisiche che portano il segnale
fino al ricevitore: supportano la trasmissione di segnali elettrici o ottici (doppino
telefonico: più economico e usato per segnali analogici e digitali; formato da 2 o più
coppie di fili di rame ricoperti di materiale isolante, cavo coassiale: costituito da un
corpo centrale conduttore in cui si propaga il segnale da trasmettere, ricoperto da
materiale isolante su cui viene avvolta una serie una rete di sottili fili metallici, fibra
ottica: larghezza di banda molto elevata e consentano elevate velocità di
trasmissione); •mezzi non guidati: irradiazione di segnali elettromagnetici nello
spazio, in modo più o meno diretto: segnali trasmessi e ricevuti mediante antenne:
l’antenna del trasmettitore irradia nello spazio onde elettromagnetiche, che l’antenna
ricevente capta. La trasmissione non guidata può essere direzionale (punto-a-punto) o
non direzionale (multipunto).
Lo spettro di frequenze utilizzato nelle trasmissioni non guidate può essere suddiviso
in 3 intervalli: 30 MHz, 2 GHz (adatto alle trasmissioni non direzionali); 2 GHz, 80 GHz
(microonde) (trasmissioni direzionali, punto-a-punto); 300 GHz, 400 THz (infrarossi)
(trasmettitore e ricevitore devono essere visibili l’uno all’altro).
La trasmissione è influenzata dalla: capacità del canale (larghezza di banda): max


quantità di dati che può essere trasmessa in un’unità di tempo; dal grado di
attenuazione del segnale: riduzione dell’energia del segnale; dalle interferenze tra
segnali; dal numero di ricevitori.

RETE GEOGRAFICA di calcolatori (Wide Area Network, WAN): rete di trasmissione tra
calcolatori fisicamente distanti tra loro collegati con mezzi di trasmissione dedicati.
Una rete geografica può essere rappresentata come la composizione di 3 livelli di rete:
il più interno costituito da una rete di trasmissione che si occupa del trasferimento
delle info tra i ≠ nodi; questa rete è formata da canali di trasmissione e da sistemi che
si occupano dell’instradamento e della verifica della correttezza dei messaggi. Al 2º
livello si trova la rete di calcolatori il cui scopo è di consentire l’esecuzione delle
applicazioni. Al 3º livello si pone la rete degli utenti. Le reti commutate (non
completamente connesse: ∄ una connessione diretta tra ogni coppia di nodi) non
forniscono lo stesso livello di privatezza dei dati. Le reti geografiche si caratterizzano
in base alla strategia utilizzata per instradare i segnali: la commutazione di circuito
(tecnica che crea tra sorgente e destinatario un canale logico temporale dedicato,
costituito da una successione di connessioni tra nodi della rete, cosicché ogni nodo
della rete instrada i dati lungo il canale predisposto in uscita, senza ritardo. La
comunicazione si realizza con una fase iniziale di attivazione per stabilire il cammino
tra sorgente e destinatario, una fase di trasferimento dei dati in formato digitale o
analogico in base alla tipologia della rete, e una fase conclusiva di chiusura della
comunicazione) o di pacchetto (si basa sull'invio di pacchetti dati di dimensioni
ridotte, ognuno dei quali contiene i dati da trasmettere, le informazioni di controllo e il
numero progressivo che indica la posizione del pacchetto all’interno del messaggio. I
pacchetti vengono spediti uno per volta attraverso la rete. Rispetto alla commutazione
di circuito le linee risultano utilizzate in modo più efficiente anche in caso di traffico
elevato, e inoltre si possono gestire comunicazioni a priorità ≠).
L’instradamento dei pacchetti di uno stesso messaggio all’interno della rete può essere
gestito
secondo: 1. Datagrammi: i pacchetti vengono trattati in modo indipendente l’uno
dall’altro (ogni pacchetto può seguire un cammino differente); non è garantito l’ordine
di arrivo (il nodo di destinazione ricomporrà l’intero messaggio in base al numero
progressivo contenuto all’interno dei singoli pacchetti); se un pacchetto si perde nella
rete il mittente o il destinatario devono gestirne esplicitamente la ritrasmissione. Es.
sistema postale
2. Circuito virtuale: prima della spedizione dei pacchetti si stabilisce un percorso tra
sorgente e destinazione (circuito virtuale); ogni pacchetto contiene, oltre ai dati, un
identificatore del circuito virtuale associato; i nodi intermedi non devono prendere
alcuna decisione di instradamento sui singoli pacchetti, poiché tale decisione viene
presa una volta per tutte definendo il circuito virtuale. Es. sistema telefonico.
WiMAX (Worldwide Interoperability for Microwave Access): rete geografica


wirelessà trasmissione dati a microonde che permette di realizzare la copertura a
banda larga di ampie zone territoriali a prescindere dalla conformazione del territorio
e dagli ostacoli presenti. Si basa su IEEE 802.16 (Wireless MAN): raggio di copertura di
una stazione: decine di km; utilizzabile anche per LAN a lungo raggio.

RETI LOCALI (Local Area Network, LAN) mettono in comunicazione dispositivi per
consentire lo scambio di dati e la condivisione di risorse a distanza ridotta.
Caratteristiche: ampia larghezza di banda; modularità e facilità di connessione;
notevole affidabilità dell’intero sistema; espandibilità e flessibilità nella modifica delle
dimensioni della rete; economicità.
Interconnessine di LAN: LAN estesa: se le reti da connettere sono identiche si realizza
il collegamento mediante un dispositivo: repeater che rigenera i segnali in transito tra
una rete e l’altra. Nel caso di reti a stella vi sono gli hub o gli switch: consentono un >
numero di trasmissioni contemporaneamente. Quando le reti sono ma hanno uno
stesso schema di indirizzamento il collegamento viene effettuato mediante un bridge
che ritrasmette i pacchetti che devono transitare da una rete all’altra. Il collegamento
tra reti fisiche ≠ può avvenire attraverso un router che trasferisce da una rete all’altra
pacchetti con schemi d’indirizzamento ≠ ma condividendo lo stesso protocollo di rete.
Le LAN si diffenziano per:
- mezzi di trasmissione utilizzati: dati trasmessi in forma digitale attraverso una
codifica; es. tabella ASCII per caratteri alfanumerici. Generalmente usati mezzi guidati.
- topologia, ossia la configurazione fisica e logica della rete: 3 topologie: a bus:
trasmissione in broadcast: in ogni istante una sola stazione trasmette e tutte le altre
ricevono. Ogni stazione è collegata alla rete tramite una scheda d’interfaccia di rete
(Network Interface Card, NIC): esegue le operazioni di conversione dei segnali. Il
guasto di una stazione non provoca la disabilitazione dell’intera rete ma solo della
stazione stessa; a stella: tutte le connessioni fanno capo ad un unico nodo centrale da
cui transitano tutte le comunicazioni. Vantaggi: facilità di controllo, svantaggi:
possibilità di sovraccarico in caso di traffico. Tutte le postazioni di lavoro sono
collegate ad un dispositivo centrale: hub che ritrasmette i dati ricevuti a tutte le
postazioni di lavoro ad esso collegate; ad anello: connessione circolare a punto-a-
punto tra le stazioni collegate; se una di esse ha un malfunzionamento l’anello si
interrompe. Per evitare questo problema vi sono reti a doppio anello: es. reti FDDI
costituite da due anelli in fibra ottica.
Reti wireless (Wi-Fi): trasmissione dei dati mediante onde elettromagnetiche emesse
da dispositivi dotati di antenna. Operano in bande di frequenza che non necessitano di
licenza: senza costi di licenza per i fornitori di accesso. Vantaggi: supportano
indifferentemente dispositivi “statici” e mobili (laptop, smartphone, etc.). Svantaggi: <
prestazioni rispetto ad una rete collegata a stella e possibili problemi di sicurezza. Rete
Wi-Fi può essere: ad hoc: dispositivi che rilevano altri dispositivi che comunicano sullo
stesso canale radio; centralizzata: basata su un apparato che gestisce le comunicazioni


tra tutti i dispositivi nella sua area di copertura.
Reti wireless (Bluetooth): sviluppato per connettere telefoni cellulari con altri
dispositivi; esteso anche alle reti locali (PAN – Personal Area Network); bassissimo
costo energetico.



- 2 metodi di accesso ai mezzi trasmissivi, ossia le regole di accesso al mezzo che tutte
le stazioni collegate devono rispettare: tecniche a contesa, basate su algoritmi che
risolvono conflitti di accesso: l’accesso avviene in modo casuale (protocolli a collisione
CSMA/CD: non prevede la presenza di un sistema con funzioni di controllore centrale,
ma tutti i dispositivi sono collegati in parallelo alla rete. Quando il canale è libero da
trasmissioni, ogni stazione che ha info da inviare può iniziare a trasmettere; se più
stazioni sono in attesa di trasmettere, le info si propagano da zone ≠ del canale fino a
collidere. Quando le stazioni trasmittenti rilevano queste interferenze sospendono la
trasmissione per poi riprovare. Finestra di collisione: max intervallo di tempo che
intercorre tra il momento in cui una stazione inizia a trasmettere e il momento in cui
essa si accorge della collisione. Ethernet è il tipo di rete locale più diffuso che si basa su
questo protocollo con topologie a bus e a stella); tecniche non a contesa: tecnica di
polling: ogni stazione attende il suo turno per trasmettere: la stazione principale,
master, invita tutte le altre stazioni a trasmettere secondo una successione predefinita:
così non ci sono problemi di contesa del mezzo trasmissivo (protocolli a gettone: il
diritto a trasmettere si basa sul continuo passaggio di un gettone, token, fra le stazioni
della rete; una stazione può trasmettere sulla rete solo quando è in possesso del token;
rete con configurazione ad anello o a bus. Il token è un insieme di bit).
- architettura di rete: rete client-server: uno o più server (stazioni) gestiscono la
condivisione delle risorse e controllano gli accessi; le risorse condivise e rese
accessibili alle altre stazioni della rete, dette client, sono collegate direttamente o
controllate dal server. Il paradigma client-server: l’utente accede un client per inserire
le sue richieste, il client si collega al server e trasmette la richiesta, il server risponde al
client, il client presenta la risposta all’utente. Rete peer-to-peer: le stazioni sono
connesse in modo paritetico e ∄ una gerarchia per la gestione e il controllo della rete:
ogni stazione rende disponibili o richiede dati e condivide le risorse sia hardware sia
software di cui dispone; ogni stazione deve gestire il controllo degli accessi alle
proprie risorse, definendo cosa condividere e con chi, in modo da proteggersi da
eventuali intrusioni.
Consistenza del software: nella rete client-server se il software applicativo risiede sul


server ogni stazione client esegue le stesse versioni dei vari programmi evitando
problemi di compatibilità di dati tra i client ≠; nella rete peer-to-peer bisogna
sostituire il software su ogni stazione della rete.
Flessibilità hardware: nella rete client-server i client hanno prestazioni inferiori
rispetto al server perché non devono gestire la rete ma solo eseguire i programmi;
nella peer-to-peer ogni stazione agisce sia da client che da server.
Memorizzazione dei dati: nella client-server i dati da condividere risiedono sui dischi
del server; nella peer-to-peer i dati risiedono sul disco del proprietario.
Sicurezza: client-server la sicurezza degli accessi al server è gestita dal gestore della
rete; peer-to-peer il singolo utente garantisce la sicurezza dei propri dati.
Backup: client-server: effettuato per una sola stazione; peer-to-peer: ogni utente deve
preoccuparsi del backup dei propri dati.
- metodi di comunicazione, ovvero il software di rete: affinché 2 calcolatori possano
scambiarsi dati sono necessari: un mezzo di trasmissione che collega i due calcolatori
(la rete), dispositivi hardware per la comunicazione (schede di rete), un insieme di
regole che definiscono come avviene lo scambio (protocollo di comunicazione), il
software per la comunicazione.

Protocolli di comunicazione: insieme di regole che definiscono come i calcolatori
collegati in rete devono scambiare dati. Il solo collegamento fisico non è sufficiente per
permettere la comunicazione fra calcolatori (ciascun calcolatore è dotato di una o più
applicazioni in grado d’effettuare il trasferimento dati); è necessaria la presenza di uno
strato software che consenta lo scambio di dati sulla base di un protocollo (quasi
sempre integrato nel SO).
Ogni protocollo gestisce una componente ben definita della comunicazione:
architettura di protocolli organizzata a livelli in cui la trasmissione dell’info avviene
simulando la connessione tra i livelli corrispondenti dei due sistemi che si scambiano
blocchi formattati di dati seguendo le regole stabilite dal protocollo di quel livello.
Per comunicare è necessario 1. un canale fisico adatto: infrastruttura fisica: strumenti
per trasferire i segnali tra i comunicanti (requisito per la connessione fisica); 2.
competenze linguistiche comuni (requisito per la trasmissione: occorre concordare dei
protocolli di trasmissione: delle regole per interpretare i segnali “a basso livello”); 3.
avere competenze di contenuto comuni (requisito per la comunicazione: occorre
concordare un protocollo applicativo: delle regole per interpretare i segnali “ad alto
livello”).


Occorre utilizzare delle strutture di riferimento standard internazionali per i sistemi di


comunicazione: es. OSI (Open System Interconnection), modello TCP/IP (Trasmission
Control Protocol e Intenet Protocol) suddiviso in vari livelli: - fisico (definisce
l’interfaccia fisica tra le stazioni per la trasmissione dei dati e il mezzo di
trasmissione), - di accesso alla rete (scambio dati fra un sistema finale e la rete cui è
collegato), - internet (quando il sistema da connettere non ∈ alla stessa rete, gestito dal
protocollo IP), di trasporto: host to host, gestito dal protocollo TCP (dati trasmessi in
modo affidabile e trasformati in messaggi), di applicazione (comunicazione tra
applicazioni eseguite su calcolatori ≠).
Caratteristiche del protocollo TCP/IP: • internet usa un protocollo universale, TCP/IP,
per far dialogare tra loro hardware e sistemi operativi ≠ ; • indipendenza del
protocollo dal modo in cui la rete è fisicamente organizzata; • il protocollo è di dominio
pubblico.
Protocollo TCP/IP: suddivide i dati in uscita in pacchetti recanti le info circa la loro
destinazione (internet è una rete a commutazione di pacchetto) [pacchetti,
datagrammi, hanno piccole dimensioni (1500 byte); i pacchetti sono spediti
separatamente e poi riassemblati dal ricevente]; provvede all’instradamento dei
messaggi (IP); 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).
Per identificare i vari dispositivi presenti su una rete bisogna definire uno schema
d’indirizzamento generale che assegni ad ogni stazione un indirizzo univoco; sono
necessari 2 livelli di indirizzi. Ogni calcolatore collegato ad una sottorete necessita di
un indirizzo Internet globale unico, utilizzato da IP per l’instradamento e la consegna.
Ogni applicazione deve aver un indirizzo per consentire a TCP di consegnare i dati al
processo giusto: indirizzi detti porte.
TCP aggiunge info di controllo sotto forma di un’intestazione TCP, alcuni elementi
della quale sono: porta di destinazione, utile al gestore TCP per poter consegnare i dati
al processo destinatario corretto; numero d’ordine nella sequenza che serve a
riordinare i messaggi dopo il loro arrivo a destinazione; codici di controllo della
correttezza, checksum, che permettono al destinatario di verificare l’assenza di effetti
di disturbi che possano aver compromesso la correttezza della trasmissione.
TCP consegna poi ogni pezzo del messaggio a IP che instrada tutti i pezzi attraverso le
varie sottoreti; tale operazione prevede l’aggiunta di altre info di controllo, gestite dal
livello IP che costruisce un pacchetto di dati detto datagramma IP che viene poi
presentato al livello d’accesso alla rete per attraversare tutte le sottoreti sino a
giungere a destinazione.




Il protocollo IP, nella sua versione 4, definisce uno schema d’indirizzamento
universale: ad ogni stazione collegata ad una rete TCP/IP è assegnato un indirizzo di
32 bit, detto indirizzo IP, diviso in quattro ottetti, strutturato in 2 parti: una che
individua la rete fisica cui la stazione è collegata, l’altra che identifica la singola
stazione nell’ambito della rete fisica.
Il protocollo IP provvede a dividere il messaggio in datagrammi che poi vengono
inviati lungo la rete per arrivare a destinazione lungo percorsi indipendenti senza
alcuna garanzia che tutti i pezzi di un messaggio arrivino a destinazione.
Servizio TCP invece è un protocollo affidabile: garantisce la consegna di un messaggio
completo di tutte le sue parti e ordinato correttamente.
La combinazione delle 2 ≠ modalità di gestione della trasmissione adottate da IP e TCP
permette di ottenere sia una buona efficienza di trasmissione sia una elevata
affidabilità.
Si deve anche garantire un’elevata velocità di trasmissione che consente una
comunicazione in tempo reale (per es. nella comunicazione telefonica); allora TCP può
essere sostituito con altri protocolli, es. UDP (User Datagram Protocol) che garantisce
tempi di trasmissione inferiori: trasporto non affidabile tra processi mittente e
ricevente; non offre: connessione, affidabilità, controllo di flusso, controllo di
congestione, garanzie di ritardo e banda.
La versione più diffusa di IP, IPv4, ha permesso lo sviluppo di Internet; però con il
grande incremento del numero di calcolatori connessi a Internet è emersa l’esigenza di
definire una nuova versione di IP che consenta l’assegnamento di un > numero
d’indirizzi. La nuova versione di IP, IPv6, presenta novità sulla dimensione degli
indirizzi: da 32 a 128 bit.
Limite degli indirizzi IP è che sono machine-oriented: numero binario non facile da
ricordare; così si è diffuso un sistema DSN (Domain Name System) che consente di
associare ad ogni indirizzo IP uno o più indirizzi simbolici (costituito da una
successione di stringhe alfanumeriche separate da punti, ognuna delle quali identifica
un “dominio”).
Sono costruiti a partire da uno schema gerarchico di nomi basato sul concetto di


dominio; ogni dominio deve essere in grado di “risolvere i nomi” dei calcolatori di sua
competenza: si usano i name server che gestiscono la corrispondenza tra nomi
simbolici e indrizzi IP numerici; il name server, se conosce la risposta, la invia
direttamente al richiedente; si continua con le interrogazioni fino a quando non si
ottiene l’indirizzo IP numerico della risorsa; quando l’applicazione riceve la risposta
crea una connessione TCP con la destinazione, usando l’indirizzo IP appena ricevuto.
Il livello applicazione del modello TCP/IP comprende quelli application, presentation e
session del modello OSI; ecco perché esso racchiude tutto ciò che riguarda
rappresentazione, encoding e dialog control. Questo design del modello assicura
massima flessibilità al layer application per gli sviluppatori di software.

Application layer: si colloca al di sopra del livello Transport ed è il livello nel quale
viene svolto il “lavoro utile” per l’utente; in questo livello si trovano ≠ protocolli,
alcuni relativi alle applicazioni che usiamo abitualmente in Internet. I protocolli del
livello Application sono basati sul modello di interazione client/server: per usare i
servizi messi a disposizione mediante questi protocolli bisogna contattare un server.
Protocolli applicativi: costituiscono una parte di ogni applicazione; definiscono il
formato dei messaggi scambiati e il loro significato (azioni); usano i servizi degli strati
inferiori.
Un processo è un programma in esecuzione su un host. Sullo stesso host i processi
comunicano mediante meccanismi definiti dal SO; processi in esecuzione su host ≠
comunicano mediante meccanismi definiti dal protocollo dello strato di applicazione
(application layer protocol).
App. di rete tipica consiste di due parti: client e server. Client: inizia il dialogo con il
server; di solito richiede un servizio; nel caso del Web, il client è integrato nel browser.
Server: fornisce il servizio al client, su richiesta.
Internet: nata dalla fusione di reti di agenzie governative americane (ARPANET) e reti
di università; è una rete di reti, di scala planetaria, pubblica, a commutazione di
pacchetto. Utilizza protocolli di comunicazione di dominio pubblico derivati dal
modello TCP/IP.



Applicazioni

Pagina Web: è costituita da “oggetti”; è indirizzata da una URL (Uniform Resource
Locator): identifica un oggetto nella rete e specifica il modo per accedere ad esso; ha 2
componenti: nome dell’host e percorso nell’host.
Un user agent per il Web è detto browser; un server per il Web è detto Web server.
Application layer: World Wide Web: si basa sul protocollo HTTP (HyperText Transfer
Protocol) che gestisce l’interazione tra un client e un server web.
Client e server si scambiano dei messaggi (richieste da parte del client, risposte da
parte del server): l’utente richiede una pagina residente su un server e il suo browser
richiede una connessione TCP con il server; il server accetta la connessione iniziata dal
browser; il browser ed il server si scambiano messaggi; la connessione viene chiusa.
Posta elettronica: 3 componenti principali: User agent, Server di posta, Simple Mail
Transfer Protocol: SMTP. User Agent: “Lettore di posta”: composizione e lettura di
messaggi di posta, i messaggi in ingresso/uscita memorizzati sul server.

Posta elettronica: mail server: Mailbox contenente messaggi (non ancora letti) per
l’utente. Coda di messaggi in uscita (non ancora spediti). Protocol smtp tra i mail
server per il recapito dei messaggi: client: il server che invia il messaggio, “server”:
server che riceve il messaggio.


L’organizzazione “per livelli” dei sistemi informatici: infrastruttura hardware,
infrastruttura software, applicazione.
Un programma applicativo può essere interpretato come l’insieme organizzato di 3
componenti funzionali:



Organizzazione funzionale delle applicazioni: l’esempio dei sistemi di elaborazione di
testi.
I 3 sottosistemi sono funzionalmente indipendenti l’uno dall’altro; si può, per esempio,
cambiare IU senza modificare LA e GD.
Il sottosistema IU – interfaccia utente: ha il compito di gestire l’interazione del
programma con l’utente (consente all’utente di specificare gli input al programma;
restituisce all’utente gli output del programma; fornisce informazioni sullo stato di
esecuzione del programma) e di rendere accessibili all’utente le funzioni implementate
nel sottosistema LA. A causa dell’indipendenza funzionale tra sottosistemi, le stesse
caratteristiche per LA e GD possono essere ottenute con IU ≠.
Caratteristiche dell’interazione con i sottosistemi UI spiegate attraverso esempi di
programmi:


1º es. interfaccia a linea di comando (command line), con modalità batch (lotto): es.
comando di ricerca. La logica d’interazione IU-LA di questo programma è:
1. l’utente specifica tutti i parametri di input e mette in esecuzione il programma;
2. il programma viene eseguito;
3. il risultato prodotto nell’esecuzione viene presentato all’utente come output del
programma;
4. l’esecuzione termina.
2º es: interfaccia a linea di comando (command line), con modalità interattiva modale:
usate quando si deve fornire una guida all’utente mentre accede a funzionalità
particolari: es. navigatore satellitare.
1. l’utente mette in esecuzione il programma;
2. il programma attiva una sessione domande-risposte per ottenere dall’utente i
parametri d’input;
3. viene eseguita la parte del programma che opera sui parametri di input per ottenere
il risultato;
4. il risultato prodotto nell’esecuzione viene presentato all’utente come output del
programma;
5. l’esecuzione termina.
3º es: interfaccia grafica con modalità interattiva non modale: consente all’utente di
specificare i parametri d’input e l’interfaccia utente può immettere i parametri senza
una sequenza prefissata; es. calendario degli appuntamenti.
1. l’utente mette in esecuzione il programma;
2. il programma attiva un’interfaccia utente interattiva non modale e si mette in
condizione “di ascolto”;
3. fino a che l’utente non seleziona il pulsante per terminare l’esecuzione del
programma:
- l’utente immette i parametri d’input
- l’utente seleziona il pulsante che mette in esecuzione la parte del programma che
opera sui parametri d’input per ottenere il risultato
- il risultato prodotto viene presentato all’utente;
4. l’esecuzione termina.
Caratteristiche dell’interfaccia grafica: Graphical user interface (GUI):
personalizzazione:
• forniscono una molteplicità di strumenti d’input e consentono quindi a ogni utente di
adottare un proprio stile di uso dei programmi e, spesso, di personalizzarne
l’interfaccia: es. per copiare nell’archivio appunti (clipboard) un testo selezionato si
può: - con la tastiera premere Ctrl-C; - con la tastiera aprire il menu Modifica con il
corrispondente tasto scorciatoia e quindi muovere il cursore con i tasti freccia fino a
evidenziare la voce Copia premendo quindi Invio; - con il mouse aprire il menu
Modifica e quindi selezionare la voce Copia; - con il mouse aprire il menu contestuale


da cui scegliere la voce Copia.
Standardizzazione: l’uniformità delle IU consente agli utenti di focalizzare l’attenzione
sulle funzionalità del programma e non sull’interfaccia utente (sul cosa fare e non sul
come farlo); sono stati standardizzati: - l’uso di sequenze di tasti di comando, per
esempio F1 per richiamare un aiuto sul programma in esecuzione o Ctrl-C per copiare
nell’archivio appunti l’entità selezionata; - la presenza e le modalità di uso dell’archivio
appunti, che funziona in modo omogeneo in ≠ applicazioni e consente di trasferire dati
tra applicazioni; - la presenza e le modalità di uso di funzioni di utilità d’impiego
generale; - la presentazione grafica e le modalità d’uso degli oggetti grafici nelle
finestre.
Interfacce naturali: evoluzione dell’interfaccia utente: sistemi d’interfaccia più semplici
da usare; molte sono abilitate dagli schemi multi-touch che consentono l’interazione
simultanea di più dita alla volta e che hanno permesso la standardizzazione di alcune
modalità d’interazione dette gesture.
Applicazioni come sistemi: le applicazioni tradizionali vengono realizzate come moduli
software che si basano direttamente sui servizi offerti dal SO; le applicazioni recenti
sono invece spesso basate sull’assemblaggio di componenti messi a disposizione da
uno strato di middleware:

Struttura di un sistema informatico dotato di middleware.



Gestore dei componenti: tiene traccia dei componenti disponibili e coordina il loro
utilizzo da parte delle applicazioni.
Applicazioni come sistemi distribuiti: i sottosistemi di cui un’applicazione è costituita
possono risiedere (ed essere in esecuzione) su calcolatori ≠ connessi in rete: si parla
in tal caso di applicazioni distribuite. L’architettura più diffusa per la realizzazione di
applicazioni distribuite è chiamata client-server: il programma client, con cui opera
l’utente, include il solo sottosistema IU; grazie a esso l’utente produce una richiesta da
inviare al server e ottiene da esso la relativa risposta; il programma server, in
esecuzione su un calcolatore raggiungibile sulla rete, include i sottosistemi LA e GD;
ricevendo una richiesta dalla rete, esso la elabora e produce una risposta, che rinvia
sulla rete.


Il progetto di applicazioni client-server presenta 2 problemi: è necessario lo sviluppo
1. Di appositi protocolli di comunicazione specializzati per i sistemi su cui
l’applicazione deve essere eseguita; 2. Di client che devono essere ogni volta progettati


e realizzati.
La diffusione delle tecnologie legate al World Wide Web (WWW) ha reso possibile
un’evoluzione dell’architettura client-server: come protocollo di comunicazione tra
client e server viene adottato http (HyperText Transfer Protocol): protocollo
applicativo del web, e come client un browser web. Si parla di applicazioni web-
oriented. Problema: http non nasce come protocollo applicativo.
Il passaggio da applicazioni legacy (client-server) ad applicazioni web-oriented
permette di abbassare i costi di progettazione e sviluppo ed inoltre è sufficiente che
l’utente disponga di una connessione a Internet e di un browser per accedere ai servizi
disponibili.


Altro modello applicativo si basa sulla constatazione che in molte applicazioni i
sottosistemi LA e GD sono molto complessi da dover essere eseguiti su server ≠.
L’applicazione web, così, opera nello stesso tempo come server verso la parte client e
come client verso il DBMS (DataBase Management System, sistema di gestione di basi
di dati il cui scopo è di garantire un’efficiente memorizzazione e accesso a grandi
quantità di dati): architetture multi-tier (organizzate su più livelli).

Il browser riceve la richiesta generata dall’utente e la inviata sulla rete; ricevendo la
richiesta, il server stabilisce che essa specifica non un documento ma un programma, e
in conseguenza mette in esecuzione tale programma, mettendosi in attesa del risultato
dell’esecuzione; alla conclusione della sua esecuzione, il programma produce un
risultato e lo rende disponibile al server web nella forma di un flusso di dati (testo,
immagine); il server acquisisce tale flusso di dati, a esso antepone un’opportuna
intestazione HTTP e quindi invia il risultato come risposta al browser da cui aveva
ricevuto la richiesta; il browser riceve la risposta, la interpreta e la visualizza per

l’utente.

Combinazione di 2 sottosistemi client-server: il browser opera come client verso il
server web, inviandogli una richiesta e aspettando da esso una risposta; il server web
assume temporaneamente un ruolo di client, inviando una richiesta a un altro server
(il programma di back end) e attendendo una risposta; normalmente il back end è
costituito da un DBMS.
Architettura basata su un principio di deleghe successive: un client non è in grado di
svolgere un compito applicativo e quindi si rivolge a un server; se tale server non è in
grado di soddisfare la richiesta può a sua volta trasformarsi in un client per rivolgersi a
un secondo server.
Svantaggio: complessità architetturale.


Vantaggio: specializzazione: ogni sottosistema è realizzato per svolgere un compito
particolare e deve rispettare il protocollo applicativo con i sottosistemi delegati.
Architetture a più livelli: se la logica applicativa è complessa o richiede per motivi di
prestazioni una ulteriore distribuzione, si può realizzare un’architettura “a quattro (o
più) livelli”


Il back end è responsabile del carico applicativo mentre il server web (o un application
server) fa da front end. La presenza di un “gestore di componenti distribuiti” consente
la completa generalizzazione di questa architettura: quando c’è un componente che
realizza una funzione applicativa richiesta, il back end può richiamare tale
componente invece di implementare nuovamente la stessa funzione. Architetture
service-oriented: permette alle applicazioni web di usare altre applicazioni web
(mediante appositi protocolli si rende possibile l’uso di applicazioni terze disponibili
su server connessi a Internet da parte di una applicazione web; il server web assume
temporaneamente un ruolo di client, inviando una richiesta a un altro server (il
servizio) e attendendo una risposta).
Le architetture orientate ai servizi permettono la creazione di sistemi distribuiti
dinamici: Internet come “ambiente di esecuzione” e non più come mera infrastruttura
di comunicazione.

Web: esempio di sistema distribuito. World Wide Web è realizzato come sistema
distribuito client-server, in cui il client è un browser e il server è un server web: http
esempio di protocollo applicativo.
Nella comunicazione tra client e server non è sufficiente che richiesta e risposta
giungano correttamente al destinatario: occorre che i due programmi comunicanti
siano in grado di comprendere le rispettive comunicazioni, cioè “parlino la stessa
lingua”: devono condividere uno stesso protocollo applicativo.
Caratteristica impo del protocollo http, adatto nella comunicazione tra browser e
server web, è la sempicità: http specifica che tutte le comunicazioni devono essere
realizzate mediante messaggi, costituiti da un’intestazione e da un corpo. Le
comunicazioni richiesta-risposta http possono essere gestite senza tenere traccia di
eventuali precedenti connessioni effettuate, indipendentemente l’una dall’altra.
Per poter accedere ai servizi applicativi messi a disposizione dai server sulla rete e
creare quindi un’applicazione distribuita, è necessario che ognuno di tali servizi risulti
univocamente identificabile da parte dei client.
Nel caso di Internet si è standardizzato uno schema uniforme d’identificazione
applicativa, che consente di assegnare un metodo di accesso e un indirizzo, chiamati
congiuntamente Uniform Resource Locator (URL), a ogni risorsa presente sulla rete.



Web dinamico server-based: permette di costruire dinamicamente una pagina web in
funzione di parametri d’input; permette di accedere ad un database (output: pagine
che contengono il risultato di query SQL, input: inserire nuovi dati all’interno di un

database).
Web dinamico client-based: il dinamismo avviene sul client; il contenuto è fisso ma
l’interfaccia cambia a seconda dell’interazione; linguaggi: Javascript, Flash, (Applet
Java).



Server: pro: - permette computazioni (molto) complesse: query sql, ricerche, update
di dati; - permette e gestisce (automaticamente) le concorrenza e quindi gli utenti
possono vedere modifiche fatte da altri utenti. Contro: - può essere lento: complessità,
alto carico; - interazione indiretta: domanda e risposta.
Client: pro: - permette interazioni più complesse tipo quelle che avvengono nei sistemi
WIMP (e.g., menu, pop-up); - oggetti dinamici (menu); - animazioni. Contro: - design
non standard (problemi con Flash); - problemi di compatibilità; - può essere lento.
Sicurezza: requisiti:
1. Confidenzialità o Riservatezza: proteggere dati e informazioni scambiate tra un
mittente e uno o più destinatari nei confronti di terze parti.
2. Integrità: proteggere dati e informazioni da modifiche del contenuto, accidentali
oppure effettuate da una terza parte.
3. Disponibilità: garantire l'accesso ad un servizio o a delle risorse.
4. Non ripudio: garantire che nessuno dei corrispondenti potrà negare la transazione.
5. Autentificazione: assicurare l'identità di un utente.
Mandatory Access Control (MAC): tipo di controllo d'accesso al quale il SO vincola la
capacità di un soggetto di eseguire ≠ operazioni su un oggetto o un obiettivo: - un
soggetto può essere, ad es., un processo, ed oggetti i file, le cartelle, le porte TCP/UDP,
segmenti di memoria condivisa e altro; - i soggetti e gli oggetti hanno una serie di


attributi di sicurezza. Quando un soggetto tenta l'accesso a un oggetto, il kernel del SO
avvia una regola di autorizzazione che esamina gli attributi di sicurezza e decide se
l'accesso può aver luogo; - anche un sistema di gestione della base di dati (DBMS),
come meccanismo di controllo degli accessi può applicare MAC.
Discretionary Access Control (DAC): tipo di controllo d'accesso nel quale è l'utente
proprietario di una risorsa che decide se applicare o meno dei controlli per l'accesso e
di che tipo, oltre a decidere a quali utenti o gruppi di utenti garantire l'accesso. Es.:
gestione degli accessi alle cartelle o ai file. È l'utente proprietario (colui che lo ha
creato) del file (o della directory) a decidere i criteri d’accesso (lettura, modifica, etc.)
sullo stesso da parte degli altri utenti.

Sicurezza nella trasmissione delle informazioni: Crittografia
Crittografia Simmetrica (detta anche a chiave privata): algoritmi usati nella crittografia
classica e permettono al mittente ed al destinatario di usare la stessa chiave per
criptare e decriptare un messaggio. È utilizzata una sola chiave detta segreta o privata
(si tratta di crittosistemi secret-key o private-key), che è un parametro di una funzione
invertibile; questa chiave serve per cifrare e per decifrare e perciò deve essere nota al
mittente ed al destinatario.
Principio di funzionamento: il mittente cifra il messaggio con la chiave segreta; si
trasmette il messaggio cifrato attraverso un canale (sicuro o insicuro); il destinatario
riceve il messaggio cifrato e lo decifra con la chiave segreta.


Vantaggi: velocità di funzionamento, quindi è possibile utilizzare chiavi molto lunghe.
Svantaggi: l’aumento dei tassi di velocità dei processori degli elaboratori rende meno
sicuro questo sistema crittografico; l’uso ripetuto della stessa chiave rappresenta un
potenziale problema; più volte viene utilizzata, più è facile riuscire a carpirla; la
distribuzione delle chiavi: per decifrare un messaggio è necessario conoscere la chiave,
che lo ha cifrato; l’affidabilità del destinatario: questi potrebbe perdere o dare ad altri
non autorizzati la propria chiave.
Crittografia Asimmetrica (detta anche a chiave pubblica): algoritmi asimmetrici, in
particolare quelli reversibili, si basano su una coppia di chiavi: l’una capace di cifrare e
l’altra di decifrare l’informazione e viceversa. Chiave di crittazione ≠ da quella di
decrittazione; è possibile distribuire la propria chiave di decrittazione (chiave
pubblica) e mantenere segreta la chiave di crittazione (la chiave privata). Lo scambio
delle chiavi non è più critico ma pubblico, e quindi ∄ più alcun problema in merito
(ogni soggetto dovrà detenere una sola coppia di chiavi (la propria): le chiavi
pubbliche verranno iscritte in appositi registri, pubblicamente consultabili, dai quali
potranno essere scaricate al momento opportuno).


Svantaggi: un limite nell’utilizzo degli algoritmi a crittografia asimmetrica consiste nel
fatto che i numerosi e complessi calcoli rendono la loro implementazione poco
efficiente.
Problemi tipici della crittografia a chiave simmetrica: il problema dell’autenticità del
mittente viene subito risolto, in quanto solo il titolare di quella chiave privata potrà
aver generato il messaggio corrispondente alla relativa chiave pubblica; si risolve il
problema della riservatezza: infatti, poiché l’algoritmo è simmetrico dal punto di vista
delle chiavi (ciò che viene crittato con la chiave privata va decrittato con quella
pubblica, ma anche viceversa) è sufficiente crittare un messaggio con la chiave
pubblica affinché solo il titolare della corrispondente chiave privata possa leggerlo.
Un messaggio cifrato con una chiave può essere decifrato solo con l’altra chiave; le
chiavi devono essere indipendenti; la conoscenza di una non deve concedere nessuna
informazione utile alla ricostruzione dell’altra.


Le funzioni di hash: a partire da un messaggio, genera una sequenza di numeri
(impronta o fingerprint o digest): 1. molto più corta del messaggio stesso; 2.
Considerata relativamente univoca, nel senso che dovrà essere molto difficile trovare
un altro messaggio che generi la medesima sequenza.


Una funzione di hash deve godere delle seguenti proprietà: 1. deve essere coerente: a
messaggio uguale deve corrispondere uguale hash; 2. deve essere (o apparire) casuale,
per impedire l’interpretazione accidentale del messaggio originale; 3. deve essere
univoca, ossia la probabilità che due messaggi generino il medesimo hash deve essere
virtualmente nulla; 4. deve essere non invertibile: non deve essere possibile risalire al
messaggio originale dalla sua fingerprint; 5. deve infine essere equiprobabile: ognuna
delle possibili sequenze binarie che costituiscono l’hash deve avere la stessa
probabilità di essere generata delle altre.
Combinazione di tecniche: firma digitale + crittografia: per assicurare non


ripudiabilità, non modificabilità e segretezza dei messaggi; si crittografa testo in chiaro
e firma digitale.
Crittografia mista: l’uso della crittografia asimmetrica è poco pratica a causa della
lentezza degli algoritmi; si usa la crittografia a chiave pubblica per scambiare in modo
sicuro chiavi simmetriche usate per crittografare il flusso di dati (vengono
frequentemente cambiate).

Malware: qualsiasi software creato allo scopo di causare danni a un computer, ai dati
degli utenti del computer, o a un sistema informatico su cui viene eseguito. Il termine
deriva dalla contrazione delle parole inglesi MALicious e softWARE e ha dunque il
significato di "programma malvagio"; in italiano è detto anche codice maligno.
Alcuni esempi di Malware:
Virus: sono parti di codice che si diffondono copiandosi all'interno di altri programmi,
o in una particolare sezione del disco fisso, in modo da essere eseguiti ogni volta che il
file infetto viene aperto. Si trasmettono da un computer a un altro tramite lo
spostamento di file infetti ad opera degli utenti.
Trojan horse: software che oltre ad avere delle funzionalità "lecite", utili per indurre
l'utente ad utilizzarli, contengono istruzioni dannose che vengono eseguite all'insaputa
dell'utilizzatore. Non possiedono funzioni di auto- replicazione, quindi per diffondersi
devono essere consapevolmente inviati alla vittima. Il nome deriva dal famoso cavallo
di Troia.

Phishing ("spillaggio di dati sensibili"): attività illegale che sfrutta una tecnica di
ingegneria sociale, ed è utilizzata per ottenere l'accesso a informazioni personali o
riservate con la finalità del furto d'identità mediante l'utilizzo delle comunicazioni
elettroniche, soprattutto messaggi di posta elettronica fasulli o messaggi istantanei,
ma anche contatti telefonici.

Spamming: susseguirsi ripetuto di una parola/frase (generalmente commerciali). Può
essere attuato attraverso qualunque sistema di comunicazione, ma il più usato è
internet, attraverso messaggi di posta elettronica, chat o forum.

Cloud Computing: tipo d’informatica che basandosi su Internet fornisce 3 livelli di
servizio: infrastrutture, dati (DBMS) e applicazioni (software). Insieme di tecnologie
che permettono, tipicamente sotto forma di un servizio, di memorizzare/archiviare
e/o elaborare dati (tramite CPU o software) grazie all'utilizzo di risorse/software
distribuite e virtualizzate in Rete: metto tanti pc insieme che sembrano uno solo.
Alcuni analisti lo vedono come una maggiore evoluzione tecnologica offerta dalla rete
Internet. Altri, come Richard Stallman, lo considerano invece una trappola di
marketing.


Architettura Cloud Computing: SaaS: Software as a Service, PaaS: Platform as a Service,
IaaS: Infrastructure as a Service.


Vantaggi: non si guasta mai, non occupa uno spazio, non serve personale, quando mi
serve schiaccio un tasto e ce l’ho, meno costoso.
Possibili problemi del Cloud Computing: sicurezza e privacy degli utenti (il fornitore di
servizio, con un comportamento scorretto o malevolo, potrebbe accedere ai dati
personali per eseguire ricerche di mercato e profilazione di utenti); problemi
internazionali di tipo economico e politico (possono verificarsi quando dati pubblici
sono raccolti e conservati in archivi privati, situati in un paese ≠ da quelli degli utenti
della “nuvola”); continuità del servizio (delegando a un servizio esterno la gestione dei
dati e la loro elaborazione l'utente si trova fortemente limitato nel caso in cui i suddetti
servizi non siano, per qualunque ragione, operativi); difficoltà di migrazione dei dati
(non esistendo uno standard definito tra i gestori dei servizi, un eventuale cambio di
operatore risulta estremamente complesso).
Database e Data warehouse
Sistema informativo: combinazione di risorse umane, materiali e di procedure per la
gestione, la raccolta, l’archiviazione, l’elaborazione e lo scambio d’informazioni
necessarie per lo svolgimento delle attività. Database: insieme organizzato, archivi di
dati strutturati, indipendenti dalle applicazioni e gestiti grazie a uno specifico software
che controlla le operazioni di archiviazione, lettura modifica e condivisione, detto
DataBase Management System (DBMS) che permette l’accesso da parte di più utenti o
programmi. Si gestiscono ora archivi di dimensioni sempre più grandi. I database sono
strumenti che forniscono un supporto diretto all’On-Line Transaction Processing, OLTP,
l’attività di raccolta, elaborazione e memorizzazione delle informazioni relative
all’esecuzione di processi operativi.
Le applicazioni OLTP (On-Line Transaction Processing) sono fatte per - automatizzare
le operazioni quotidiane (inserimento dati, transazioni bancarie); - transazioni godono
delle proprietà A.C.I.D (atomicità: “tutto o niente”, consistenza: verifica dei vincoli di
integrità, isolamento: l’esecuzione di transazioni concorrenti è indipendente,


persistenza: l’effetto di una transazione non viene perso); - i database sono progettati
per ridurre la concorrenza .

Le applicazioni OLAP (On-Line Analytical Processing) hanno requisiti ≠ da OLTP:
applicazioni per il supporto alle decisioni (Data Warehouse o i Data Mart); contengono
dati aggregati da ≠ fonti dati; interessa il tempo di risposta di una query; definite dal
modello multidimensionale.

Data warehouse: ambiente integrato che raccoglie i dati provenienti da ≠ ambiti
aziendali ed extra aziendali; consente a chi deve prendere decisioni di avere
informazioni complete per svolgere analisi e creare report. DW permettono anche la
realizzazione di analisi OLAP grazie alle quali si può esaminare un fenomeno
mettendolo in relazioni con le molteplici variabili che lo influenzano. DW abilitano
l’applicazione del data mining, insieme di tecniche e algoritmi che consentono
estrazione di nuova conoscenza da archivi per la formulazione di stime e previsioni.
DW, OLAP, DM fanno parte della categoria di business intelligence che permettono la
trasformazione dell’enorme massa di dati in informazioni per scelta di obbiettivi
strategici. Business intelligence è riferito sia all’ACCESSO ALLE INFORMAZIONI che
presuppone che esse siano organizzate e reperibili in modo semplice e anche alla
nozione di LAVORARE CON le informazioni che presuppone la necessità di strumenti
in grado di memorizzare le info e consentire un rapido accesso.
DB e DW: metodi per l’organizzazione e gestione d’informazioni e come sistemi di
supporto all’attività decisionale.
Integrazione dei dati: utilizzo e condivisione di: -archivi comuni a più aree funzionali;
–processi e procedure automatizzate relative all’attività dell’azienda; –rapporti che la
stessa intrattiene con i suoi stakeholder (clienti, fornitori, pubblica amministrazione
ecc.).
Obiettivi dell’integrazione dei dati: - ottimizzare la disponibilità delle informazioni ai
responsabili di decisioni; - razionalizzare i cicli di lavoro; - ridurre la ridondanza dei
dati; - aumentare l’integrità (controllo) dei dati; - ridurre i costi di acquisizione dei
dati; - creare i presupposti per un’integrazione funzionale o dei processi.





Caratteristiche principali di una BASE DI DATI

•persistenti: hanno un tempo di vita indipendente dalle singole esecuzioni dei
programmi che le utilizzano (è la “memoria” dell‘organizzazione).
•condivise: ogni organizzazione (specie se grande) è divisa in settori o comunque
svolge ≠ attività. Ciascun settore/attività ha un (sotto) sistema informativo (non
necessariamente disgiunto).
•grandi: dimensioni > della memoria centrale dei sistemi di calcolo utilizzati. Il limite
deve essere solo quello fisico dei dispositivi.
Gli attori coinvolti: •amministratori della base dati (dba): –gestione globale DB,
coordinano attività inter settoriali ed applicative comuni, eventualmente specializzati
per settore o classe utenti tramite definizione e gestione di viste settoriali;
•programmatori sviluppatori di applicazioni: –realizzano (query language, linguaggi
ospite ed ambienti di interazione) in modo ottimale le funzionalità operative di uso
frequente; •utenti finali ed occasionali: –interagiscono con la base dati direttamente
tramite viste e semplici linguaggi di interrogazione (utenti occasionali),
indirettamente, tramite applicazioni ad hoc.
La base di dati quindi è una raccolta (organizzata, persistente, condivisa, di notevoli
dimensioni e varietà) di dati; ha una sola rappresentazione che evita ridondanza,
disallineamento e inutili ripetizioni di operazioni; si può controllare meglio
(concorrenza su dati condivisi e rispetto vincoli d’integrità); permette un accesso
gestito e regolato da un gestore della base dati, che assicura: efficienza, usabilità,
privatezza e affidabilità dei dati (in generale tramite un computer “database server”
accessibile in un ambiente distribuito in rete a più stazioni di lavoro client).

Modelli dei dati: la realizzazione di una base dati prevede 3 fasi e più modelli:
1. fase di progettazione concettuale – modello concettuale.
Il livello "concettuale" rappresenta concetti e relazioni tra concetti. È completamente
indipendente dalla tecnologia DBMS che gestirà le strutture dati.
Strumento utilizzato: schema entità-relazioni che attraverso i costrutti descrivono
l’organizzazione e la struttura dei dati.
Principali costrutti: -le entità: elementi che hanno una propria identità ai fini
dell’applicazione es : fattura, dipendente, prodotto, città etc; -le occorrenze: singoli
oggetti che appartengono a classe di entità rappresentate; -le relazioni: legami logici
che sussistono tra entità differenti; - cardinalità o tipologia di relazioni
(sottocategoria); - gli attributi: proprietà che descrivono le caratteristiche di entità e
relazioni, es. nome, cognome; - identificatori o attributi primari (sottocategoria ) che
identificano in modo univoco le occorrenze di ogni entità.
Progettazione concettuale: s’individuano le entità secondo criteri di omogeneità;
s’individuando le proprietà interessanti per ogni entità (attributi); si definiscono le


relazioni tra entità; si passa dal livello concettuale al livello esterno di
rappresentazione di dati utilizzando le tabelle e creando dei collegamenti tra di esse.
Cardinalità: •è una tipica caratteristica descrittiva (concettuale e logica) per le
informazioni; •può essere alla base di vincoli d’integrità; •rappresenta la variabilità
numerica ammissibile nelle corrispondenze fra oggetti appartenenti a due insiemi
(nell’ambito di una aggregazione); •può riguardare sia gli attributi (cardinalità rispetto
all’insieme dei valori) che le associazioni (cardinalità tra insiemi entità)
Ridondanza: –duplicazione informazione in più archivi; –spreco risorse (spazio sui
dischi); –disallineamento dati, es: l’indirizzo di un cliente modificato solo in uno degli
archivi clienti; un archivio con 220 dipendenti ed un altro con 199; –procedure accesso
dati (interrogazione o modifica) replicate (o riattivate) per tutti gli archivi contenenti
la stessa informazione
Rischio d’incoerenza: –le versioni possono non coincidere.
2. fase di progettazione logica – modello/ sottoschema logico.
Il livello "logico" produce un modello dettagliato, guidato essenzialmente dalle
relazioni di significato tra i dati. È il livello di definizione delle tabelle in un DBMS
relazionale, con indicazione di colonne e data type, chiavi primarie ed alternative. A
differenza del modello concettuale, può essere un modello ottimizzato.
Attività richiesta: ristrutturazione degli schemi di concetto basata su criteri di
ottimizzazione e semplificazione.
4 modelli logici utilizzati x creazione di data base:
Modello gerarchico: i dati sono organizzati in record connessi tra loro secondo
strutture ad albero. L’albero è formato da 2 tipi di record: il record OWNER
(proprietario) e il record MEMBER (componente). Ogni record del database, che non
sia la radice dell' albero, deve avere uno e un solo padre. Es. il file system del SO: ogni
cartella è contenuta in una cartella padre tranne che la root.
Modello reticolare: CODASYL (Conference On Data Systems Languages) si occupò dello
sviluppo del linguaggio COBOL e della standardizzazione della gestione dei dati. Il
modello reticolare è così chiamato poiché ogni suo schema può essere rappresentato
per mezzo di un grafo (o una rete), con nodi e archi.
Modello relazionale è basato su valori, nel senso che le corrispondenze fra dati in
relazioni e sono rappresentate per mezzo della presenza di valori comuni (es. indici e
chiavi).
Dati rappresentati tramite tabelle a doppia entrata chiamate relazioni. Ogni tabella è
definita dalle colonne (campi) e da una serie di righe dette anche record o tuple.
Inoltre l’insieme dei valori che ogni campo può assumere viene chiamato dominio. Dal
punto di vista logico il dominio indica i dati che possono essere validamente attribuiti
al campo di riferimento, dal punto di vista fisico il dominio fa riferimento alla tipologia
di dato che può essere accolto da ogni specifico campo. Nel modello di database
relazionale è disponibile un dizionario dei dati che contiene la struttura logica delle
informazioni. Quando si crea un database si parte dalla creazione del dizionario dei


dati perché questo contiene le indicazioni relative alle proprietà logiche delle
informazioni; è fondamentale creare le relazioni o i legami fra le informazioni che
evidenziano le correlazioni esistenti tra tabelle. Prima di creare queste relazioni
s’identifica per ognuna di esse una chiave primaria cioè un campo che identifica ogni
record in modo univoco. Se un campo è definito come chiave primaria esso non può
assumere più di una volta lo stesso valore. I vincoli d’integrità sono regole che
consentono di garantire la qualità delle informazioni contenute nell’archivio.

OPERAZIONI RELAZIONALI: la Proiezione è una visualizzazione "verticale" della
tabella (solo alcune colonne); la Selezione è una visualizzazione "orizzontale" della
tabella (solo alcune righe che soddisfano una condizione); il Join è l'unione di record
che sono memorizzati su tabelle ≠.
Modello orientato agli oggetti: adatto ad archiviazione di materiale non solo testuale.
Scopo: assegna > significato ai dati associando ad essi algoritmi necessari alla loro
interpretazione. Insieme di dati e algoritmi costituisce l’oggetto. Questi sono entità
appartenenti a classi di oggetti che ereditano le caratteristiche delle proprie classi di
appartenenza compresi i metodi cioè le funzioni elaborative che accrescono il
significato dei dati rappresentati.
OODB (Object Oriented DataBase): modello più recente di database che nasce
dall’esigenza di gestire informazioni multimediali: immagini, audio, video, documenti
e risorse Internet.
3. fase di progettazione fisica.
Il livello "fisico“ è quello in cui si definiscono caratteristiche utili per l'ottimizzazione
delle prestazioni e della memoria (es. indici, percentuali di spazio disponibile per
inserimento di nuove righe) o per la gestione del DBMS (es. organizzazione in data
base e table space).
Obbiettivo: implementazione informatica delle strutture dei dati che descrivono la
realtà di interesse e viene realizzata, a livello fisico, con l’aiuto del linguaggio di
descrizione per la memorizzazione dei dati (data storage description language).
Dai file ai database: svantaggi di un’organizzazione orientata ai file: –ridondanza
indesiderata, –mancanza allineamento negli aggiornamento dei dati, –dipendenza dei
dati dai processi.
Organizzazione dei dati in database: permette di rendere i dati indipendenti dai singoli
programmi che vi accedono e dal supporto fisico sul quale sono memorizzati, grazie
alla netta separazione tra la strutturazione logica e la memorizzazione fisica.



DBMS: sistema di gestione di database; consente di specificare l’organizzazione logica
di un database e di accedere e utilizzare le informazioni in esso contenute. È costituito
da 5 componenti software:
- Motore DBMS: accetta le richieste logiche dagli altri moduli del DBMS, le converte nel
loro equivalente fisico e accede al database e al dizionario dei dati memorizzati in una
periferica di archiviazione massa. LA VISTA FISICA delle informazioni è legata al modo
in cui le informazioni vengono fisicamente organizzate memorizzate ed estratte in
funzione del tipo di periferica di archiviazione utilizzata. LA VISTA LOGICA delle
informazioni si concentra sul modo in cui i knowledge worker devono organizzare e
accedere alle informazioni per soddisfare determinate esigenze aziendali.
- Modulo di definizione dei dati: consente di creare e gestire il dizionario dei dati e di
definire la struttura delle tabelle di un database, lo strumento: Data Definition
Language: DDL. Definizione e creazione del data dictionary che definisce la struttura
delle tabelle (creazione del dizionario corrisponde alla definizione di proprietà logiche
delle informazioni contenute nel database) proprietà delle strutture logiche: -nome del
campo; -tipo; -formato; -valore predefinito; -regole di validazione; -valore
obbligatorio; -duplicati ammessi.
- Modulo manipolazione dati: consente di aggiungere modificare o eliminare
informazioni in un database e di eseguire operazioni di ricerca e analisi avanzate.
Strumento: Data Manipulation Language: DML che consente di specificare i parametri


di ricerca delle informazioni da un punto di vista logico. Le componenti software
assumono a volte il ruolo di interfaccia principale fra utente e informazioni contenute
nel database. Strumenti di manipolazione consentono di specificare i parametri di
ricerca delle informazioni da un punto di vista logico. Queste specifiche logiche sono
tradotte dal DBMS in termini di requisiti fisici. Gli strumenti sono:
-generatori di viste (VIEW): tabelle “virtuali” ottenute attraverso la selezione e la
rielaborazione di colonne appartenenti ad altre tabelle già esistenti;
-generatori di report: definiscono in modo rapido, attraverso l’utilizzo di
un’interfaccia grafica, documenti nei quali viene presentata una selezione rielaborata
dei dati d’interesse specificando quale info. si vuole visualizzare e le modalità di
rappresentazioni delle stesse;
-gli strumenti QBE: consentono di formulare attraverso l’utilizzo d’interfacce grafiche
le interrogazioni al database. L’interrogazione è formulata tramite il riempimento di
un “template” visualizzato sullo schermo.
L’utilizzo di uno strumento QBE si articola in 3 fasi: -identificazione delle tabelle in cui
trovano le informazioni; -trascinamento dei campi necessari dalle tabelle identificate
all’interno della griglia QBE; -specificazione dei criteri di selezione (acquisto effettuato
e numero di prodotti superiore a 10).
-SQL (Structure Query Language): linguaggio d’interrogazione standardizzato di 4ª
generazione. SQL esegue stesse funzioni di QBE con la differenza che Query viene
formulata creando un’istruzione invece che utilizzando metodo della selezione e
trascinamento.
- Modulo di generazione applicazioni: include funzioni che consentono di sviluppare
applicazioni capaci d’effettuare un elevato numero di transazioni. Questi tipi di
applicazioni richiedono solitamente l’esecuzione di una serie di attività per elaborare
una transazione.
- Modulo di amministrazione dati: consente di gestire l’ambiente globale di un
database mettendo a disposizione degli utenti strumenti di backup e ripristino,
strumenti per la gestione della protezione (gestione dei profili e della sicurezza, es. di
crittografia e password), funzioni d’ottimizzazione delle Query (riformulano le Query
rielaborate dagli utenti con l’obbiettivo di ottenere una sintassi in grado di ridurre al
minimo i tempi di risposta), funzioni di riorganizzazione e controllo degli accessi,
controllo della concorrenza e gestione delle modifiche. Questo modulo è spesso
utilizzato da un amministratore di database (DataBase Administrator, DBA) cioè di un
responsabile che garantisce che l’ambiente del database soddisfa le esigenze aziendali
di gestione delle informazioni.



Caratteristiche della Raccolta di Dati (DWH): integrata poiché nel DWH confluiscono
dati provenienti da più sistemi trasnazionali e fonti esterne; è orientata ai dati e
focalizzata su un soggetto di business; dispone di un’ampia memoria storica; è
accessibile in sola lettura: dati contenuti non possono essere modificati.
2 funzioni chiave di questi sistemi:
Multidimensionalità: DWH contengono livelli o strati di rappresentazione costituiti da
colonne e righe. I livelli o strati identificano le informazioni raccolte in base a ≠
dimensioni informazioni di tipo descrittivo che vengono utilizzate per interpretare i
dati di tipo numerico (misure) che consentono di qualificare un fenomeno/fatto. La
rappresentazione d’info. viene chiamata ipercubo.
Supporto ai processi decisionali: i DWH sono lo strumento per supportare i processi
decisionali secondo l’approccio OLAP.
Data mart: versione ridotta dei DWH.
È un sott’insieme di un DWH in cui è custodita solo una porzione specifica delle
informazioni del DWH.
Data mining: insieme di tecniche derivate dall’intelligenza artificiale usate per
l’estrazione di conoscenza o d’informazioni implicite che si trovano nei grandi
database.
Gli strumenti di data mining sono software utilizzati per ricercare informazioni in
archivi di grosse dimensioni e nei DWH.
L’utilizzo dei sistemi di data mining può avvenire secondo 2 modalità:
- apprendimento di tipo supervisionato (da parte del sistema e dell’utente): utente
stabilisce gli obiettivi di ricerca ed è assistito da un processo intelligente;
- apprendimento di tipo non supervisionato (a iniziativa automatica del sistema):
sistema consente di automatizzare il processo di analisi esplorativa di dati essendo in
grado d’effettuare autonomamente le analisi.

Potrebbero piacerti anche