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


Guida risoluzione problemi informatica: definizione problema e rappresentazione algoritmo, Dispense di Elementi di Informatica

Una guida per eliminare le ambiguità nel formulare un problema informatica, individuare il risultato desiderato e gli obiettivi da raggiungere, evidenziare le regole da rispettare, i vincoli interni e esterni, i dati espliciti e impliciti, e eliminare i dettagli inutili e ambigui. Viene inoltre discusso sulla rappresentazione degli algoritmi attraverso linguaggio naturale, diagrammi a blocchi, pseudo codice e linguaggio di programmazione, e l'uso di strutture dati adeguate. Il documento inoltre tratta di criteri di classificazione dei dati, livelli del software, e diversi tipi di memoria come ROM e RAM.

Tipologia: Dispense

2019/2020

Caricato il 12/03/2020

luca-rosano
luca-rosano 🇮🇹

4.3

(5)

10 documenti

1 / 24

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFORMATICA
CAP.1
Algoritmi
Il calcolatore come strumento per gestire informazione, acquisire dati (IN)e presentare, attuare
soluzioni(OUT). Per definire un problema bisogna:
Eliminare le ambiguità nella formulazione del problema
Individuare il risultato che si vuole ottenere, gli obiettivi da raggiungere
Evidenziare
– le regole da rispettare
– i vincoli interni ed esterni
– i dati espliciti ed impliciti
Eliminare i dettagli inutili ed ambigui
La descrizione della soluzione di un problema dipende dall’esecutore. Descrizione della soluzione
di un problema sia accettabile per un esecutore
– si scompone il problema originario in sottoproblemi;
– si scompongono i sottoproblemi in sotto-sottoproblemi;
– si prosegue nella scomposizione fino a giungere a problemi elementari (o primitivi), cioè
problemi che possono essere risolti direttamente dall’esecutore.
Ogni istruzione elementare è associata a un’azione elementare (oppure a una successione di azioni
elementari) che può essere direttamente compiuta dall’esecutore. Il Processo che porta alla
soluzione di un problema:
per il soggetto descrittore richiede un’attività di scomposizione progressiva del problema,
fino a giungere a una successione di istruzioni elementari (ciascuna associata al
corrispondente problema elementare);
per il soggetto esecutore richiede l’esecuzione delle azioni elementari associate alle
istruzioni elementari identificate. La condizione che le azioni elementari siano eseguite in
successione, cioè secondo un ordine definito, è necessaria perché, in generale, ognuna di
esse opera sui dati che riceve dalle azioni eseguite precedentemente.
Le azioni elementari vengono interpretate in termini funzionali, come delle entità che trasformano i
dati che ricevono in ingresso (input) in risultati (output), con ciò prescindendo dalle modalità con
cui tale trasformazione viene effettuata, cioè assumendo un modello “a scatola nera” (black box).
Algoritmo (definizione): Sequenza finita di istruzioni, comprensibili da un esecutore. che descrive
come realizzare un compito.
Un esecutore è definito in base a tre elementi:
l’insieme delle operazioni che è capace di compiere;
l’insieme delle istruzioni che capisce (sintassi);
quali operazioni associa ad ogni istruzione che riconosce(semantica).
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Anteprima parziale del testo

Scarica Guida risoluzione problemi informatica: definizione problema e rappresentazione algoritmo e più Dispense in PDF di Elementi di Informatica solo su Docsity!

INFORMATICA

CAP.

Algoritmi

