Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Dispensa Modulo Tecnico Informatica, Dispense di Elementi di Informatica

Dispensa Modulo tecnico diritto dell'informatica

Tipologia: Dispense

2012/2013

Caricato il 26/10/2013

gessica1991
gessica1991 🇮🇹

4.3

(3)

8 documenti

1 / 87

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Università Mediterranea di Reggio
Calabria
Facol di Giurisprudenza
Corso di Laurea Magistrale in Giurisprudenza
raccolta di materiale didattico
per il corso di
diritto dell’informatica
Melchiorre Monaca
modulo tecnico - 2 cfu
2011/2012
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57

Anteprima parziale del testo

Scarica Dispensa Modulo Tecnico Informatica e più Dispense in PDF di Elementi di Informatica solo su Docsity!

Università Mediterranea di Reggio

Calabria

Facoltà di Giurisprudenza

Corso di Laurea Magistrale in Giurisprudenza

raccolta di materiale didattico per il corso di diritto dell’informatica

Melchiorre Monaca

modulo tecnico - 2 cfu

Testi di riferimento

  • Alessio Plebe, Melchiorre Monaca Introduzione all’informatica delle conoscenze Editori Riuniti University Press 2010 - ISBN13: 9788864732152
  • Andrew S. Tanenbaum, David J. Wetherall Reti di calcolatori - V edizione Pearson 2011 - ISBN13: 9788871926407
  • DigIt PA - Guida alla Firma Digitale - 2009 http://www.digitpa.gov.it/sites/default/files/GuidaFirmaDigitale2009_a_0_0_0.pdf
  • DigIt PA - Firme elettroniche http://www.digitpa.gov.it/firme-elettroniche
  • DigIt PA - Posta Elettronica Certificata http://www.digitpa.gov.it/pec

Premessa

Con questa raccolta s’intende fornire allo studente una sorta di “traccia”, un percorso che guidi lo studio attraverso le tematiche discusse a lezio- ne, trasmettendo il “lessico minimo” indispensabile alla comprensione degli argomenti trattati nel modulo giuridico di questa stessa materia. È stato evidentemente necessario semplificare - forse ai limiti del lecito - i contenuti qui riassunti: il lettore più interessato alla materia potrà appro- fondire gli argomenti di suo interesse sui testi di riferimento consigliati e sui lavori originali citati in bibliografia.

Capitolo 1

Dalla matematica al Calcolatore

Elettronico

1.1 La macchina di Turing

Nel 1936 Alan Turing pubblica l’articolo On Computable Numbers with an application to the Entscheidungsproblem [1], in cui viene descritta una mac- china astratta, che altro non sarà che il principio di funzionamento di tutti i calcolatori a venire, destinata a diventare famosa come Turing Machine. L’invenzione è tanto più ammirevole se si tiene conto che nel 1936 i com- puter non esistevano; solo alcuni anni più tardi, durante la guerra, Turing si trovò coinvolto nella costruzione di una macchina denominata Colossum, destinata alla decodifica dei messaggi criptati tedeschi. Essendo ancora oggi il fondamento della scienza informatica, la Macchina di Turing è stata descritta in innumerevoli testi, in modi più o meno rigorosi e con un proliferare di varianti che, pur risultando tra loro equivalenti, si sono allontanate dalla formulazione originale. Qui si utilizzerà una “rappresenta- zione pittorica”, con l’unico scopo di fornire al lettore un’idea - semplificata, ma sostanzialmente corretta - della Turing Machine. La Turing Machine, (che d’ora in poi abbrevieremo con TM ), è un si- stema formale, in grado di realizzare qualunque procedimento risolutivo di

2

1.1. La macchina di Turing 4

  • spostarsi indietro nel nastro
  • cambiare il suo stato interno

TM stato | input (^) nuovo stato | spostamento | output

....... ....... nastro di memoria

Figura 1.1: Schema della Turing Machine

Nella Fig. 1.1 è visibile un semplice schema della TM , con l’essen- za del suo funzionamento: dalla coppia stato-input viene deterministica- mente fissato il suo comportamento, che consiste nella terna “nuovo sta- to/spostamento/output”. Tutte e tre queste mosse possono essere opzionali: se non c’è un nuovo stato vuol dire che quello attuale è finale, di termine della computazione; la macchina può rimanere nella stessa casella e può non produrre output (Turing standardizza questo caso come scrivere lo stesso sim- bolo letto). Devono essere fissati convenzionalmente uno stato iniziale e una casella iniziale e il funzionamento complessivo della macchina va specificato in una tabella dove sono scritte le istruzioni, sotto forma di corrispondenze tra configurazioni e comportamenti.

