Scarica Introduzione all'Informatica: Algoritmi, Strutture DatI e Reti di Comunicazione - Prof. Di e più Dispense in PDF di Elementi di Informatica solo su Docsity!
INFORMAZIONE, DATO E COMPONENTI HW
Il termine informatica deriva dal francese: “informatique” = information + automatique E’ una contrazione di informazione automatica e l’informazione ha un ruolo centrale. L’informatica si occupa di:
- Design e costruzione di software;
- Sviluppo di modi per risolvere problemi legati al computer, come l’immagazzinamento di informazioni in database, inviare dati ai network e
DIFFERENZA TRA INFORMAZIONE E DATO:
- 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 (dal latino datum che significa letteralmente “fatto”) è una descrizione elementare , spesso codificata, di una cosa, di una transazione, di un avvenimento o di altro. L'elaborazione dei dati può portare alla conoscenza di un’informazione mentre l’informazione associa un significato ai dati. Dal punto di vista informatico un dato è un elemento conosciuto , un’informazione grezza o elementare ed è solitamente costituita da simboli che devono essere elaborati. L’informazione invece è un elemento che deriva dall’elaborazione di più dati e che permette di venire a conoscenza di qualcosa. Es: due beni costano 5 e 10 euro. Il loro prezzo costituisce due dati. Questi due dati mi forniscono l’informazione “mi servono 15 euro per acquistarli”. Un’informazione può essere rappresentata in modi diversi e una stessa rappresentazione può dare informazioni diverse a seconda del contesto o del destinatario. IMMAGAZZINARE E TRASFERIRE UN DATO: Il dato può essere portato, trasmesso memorizzato o contenuto in un supporto fisico che può avere diverse caratteristiche:
- Alcuni supporti sono adatti a trasmettere i dati ma non alla loro memorizzazione (cavo);
- Altri supporti sono adatti a memorizzare i dati ma non a trasferirli (CD,DVD). La CODIFICA è l’ operazione con cui il dato viene scritto su un supporto fisico mentre la DECODIFICA è l’ operazione con cui il dato viene letto da un supporto fisico.
BIT E BYTE:
Il BIT è l’elemento atomico (binario) che codifica un dato corrispondente ai valori logici “Falso” o “Vero”. Può essere rappresentato da un dispositivo che assume due stati (es. Acceso e Spento). Con un bit (0,1) posso codificare due oggetti. Con due bit (00,01,11,10) posso codificare quattro oggetti. Con tre bit posso codificare 8 oggetti. Quindi con K bit posso codificare 𝑁 = 2 𝑘^ oggetti e per codificare n oggetti ho bisogno di log 2 𝑁. Il BYTE è una sequenza di 8 BIT. Può rappresentare un carattere tra 28 diversi
SISTEMI DI NUMERAZIONE POSIZIONALE:
Il sistema binario è un caso particolare di sistema di numerazione posizionale, il quale è definito da una coppia (base p alfabeto A di cifre) in cui le cifre appartenenti all’alfabeto A assumono i valori compresi tra 0 e p-1.
- SISTEMA DECIMALE p=10, A={0,1,2,3,4,5,6,7,8,9}
- SISTEMA BINARIO p=2, A={0,1}
- SISTEMA ESADECIMALE p=16, A={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} In generale il valore M in base p è dato dalla formula: ∑^ 𝑛 𝑖= 0 𝑎𝑖 ∗ 𝑝^𝑖
COMPONENTI DI UN SISTEMA DI ELABORAZIONE:
HARDWARE : è l’insieme dei componenti materiali (CPU, memoria, dispositivi di Input e Output); SISTEMA OPERATIVO : sono software di base che controllano e coordina l’uso dell’hardware tra le varie applicazioni dei vari utenti (per es. windows, MacOS, iOS, Android); PROGRAMMI APPLICATIVI : sono software che utilizzano risorse del sistema per risolvere i problemi degli utenti, come per esempio compilatori, database, videogame, programmi di gestione); UTENTI : come per esempio persone, macchine, altri computer.
MACCHINA DI VON NEUMANN:
John von Neumann defì per la prima volta in modo rigoroso il concetto di elaboratore elettronico a programma memorizzato.
ALGORITMI:
Per iniziare bisogna definire il problema :
- Eliminare le ambiguità;
- Individuare gli obiettivi;
- Evidenziare le regole, i vincoli e i dati espliciti e impliciti;
- Eliminare i dettagli inutili Per descrivere il problema all’esecutore, si scompone il problema in sotto problemi fino a giungere a problemi elementari (o primitivi) , ossia problemi che possono essere risolti direttamente dall’esecutore. Ogni istruzione elementare è associata ad un’ azione elementare che può essere direttamente compiuta dall’esecutore. 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 dalla modalità con cui tale trasformazione viene effetuata, cioè assumendo un modello “ a scatola nera ”. Un algoritmo è una sequenza finita di istruzioni , comprensibili da un esecutore , che descrive come realizzare un compito. Le proprietà degli algoritmi sono:
- Correttezza , ossia deve arrivare alla soluzione senza difettare di alcun passo fondamentale;
- Efficienza , ossia deve raggiungere la soluzione usando la minima quantità di risorse fisiche (tempo, momoria,…). L’ALGORITMO descrive come si risolve un problema. IL PROGRAMMA è l’algoritmo scritto in modo che possa essere seguito da un calcolatore. È la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. Producendo algoritmi si capisce la sequenza di passi che portano alla risoluzione di un problema. Codificare gli algoritmi in programmi li rende comprensibili per il calcolatore. L’algoritmo per essere comunicato tra esseri umani deve essere sintetico, intuitivo e codificato in linguaggi informali o semi-formali. Per essere eseguito automaticamente deve essere preciso, eseguibile e codificato in linguaggi comprensibili per gli esecutori automatici. Gli algoritmi sono parametrici , ossia producono un risultato che dipende da un insieme di dati di partenza e descrivono la soluzione non di un singolo problema ma di una intera classe di problemi equivalenti. Vi sono anche delle variabili , il cui valore non è fisso ma cambia a seconda della situazione. Queste si usano:
- All’interno di espressioni
- In istruzioni di assegnamento
- In istruzioni di assegnamento combinate con espressioni Gli algoritmi possono essere rappresentati in vari modi:
- Linguaggio naturale
- Pseudo codice
- Diagramma di flusso (con le frecce e i comandi)
- L’insieme delle operazioni in grado di compiere;
- L’insieme delle istruzioni che capisce ( sintassi )
- Quali operazioni associa ad ogni istruzione che riconosce ( semantica ) Il calcolatore ( tipo di esecutore) “capisce” le istruzioni che fanno parte del linguaggio macchina:
- istruzioni primitive semplici(e.g.max2operandi)
- attenzione all’efficienza(costi, complessità, velocità) – difficile e noioso da utilizzare per un programmatore La soluzione si dice effettiva se l’esecutore è in grado di:
- interpretarla
- Compiere le azioni(in un tempo finito!)
L’AZIONE ELEMENTARE:
Un’azione elementare presenta una serie di proprietà: a. Finitezza , ossia l’azione deve concludersi in un tempo finito; b. Osservabilità , ossia l’azione deve avere un effetto osservabile, effettivo; c. Riproducibilità , ossia che la stessa azione deve produrre sempre lo stesso risultato quando la si avvia dall’inizio. Queste sono:
- Le operazioni aritmetiche;
- Condizioni sul valore di singole variabili
- Lettura e scrittura di variabili I dati si classificano in base a:
- Visibilità da parte dell’utente : visibile o trasparenti;
- Variabilità nel tempo : costanti o variabili;
- Struttura : elementari o strutturali.
LE STRUTTURE DI CONTROLLO:
possono essere:
- Selezione semplice
- Selezione a due vie;
- Ciclo a condizione iniziale
- Ciclo a condizione finale
STRUTTURE DEI DATI
Fondamentali
- Problema duale rispetto a quello della definizione di algoritmi – Wirth: “algoritmi + strutture dati = programmi”
- L’uso di strutture dati adeguate semplifica la soluzione di un problema STRUTTURE DATI STATICHE :
- Struttura e dimensioni fisse: o Array o vettore , ossia un insieme ordinato di variabili omogenee identiche dalla posizione all’interno della struttura; o Record , ossia l’insieme a struttura fissa di variabili disomogenee identiche da un nome detto campo. STRUTTURE DATI DINAMICHE : o Struttura e dimensioni variabili: ▪ Lista; ▪ Coda; ▪ Pila; ▪ Albero; ▪ Grado. o Composte da un elemento base con riferimenti ad altri elementi analoghi
ALGEBRA BOOLEANA:
L’Algebra booleana serve a descrivere le operazioni logiche. E’ composta da:
- Operatori booleani , i quali assumono SOLO DUE VALORI (VERO/FALSO, 1/0, SI/NO);
- Regole di trasformazione ed equivalenza tra operatori booleani
ESPRESSIONI BOOLEANE:
Equivalenza : Due espressioni booleane sono equivalenti se hanno la medesima tavola di verità; Tautologia : Un’espressione booleana è una tautologia se è sempre vera (Esempio: A OR (NOT A) Contraddizione: Un’espressione booleana è una contraddizione se è sempre falsa ( Esempio: A AND (NOT A)) CPU (CENTRAL PROCESS UNIT): È un'unità o sottosistema logico e fisico che sovraintende alle funzionalità logiche di elaborazione principali di un computer. Una volta caricata nella memoria centrale un’intera sequenza di istruzioni , ossia il programma, l’unità di controllo prende in considerazione la prima istruzione, la interpreta e ordina all’unità aritmetico-logica di eseguirla. Poi il processore registra il risultato della prima istruzione nella memoria centrale e prende in esame l’istruzione successiva. Il ciclo si ripetere fino a quando tutte le istruzioni sono state eseguite. Le istruzioni si compongono di diverse parti: a. Codice operativo , il quale indica il tipo di operazione (somma); b. La provenienza degli operandi (quali numeri sommare); c. La destinazione del risultato. Le istruzioni inoltre sono rappresentate come sequenze di bit. L’esecuzione delle operazioni è regolata da un orologio ad altissima frequenza (più o meno un gigahertz corrisponde a un ciclo). Una singola istruzione può richiedere più cicli. I core sono le unità di calcolo , con le quali è possibile eseguire 10^9 (con le più moderne CPU) di operazioni aritmetiche al secondo. L’unità di misura delle prestazioni sono i Giga FLOPS (10^9 istruzioni tra numeri “reali”, FLoating point OPerations, per Second). I supercomputer hanno ormai prestazioni nell’ordine dei Peta FLOPS , ossia 10^15 FLOPS.
MEMORIE:
Memoria Principale : vi si accede direttamente dalla CPU e non è permanente.
- Conferisce supporto alla CPU, fornendo dati e istruzioni più rapidamente possibile;
- E’ veloce per supportare la CPU.
- E’ una tecnologia elettronica, veloce, ma costosa e volatile. Memoria Secondaria : vi si accede tramite il sottosistema ed è permanente:
- Consente di archiviare dati e programmi garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo.
- Ha elevata capacità;
- E’ una tecnologia allo stato solido, magnetica e ottima, è economica ma lenta. MEMORIA CENTRALE: La RAM (Memoria ad accesso “casuale”) si chiama così perché il tempo di accesso non dipende dalla locazione (casuale). Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione. Sfrutta tecnologia elettronica (un transistor per ogni bit). La RAM è associata in genere alla memoria centrale, le quali hanno prestazioni location-independent. E’ volatile (quindi conserva dati e istruzioni solo se alimentata) e la capacità si misura in MB o GB. Esistono due variabili :
- ROM, elettronica, permanente ma solo lettura; o Contiene parti essenziali del software, come il BIOS (Basic Input/Output System) e il POST (Power On Self Test) o Alcune varianti sono PROM, EPROM, EEPROM e FLASH.
- FLASH, elettronica, permanente e riscrivibile.
- Il tasso di rottura di una SSD oscilla tra 0.5% e 3%, mentre di un Hard disk fino al 10%;
- Una SSD ha minori consumi e meno produzione di calore;
- Una SSD ha tempi minori di accesso e di archiviazione;
- Una SSD costa leggermente di più.
SOFTWARE (O PROGRAMMI):
I software sono una sequenza di istruzioni che permette al computer di svolgere dei compiti. Iniziano ad essere prodotti su larga scala all’inizio degli anni 80 e si dividono in due categorie: 1 - SOFTWARE DI SISTEMA (linguaggi di programmazione e sistemi operativi); 2 - PROGRAMMI APPLICATVI.
I SOFTWARE APPLICATIVI (APP):
Sono quei software che hanno dei compiti ben specifici (i compiti sono chiamati applicazioni ). Questi sono di varie tipologie:
- Videoscrittura, fogli elettronici, database, grafica, presentazioni, giochi, …
- Utility , ossia quelli che hanno delle utilità, come per esempio il finder, gli antivirus, diagnostici, compressione, backup, visualizzatori di file, I programmi applicativi si dividono in:
- Mercato orizzontale : Di uso generico e solitamente riuniti in una suite di programmi (open office)
- Mercato verticale : Composto dalle applicazioni pensate per un pubblico specifico, come la gestione di prenotazioni, stime di costi, ecc.
- Applicazioni personalizzate , ossia app per professionisti che vogliono software più adatta al lavoro (es. Cad). Gli applicativi possono avere una o più caratteristiche al giorno d’oggi. Tipi di distribuzione dei programmi applicativi: Shareware e Freeware: licenziario, è un software chiuso. Non sono mai opensource.
- Lo Shareware è un software viene distribuito gratuitamente per un periodo di prova (la quale presenta delle limitazioni rispetto alla versione completa) per poi bloccarsi se non si perfeziona l’acquisto;
- Il freeware: sono i software distribuiti gratuitamente per sempre , ma col solo obbligo di registrarsi come utenti. Opensource: altre persone con competenze, può andare a modificare. Non sono mai licenziari. Gli autori dei software distribuiscono anche i “sorgenti” del programma , rinunciando a qualsiasi diritto (a livello economico). Chiunque può modificare il software e deve poi mettere a disposizione di tutti ii software secondo lo stesso principio. Quindi se lo modifichi devi comunque metterlo a disposizione (dopo essere anche controllato e approvato) Il software è nato tutto opensource. Il primo software open source è LINUX , un sistema operativo modulare con un kernel centrale, particolarmente versatile (funziona su cellulari, elettrodomestici e molti dispositivi embedded) Da Unix nacque BSD. Il kernel costituisce il nucleo o cuore di un sistema operativo, ovvero il software che fornisce un accesso sicuro e controllato dell'hardware ai processi in esecuzione sul computer. Nel 1985 Stallman si rifiutò di lavorare per una società privata di sviluppo software e fondò la FSF (free software foundation), la quale aveva la missione di preservare e proteggere la libertà di usare , studiare , copiare , modificare e redistribuire il s.f.
LA LICENZA SOFTWARE:
La licenza in ambito informatico è il contratto che può accompagnare un prodotto software , il quale specifica le modalità con cui l’utente può usare tale prodotto, garantendo dei diritti e imponendo obblighi. Questa licenza può essere imposta solo da chi detiene il copyright sul prodotto e la sua validità dipende dalla presenza del diritto d’autore. La GNU General Public Licens è intesa a garantire lo scambio e la condivisione di software libero e assicura che il software resti libero per tutti gli utenti. Con questa ognuno può modificare il codice sorgente secondo le proprie necessità e redistribuire gratuitamente, facendosi pagare per i servizi e prodotti realizzati utilizzando il software libero. A questo vengono applicate però delle restrizioni che vietano ad ognuno di negare i diritti d’autore e dell’utente. Questi diritti vengono protetti attraverso il copyright del software per l’autore e definisce la licenza che garantisce all’utente di copiare, distribuire e modificare il software
La gerarchia dei livelli riproduce, in un certo senso, quella degli sviluppi e dei progressi informatici. Dapprima le innovazioni riguardano l’hardware, al quale poi si adattano le innovazioni del sistema operativo e poi in fine nascono applicazioni per sfruttare queste novità.
L’interfaccia utente:
Sono quello che permette a noi utenti di parlare con gli applicativi. Per interfacciarci con gli operativi e applicativi si lavora con le interfacce. Queste possono essere:
- Grafiche (GUI), le quali hanno elementi comuni tra loro, in modo da aiutare l’utente a muoversi in ogni ambiente con familiarità;
- A stilo , costituite quindi da un piccolo puntatore per dare comandi su uno schermo sensibile;
- Touchscreen , ossia con le quali vi è interazione tramite le dita;
- Conversazionali, ossia basate sull’interazione vocale. Un’interfaccia è quello che permette all’uomo di interagire con la macchina.
Livelli di software:
Il BIOS (sistema fondamentale di input/output) si rapporta direttamente con l’hardware del computer e i programmi applicativi gestiscono l’hardware solo attraverso il sistema operativo stesso. SISTEMA OPERATIVO: Il sistema operativo è quello strato di linee di codice che dicono i percorsi per passare dalla CPU alla memoria. Il sistema operativo filtra, è uno strato operativo perché permette agli applicativi di interagire con l’hardware. Se su un iPhone installo Android, non parte perché la macchina (hardware) è ottimizzata per un determinato sistema operativo. Quando ho un sistema operativo, questo “mi comanda”. Ha una presenza così pesante che mi va a prendere decisioni per tutti gli applicativi. L’hardware si migliora e quindi il sistema operativo va a sua volta aggiornato. Serve a far parlare gli applicativi con la macchina stessa. è un insieme di software che:
- gestisce le risorse del computer ,
- l’interazione tra utente e programmi
- regola il multitasking e il multithreading.
- gestisce l’accesso di più utenti alle risorse,
- distribuisce le operazioni tra più processori ,
- avverte l’utente di eventuali errori
- gestiscono l’alimentazione elettrica. I sistemi operativi si dividono in diverse categorie, ossia:
- S.O. per i desktop , come per esempio Windows, Mac Os, Linux, i quali sono meno potenti e affidabili, ma anche i più diffusi;
- S.O. per i server , i quali sono sicuri e portabili e pensati per la gestione multitasking e multithreading di applicazioni mission-critical;
- S.O. per i mainframe , come MVS e VMS, i quali sono software proprietario in genere, ossia prodotto e usato da una particolare azienda.
- S.O. per palmari e tascabili , con i quali si può interagire con stilo e tastiera virtuale.
- S.O. incorporati , per elettrodomestici e piccoli apparecchi. Il sistema operativo gestisce le risorse hardware. Possono essere scritto in determinati modi più verso l’hardware, si parla di sistema operativo embedded. È più di basso livello. Serve a gestire tante cose della macchina; oppure più verso pc, si parla di sistemi applicativi. E’ più di alto livello (utility) Le componenti hardware hanno bisogno del sistema operativo, il quale è esclusivo. Ce ne può stare solo uno.
RETI DI CALCOLATORI , ossia insieme di calcolatori autonomi tra loro collegati mediante una rete di comunicazione, pur mantenendo un certo grado di indipendenza. Inoltre, in caso di guasto o indisponibilità della rete ogni calcolatore continua a mantenere gran parte delle sue funzionalità. SISTEMI DISTRIBUITI , con i quali gli utenti non hanno visibilità sull’architettura del sistema, il quale si presenta come un sistema omogeneo, progettato per eseguire un’applicazione particolare.
SISTEMA INFORMATIVO E INFORMATICO:
Un sistema informativo è costituito dall’insieme delle informazioni utilizzate , prodotto e trasformate da un’azienda, dalle modalità in cui esse sono gestite e dalle risorse sia umane sia tecnologiche coinvolte. Un sistema informatico indica la porzione di sistema informativo che fa uso di tecnologie informatiche e automatiche
LE RETI:
Reti locali (Local Area Network, LAN ) , di limitata estensione che collegano dispositivi collocati nello stesso edificio o in edifici adiacenti.. Reti metropolitane (Metropolitan Area Network, MAN ), che collegano dispositivi collocati nella stessa area urbana. Reti geografiche (Wide Area Network, WAN ), che collegano dispositivi diffusi in un' ampia area geografica (nazione, continente, ...); " Reti di reti " (Internetwork), che collegano più reti differenti (a livello sia hardware sia software) mediante opportuni elementi di interfaccia, che si possono estendere letteralmente ovunque (e.g., Internet). LE RETI LOCALI: sono caratterizzate da:
- Ampia larghezza di banda
- Modularità e facilità di connessione
- Affidabilità;
- Espansibilità e flessibilità delle dimensioni della rete;
- Economicità; Inoltre, ogni stazione è collegata alla rete tramite una scheda di interfaccia rete. La tecnologia più comune è “ ethernet ”. Questa esegue le operazioni di conversione dei segnali e implementa il metodo di accesso alla rete. Ogni scheda di rete ha un indirizzo finisco univoco (MAC). ETHERNET è il tipo di rete locale più diffuso. Quando un computer (ma non solo) vuole comunicare, invia il segnale sul cavo di collegamento. RETI WI-FI Le reti wireless operano in bande di frequenza che non necessitano di licenza , quindi senza costi di licenza per i fornitori di accesso. I vantaggi di questa sono:
- Riduzione dei costi della cablatura;
- Supporto di dispositivi mobili e statici senza problemi. Gli svantaggi però sono:
- Minori prestazioni rispetto alla rete cablata;
- Problemi di sicurezza RETI BLUETOOTH: Le reti bluetooth sono state sviluppate per connettere telefoni con altri dispositivi, per poi estendere il tutto alle reti locali (PAN- Personal Area Network). Questi prodotti hanno un minuscolo r icetrasmettitore a breve raggio che opera sulla banda radio priva di licenza disponibile a livello mondiale (2.45 GHz) e supporta velocità di trasferimento fino a circa 700kbps. E’ caratterizzato da un bassissimo consumo energetico. SERVIZI E VELOCITA’ 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.
MEZZI DI TRASMISSIONE:
Mezzi fisici utilizzati per la trasmissione si dividono in:
Mezzi guidati : linee fisiche che portano il segnale fino al ricevitore supportano la trasmissione di segnali elettrici oppure ottici:
- segnali elettrici: doppino telefonico o cavo coassiale;
- segnali ottici: fibre ottiche. Mezzi non guidati : irradiazione di segnali elettromagnetici nello spazio , in modo più o meno diretto.
- varie frequenze di trasmissione , antenne, satelliti, ...
DATAGRAMMI E CIRCUITI VIRTUALI
I datagrammi, pacchetti che vengono trattati in modo indipendente l’uno dall’altro. Non è però garantito l’ordine di arrivo. Il nodo di destinazione li ricomporre in base al numero progressivo contenuto nei singoli pacchetti. I circuiti virtuali, prima della spedizione dei pacchetti si stabilisce un percorso tra sorgente e destinazione, appunto un circuito virtuale. Ognuno di questi pacchetti contiene un identificatore del circuito virtuale associato oltre ai dati.
CLIENT-SERVER
Uno o più server gestiscono la condivisione delle risorse e controllano gli accessi. I client sono le altre stazioni della rete e le risorse condivise e rese accessibili a questi client sono collegate direttamente e controllate dai server. Differente è il PEER-TO-PEER , nel quale le stazioni sono connesse in modo paritetico e non esiste una gerarchia per la gestione del controllo della rete (sia hardware che software). Ogni stazione deve gestire il controllo degli accessi alle proprie risorse, definendo cosa condividere e con chi.
- L’utente accede un client per inserire la sua richiesta
- Il client si collega al server e trasmette la sua richiesta (secondo una serie di regole standard chiamate protocolli)
- Il server risponde al client
- Il client presenta la risposta all’utente. Il server rende disponibili delle risorse. L’utilizzo di protocolli garantisce interoperabilità e i server possono rispondere senza che vi sia interventi di altri utenti in genere. I clienti possono essere collegati sia in LAN che in WAN. Più server possono formare un unico sistema e il processo server può essere eseguito dallo stesso calcolatore che esegue il processo client. Affinché due calcolatori possano scambiarsi dati sono necessari:
- Un mezzo di trasmissione che collega i due calcolatori, appunto la rete;
- Dispositivi hardware per la comunicazione (le schede di rete);
- Regole che definiscono come avviene lo scambio (protocollo di comunicazione);
- Il software per la comunicazione.
I PROTOCOLLI DI COMUNICAZIONE
Come comunicare?
Per comunicare bisogna che vi sia:
- Un canale fisico adatto , quindi occorre predisporre una infrastruttura fisica;
- Competenze linguistiche comuni , quindi concordare dei protocolli di trasmissione , composti da regole per dare un significato e interpretare i segnali;
- Competenze di contenuto comuni , ossia concordare un protocollo applicativo , ossia delle regole per interpretare i contenuti. Due sistemi (peer) si scambiano blocchi strutturati di dati, seguendo le regole stabilite dai vari protocolli come se esistesse una connessione diretta tra ognuno dei livelli definiti dal modello di comunicazione. Gli elementi chiave di un protocollo sono :
- La sintassi da eseguire per la struttura dei blocchi dei dati;
- La semantica , come per esempio il significato di alcuni valori utilizzati per il controllo della trasmissione e la gestione degli errori;
- La temporizzazione , ossia l’adattamento della comunicazione alla velocità di trasmissione e l’ordinamento temporale delle attività. COSA SONO I PROTOCOLLI DI COMUNICAZIONE: I protocolli di comunicazione sono appunto un insieme di regole che definiscono come i calcolatori devono scambiare i dati. Esempi sono i protocolli ISO/OSI (Open System Interconnection) e TCP/IP (Standard de facto). I protocolli sono implementati come parte del sistema operativo.
APPLICATION LAYER DEL MODELLO TCP/IP
Il livello di applicazione del modello TCP/IP comprende quelli application, presentation e session del modello OSI. Ciò assicura massima flessibilità al layer application per gli sviluppatori di software. Si colloca al di sopra del Transport ed è il livello nel quale viene svolto il lavoro utile per l’utente. Nell’Application Layer possiamo trovare diversi protocolli, come SMTP, http, ecc… Sono basati sul modello di interazione client/server.
RICERCA SUL WEB E SOCIAL NETWORKS:
TEORIA DEI GRAFI : è uno strumento indispensabile per l’analisi di reti e quindi di social networks. Inoltre, è fondamentale per capire come funziona un moderno motore di ricerca e anche i navigatori sono basati su algoritmi su grafi. Un grafo G=(V,E) è :
- un insieme di V vertici (o nodi)
- E coppie di vertici , detti anche archi o spigoli. Ogni arco connette due vertici. I grafi sono:
- Non Orientati , ossia simmetrico nei quali esistono sempre almeno due nodi che hanno lo stesso grafo
- Orientati , ossia asimmetrica. Il grado di un nodo è il numero di archi incidenti. I grafi sono da sempre lo strumento usato per la modellazione di reti sociali, i quali esistono da prima di internet. TEOREMA DI EULERO: Un qualsiasi grafo è percorribile se e solo se ha tutti i nodi di grado pari , o due di essi sono dispari. FENOMENO DI MONDO PICCOLO: afferma che nonostante una rete sia numerosa (molti nodi), il diametro è piccolo. Esempi sono:
- Numero di Erdos : i nodi della rere sono autori di articoli di matematica e c’è un arco tra due autori se hanno lavorato insieme ad un articolo;
- Numero di Bacon : i nodi della rete sono attori e c’è un arco tra due attori se hanno lavorato nello stesso film
MOTORE DI RICERCA:
Un motore di ricerca di si divide in:
- Crawler : la parte che si occupa di “scaricare” in locale le pagine, che poi saranno processate dall’indexer;
- Indexer , il quale crea un indice dei documenti, che viene usato dal Query processor;
- Query processor , il quale riceve la query utente e restituisce i risultati ordinati. PAGERANK: è un algoritmo, cuore di Google. Serve a ordinare i risultati.
CLOUD COMPUTING:
Il cloud computing è l’ insieme di tecnologie che permettono di memorizzare/archiviare e elaborare dati grazie all’utilizzo di risorse hardware/software distribuite e virtualizzate in RETE. SAAS:
- Business Management;
- Tools
- Vertical Apps;
- Cloud Security;
- CRM. PAAS:
- Developing and testing;
- Application Platform;
- Integration;
- General;
- Database IAAS:
- Cloud Management;
- Storage;
- Virtualizzazioni;
- Networking;
- Content delivery Networks;
- Computing SICUREZZA INFORMATICA: 1.ATTACCHI ALLA SICUREZZA compromettono la sicurezza delle informazioni. Questi si dividono in:
- Attacchi passivi , i quali hanno l’obiettivo di leggere i contenuti di messaggi, monitorare il traffico, senza alterare i dati e per questo sono difficili da individuare;
- Attacchi attivi , i quali sono difficili da prevenire ma facili da individuare. Esempi sono:
- masquerade , ossia si finge di essere qualcun altro;
- Replay , ossia si prende un messaggio e poi lo si rimanda;
- Message modification , ossia si modificano i messaggi prima che arrivino;
- Denial of service , ossia disturba del servizio di server.
- I canali di attacco sono l’accesso diretto al computer o via rete.
- Le strategie di attacco sono:
- Forza bruta , tentare tutte le combinazioni;
- Dizionario , usare tutte le parole di un dizionario;
- Password di default del sistema se non vengono cambiate;
- Password legate all’utente (nomi, cognomi, telefoni);
- Password resetting ;
- Password sniffing ossia cercare la password tra il traffico dati;
- Password cracking , ossia decodificare le password codificate.
MALWARE:
si classificano in base alla necessità o meno di un programma ospite:
- Parassiti: virus, bombe logiche, backdoors
- Indipendenti: worm SI classificano in base alla capacità di autoreplicarsi:
- Programmi attivati da un trigger: bombe logiche e backdoor;
- Programmi che si autoreplicano: worm e virus. I VIRUS sono frammenti di programma scritto per eseguire operazioni senza il consenso o la consapevolezza dell’utente. È definito da due criteri:
- Necessità di un programma ospite :
- Capacità di auto replica : WORM sono programmi che si replicano da sistema a sistema senza servirsi di un file ospite. I worm rilasciano un documento che contiene già il macroworm al suo interno. Si autoreplicano. TROJAN : è un codice malevole, le cui funzionalità sono nascoste all’interno di un programma apparentemente utile. È l’utente stesso che installa ed eseguendo il programma installa anche il codice nascosto. NON si replicano automaticamente. Il PHISHING è un tipo di truffa attraverso la quale un aggressore cerca di ingannare la vittima convincendola a fornire dati personali sensibili. SPAMMING è l’invio di messaggi indesiderati.
2.SERVIZI DI SICUREZZA migliorano la sicurezza delle informazioni, combattendo gli attacchi mediante
meccanismi di sicurezza. Questi permettono:
- Confidenzialità e riservatezza , per rendere impossibile a terzi di comprendere dati scambiati;
- Integrità , per proteggere i dati da modificazioni, sia accidentali che maliziose;
- Disponibilità , garantendo l’accesso ad un servizio/risorse;
- Non ripudio , garantendo che nessuno possa negare la transazione;
- Autenticazione , assicurare l’identità dell’utente. Si basa su tre fasi:
- Quello che si conosce (frase, numero come login e password)
- Che si ha (chiave, scheda, come una carta magnetica o token);
- Che si è (caratteristica fisica, come le biometrie).
INTELLIGENZA ARTIFICIALE E MACHINE LEARNING:
Il machine learning è l’apprendimento automatico e riguarda la costruzione e lo studio di sistemi che possono apprendere dai dati. Le principali component di IA:
- rappresentazione della conoscenza,
- reasoning (ragionamento),
- natural language processing (interpretazione del linguaggio naturale), l
- earning (apprendimento)
UNSUPERVISE LEARNING: i dati non hanno una variabile target.
Cluster Analysis è la ricerca di gruppi di oggetti nei dati in modo che gli oggetti di gruppo siano simili tra loro e diversi da gli oggetti di altri gruppi. Il clustering è un insieme di gruppi e esiste:
- Partitional: l’oggetto divide in sottoinsiemi non sovrapposti e non hanno oggetti in comune;
- Distanza inter-claster e intra-claster
- Hierarchical: sono annidati i cluster (sottoinsiemi). ALGRITMI DI CLUSTERING
- K-means e le sue varianti
- Hierarchical clustering
- Density-based clustering (basato sulla densità)
SUPERVISE LEARNING : Abbiamo dati etichettati da esperti. Associa i dati ad un target conosciuto.
- REGRESSION: se l’etichetta è numerica, allora è un problema di regressioni
- CLASSIFICATION : se l’etichetta è categorica, è un problema di classificazione. BASI DATI Le basi dati sono collezioni di dati.
- Organizzate;
- Persistenti;
- Condivisa;
- Di grandi dimensioni e varietà. È una sola rappresentazione che evita ridondanze inutili ripetizioni di dati e operazioni. L’accesso è gestito da un DBMS , ossia un sistema di gestione della base dati, che assicura efficienza, usabilità, riservatezza e affidabilità dei dati.
DBSM:
Il DBMS è un sistema di tipo software, è quindi un applicativo, Permette la gestione di grandi dimensioni di dati Le collezioni di dati sono:
- Di grandi dimensioni
- Persistenti
- Condivise
- Affidabili
- Sicuri
- Efficienti MODELLO RELAZIONALE: insieme di tabelle messe in relazione tra loro tramite campi comuni tra di esse.
- PROIEZIONE : è una visualizzazione verticale della tabella (colonne);
- SELEZIONI: è una visualizzazione orizzontale (record);
- JOIN : è l’unione di record di tabelle diverse. ATTORI: Amministratori , i quali gestiscono i Data Base, coordinano le attività. Programmatori , realizzano le funzionalità operative; Utenti , interagiscono con la base dati:
- Direttamente tramite viste e semplici linguaggi di interrogazione.:
- Possono utilizzare SQLS e SQL oppure interfacce amichevoli.
- Indirettamente, tramite applicazioni ad hoc.
SCOPO DATABASE:
- OPERATIVO : mantenere e gestire le informazioni relative alle entità di interesse per l’organizzazione;
- DECISIONALE: per prendere decisioni riguardanti le attività di programmazione, controllo e valutazioni FASI DELLA PROGETTAZIONE:
- Analisi dei requisiti , ossia la racconta delle specifiche dell’utente
- Progettazione concettuale ; elabora un diagramma E/R:
- Si individuano le entità secondo criteri di omogeneità;
- Si individuono le proprietà interessanti per ogni entità (attributi);
- Si definiscono le relazioni tra le diverse entità.
- Progettazione logica : traduzione del modello concettuale in dati --> in tabelle
- Progettazione fisica : scelta delle caratteristiche fisiche effettive. Il diagramma E/R : è un insieme di entità con insiemi di associazioni che esprimono informazioni significative: associazioni binarie ma anche ternarie e n arie. Il diagramma E/R racchiude:
- Entità: che ha un insieme di atrributi. Un’entità identifica un insieme di elementi distinti e omogenei.
- Relazioni che collegano l’entità. INTEGRITA’ E CHIAVE PRIMARIE: I vincoli di integrità :
- Vincoli di dominio(entità): vengono specificati quando un attributo viene associato al corrispondente dominio.
- Obbligatorietà degli attributi: un attributo non facente parte della chiave primaria è opzionale, cioè può assumere valori nulli.
- La chiave primaria è l’attributo unico dell’entità che identifica univocamente un elemento dell’entità stessa. CARDINALITA’: caratteristica descrittiva. Rappresenta una variabile numerica nelle corrispondenze fra oggetti appartenenti a due insiemi. Può riguardare sia gli attributi che le associazioni. OLTP : sono applicazioni pensate per:
- Automatizzare le operazioni quotidiane;
- Inserimento dati, transazioni bancarie;
- DBMS transazionali;
- Progettare database per ridurre la necessità di un utilizzo contemporaneo. Proprietà ACID: Atomicità : transazione è un’unità di lavoro indivisibile; Consistenza : il data base che passa da uno stato all’altro maniene verificati i vincoli di integrità; Isolamento : l’esecuzione di una transazione in cocnorrenza con altre deve produrre gli stessi effetti di una qualunque esecuzione seriale della transazione: Durabilità : se una transazione si conclude, il suo effetto non deve essere perso OLAP: sono applicazioni per il supporto alle decisioni (Data werehouse o i data mart) Contengono dati aggregati da diverse fonti dati. Interessa il tempo di risposta di una query. Fare query sui sistemi OLTP crea problemi di concorrenza, i tempi sono alti e non contiene dati storici. Nascono allora i DATA WAREHOUSE: è una base dati. I Big Data si dividono in:
- Data strutturati: cointengono la lunghezza, il tipo e il formato. Possono essere generati da uomo o macchina
- Data non strutturati: non sono definiti e non seguono un formato base. L’analisi può essere: a. Descrittiva: esami i dati b. Diagnostica: determina cosa accade e perché; c. Predittiva: predice cosa potrebbe succedere; d. Prescrittiva: trova alternative; e. Decisiva: sceglie l’azione Si passa dal raw data, ossia da un dato grezzo, ad un’informazione.
- Pensare in modo creativo per risolverli ed;
- Elaborarne in modo chiaro e preciso una soluzione. COMPONENTI DI UN SISTEMA DI ELABORAZIONE:
- Hardware, ossia l’insieme dei componenti materiali (CPU, memoria, dispositivi di Input/output);
- Sistema operativo, ossia il software di base che controlla e coordina l’uso dell’hardware tra le varie applicazioni dei vari utenti. Gestisce quindi la “macchina”;
- Programmi applicativi, ossia softwere che utilizza le risorse del sistema per risolvere i problemi degli utenti (compilatori, database, video game, programmi di gestione)
- Firmware, serve a far parlare il sistema operativo con l’hardware. CPU è il processore. La RAM permette di dare delle grosse performance isnieme alla CPU Bus di sistema memoria, ossia un insieme di cavi che vengono usati per collegare i due complessi (CPU e RAM). Il Bus di input/output gestisce le periferiche di I/o e di uscita soltanto (mouse, monitor, stampante, ttavoletta grafica). Il Disco è la “memoria di massa”. E’ la capacità di base di memorizzazione. ALGORITMO: Ad oggi non esiste una definizione formale di “algoritmo”. La definizione informale è:
- Sequenza finita di istruzioni;
- Comprensibili da un esecutore;
- Che descrive come realizzare un compito, ossia come risolvere un problema. CPU (central process units) La cpu stabilisce l’ordinamento delle istruzioni che devono essere eseguite su una macchina.
SOFWARE APPLICATIVO E SISTEMA OPERATIVO:
Il software è una sequenza di istruzioni che permette al computer di svolgere dei compiti. Un linguaggio di programmazione è qualcosa che la macchina può comprendere. Una volta che traduco l’algoritmo con il linguaggio di programmazione, questo viene compreso ed eseguito. RETI E PROTOCOLLI: 1 986 prima connessione in Italia. L’uomo è un animale stronzo e quindi investe tanto in spese militari. Internet è nato in questo ambito negli USA.
Nasce perché c’era la necessità di comunicare informazioni nella manierapiù veloce possibile. Si parte da una lettera cartacea, con la posta; poi si passa al telegrafo; poi al telefono, il quale ci ha persomesso di parlare in maniera sincrona verbalmente. Nel 1991 Tim Berners-Lee (CERN) rende disponibile (“mettere online”) il primo sito Web. Internet non è il Web:
- Internet è l’infrastruttura tecnologica di comunicazione. Internet nasce per comunicare;
- Il Web nasce anche per comunicare ma anche per altro: visualizzare informazioni, fare calcoli, fare vetrina, … Senza Internet, il Web non esisterebbe. Internet permette di comunicare tra macchine, attraverso il protocollo (TCP/IP). Il Web necessita del Client, ossia un pezzo di software che richiede informazioni, mentre il Server (altro pezzo di software) produce informazioni. Il Web funziona con un protocollo http mentre internet funziona con il protocollo TCP/IP. Il protocollo di comunicazione è una serie di regole per far comunicare due macchine attraverso connessioni fisiche (cavo) oppure wifi (onde radio). Il Web viaggia utilizzando questa struttura fisica ma parla con un altro protocollo, appunto http. Nel 1992 nasce il primo protocollo (http) Nel 1993 nasce il primo browser, ossia un applicativo, grafico a larga diffusione chiamato “Mosaic” Nel 1994-95 Netscape e Microsoft mettono in commercio il loro primo browser (Navigator e Internet Explorer). Nel 1995 La gente che usa il Web supera la gente che usava il traffico FTP su Internet. (FTP è un altro protocollo, che permette di comunicare senza toccare il Web). Il Dark Web è appunto un Web che lavora su Internet. Nel 2000: Peer to Peer, ossia quando non vi sono distinzioni tra Client e Server. E’ un modo di lavorare (no protocollo). Internet funzionava con questi grandi cerchi di ricerca (primo collegamento tra Harvard e MIT. La macchina dell’MIT dava le informazioni, mentre quello dell’Harvard richiedeva un ping). Le macchine server col tempo si sono evolute, mentre i Client sono rimasti molto versatili. COME VIAGGIANO LE INFORMAZIONI? Attraverso delle reti fisiche (cavi) oppure attraverso le radio frequenze (wifi). C’è una tassonomia. Le reti interne tsi dividono per grandezza:
- LAN, ossia le Reti locali o Hanno limitatat estensione; o Collegano dispositivi vicini. Per avere un web efficiente bisogna avere un’infrastruttura efficiente. Il Wi-Fi è un altro modo per trasferire bit. Non necessitano di licenza le bande di frequenza che non necessitano di licenza, quindi senza costi di licenza per i fornitori di accesso. PROTOCOLLI DI COMUNICAZIONE TCP/IP
- LIVELLO: applicativo browser
- LIVELLO: trasporto --> trasforma i dati in modo che possono essere inviati secondo le regole del TCP/IP
- LIVELLO: rete --> indirizzo IP ossia l’indirizzo dei dispositivi in rete.
- LIVELLO: TCP/IP ha avuto la capacità di definire dei livelli. Ha diviso le cose. Ma anche perché i singoli datagrammi (pacchetti) hanno varie dimensioni e vanno trasferite in modo diverso. E’ stata fatta una precisa allocazione delle informazioni. Livello TCP --> creazione dell’informazione Livello IP --> la macchina dice il codice