Il calcolatore come strumento per gestire informazione, acquisire dati (IN)e presentare, attuare soluzioni(OUT). Per definire un problema bisogna:  Eliminare le ambiguità nella formulazione del problema  Individuare il risultato che si vuole ottenere, gli obiettivi da raggiungere  Evidenziare

  • le regole da rispettare
  • i vincoli interni ed esterni
  • i dati espliciti ed impliciti  Eliminare i dettagli inutili ed ambigui La descrizione della soluzione di un problema dipende dall’esecutore. Descrizione della soluzione di un problema sia accettabile per un esecutore
  • si scompone il problema originario in sottoproblemi;
  • si scompongono i sottoproblemi in sotto-sottoproblemi ;
  • si prosegue nella scomposizione fino a giungere a problemi elementari (o primitivi) , cioè problemi che possono essere risolti direttamente dall’esecutore. Ogni istruzione elementare è associata a un’azione elementare (oppure a una successione di azioni elementari) che può essere direttamente compiuta dall’esecutore. Il Processo che porta alla soluzione di un problema:  per il soggetto descrittore richiede un’attività di scomposizione progressiva del problema, fino a giungere a una successione di istruzioni elementari (ciascuna associata al corrispondente problema elementare);  per il soggetto esecutore richiede l’esecuzione delle azioni elementari associate alle istruzioni elementari identificate. La condizione che le azioni elementari siano eseguite in successione, cioè secondo un ordine definito, è necessaria perché, in generale, ognuna di esse opera sui dati che riceve dalle azioni eseguite precedentemente. Le azioni elementari vengono interpretate in termini funzionali , come delle entità che trasformano i dati che ricevono in ingresso (input) in risultati (output), con ciò prescindendo dalle modalità con cui tale trasformazione viene effettuata, cioè assumendo un modello “a scatola nera” (black box). Algoritmo (definizione): Sequenza finita di istruzioni, comprensibili da un esecutore. che descrive come realizzare un compito. Un esecutore è definito in base a tre elementi:  l’insieme delle operazioni che è capace di compiere;  l’insieme delle istruzioni che capisce (sintassi);  quali operazioni associa ad ogni istruzione che riconosce(semantica).

Il calcolatore “capisce” le istruzioni che fanno parte del linguaggio macchinaistruzioni primitive semplici. La soluzione si dice effettiva se l’esecutore è in grado di: interpretarla e compiere le azioni. Proprietà di un’azione elementare :  Finitezza  l’azione deve concludersi in un tempo finito.  Osservabilità  l’azione deve avere un effetto osservabile, cioè deve produrre qualcosa •  Riproducibilità  a partire dallo stesso stato iniziale, la stessa azione deve produrre sempre lo stesso risultato Proprietà degli algoritmiCorrettezza  L’algoritmo perviene alla soluzione del compito cui è preposto, senza difettare di alcun passo fondamentale  Efficienza  L’algoritmo perviene alla soluzione del problema usando la minima quantità di risorse fisiche Codifica degli algoritmi Algoritmo formulato per essere comunicato tra esseri umani deve essere sintetico e intuitivo, e inoltre codificato in linguaggi informali o semi-formali (linguaggio naturale, diagrammi di flusso, …). Algoritmo formulato per essere eseguito automaticamente deve essere preciso ed eseguibile, e codificato in linguaggi comprensibili dagli esecutori automatici. Gli algoritmi sono parametrici:

  • producono un risultato che dipende da un insieme di dati di partenza; – descrivono la soluzione non di un singolo problema, ma di una intera classe di problemi strutturalmente equivalenti. Criteri di classificazione dei dati  Visibilità da parte dell’utente visibile (di ingresso o uscita) – trasparente (dati temporanei di supporto)  Variabilità nel tempo costanti – variabili (acquisizione dall’esterno o assegnazione)  Struttura elementari (interi, alfanumerici, booleani, …) – strutturati (array, matrici, …) Rappresentazione degli algoritmi  Linguaggio naturale  Diagramma a blocchi  Pseudo codice  Linguaggio di programmazione

Le strutture di controllo

Selezione semplice Selezione a due vie