⇓ 0/ 0/1 0/

S I NS NC O 0 - 1 ⇒ 0 1 - 0 ⇒ 1

Tabella 1.1: Esempio di una TM che produce la sequenza infinita 0101...

1.2. La RAM machine 5

In Tabella 1.1 viene schematizzata una TM che produce la sequenza in- finita 0101... In alto il nastro di memoria, qui rappresentato con la possibile scelta di valori (alfabeto dei simboli), in basso la tabella delle istruzioni. La freccia verticale sul nastro indica la casella d’inizio. Le colonne della ta- bella contengono, nell’ordine: Stato, Input, Nuovo Stato, Nuova Casella, Output. Il funzionamento passo dopo passo di un’istanza di questa TM è rappre- sentato in Tabella 1.2.

⇓ 0 S I NS NC O 0 - 1 ⇒ 0 1 - 0 ⇒ 1

⇓ 0 1 S I NS NC O 0 - 1 ⇒ 0 1 - 0 ⇒ 1

⇓ 0 1 0 S I NS NC O 0 - 1 ⇒ 0 1 - 0 ⇒ 1

⇓ 0 1 0 1 S I NS NC O 0 - 1 ⇒ 0 1 - 0 ⇒ 1

Tabella 1.2: Esecuzione passo passo di una TM che produce la sequenza infinita 0101...

Il concetto di TM può essere esteso in vari modi rispetto a quanto qui descritto e formalizzato con rigore matematico, per una trattazione più ap- profondita si rimanda alla bibliografia citata.

1.2 La RAM machine

Proseguendo nel passaggio dalla macchina di Turing al computer reale, ri- mangono dei vuoti che l’astrazione dell’idea di TM aveva lasciato, in partico-

1.2. La RAM machine 7

TM , anziche’ ⇒/⇐/-, si potesse usare un numero, il cosiddetto indirizzo (address), che rappresenta la posizione della casella su cui la macchina si po- sizionerà successivamente. Il concetto di RAM permette la preziosa libertà di poter accedere ad una cella di memoria qualunque, con tempi che non dipendono da qual’è l’ultima casella visitata, ma perde qualcosa della gene- ralità del nastro di memoria di Turing, in quanto adesso ogni casella deve avere rigidamente assegnato a priori un indirizzo, e chi scrive un programma deve conoscere quali sono gli indirizzi disponibili di una RAM. L’altra novità importante è la componente ALU (Arithmetic-Logical Unit), che risponde all’esigenza di rendere disponibili operazioni di uso frequente, evitando quindi di doverle realizzare ogni volta mediante passaggi di stato. La ALU può essere pensata come una collezione di tante TM dedicate: una per l’addizione, una per la congiunzione logica, una per la disgiunzione e così via, ciascuna realizzata con un suo specifico circuito elettronico. Chi scrive il programma, non deve più occuparsi di come implementare queste operazioni, è sufficiente che dia alla ALU l’indicazione che deve attivare una particolare operazione. Anche questa innovazione è a scapito della massima generalità del sistema di Turing, che consentiva di implementare qualunque algoritmo basandosi sull’unico meccanismo del passaggio di stati: adesso per scrivere un programma è necessario conoscere quali sono le modalità che attivano in una ALU l’operazione desiderata. Viene adottato allo scopo il concetto di istruzione, un codice univoco, memorizzabile come sequenza binaria, che la ALU riconosce come comando di attivare i circuiti che provvedono ad una certa operazione. L’insieme di tutte le istruzioni riconosciute dalla ALU va sotto il nome di instruction set. Non esiste un insieme di istruzioni standardizzato, ogni progettista di ALU sceglie le proprie, tuttavia esistono alcune categorie di massima di istruzioni, comuni alla maggior parte delle ALU:

  • Trasferimento dati: istruzioni che servono a spostare dati da una posi- zione di memoria all’altra;