effettuare notazione (con cui è possibile descrivere gli algoritmi.) attraverso questo strumento,e in relazione a questo esistono convenzioni diverse:Negazione not ACongiunzione A andDisgiunzione A or BDisgiunzione esclusiva A xor BImplicazione A → B (se ... allora)Doppia implicazione A ↔ B (se e solo se) Espressioni booleaneEquivalenza – Due espressioni booleane sono equivalenti se hanno la medesima tavola di verità.  Tautologia – Un’espressione booleana è una tautologia se è sempre vera.  Contraddizione – Un’espressione booleana è una contraddizione se è sempre falsa. Linguaggio di Programmazione Ogni linguaggio di programmazione dispone di un insieme di “parole chiave” (keywords ). Ogni linguaggio è caratterizzato da una sintassi e da una semantica, complementari l’una con l’altra:  la sua s intassi , cioè l’insieme delle regole che specificano come comporre istruzioni ben formate;  la sua semantica , che di ogni istruzione ben formata specifica il significato, e quindi la successione delle operazioni che vengono compiute allorché l’istruzione viene eseguita In base all’astrazione si distinguono: Linguaggi di basso livello ( vicini all’hardware ): • I generazione: linguaggi macchina (sequenze di bit) • II generazione: linguaggi assemblativi (uso di codici mnemonici per le istruzioni) e Linguaggi di alto livello ( vicini all’utente ) Sono i linguaggi di terza generazione. Le istruzioni esprimono una serie di azioni. Il programma prima di essere eseguito deve essere tradotto in linguaggio macchina. Sono indipendenti dalla macchina : • III generazione: linguaggi imperativi e procedurali di uso generale • IV generazione: linguaggi per specifici ambiti applicativi • V generazione Il linguaggio macchina è direttamente eseguibile dall’elaboratore, senza nessuna traduzione. Le Istruzioni ed operandi relativi al programma in esecuzione sono caricati in memoria e quindi sono memorizzati in forma binaria. Il Vincolo è la conoscenza dei metodi di rappresentazione delle informazioni utilizzati. Il linguaggio Assembler: Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici (parole chiave). Il programma prima di essere eseguito deve essere tradotto in linguaggio macchina (assemblatore). Vincolo : necessità di conoscere in dettaglio le caratteristiche della macchina (registri, dimensione dei dati, set di istruzioni). Anche semplici algoritmi implicano la specifica di molte istruzioni I traduttori sono programmi particolari che provvedono a convertire il codice di programmi scritti in un dato linguaggio di programmazione (sorgenti), nella corrispondente rappresentazione in linguaggio macchina (eseguibili). Due tipi di traduttori:

Compilatori – Accettano in ingresso l’intero programma e producono in uscita la rappresentazione dell'intero programma in linguaggio macchina. Per ogni programma da tradurre, lo schema viene percorso una volta sola prima dell’esecuzione.  I nterpreti – Traducono ed eseguono direttamente ciascuna istruzione del programma sorgente, istruzione per istruzione. Lo schema viene attraversato tante volte quante sono le istruzioni che compongono il programma; ad ogni attivazione dell'interprete su una particolare istruzione, segue l’esecuzione dell’istruzione stessa

CAP.

L’informazione e la sua codifica

L' informazione permette in una situazione in cui si hanno almeno due occorrenze possibili di superare un'incertezza e risolvere un'alternativa, sostituendo il noto all'ignoto, il certo all'incerto. Un dato è una descrizione elementare, spesso codificata, di una cosa, di una transazione, di un avvenimento o di altro. Dal punto di vista informatico : il dato è un elemento conosciuto, un’informazione grezza o elementare ed è solitamente costituito da simboli che devono essere elaborati, mentre l’informazione è un elemento, che deriva dall’elaborazione di più dati e che permette di venire a conoscenza di qualcosa. La stessa informazione può essere rappresentata in modi diversi. Una stessa rappresentazione può dare informazioni diverse a seconda del contesto o del destinatario. Il dato è “portato da” o “trasmesso su” o “memorizzato in” o “contenuto in” qualcosa. Ogni supporto fisico ha le sue caratteristiche in quanto supporto per i dati. Alcuni supporti sono particolarmente adatti alla trasmissione dei dati, ma non alla loro memorizzazione. In generale, si può chiamare codifica l’operazione con cui il dato viene scritto su un supporto fisico e decodifica l’operazione con cui il dato viene letto da un supporto fisico. BIT : elemento atomico (binario) che codifica un dato corrispondente ai valori logici Falso o Vero: può essere rappresentato da un dispositivo che assume due stati. Quanti oggetti posso codificare con k bit? 1 bit? (0, 1) 2 oggetti → 2 bit? (00, 01, 10, 11) 4 oggetti → 3 bit? (000, 001, 010, …, 111) 8 oggetti. BYTE : combinazione di 8 bit. Può rappresentare un carattere (lettera, numero o simbolo tipografico) tra 256 divers

codice operativo ( indica il tipo di operazione, e.g., la somma )(la provenienza degli) operandi ( e.g., quali numeri sommare )(la destinazione del) risultato Le istruzioni sono rappresentate come sequenze di bit. Una singola istruzione può richiedere più cicli. Le moderne CPU hanno più core (unità di calcolo) attraverso cui è possibile eseguire miliardi di operazioni aritmetiche al secondo. L’unità di misura delle prestazioni sono i Giga FLOPS. I supercomputer hanno ormai prestazioni nell’ordine dei Peta FLOPS.

Le Memorie