1.3. Dalla RAM machine... la CPU 8

  • Aritmetiche: istruzioni per operazioni, appunto, aritmetiche, quali ad- dizione, sottrazione, moltiplicazione e talvolta divisione;
  • Logica: istruzioni per eseguire congiunzione (AND), disgiunzione (OR) e altre operazioni logiche;
  • Controllo: istruzioni che fanno passare l’esecuzione ad un altro punto del programma: realizzano l’equivalente delle transizioni di stato della TM.

La Ram Machine è totalmente programmabile: il programma da eseguire è codificato e memorizzato nella RAM, esattamente come gli altri dati. Le istruzioni che compongono un programma saranno pertanto sequenze binarie residenti in celle della memoria RAM, da cui vengono prelevate dall’unità di controllo e copiate nella ALU. L’ unità di controllo inoltre scandisce le se- quenze di operazioni del sistema. Continuano ad esistere altri dispositivi di memoria ad accesso sequenziale, che rappresentano i modi con cui il compu- ter colloquia con il mondo esterno, ma l’esecuzione del programma avviene soltanto attraverso la memoria RAM.

1.3 Dalla RAM machine... la CPU

Il modello RAM machine ha avuto un tale successo da soppiantare ogni alternativa proposta agli albori dei computer e si è andato sempre più affer- mando come unica ricetta per costruirli, pienamente valida ancora oggi. La sua versione consolidata e applicabile a qualunque computer odierno è un’ar- chitettura semplice ed elegante, sintetizzabile nello schema di figura 1.3. La cosiddetta CPU (Central Processing Unit) dello schema corrisponde al- l’insieme della ALU e del Controller nel modello RAM Machine ed è quella parte del computer dedicata all’elaborazione dei dati, che avviene eseguendo istruzioni che facciano parte del suo instruction set. La memoria corrisponde alla memoria RAM, che contiene sia il program- ma da eseguire, cioè la sequenza di istruzioni che risolvono il compito deside-

1.3. Dalla RAM machine... la CPU 10

prestazioni complessive.

....

microprocessore data register data register data register program counter ( PC ) program status ( PS )

ALU

Controller

Figura 1.4: Componenti principali di un microprocessore

L’ architettura di massima di un microprocessore è quella di Fig. 1.4, notare la somiglianza con la RAM Machine di von Neumann (in Fig. 1.2). La singolarità è che quello era lo schema dell’intero computer, mentre la CPU ne è solo un componente, assimilabile alla ALU della RAM Machine. La somiglianza con la RAM Machine è immediatamente evidente per i componenti ALU e controller, l’equivalente della memoria RAM per il mi- croprocessore è il suo set di registri. Come nella RM, anche qui, la ALU è piuttosto elitaria nella sua comunicazione: parla solo e soltanto con i suoi registri. Questi costituiscono quindi le aree di memoria da cui la ALU pren- de i dati necessari per le sue operazioni e su cui scrive i risultati. I registri sono in genere in numero limitato, insufficiente a mantenere tutti i dati ne- cessari durante l’esecuzione di un programma. Pertanto essi dovranno essere scambiati con la memoria RAM, di questo si occupa il controller. Con una semplificazione si puo riassumere così l’operare della CPU: la ALU opera sui dati nei registri e ogni volta che occorre elaborare dati che non sono già disponibili, il controller li preleva dalla RAM esterna e li copia nei registri stessi. Entriamo ora più all’interno della CPU, per vedere come avviene, in que- sto schema semplificato, il suo funzionamento. Il principio è esattamente

1.3. Dalla RAM machine... la CPU 11