La Memoria Principale è acceduta direttamente dalla CPU e non è permanente. La Memoria Secondaria è acceduta tramite il sottosistema di input/output ed è permanente. Diversi 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 Diverse esigenze :  (P) velocità per il supporto alla CPU  (S) non volatilità ed elevata capacità Diverse tecnologie :  (P) elettronica : veloce, ma costosa e dinamica (volatile)  (S) stato solido , magnetica e ottica: economica, ma lenta Memoria Centrale : Memoria ad accesso casuale ( RAM ). Casuale va inteso nel senso che il tempo di accesso non dipende dalla locazione. Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione Tecnologia elettronica veloce, volatile e costosa Due varianti:  ROM : elettronica, permanente ma solo lettura  Flash : elettronica, permanente e riscrivibile Differenze tra ROM e RAMRandom Access Memory  termine in genere associato alla memoria centrale  prestazioni location-independent  Volatile: conserva dati e istruzioni solo se alimentata  capacità in MB (MegaByte) o GB (GigaByte)  Read-Only Memory  contiene parti essenziali del software di sistema quali  il BIOS (Basic Input/Output System)  il POST (Power On Self Test)  particolari varianti tecnologiche sono: • PROM, EPROM, EEPROM, FLASH

Indirizzi di Memoria I bit nelle memorie sono raggruppati in celle: tutte le celle sono formate dallo stesso numero di bit; una cella composta da k bit, è in grado di contenere una qualunque tra 2k combinazioni diverse di bit. Ogni cella ha un indirizzo che Serve per accedere al contenuto della cella; in una memoria con N celle gli indirizzi vanno da 0 a N–1. La cella è l unità indirizzabile più piccola. In quasi tutti i calcolatori è di 8 bit (un byte). I byte vengono raggruppati in parole. Memoria vs. CPU Le CPU sono sempre state più veloci delle memorie La miniaturizzazione ha consentito alle CPU di raggiungere velocità di esecuzione sempre più elevate Più i componenti sono piccoli, più alta può essere la frequenza delle operazioni nelle memorie è aumentata la capacità più che la velocità. Alla fine degli anni 80 un Personal Computer aveva 1 Megabyte di RAM. Oggi un laptop ha almeno 4 Gigabyte (4000 volte di più) i tempi di accesso (CAS latency) però sono calati molto meno: da circa 100 nanosecondi a circa 10 È possibile inserire memorie molto più veloci nello stesso chip della CPU, ma le dimensioni sono piccole ed i costi molto elevati. Gerarchia di Memoria Tipicamente costituita da:

  1. Cache (qualche MegaByte)

  2. Memoria principale (alcuni-decine di GigaByte)

  3. Dischi (da centinaia di GigaByte a qualche TeraByte)

  4. Nastri magnetici e dischi ottici (da GB a TB) Quando ci si sposta verso il basso nella gerarchia: aumenta il tempo di accesso; aumenta la capacità di memorizzazione; diminuisce costo per byte. Memorie disponibili : Memorie veloci, integrate nello stesso chip della CPU, ma costose: chiamiamole MPV (per Memorie Piccole e Veloci). Memorie di grande capacità, relativamente lente, economiche ed accessibili tramite il bus: Capacità circa 100 volte superiori; Tempi di accesso circa 10 volte superiori. Chiamiamole MGL (per Memorie Grandi e Lente ). Memoria secondaria: Supporti di memorizzazione - Dischi magnetici → disco fisso (Hard-disk, capacità da poche decine a migliaia di GigaByte) – dischi rimovibili (capacità come gli HD) – Combinazione di parti meccaniche ed elettroniche - Dischi ottici → CD-ROM (Compact Disk a sola lettura, capacità tipica 650 Mbytes), CD-R (WORM), CD-RW (RAM) – DVD (Digital Versatile Disk, capacità min 4.7 Gbyte, (1lato/ strato) film full motion a schermo largo, 3 canali audio) - Unità a stato solido → non è un disco, capacità fino a qualche centinaio di GigaByte. – Fondamentalmente una memoria Flash (di tipo Nand) – Tipiche di smartphone, tablet, laptop di fascia alta Memorie a Stato Solido (SSD): L’unità a stato solido o drive a stato solido, in sigla SSD (solid- state drive), utilizza memoria Flash (di tipo Nand) per l'archiviazione di massa dei dati. La principale differenza con i classici dischi è la possibilità di memorizzare in modo non volatile grandi quantità di dati, senza utilizzare parti meccaniche Oltre alla memoria in sé, un'unità disco SSD dispone di diversi componenti di supporto alle operazioni: controller (microprocessore),