quello della RM: viene letta dalla RAM un’istruzione per volta, ed eseguite le operazioni codificate in tale istruzione. Tali operazioni possono avere come argomenti dei dati o dei numeri direttamente codificati nell’istruzione. Per i dati, il caso migliore è che questi si trovino già nei registri, l’operazione è allora eseguita immediatamente. Se non è così, il controller deve richiedere, specificandone l’indirizzo, il dato all’esterno e trasferirlo in un registro. Come sapere qual’è l’indirizzo in memoria dove è immagazzinata l’istru- zione da eseguire? Possiamo vedere nella figura 1.4, che mentre i primi registri sono disponibili per contenere qualunque dato su cui eseguire operazioni, gli ultimi hanno dei nomi diversi, che corrispondono a delle loro funzioni partico- lari, questi registri dedicati non sono scritti dall’utente, ma direttamente dalla circuiteria interna della CPU. Il registro denominato PC (Program Counter ) ha il computo di contenere l’indirizzo in memoria dell’istruzione da andare a prelevare ed eseguire. Il funzionamento del Program Counter è banale, si basa sul presupposto che un programma sia residente nella memoria con una sequenza ordinata, con ogni istruzione seguita da quella che è opportuno venga eseguita suc- cessivamente. Ciò pare una regola di normale buonsenso, ma si sottolinea come non è affatto scontato debba essere così, le istruzioni della macchina di Turing sono scritte nella tabella in un ordine convenzionale, del tutto indipendente dall’ordine in cui sono eseguite. La CPU si adegua al senso co- mune, pertanto l’esecuzione di un’ istruzione incrementa il Program Counter semplicemente all’indirizzo di memoria successivo. A meno che l’istruzione in corso non appartenga alla categoria di quelle di controllo: in questo caso l’istruzione stessa conterrà l’indicazione del nuovo indirizzo in memoria, che verrà impostato nel Program Counter. Per chiarire quanto detto si inizia a mostrare il comportamento dela CPU nell’esecuzione di un frammento elementare di programma (scritto in un par- ticolare linguaggio, l’assembler ), schematizzato in Fig. 1.5. Prima dell’ese- cuzione tutti i registri della CPU hanno valori arbitrari, eccetto il PC, che contiene 1000 , indirizzo della RAM con la prima istruzione. La numerazione

1.3. Dalla RAM machine... la CPU 13

1001 (^1003) .... (^10061007) (^10081009) 100A100B 100C

1002

mov $1008 R1mov $1009 R add R2mov R1 $1008 R

(^34)

10 20 3 1000

1000

R ....

R R

CPU RAM

PC PS

1001 (^1003) .... (^10061007) (^10081009) 100A100B 100C

1002 mov $1009add R2 R1mov R1 $1008^ R

(^34)

10 20 3 1000

1000 mov $1008 R

mov $1008 R

R ....

R R PC

CPU RAM

PS

1001 (^1003) .... (^10061007) (^1009) 100A 100B100C

1002 add R2^ mov $1009mov R1 $1008 R1^ R

(^34)

10 20 3 1000

1000

mov $1008 R

1008

mov $1008 R

R ....

R R

CPU RAM

PSPC

1001 (^1003) .... (^10061007) (^1009) 100A 100B100C

1002 mov $1009add R2 R1mov R1 $1008^ R

4

20 3 1000

1000 mov $1008 R

1008 3

3

mov $1008 R

R ....

R R

CPU RAM

PCPS

Figura 1.6: Esempio di esecuzione della prima istruzione dell’assembler in RAM (da sinistra a destra, dall’alto in basso).

Quest’istruzione: mov $1008 R viene caricata dalla RAM all’interno della CPU, per essere eseguita. In termini discorsivi, l’istruzione dice di prendere il dato all’indirizzo 1008 della RAM e metterlo nel registro R1. Quindi, (Fig. 1.6 in basso a sinistra), la CPU deve fare un accesso alla RAM all’indirizzo 1008 , leggendo il dato nel registro R1, che varrà ora 3 (in basso a destra). Il resto del programma è mostrato (in modo più sintetico), nella Fig. 1.7: in a si vede l’avanzamento del PC, che da 1000 è passato a 1001 e quindi l’istruzione caricata nella CPU è

mov $1009 R che come conseguenza scrive il valore 4 in R2. In b, con il PC a 1002 , viene caricata la prima istruzione della categoria aritmetica:

add R2 R

1.3. Dalla RAM machine... la CPU 14

anche questa istruzione ha due operandi, che devono essere registri e il secondo operando è anche la destinazione del risultato; come si vede in Fig. 1.7 c, il registro R1 diventa 7. Infine, nei riquadri d e e, è raffigurata un’altra istruzione di spostamento, che questa volta mette il risultato dell’addizione in RAM, alla locazione 1008. Come accennato, non sempre il PC si comporta nel modo elementare appena visto. Vi sono in generale due tipi di istruzioni che interrompono il flusso normale del programma: quelle incondizionate e quelle condizionate. Le prime si spiegano da sole: eseguono sempre il salto ad un punto diverso del programma. Le seconde invece possono sia provocare questo salto, oppure mantenere la sequenza normale, a seconda di una condizione. È il tipico caso di istruzioni che corrispondono alla if dei linguaggi ad alto livello. Il problema è che la condizione è di solito il risultato di un’operazione e quindi a sua volta di un’istruzione che non è quella di controllo di cui stiamo parlando. Per esempio, se la if contiene la condizione “se un dato è maggiore di un certo numero”, questo comporta eseguire la differenza del dato e del numero e vedere se il risultato è maggiore, minore o uguale a 0. È necessario che la CPU abbia quindi eseguito prima l’istruzione corrispondente alla sottrazione, ma che il suo risultato sia in qualche modo conservato per capire come deve comportarsi l’istruzione di salto condizionale successiva. A questo provvede un altro registro dedicato, il PS (Program Status), che è sempre scritto dalla CPU, ma è leggibile dall’utente come fosse un normale registro.