Compiti del sistema operativo  Gestire le risorse del computer  Gestire l'interazione tra utente e programmi  Regolare il multitasking e il multithreading  Gestire la contemporaneità di più utenti e il loro accesso alle risorse.  Distribuire le operazioni tra più processori.  Avvertire l'utente di eventuali errori, e impedire che facciano perdere dati e informazioni.  Gestire l'alimentazione elettrica (ad es. nei portatili) Categorie di sistemi operativiS.O. per i desktop – Meno potenti e affidabili di tutti, sono però i più diffusi  S.O. per i server – Sicuri e portabili – sono pensati per la gestione multitasking e multithreading di applicazioni mission-critical  S.O. per i mainframe – Open MVS, VMS – software proprietario in genere – Ogni azienda ha prodotto un suo s.o., rendendo la comunicazione tra elaboratori molto complessa  S.O. per palmari e tascabili – Interazione con stilo e tastiera virtuale  S.O. incorporati - Per elettrodomestici e piccoli apparecchi Gestione dei file: I nomi dei file servono alla loro esatta identificazione. I percorsi sono invece necessari per ritrovare i file nei vari supporti di memorizzazione. Gestione delle cartelle: Le cartelle rappresentano le divisioni logiche dei supporti di memorizzazione: senza di esse, si avrebbe a che fare con un unico immenso spazio nel quale tutti i file sarebbero dispersi. La formattazione prepara il supporto a ricevere i dati, suddividendolo in spazi (tracce, settori, cluster) idonei a ricevere i dati. La deframmentazione: Non tutti i file sono memorizzati in spazi contigui, e il sistema operativo è costretto a un superlavoro per recuperarne tutte le parti sparpagliate sul supporto. La deframmentazione evita questo problema. Driver fisico : Controlla i meccanismi fisici dell’ unità di lettura dei dispositivi esterni di I/O (device controller). Interagisce con la CPU attraverso i registri. Utilizza una memoria dedicata alle operazioni I/O (Memoria ad accesso diretto). Driver logico: gestisce gli errori in lettura/scrittura; – gestisce i nomi/indirizzi del device driver; – gestisce le code di attesa. Editoria elettronica offline e online Il BIOS si rapporta direttamente con l'hardware del computer, fornendo informazioni al sistema operativo; i programmi applicativi gestiscono l'hardware solo attraverso il sistema operativo stesso

 Editoria off line – Prodotti editoriali multimediali su un supporto autonomo dalla rete (CD, DVD., ecc.)  Editoria on line – Tutto quanto è usufruibile dal web come periodici, blog, diari  Ipertesto ed e-book -Blocchi di testo uniti tra loro in maniera non lineare, in modo da non mostrare un solo percorso di lettura tra loro I fogli elettronici La griglia di celle ordinate per righe e colonne è il documento usato dai programmi di foglio elettronico ( spreadsheet ). I dati sono inseriti nelle celle , che possono ospitare anche il risultato di operazioni matematiche e logiche. A loro volta, le celle che ospitano un risultato possono essere usate in altri calcoli. Le formule permettono ai fogli elettronici di svolgere calcoli immediati, non appena l'utente inserisce i valori nelle celle di riferimento. Potendo contenere dati di qualunque tipo, i comandi di formato delle celle consentono di presentare i dati, numerici e testuali, in modi differenti per aspetto, allineamento, colore, valori di riferimento. Le presentazioni multimediali Questo tipo di documento riunisce dati di formati differenti, provenienti da applicazioni diverse, a formare un insieme di informazioni ed effetti visivi e sonori di grande efficacia. Le presentazioni possono differenziarsi in non interattive , perché il flusso di informazioni non può essere alterato, e interattive , nelle quali l'utente è chiamato a decidere cosa e come vedere o leggere secondo diversi percorsi. Le Licenza software La licenza in ambito informatico è il contratto che può accompagnare un prodotto software. Tale contratto specifica le modalità con cui l'utente può usare tale prodotto, garantendo dei diritti ed imponendo obblighi. La licenza è imposta da chi detiene il copyright sul prodotto software. La sua validità dipende dalla presenza del diritto d'autore, questo perché solo chi detiene il copyright ha il diritto di far rispettare in ogni sede la licenza stessa. Shareware è una tipologia di licenza software molto popolare. Vengono distribuiti sotto tale licenza in genere piccoli programmi facilmente scaricabili via Internet. Il software sotto tale licenza può essere liberamente ridistribuito e utilizzato per un periodo di tempo di prova variabile (generalmente 30 giorni). Dopodiché è necessario registrare il software presso la casa produttrice pagandone il corrispettivo. Il termine freeware indica un software che viene distribuito in modo gratuito. Il freeware è distribuito indifferentemente con o senza codice sorgente, a totale discrezione dell'autore e senza alcun obbligo al riguardo. È sottoposto esplicitamente ad una licenza che ne permette la redistribuzione gratuita. Il software freeware viene concesso in uso senza alcun corrispettivo , ed è liberamente duplicabile e distribuibile nelle forme ritenute piu idonee, con pochissime eccezioni. La licenza GNU è intesa a garantire lo scambio e la condivisione di software libero. GNU è progettata per assicurare che ognuno possa: avere la libertà di utilizzare e distribuire copie di sw libero, ricevere il codice sorgente, cambiare e migliorare il codice sorgente secondo le proprie necessità, redistribuire gratuitamente, farsi pagare per i servizi ed i prodotti realizzati utilizzando il sw libero. Per proteggere i diritti d’autore e dell’utente la GNU : Applica restrizioni che vietano ad ognuno di negare i suddetti diritti o di chiedere all’utente di soprassedere sui propri diritti oppure Applica restrizioni che determinano la responsabilità legale per coloro che distribuiscono le copie o le modificano.

Reti di calcolatori vs Sistemi distribuitiRete 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 di 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. Sistemi informativi e Sistemi informaticiSistema 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  dalle risorse sia umane sia tecnologiche coinvolte. Tutto questo partendo da dati di carattere aziendale o anche esterni all’azienda.  Sistema informatico indica la porzione di sistema informativo che fa uso di tecnologie informatiche e automazione. Tassonomia delle reti: La dimensione delle retiReti locali (Local Area Network, LAN )  di limitata estensione che collegano dispositivi collocati nello stesso edificio o in edifici adiacenti.  ampia larghezza di banda  modularità e facilità di connessione  notevole affidabilità dell’intero sistema  espandibilità e flessibilità nella modifica delle dimensioni della rete  economicità;  ogni stazione è collegata alla rete tramite una scheda di interfaccia di rete (NIC). La tecnologia più comune: Ethernet  Reti metropolitane (Metropolitan Area Network, MAN )  collegano dispositivi collocati nella stessa area urbana.  Reti geografiche (Wide Area Network, WAN )  collegano dispositivi diffusi in unampia area geografica  Reti di reti (Internetwork),  collegano più reti differenti (a livello sia hardware sia software) mediante opportuni elementi di interfaccia, che si possono estendere letteralmente ovunque Servizi vs. velocitàBassissima velocità – telemetria, telecontrollo, teleallarmi;  Bassa velocità – fonia, fax, POS (point of sale), transazioni remote (come 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 (HDTV), videoconferenze, videoteche. I mezzi di trasmissione Mezzi fisici utilizzati per la trasmissione:  Mezzi guidati : linee fisiche che portano il segnale fino al ricevitore – supportano la trasmissione di segnali elettrici oppure ottici  Mezzi non guidati : irradiazione di segnali elettromagnetici nello spazio, in modo più o meno diretto; – varie frequenze di trasmissione Cosa influenza la trasmissione?

- La capacità del canale (chiamata anche larghezza di banda , bandwidth) – Massima quantità di dati che può essere trasmessa in un’unità di tempo. Si misura, in genere, in MegaBit al secondo. **- Il grado di attenuazione del segnale

  • Le interferenze tra segnali
  • Il numero di ricevitori Reti wireless (Wi-Fi):** Operano in bande di frequenza che non necessitano di licenza quindi senza costi di licenza per i fornitori di accesso. Sono basate sulla classe di protocolli standard IEEE 802.11 (a/b/g/…). Vantaggi : – Riduzione dei costi di cablatura – Supportano indifferentemente dispositivi statici e mobili (laptop, smartphone, etc.). Svantaggi : – Minori prestazioni rispetto ad una rete cablata con switch - Possibili problemi di sicurezza. Una rete Wi-Fi può essere ad hoc o centralizzata. Reti wireless (Bluetooth ): Sviluppato per connettere telefoni cellulari con altri dispositivi poi esteso alle reti locali (PAN). I prodotti che adottano lo standard Bluetooth hanno un minuscolo ricetrasmettitore a breve raggio, che opera sulla banda radio priva di licenza disponibile a livello mondiale, 2.45 GHz, e supporta velocità di trasferimento dati fino a 721 Kbps. Godono di un bassissimo consumo energetico. **Architetture dei servizi in rete
  • Client-server –** Uno o più server gestiscono la condivisione delle risorse e controllano gli accessi. Le altre stazioni della rete sono dette client. Le risorse condivise e rese accessibili ai client sono collegate direttamente o comunque controllate dal server. - Peer-to-peer – Le stazioni sono connesse in modo paritetico e non esiste 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. Protocolli di comunicazione : Insieme di regole che definiscono come i calcolatori devono scambiare dati. Come nel caso della codifica dei dati occorre utilizzare standard internazionali per mantenere compatibilità nel tempo ed interoperabilità tra dispositivi diversi!. Esempi son Protocolli ISO/OSI (Open System Interconnection) – Protocolli TCP/IP (standard de facto). Per comunicare è necessario che esista un canale fisico adatto ( occorre predisporre una infrastruttura fisica: strumenti per trasferire i segnali tra i comunicanti ), è necessario avere competenze linguistiche

PageRank L’algoritmo PageRank è il cuore del motore di ricerca Google. PageRank serve a ordinare i risultati. Per calcolare i valori delle pagine, guarda solo la struttura di grafo delle pagine Web (WebGraph): ogni pagina è un nodo, ogni link tra le pagine è un arco diretto. Inizialmente ogni pagina ha un valore di PageRank, detto il “peso” della pagina, wi pari a 1. Si ripete la seguente procedura finchè i valori convergono. Ogni pagina divide il suo peso tra le pagine che punta. Poi si effettua la “Normalizzazione”, ovvero divido tutti i pesi per il peso massimo tra tutte le pagine.

CAP 7

Cloud Computing

In informatica con il termine inglese cloud computing si indica un 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 hardware/software distribuite e virtualizzate in Rete. CaratteristicheOn demand self-service: gli utenti possono aumentare la memoria e la potenza di processione come desiderano.  Board network access: tutti i dispositivi possono accedere a dati e applicazioni  Multi-tenancy: i clienti condividono risorse di computer  Rapid elasticity: conservazione, larghezza di banda, e capacità del computer possono essere aumentati o ridotte immediatamente, consentendo una scalabilità ottimale  Measured services: i clienti possono misurare e controllare le transazioni e l’uso delle risorse

Ci sono diverse tipologie di Cloud:

Sicurezza delle informazioni

Attacchi alla sicurezza: compromettono la sicurezza delle informazioni. Si dividono in: Attacchi passivi, che hanno l’obiettivo di leggere i contenuti dei messaggi, monitorare il traffico, non alterano i dati e sono difficili da individuare; e Attacchi attivi come per esempio le impersonificazioni (masquerade), replay, denial of service, e sono difficili da prevenire ma abbastanza facili da individuare. Canali di attacco:

condivisa deve avvenire attraverso un canale sicuro, Per ogni coppia di interlocutori è necessaria una chiave diversa (quindi n(n-1)/2 chiavi per n utenti), L’uso ripetuto della stessa chiave è poco sicuro  Crittografia Asimmetrica (detta anche a chiave pubblica/privata): si usa una coppia di chiavi distinte ma legate fra loro. Gli algoritmi sono più lenti e La gestione delle chiavi è più semplice, inoltre Permette di avere servizi di non ripudio. Firma autografa: Viene creata manualmente, viene verificata manualmente e non è falsificabile. Non è ripudiabile (perizia calligrafica, metodo sicuro?) e si utilizza mediante Apposizione sul documento (non trasferibile). Malware (Malicious software)  Classificazione in base alla necessità di un programma ospiteParassiti : Virus, bombe logiche, backdoors  Indipendenti : worm  Classificazione in base alla capacità di autoreplicarsi  Programmi attivati da un trigger : bombe logiche, backdoor  Programmi che si autoreplicano : virus. Worm Un viru s informatico è un frammento di programma scritto per eseguire operazioni (in genere dannose…) senza il consenso o la consapevolezza dell'utente. Un virus è definito da due criteri: la necessità di un programma ospite poiché il virus inserisce il proprio codice nel file che contiene un altro programma eseguibile. E la Capacità di autoreplica. I worm sono programmi che si replicano da sistema a sistema senza servirsi di un file ospite. Ciò li distingue dai virus, che si diffondono tramite file ospiti infetti. Anche se dei worm possono trovarsi all'interno di altri file. Un Trojan (horse) è un codice malevolo, le cui funzionalità sono nascoste all'interno di un programma apparentemente utile; quando viene eseguito, il Trojan provoca danni (perdita o furto di dati). È l'utente stesso che installando ed eseguendo un certo programma (allegati email, applicazione web), inconsapevolmente, installa ed esegue anche il codice trojan nascosto. Una distinzione molto importante fra Trojan e virus è che i Trojan non si replicano automaticamente. Il phishing è un tipo di truffa via Internet attraverso la quale un aggressore cerca di ingannare la vittima convincendola a fornire dati personali sensibili. Si tratta di una attività illegale che sfrutta tecniche di ingegneria sociale: attraverso email, un malintenzionato cerca di ottenere dalle vittime credenziali di accesso (password, numero di carta di credito, etc.) o altre informazioni. Spesso il messaggio contiene un rimando ad una pagina web che imita perfettamente la pagina web ufficiale (per es. di una banca) per convincere l’utente ad inserire le proprie credenziali. Spamming è l'invio di messaggi indesiderati (generalmente commerciali o offensivi). Il canale più diffuso è costituito da messaggi di posta elettronica. Il costo per chi invia è irrisorio anche per grandi quantità di destinatari (anche milioni di invii al giorno). Gli spammers si procurano le liste di destinatari soprattutto attraverso il setaccio di siti web per stringhe di testo che assomigliano a indirizzi o database trafugati Un firewall è un dispositivo di sicurezza che controlla l’ingresso e l’uscita del traffico da una rete (aziendale o privata). Il firewall si interpone tra la rete che si vuole proteggere e la rete esterna (Internet). Il firewall può filtrare (bloccare) il traffico sulla base di indirizzo IP, tipo di protocollo, o numero di porta. Limitazioni dei firewall : Un firewall non può proteggere da attacchi che lo

bypassano (se ci sono altri canali di accesso alla rete, per esempio accessi wireless). Un firewall non può proteggere pienamente da utenti interni che cooperano con l’attacco. Un firewall non può proteggere da attacchi che si sviluppano internamente. Accesso non autorizzato: Un intruso (hacker) può accedere in maniera non autorizzata ad un computer o ad una rete. Si distinguono tre casi:

  1. Un utente che penetra i meccanismi di controllo degli accessi ed usa l’account di un altro utente
  2. Un utente che usa il suo account per accedere a dati, programmi e risorse ai quali non è autorizzato ad accedere
  3. Un utente che accede ai meccanismi di supervisione e controllo per evitare i controlli di accesso Rilevazione degli accessi non autorizzati: Possono individuare un utente non autorizzato ed espellerlo, limitando i danni. Si basano sulle differenze di comportamento di utenti regolari ed hacker e Si dividono in:
    1. Meccanismi di rivelazione statistica delle anomalie : usano rilevazioni su lungo termine delle attività di un utente regolare ed effettuano test statistici per vedere se il comportamento di un utente è compatibile con il profilo statistico costruito
    2. Meccanismi basati su regole : definiscono degli eventi che si suppone corrispondano a tentativi di intrusione Meccanismi di difesa : Prevenzione (Intrusion Prevention Systems) e Intrusion Detection System. Tecniche di intrusione: Sfruttare vulnerabilità che permettono all’utente di entrare bypassando i meccanismi di controllo degli accessi oppure Acquisire informazioni che permettono di entrare in maniera legittima.

CAP 8

Basi di Dati(Data Base) : le caratteristiche che li contraddistinguono sono:  Collezione (organizzata, persistente, condivisa, in genere di notevoli dimensioni e varietà) di dati  Una sola rappresentazione che evita ridondanze, disallineamenti e inutili ripetizioni di dati e operazioni  Maggiore controllo (concorrenza su dati condivisi e rispetto vincoli di integrità)  Accesso gestito e regolato da un sistema di gestione della base dati (DBMS) che assicura: efficienza, usabilità, riservatezza e affidabilità dei dati (in generale tramite un “database server” accessibile in un ambiente distribuito in rete a più stazioni di lavoro client)  Data Base Management System(DBMS): Sistema (software) in grado di gestire collezioni di dati che siano:  di grandi dimensioni , i.e., (molto) maggiori (TeraByte 1012, PetaByte 1015) della memoria RAM dei sistemi di calcolo utilizzati  persistenti : mantenute alle fine delle singole esecuzioni dei programmi che le utilizzano (i.e., memoria secondaria)