Capitolo 2

Reti di calcolatori

Una rete di telecomunicazioni è un sistema che fornisce servizi relativi al trasferimento di informazioni ad una popolazione di utenti distribuiti geo- graficamente. Le reti di telecomunicazioni sono vicine alla nostra esperienza quotidiana di uomini moderni: basti pensare alla rete telefonica, alla rete postale, alle reti per diffusione radio e TV, alle reti telematiche. Alcune di queste reti sono di nuova concezione e quindi utilizzano tecno- logie avanzate, tipicamente del settore elettronico (e in qualche caso anche della fotonica), mentre altre, come la rete postale, sono state in funzione per quasi due secoli e si basano su strumenti molto più tradizionali, quali i mezzi di trasporto. Sappiamo inoltre che in tempi remoti sono esistite reti di telecomunicazio- ni basate su tecnologie diverse, come torri d’avvistamento e segnali luminosi o bandiere (i castelli della Valle d’Aosta, la Grande Muraglia Cinese), segnali di fumo (caratteristici degli indiani americani), o segnali acustici (i tam-tam della giungla). Inoltre, verso la fine del secolo scorso erano state attivate reti telegrafiche basate su segnalazioni ottiche, utilizzando tralicci su cui erano montati pannelli mobili azionabili dal basso e visibili da lontano. È evidente una rilevante differenza tra le reti citate ad esempio: le reti per diffusione radio e TV, i segnali di fumo ed i tam-tam costituiscono reti a diffusione e unidirezionali: l’informazione viene distribuita da una sorgente

2.1. Dagli albori militari alla fisica delle alte energie 17

a chiunque disponga di un apparato ricevitore, quindi a ogni utente della rete, indipendentemente dalla sua identità. Non è inoltre possibile per la gran maggioranza degli utenti, che dispongono solo di un apparato ricevente, inviare informazioni ad altri. Le reti telematiche, la rete telefonica, il sistema postale, sono invece reti a selezione e bidirezionali: sono caratterizzate dalla possibilità per la sorgente dell’informazione di scegliere a quali interlocutori questa deve essere trasferita. In questo caso tutti gli utenti sono attrezzati sia per trasmettere sia per ricevere.

2.1 Dagli albori militari alla fisica delle alte

energie

Internet, la rete delle reti che è divenuta il nostro principale strumento di ricerca, collaborazione ed interazione sociale, una realtà consolidata per il lettore oggi venticinquenne, ha radici lontane nella storia dell’Informatica. Riesaminare insieme i passi remoti della sua storia è un esercizio utile ed istruttivo su come stimoli storici e sociali, idee geniali e tecnologia possono essere fusi per creare qualcosa di unico e così influente da cambiare lo stile di vita di due terzi della popolazione mondiale. Come spesso accade, il primo impulso alla realizzazione di un sistema d’interconnessione di calcolatori su scala geografica fu di origine militare. La “mamma” di Internet fu infatti ARPANET, una rete costruita negli anni ’ a scopo militare, pensata per condividere online il tempo di utilizzazione dei computer tra i diversi centri di elaborazione dati dell’ARPA (Advanced Re- search Projects Agency), che eseguivano ricerche scientifiche a lungo termine per conto del Dipartimento della Difesa degli Stati Uniti. Un’impresa non da poco, dato che all’epoca non esistevano standard per la costruzione di calco- latori ed i “supercomputer” erano isolati e basati su sistemi incompatibili tra loro. Il progetto è principalmente dovuto alla caparbietà di Bob Taylor, diret- tore della divisione informatica dell’ARPA, alle idee rivoluzionarie di Joseph