Scarica Architettura del Computer: Memoria, Processore e Sistemi Operativi e più Dispense in PDF di Fondamenti di informatica solo su Docsity!
INFORMATICA
ALGORITMI
algoritmo = sequenza ordinata di istruzioni/passi che serve a risolvere un problema o raggiungere un obiettivo nel modo più semplice possibile. Servono degli input che vengono usati con una sequenza per ottenere un determinato risultato. Tutti i passaggi devono essere elementari, cioè non scomponibili, chiari e non fraintendibili, e finiti. L’esecuzione deve portare ad un risultato univoco. Il primo algoritmo informatico fu ideato dalla matematica britannica Ada Lovelace nel primo 800. Il nome algoritmo deriva dal padre dell’algebra e primo matematico a formulare l’idea di algoritmo, al-Khwarizmi, intorno al IX secolo. Può esistere più di un algoritmo per risolvere lo stesso problema. Calcolo automatico → effettuare calcoli a mente o “a mano” è un'attività noiosa e incline all’errore. Per secoli l’uomo ha cercato di porre rimedio a questo fatto “automatizzando” il processo di calcolo. L’essere umano è in grado di individuare ed applicare un algoritmo per risolvere il problema, ma non ha voglia di farlo perché impiegherebbe troppo e rischierebbe di sbagliare. Abaco ⇒ prima “macchina di calcolo”. I primi risalgono al V millennio a.C. Rende espliciti i dati input ed è esterno a chi fa il calcolo. La Pascalina ⇒prima vera innovazione rispetto all’abaco, nel XVII secolo d.C., inventata da Blaise Pascal. Essa permetteva di effettuare solo addizioni e sottrazioni mentre moltiplicazioni e divisioni potevano essere effettuate mediante ripetizioni di addizioni e sottrazioni. La macchina analitica ⇒introdotta da Charles Babbage nel 1840 ed è il primo esempio di macchina di calcolo programmabile. Dati, algoritmo e programma (tanti linguaggi). Se il programma lo metto dentro la macchina lo esegue e non è capace di fare un solo tipo di operazione. Babbage era molto avanti rispetto ai suoi tempi ma la tecnologia non era sviluppata a sufficienza; la macchina avrebbe dovuto funzionare a vapore e l’esigenza di automatizzare il calcolo non era forte. Per questi motivi le sue idee non ebbero il successo che avrebbero meritato e furono dimenticate per quasi un secolo e vennero riscoperte nella prima metà del 900 da Alan Turing e John von Neumann. Alan Turing
- uno dei padri dell’informatica
- introduce la macchina di Turing →modello astratto e teorico di calcolatore (esperimento mentale). Pensata per studiare i limiti di ciò che è calcolabile automaticamente. Alla base del suo funzionamento c'è la stessa idea alla base della macchina analitica.
- attività per l’intelligence inglese →durante la seconda guerra mondiale costruisce macchine per la decrittazione dei messaggi tedeschi. John von Neumann
- descrive un calcolatore costruibile, ancora oggi il modello su cui si basano i computer moderni.
Storia dell’informatica
- 300 a.C: algoritmo di Euclide
- 1800: Bool – metodi simbolici per modellare il ragionamento
- 1930: Church, Turing – modello formale astratto di computer e idea del computer come macchina universale: “a machine to do all kinds of different things simply by programming rather than by the addition of extra apparatus”.
- 1940: Shannon: teoria dell’informazione
- 1950/60: Dijkstra, Kruskal, Hoare studiano gli algoritmi fondamentali, linguaggi di programmazione, teoria dei linguaggi formali, ecc…
- 1970: Codd, Rivest, McCarthy, Cook inventano i database relazionali, crittografia a chiave pubblica, intelligenza artificiale, complessità computazionale Information and Communication Technology = informatica come tecnologia: risvolti fisico-matematici e ingegneristici del calcolo automatico; teorie e tecniche di comunicazione Computer Science = informatica come scienza: basata su modellizzazione, formalizzazione e verifica sperimentale (teoria degli automi, logica formale, teorie del linguaggio) Temi dell’informatica: calcolabilità, complessità, teoria dei linguaggi formali, algoritmi e strutture dati, linguaggi di programmazione, compilatori e interpreti, architettura dei calcolatori, sistemi operativi, ingegneria del software, reti di calcolatori, interazione uomo-macchina, sicurezza, intelligenza artificiale, basi di dati.
Ciascuno di questi temi è un “edificio” più o meno complesso.
Informatica
- informazione + automatica = informatica
- insieme dei processi e delle tecnologie che consentono la creazione, la raccolta, l'elaborazione, l'immagazzinamento e la diffusione dell’informazione. Terminologia : Computer = elaboratore elettronico digitale elaboratore – dispositivo in grado di eseguire automaticamente una serie di istruzioni elettronico – usa componenti elettronici digitale – elabora info binarie (0 e 1) Hardware = componente fisica del sistema informatico Composta da: computer, stampanti, monitor, tastiere, mouse, modem, cavi Software = insieme di programmi che fanno funzionare l’hardware Due tipologie: - sistemi operativi →permettono all’elaboratore di svolgere le proprie funzioni. Es. MS-DOS, Windows 2000/XP/Vista/7/8, MacOS X - programmi applicativi →svolgono i compiti più vari, in funzione delle esigenze dell'utenza Es. browser, videoscrittura, fogli elettronici, gestione di basi di dati, grafica avanzata, controllo di centraline Ciclo di elaborazione dell’informazione:
- input →immissione di dati nel computer. I dispositivi di input più comuni sono la tastiera, lo scanner, il mouse, il microfono e la telecamera. I dati da inserire possono essere testi, numeri, immagini o suoni.
- elaborazione →i dati si possono paragonare, formattare un testo, classificare o sommare numeri, creare immagini e suoni.
- output →per vedere il risultato dell’elaborazione sono necessari dispositivi output come lo schermo, la stampante e gli altoparlanti. Possono poi a loro volta essere sottoposte a un'ulteriore elaborazione.
- memorizzazione →i dati e i programmi non usati vengono memorizzati su appositi nastri o dischi in modo da poter essere recuperati in qualsiasi momento.
- distribuzione →i dati possono essere stampati e distribuiti o trasmessi direttamente da un computer all’altro (allegati per email o per sito web) Differenza tra dati e informazioni: i dati sono numeri, suoni, video o foto che diventano informazioni, cioè lettere, tabelle o presentazioni multimediali. Alcune delle info elaborate diventano dati da elaborare nella fase successiva.
Rappresentazione delle informazioni
Rappresentare le informazioni in forma digitale significa ridurle a numeri, la sola cosa che i computer possono elaborare. Tutti gli altri tipi di informazioni (testi, immagini, suoni, filmati…) devono quindi essere convertiti in qualche modo in forma di numeri. Tipi di segnali:
- Segnali analogici = insieme continuo di valori che trasmettono molte informazioni. Sono sensibili alle interferenze (es. variatore di luminosità)
- Segnali digitali = insieme discreto di valori. Semplici da distinguere. (es. interruttore on/off) Vantaggi: semplice, non ambiguo e riproducibile senza errori. Un segnale digitale è binario, cioè un segnale discreto e basato su due soli valori. L'elemento di base per rappresentare le informazioni in forma binaria è il BIT.
Il sistema binario è semplice, può rappresentare quasi ogni informazione, è l’unico tipo di info che possiamo mettere
dentro un computer. Un bit può assumere solo due valori (0 e 1), quindi con un bit possiamo rappresentare due informazioni. (si/no, on/off, su/giù, …) Combiniamo più bit per rappresentare più informazioni: 1 bit →2 informazioni: 0, 2 bit → 4 informazioni: 00, 01, 10, 11 ⇒con N bit si rappresentano 2^N informazioni Se abbiamo K informazioni, quanti bit servono? Bisogna scegliere N tale che 2^N > K Byte ⇒ usato come unità di misura per esprimere la capacità di memoria, la potenza di un calcolatore, la velocità di trasmissione di una linea. 8 bit = un byte →8 bit = 256 info diverse.
Rappresentazione dei numeri tramite bit
- UTF (Unicode Transformation Format) definisce come codificare il numero di un carattere Unicode come sequenza di bit
- UTF-8 – alcuni caratteri codificati con 8 bit, altri con 16 bit, altri (pochi) con 32 bit
- compatibile con ASCII: i caratteri codificati con 8 bit coincidono con i caratteri ASCII
- UTF-16 – alcuni caratteri codificati con 16 bit, altri (pochi) con 32 bit
- usata internamente da Windows I caratteri sono rappresentati come sequenze di 0 e 1 Ad ogni carattere è associata univocamente una sequenza di 0 e 1 Le associazioni tra caratteri e sequenze sono raccolte nelle CODIFICHE Codifiche: ASCII (7 bit), ASCII esteso (8 bit), UNICODE (max 4 byte) Ordine lessicografico: lettere maiuscole prima delle minuscole, per i numeri si guarda la prima cifra (partendo da sinistra)
Codifica delle immagini
Ci sono varie tecniche per memorizzare in modo digitale un'immagine, e poi elaborarla. Digitalizzando un’immagine si ha sempre un’ approssimazione dell’immagine stessa. Per avere un'immagine più fedele, aumentiamo la risoluzione, cioè il numero di pixel, e rimpiccioliamo il numero di quadratini. La rappresentazione di un’immagine mediante la codifica dei pixel viene chiamata codifica bitmap.
- con un solo bit per pixel si possono codificare solo due colori (tipicamente bianco e nero), cioè ogni pixel può assumere solo 2 diversi colori. Per codificare più informazioni, dobbiamo usare più bit per ogni pixel, in questo modo ogni pixel può assumere più di 2 colori.
- per associare una rappresentazione binaria a ogni possibile colore di pixel il modello più usato è Truecolor (o RGB), che ha tre colori primari: red, green, blue. Gli altri colori vengono ottenuti sommando i tre colori primari. 256 valori possibili per ogni colore primario e ad ogni colore corrisponde un byte.
- per poter essere riprodotta (ad esempio sullo schermo) l'immagine deve essere codificata in formato binario (0 e 1) e questo richiede che si conoscano: numero di righe dell'immagine, numero di colonne dell'immagine, numero di colori
- due parametri di qualità:
- risoluzione →indica la precisione con cui viene effettuata la suddivisione dell'immagine in pixel. Si misura quindi in pixel.
- profondità del colore →numero di bit o byte per rappresentare ciascun pixel. Si misura quindi in bit o byte. Indica il numero di colori diversi che possono essere rappresentati. → La dimensione dell'immagine è il numero di bit o byte che servono per memorizzarla. Dimensione = risoluzione x profondità del colore
Compressione delle immagini
Esistono tecniche di compressione delle immagini che consentono di ridurre la dimensione dello spazio occupato. Formati compressi lossless, cioè senza perdita di informazione: gif, tiff, png Formati compressi lossy, cioè con perdita di informazione e l'immagine compressa è degradata in qualità rispetto all'originale: jpeg, png. Essa permette di risparmiare molto più spazio. Codifica delle immagini →la codifica BMP oggi è usata raramente e si preferisce JPG perché è meno pesante anche se BMP ha una qualità superiore rispetto a JPG poiché ogni pixel ha il proprio colore specifico e maggiore risoluzione. Codifica delle immagini in movimento →codifica di sequenze di immagini, dette fotogrammi o frame. Ne esistono vari formati, soprattutto lossy: mpeg, divx, avi, quicktime, …
Codifica dei suoni
Il suono è uno dei mezzi principali di comunicazione. Anche i suoni possono essere codificati in digitale. Un suono è un’onda di pressione che si ha in presenza di un mezzo (l’aria, l’acqua). Quando un suono viene rilevato dall’orecchio o da un microfono, viene trasformato in uno stimolo, o segnale, elettrico. Durata, intensità e variazione nel tempo della pressione dell'aria sono le quantità fisiche che rendono un suono diverso da ogni altro. I suoni possono essere rappresentati in un asse cartesiano e l'intensità del suono viene rappresentata in funzione del tempo. Tempo e intensità sono quantità analogiche. Per passare da una rappresentazione analogica a digitale, si effettuano dei campionamenti sull'onda, cioè si misura il valore dell'onda a intervallo costanti di tempo, e si codificano in forma digitale le info numeriche estratte da tali campionamenti. Maggiore è la frequenza dei campionamenti, migliore sarà la precisione con cui il segnale viene memorizzato e la fedeltà all'originale. Quando digitalizziamo un segnale (come la musica), dobbiamo fare due passaggi:
- Discretizzazione nel tempo : prendiamo campioni del segnale a intervalli regolari.
- Discretizzazione in ampiezza : ogni campione viene avvicinato al livello più vicino e rappresentato con una sequenza di bit. Così otteniamo una serie di numeri binari che rappresentano il segnale. CD audio : 44.100 campioni al secondo, 16 bit per campione MP3 : formato compresso (lossy), molto usato MIDI : codifica note e strumenti, non registra la voce.
ARCHITETTURA DEL COMPUTER
Funzionamento ad alto livello →all’avvio dell’elaboratore, programmi e dati risiedono in memoria secondaria. I programmi, per essere eseguiti, devono essere portati portati in memoria principale. Così anche i dati. La CPU, Central Processing Unit, esegue i programmi seguendo le istruzioni di cui sono composti. Avviene l’input e output e la memorizzazione su memoria secondaria. Vari componenti : RAM → hardware. Per memorizzare un bit usa due diverse cariche elettriche, una carica per lo 0 e una per l’1.
LA MEMORIA PRINCIPALE
- Insieme alla CPU è una componente fondamentale del calcolatore. Permette di memorizzare sia il programma che i dati.
- Fisicamente è formata da componenti elettronici (transistor, resistenze, condensatori) miniaturizzati.
- Ogni unità elementare può trovarsi a due livelli diversi di tensione elettrica: corrispettivo del bit.
- Strutturata in una sequenza di celle (o locazioni) di memoria. Ogni cella memorizza un byte. Le celle sono numerate in sequenza: indirizzo
- operazioni che si possono compiere sulla memoria: lettura del contenuto di una cella e scrittura di un contenuto in una cella Specificando l'indirizzo di una cella, la CPU può leggere e/o modificare il valore del byte memorizzato in quella cella.
Dimensioni della RAM
- la dimensione della RAM esprime il numero di celle disponibili.
- si misura in (Mega/Giga) Byte
- la dimensione della RAM influisce sulle dimensioni dei programmi e dei dati che si possono caricare contemporaneamente in memoria – un computer con poca RAM è tipicamente lento perché deve continuamente liberare memoria per fare posto. Se è troppo poca può diventare talmente lento da essere inutilizzabile.
- i pc attuali hanno RAM intorno a 8GB. Spazio di indirizzamento →il processore può scrivere una sequenza di 8 bit in una cella di memoria principale e leggere una sequenza di 8 bit da una cella di memoria principale. In entrambi i casi, deve specificare l'indirizzo della cella. Per ragioni di rapidità il processore deve poterlo comunicare in “un colpo solo” alla memoria e l'indirizzo deve avere una lunghezza prefissata. Limitando tale lunghezza, limito anche il numero di indirizzi che posso esprimere. Il numero di celle indirizzabili è detto spazio di indirizzamento. Gli attuali pc usano 32 bit o 64 bit per gli indirizzi. Dimensioni della memoria → l'unità di misura è il byte e si usano i suoi multipli: Kilobyte (= 1024 byte); Megabyte (= 1024 KB); Gigabyte (= 1024 MB)
RAM
- Random Access Memory →così chiamata perché si può accedere direttamente alle varie celle, una volta noto il loro indirizzo. Il tempo necessario per accedere ad una cella è lo stesso, indipendentemente dalla posizione della cella nella sequenza. Il termine “random” indica proprio il fatto che non vi sono differenze nell’accesso alle varie celle della memoria.
- è veloce →il tempo di lettura/scrittura di una cella è compreso tra 5 e 30 nanosecondi.
- è volatile →formata da due componenti elettronici; se viene tolta l'alimentazione anche per un breve periodo di tempo tutto il contenuto della RAM, viene perso.
- normalmente un pc è già dotato di RAM ma si può espandere aggiungendo una scheda di memoria se c’è posto oppure sostituendo una delle schede presenti con una più grande. Ma per farlo bisogna fare attenzione alla compatibilità poiché esistono vari modelli con diversi parametri fisici che potrebbero non essere compatibili con quelli del proprio pc.
ROM
- Read-Only Memory →memoria a sola lettura
- non può essere modificata e non è volatile
- veloce quasi quanto la RAM
Si differenziano per classe, frequenza di clock, numero di “core” e dimensione dei registri:
- classe →indicata dal nome del produttore e da una sigla (es. per il produttore Intel, la sigla può essere una sequenza di numeri o un nome come Core i9, Celeron, …)
- frequenza di clock →principale indice della velocità del computer perché indica quanti cicli di esecuzione la CPU può svolgere nel singolo secondo. Si misura in Hertz (1 Hz = 1 ciclo al secondo; 1 GHz = un miliardo di cicli al secondo)
- numero di “core” →nei microprocessori un singolo circuito integrato può contenere al suo interno varie CPU.. maggiore è in numeri di CPU che lavorano in parallelo, maggiore la velocità del processore e quindi del computer.
- dimensione dei registri →indica quanti dati vengono elaborati ad ogni ciclo di clock e determina la velocità del processore, dato che influenza la frequenza di scambio di informazioni tra CPU e RAM; la dimensione attuale può essere di 32 bit o 64 bit e si parla quindi di processori con architettura a 32 o 64 bit. Parametri da verificare per acquistare una CPU: frequenza, dimensione della memoria cache e dimensione della word (bus) Salto condizionale →questa istruzione permette di modificare l’ordine con il quale la CPU legge le istruzioni registrate in memoria. Il salto condizionale scrive nel Program Counter un indirizzo di memoria diverso da quello programmato, permettendo di saltare ad un'istruzione diversa. Antepone a tale operazione una verifica su un dato e la esegue solo se il test ha un risultato positivo. L’istruzione di salto condizionale è ciò che rende i computer potenti. In particolare permette di scrivere istruzioni diverse per trattare circostanze diverse.
La memoria cache
- componente accessoria delle CPU →non è indispensabile ma ormai ce in tutte le CPU
- è una via di mezzo fra la memoria principale e i registri →la memoria principale è poco costosa ma troppo lenta. I registri sono molto veloci ma troppo costosi
- “deposito intermedio” per dati che vengono usati molto di frequente ma devono essere tolti di registri per motivi di spazio
- “cache” = dal francese nascondere
- una memoria cache di dimensioni maggiori velocizza il computer
Bus
- linea di comunicazione per la trasmissione di info tra i vari componenti del sistema, che sono tutti collegati al bus
- fisicamente è un insieme di collegamenti di rame che trasportano dati e segnali di controllo
- il bus di sistema collega la CPU agli altri dispositivi del computer
- bus locale →evoluzione del bus di sistema, per il collegamento di CPU, memoria e periferiche veloci
- Per determinare la velocità di elaborazione è importante considerare anche l’ampiezza del bus che indica il numero di bit che possono essere trasferiti contemporaneamente. Oggi i bus più comuni hanno un’ampiezza di 64 bit.
Collegamento: le PORTE
Le periferiche sono collegate fisicamente alla scheda madre tramite le porte, dette anche interfacce. Alcune sono periferiche esterne si possono attaccare/staccare e sono maneggiabili dall’utente e altre sono periferiche interne e quindi pensate per non essere scollegate
- prese a cui si collegano i dispositivi e sono attaccate alla scheda madre
- diversi tipi di porte, che si differenziano per quantità di info che lasciano passare; velocità di trasferimento delle info; alcune permettono di alimentare i dispositivi. Ciascun tipo di porta ha una presa a cui corrisponde uno specifico connettore. Due famiglie di porte:
- porte parallele →i bit che arrivano dalla periferica vengono trasferiti contemporaneamente al PC
- porte seriali →i bit che arrivano dalla periferica vengono trasferiti uno per volta al PC
LA MEMORIA SECONDARIA
- rispetto alla RAM, è permanente: evita di dover reinserire ogni volta dati e programmi
- meno costosa e con maggiori dimensioni
- più lenta: non un problema perché i programmi da eseguire e i dati da elaborare vengono di volta in volta trasferiti in RAM
- i programmi e i dati risiedono in memoria secondaria e quindi devono essere copiati in quella principale. Quando si esegue il programma, il sistema operativo lo copia dalla memoria secondaria ( es. hard disk) e lo scrive dentro la RAM → l’operazione si chiama loading o caricamento.
- la memoria secondaria è composta da: ● supporti di memorizzazione →componente fisico in cui vengono immagazzinati i dati (DVD)
● dispositivi di memorizzazione →leggono/scrivono dati dal/sul supporto di memorizzazione (lettore DVD)
1. registrazione magnetica ⇒ la testina emette impulsi elettrici che invertono la polarità della superficie del supporto; 0 e 1 corrispondono a superficie magnetizzata e non-magnetizzata. Usata di solito per memorizzare dati su dischetti, dischi rigidi e nastri. 2. registrazione ottica ⇒ il laser crea scanalature sulla superficie del disco; 0 e 1 corrispondono a superficie scanalata e non-scanalata. Di solito per CD e DVD. 3. registrazione allo stadio solido (o flash) ⇒ si creano dei circuiti; 0 e 1 corrispondono a circuiti aperti e chiusi > le memorie ssd sono quelle ad accesso più veloce. Usata soprattutto in dispositivi di piccole dimensioni, come macchine fotografiche, telefono, schede intelligenti, …
- hard disk ⇒memoria secondaria per eccellenza. Magazzino sempre disponibile per programmi e dati. Memoria di tipo magnetico. Permette di leggere e scrivere dati liberamente. La sua dimensione influisce sulla quantità di dati e programmi che si possono immagazzinare. Attualmente i pc hanno circa 500GB di hard disk. Collegamento e comunicazione tra hard disk e CPU →gli hd sono delle periferiche e quindi seguono gli stessi principi di esse. Gli hd sono di solito interni al pc ma ne esistono anche di esterni, collegati tramite porta USB. Indirizzamento in memoria secondaria: per accedere alla memoria secondaria si deve specificare un indirizzo. Le unità indirizzabili in RAM sono celle mentre quelle indirizzabili in memoria secondaria sono dette blocchi, molto più grandi (1 blocco = 1 KB mentre 1 cella = 1 B) poiché la memoria secondaria è più grande della RAM e perché la scrittura/lettura è più lenta e quindi è meglio trasferire più dati (da m.s. a RAM) in una operazione unica. Organizzazione dati su disco magnetico → i dischi magnetici sono supporti di plastica, vinile o metallo su cui è depositato del materiale magnetizzabile. La polarizzazione può essere positiva (bit = 1) o negativa (bit= 0). La magnetizzazione è permanente fino a quando non viene modificata per effetto esterno. Meccanismo di lettura/scrittura: il disco viene mantenuto ad una velocità di rotazione costante e quando si deve leggere/scrivere, una testina viene posizionata sul punto desiderato. Il disco gira e la testina posta solo in senso radiale. La memoria magnetica →sfrutta il fenomeno fisico della polarità. La ricerca di un dato su un disco comporta un certo tempo che dipende da due fattori: tempo di ricerca (SEEK), che indica quanto impiega la testina a posizionarsi sulla traccia desiderata, e il tempo di latenza (ROTATION LATENCY), che indica quanto impiega il disco a ruotare fino al settore desiderato.
- CD e DVD ⇒serve un dispositivo per leggerli e la scrittura è un po’ problematica perché richiede un masterizzatore. Sono usati per archiviare stabilmente delle info o distribuire dati/programmi che servono a più pc. La memoria ottica sfrutta la riflessione della luce di un laser. Sul supporto sono presenti delle minuscole scanalature (pit) che formano zone chiare e zone scure.
DISPOSITIVI DI INPUT E OUTPUT
Si definiscono periferiche in quanto sono esterni al computer. INPUT : servono ad immettere programmi e dati necessari all’elaborazione
1. tastiera →principale dispositivo usato per inserire i dati ed è collegata al case tramite porta PS2 o USB o è integrata, nel caso dei portatili. Lo standard più diffuso comprende 103 tasti. Si dice QWERTY in base alle prime sei lettere che si trovano a sinistra nella fila più in alto. Quando l'utente preme un tasto, un codice binario corrispondente all'evento viene ricevuto dal processore. Questa info viene elaborata e trasformata: nel carattere corrispondente se si tratta di un tasto-carattere o in un segnale di stato se si tratta di un tasto con funzione particolare (shift, ctrl, …). Ci sono tastiere diverse in base all'ordine delle lettere (qwerty, …) o numero di tasti. 2. mouse e touchpad →il mouse è collegato ad un software che rileva il movimento della pallina o del led che sta sotto il mouse, preleva le coordinate e crea in corrispondenza un indicatore sullo schermo. Può avere dei tasti con varie funzioni. Il touchpad sostituisce il mouse nei portatili ed è collegato ad un software che capta il movimento del dito e crea un indicatore sullo schermo. 3. webcam e scanner →la webcam è una piccola telecamera integrata di solito nel monitor che permette di acquisire e riprodurre immagini video. Lo scanner consente di acquisire in modalità ottica una superficie piana, di interpretarla come insieme di pixel e restituirne l'immagine digitale. La sua qualità dipende da risoluzione, numero di colori e velocità di scansione. 4. microfono, fax, …
Anche in questo senso il Sistema operativo realizza una macchina virtuale con cui l’utente interagisce, cioè mostra una macchina potenzialmente più potente di quella fisica. Proprio la gestione efficiente delle componenti fisiche determina questa impressione dell’utente di interagire con una macchina più potente. Ad esempio, un Sistema multi-utente (utilizzabile da più utenti contemporaneamente) può essere in pratica realizzato come un singolo computer potente a cui sono collegati dei terminali (stupidi) che di fatto sfruttano tutti le stesse risorse (ad es. stampante, memoria) del singolo computer potente. Per fare si che ogni utente del Sistema abbia la sensazione di avere una macchina potente a lui completamente dedicata, il Sistema operativo può nascondere ad ogni utente la presenza di altri. Il Sistema operativo esegue un comando seguendo i seguenti passi:
- verifica se si tratta di un comando valido
- lo traduce per la macchina fisica
- eseguito il comando: a) fornisce un riscontro all’utente b) si pone in attesa di un nuovo comando da parte dell’utente Funzioni del Sistema operativo
- Accensione e configurazione della macchina (bootstrap) →Il primo compito fondamentale del Sistema operativo è l’avvio del computer, il bootstrap. Senza il Sistema Operativo, il computer una volta acceso, non sarebbe in grado di iniziare a funzionare, ricevere ed elaborare dati e programmi. Primo problema: La CPU esegue esclusivamente programmi in memoria principale RAM volatile > è vuota quando si accende il computer quindi non può contenere il Sistema operativo o programmi Prima soluzione: Mettiamo i programmi in memoria secondaria Secondo problema: Per caricare i programmi dalla memoria secondaria nella RAM dobbiamo usare il sistema operativo. Ma il Sistema operativo non può stare nella RAM > la RAM è vuota quando si accende il computer Seconda soluzione: Usiamo un piccolo programma (BIOS), molto semplice, che ha il compito solo di caricare (la prima parte de) il Sistema operativo dalla memoria secondaria nella RAM Terzo problema: La CPU esegue esclusivamente programmi in memoria principale •RAM volatile Terza soluzione: Memorizziamo il BIOS in una parte della memoria principale non volatile: la ROM Dubbio: Non possiamo memorizzare direttamente tutto il Sistema operativo nella ROM? Risposta: No, perché la ROM è di sola lettura: contiene solo programmi/dati che non è necessario cambiare. Applicativi e Sistema operativo devono poter cambiare e aggiornare(upgrade, patch, …) La prima parte del Sistema operativo che viene caricata nella RAM comprende in particolare:
- i programmi per gestire processi e CPU
- i programmi per gestire la memoria
- i programmi per gestire periferiche di input e output
- i programmi per gestire il File System
- il programma che crea l'interfaccia (grafica o testuale) utente All’avvio, vengono anche identificati tutti i dispositivi di memoria secondaria e tutte le periferiche e vengono avviati i relativi programmi di gestione (driver). Alcuni sistemi verificano anche lo stato delle risorse hardware, per esempio lo stato dei dischi (presenza di errori nel file system?)
- Interazione tramite interfaccia utente e linguaggio ad alto livello → Il principale obiettivo del Sistema operativo è la creazione dell’ambiente virtuale (macchina virtuale) che facilita l’interazione uomo – macchina, cioè crea un ambiente di lavoro in cui l’utente interagisce senza difficoltà con il computer. Questo obiettivo il Sistema operativo lo raggiunge in primo luogo creando un’interfaccia intuitiva, dove l’utente può usare comandi semplici per ottenere i risultati che vuole ottenere dal computer. L’interfaccia utente consente al computer di interpretare le richieste dell’utente nelle varie applicazioni tramite dei comandi. Vari tipi di interfaccia rappresentano varie modalità di interazione tra utente e macchina:
- Un tempo esistevano solo interfacce a comandi testuali, in cui l’utente doveva digitare dei comandi
- Oggi utilizziamo soprattutto interfacce grafiche (GUI graphic user interface) in cui il mouse viene utilizzato per impartire i comandi, il click del mouse su un’icona è tradotto in una sequenza di istruzioni. Il desktop che simula la scrivania è un tipico esempio di ambiente virtuale creato per l’utente. In questo ambiente troviamo con facilità tutto quello che ci serve e lo possiamo organizzare secondo le nostre preferenze. Anche l’organizzazione della
memoria nel file system è frutto della macchina virtuale, perché i file nella memoria del computer non si trovano affatto nell’ordine in cui li vediamo noi!
3. Gestione delle memorie (principale e virtuale) →due problemi fondamentali: - multiprogrammazione →più programmi in memoria contemporaneamente. Come lasciare a ciascuno il proprio spazio senza che si modifichino i dati a vicenda per errore? Per tenere più programmi in memoria: ● si divide la memoria in partizioni → Una partizione è individuata da un indirizzo di inizio partizione (base) e uno di fine partizione (limite). Esistono partizioni fisse con una dimensione decisa a priori e il problema potrebbe essere uno spreco di memoria (frammentazione interna, con uno spreco all'interno di ciascuna partizione o esterna, con uno spreco complessivo). Esistono poi partizioni variabili con una dimensione decisa al momento del caricamento. Più difficile da gestire ma più flessibile ma la frammentazione esterna può esistere comunque. ● allocazione contigua : ciascuna partizione deve contenere interamente un programma con i suoi dati →le partizioni sono in generale poco flessibili e se non azzecco la dimensione esatta per la partizione, il programma potrebbe non riuscire a girare. Però in un sistema più flessibile l’allocazione non è contigua e i programmi vengono spezzettati e quindi si dovrebbe memorizzare per ciascun pezzo dove viene a trovarsi in memoria. - programmi e/o dati di grandi dimensioni →alcuni programmi potrebbero essere troppo grandi per essere contenuti in RAM. O i dati che essi elaborano potrebbero essere troppo grandi – Esiste un modo che permetta a programmi in queste condizioni di funzionare ugualmente? Memoria virtuale → tipo di gestione della memoria adottato da tutti i sistemi operativi moderni. Fa «credere» di avere più memoria di quanta fisicamente disponibile (quindi virtuale). Si basa su 2 principi: non occorre mantenere sempre in memoria tutti i programmi in esecuzione. Le parti dei programmi meno usate si possono spostare sulla memoria secondaria Swapping →i processi sono in esecuzione uno alla volta: quando un processo non è in esecuzione posso toglierlo dalla RAM. Quando ritorna in esecuzione lo riporto alla RAM spostando un altro processo. Se si utilizza frequentemente una quantità di memoria virtuale molto più grande della memoria fisica avviene il Thrashing ⇒ il sistema operativo impiegapiù tempo a trasferire le pagine da e su disco che a effettuare lavoro utile → ’harddisk viene usato intensamente e il computer è inutilizzabile. La soluzione è aumentare la quantità di RAM oppure usare meno programmi contemporaneamente. 4. Gestione delle informazioni sulla memoria secondaria (file system) →la memoria secondaria serve per memorizzare programmi e dati in modo permanente. Il concetto è quello di file, un insieme di info omogenee che vengono memorizzate insieme e a cui viene associato un nome. Esistono: - file di programma →contengono istruzioni che possono venire eseguite dal processore. Un programma è solitamente fatto da più file. Installazione = copiatura ordinata dei file che costituiscono il programma e registrazione del nuovo programma presso il sistema operativo. Disinstallazione = cancellazione dei file e de-registrazione. Esecuzione = caricamento in memoria del file principale e creazione del processo corrispondente. - file di dati →detti anche documenti e contengono i dati dell'utente. A seconda del tipo di documento (immagine, testo, …) esso potrà essere creato o elaborato con programmi specifici. File system = parte del sistema operativo che si occupa di gestire e strutturare le info della memoria secondaria. Deve fornire una visione astratta dei file su disco in modo che l'utente abbia la possibilità di: identificare ogni file con un nome astraendo dalla sua posizione nella memoria; avere un insieme di operazioni per lavorare sui file; strutturare i file, organizzandoli in sottoinsiemi secondo le loro caratteristiche; effettuare l’accesso alle info mediante operazioni ad alto livello. Inoltre permette di intervenire sull'organizzazione dei documenti. Denominazione dei file: scegliere nomi che abbiano senso; non usare caratteri speciali; si può modificare (solo i documenti, non file di programma); l'estensione indica il tipo di file e solitamente è di tre lettere (.lib, .dll, .exe sono tipiche di file di programma mentre .txt per i testi e .bmp per immagini). Il programma con cui creiamo i documenti ne sceglie l'estensione, che identifica la tipologia di info in esso contenute. Organizzazione dei file : devono essere organizzati in memoria secondaria affinché siano reperibili. Il primo passo è associare a ciascun file una denominazione che permette di identificarlo. Se i file sono molti, dargli un nome non è sufficiente ma bisogna creare una cartella (folder o directory) che è un file speciale che funziona come un contenitore. Due file in due cartelle diverse possono avere lo stesso nome perchè a distinguerli e la cartella di appartenenza.
Throughput →massimizzare il numero di programmi che vengono eseguiti nell’unità di tempo in modo che il processore svolga il massimo lavoro possibile Turnaround →minimizzare il tempo di esecuzione dei processi Preemption → politiche non-preemptive , in cui il processo in esecuzione può essere sostituito solo se si ferma volontariamente, magari in attesa di un'operazione di I/O. politiche preemptive , in cui il sistema operativo può decidere di bloccare un processo per mandarne in esecuzione un altro _Scheduling ⇒_* First Come First Served o First In First Out – politica non-preemptive in cui i processi sono eseguiti nell'ordine in cui vengono sottomessi al sistema. La coda dei processi pronti viene gestita selezionando il prossimo processo da mandare in esecuzione dall’inizio della coda, e inserendo in fondo alla coda i processi pronti. Quindi, ogni volta che il processore è libero, viene selezionato e mandato in esecuzione il primo processo della coda.
Sistemi multitasking ⇒ Il passaggio da un processo ad un altro è detto context switch. Il SO decide in merito agli
scambi di contesto tramite una sua componente detta scheduler (e per questo si parla di scheduling dei processi) che invierà le decisioni al dispatcher che eseguirà il cambio di contesto. Lo scheduler quindi controlla la ripartizione del tempo di CPU tra tutti i processi attivi, seguendo una delle due tecniche implementative del multitasking: senza prelazione ( cooperative ) e con prelazione ( preemptive )
- Multitasking senza prelazione (cooperative) → iprogrammi cedono il controllo al SO una volta finita l'operazione in corso (Mac OS fino alla versione 9, o di Windows 3.0 e 3.1). Vantaggio: non serve nessun supporto hardware e si può implementare su ogni tipo di architettura. Svantaggio: un singolo programma che non cede il controllo (es. fermo per errore) blocca il computer. Lo scheduler attua il context switch quando un programma passa dallo stato di esecuzione allo stato di attesa o un programma termina.
- Multitasking con prelazione (preemptive) → laprelazione avviene grazie a strutture hardware integrate nel microprocessore. Lo scheduler in questo tipo di multitasking interviene nelle circostanze previste da uno scheduler senza prelazione, ma anche quando un programma passa dallo stato di esecuzione allo stato di pronto o un programma passa dallo stato di attesa allo stato di pronto. Svantaggio: il multitasking con prelazione richiede una piattaforma hardware adeguata, con gli strumenti necessari. Vantaggio: il context switch è molto più efficiente favorendo l'adozione di quanti di tempo regolari per i processi e una esecuzione più "fluida" dei vari processi, senza il rischio di blocchi dovuti a errori. Per questo il preemptive multitasking è stato adottato dalla maggior parte dei sistemi operativi moderni. 6. Gestione delle periferiche di input e output → La gestione delle periferiche, che avviene tramite i driver, comporta:
- Aggiornamento costante sullo stato delle periferiche (libere / occupate)
- Decisioni in merito all’assegnazione delle periferiche (nello scheduling dei processi)
- Controllo delle periferiche quando non occupate (es. quando il processo ne termina l’utilizzo) Un driver è un software che permette al Sistema Operativo di comunicare con una periferica hardware, traducendo i comandi del Sistema Operativo in istruzioni adatte all'hardware della periferica. Ogni driver è specifico di una periferica e di un Sistema Operativo perché ogni tipo di hardware ha un proprio linguaggio e una propria interfaccia. Ad esempio, collegando una stampante al computer, il driver della stampante permette al Sistema operativo di inviare i dati da stampare nel formato corretto che la stampante può processare. 7. Supporto per i programmi applicativi (installazione, accesso alle risorse di sistema) →Il Sistema operativo supporta la restante parte del software (il software applicativo) fornendo molti servizi e risorse che permettono alle applicazioni di funzionare correttamente e senza dover interagire direttamente con l'hardware del computer. Il Sistema operativo supporta i programmi applicativi:
- in fase di installazione e disinstallazione
- tramite l'interfaccia utente
- durante l’esecuzione Il sistema operativo gestisce al meglio l’installazione e disinstallazione dei programmi applicativi andando a collocarne in memoria le diverse parti e configurando i file necessari al loro corretto funzionamento. Il Sistema operativo offre l'interfaccia utente che consente agli utenti di interagire con il software applicativo semplicemente cliccando su icone o digitando sulla tastiera. Il Sistema operativo supporta i programmi durante l’esecuzione in vari modi:
- gestisce l'accesso alla CPU, assegnando i cicli di elaborazione alle applicazioni con lo scheduling dei processi
- gestisce la memoria RAM, allocando e liberando spazio per le applicazioni, evitando che un'applicazione interferisca con un'altra
- fornisce una gestione centralizzata dei dispositivi di input e output che i programmi applicativi utilizzano Il Sistema operativo supporta i programmi durante l’esecuzione in vari modi:
- controlla gli accessi facendo sì che ogni applicazione o utente acceda solo a determinate risorse o compia determinate azioni
- isolando i processi relativi ad ogni applicazione, in modo che venga eseguita in un proprio spazio di memoria, non avendo così modo di alterare un'altra applicazione o il Sistema operativo stesso. Esistono molti tipi di software applicativo che si classificano in base alla funzione che svolgono: calcolo, elaborazione di testi, gestione di database, elaborazione di immagini, creazione di presentazioni, intrattenimento, navigazione in Internet. E per ogni tipo esistono prodotti costruiti da aziende diverse o da gruppi di sviluppatori indipendenti. 8. Spegnimento (shutdown) →durante il suo funzionamento il computer utilizza dati temporanei che vengono mantenuti nella RAM e salvati a richiesta o ciclicamente nella memoria secondaria. Lo shutdown consente di:
- copiare le informazioni utili presenti nella RAM dentro la memoria secondaria
- eliminare le informazioni non necessarie
- i canali di I/O aperti vengono chiusi. Se lo shutdown incontra problemi (es., guasto, black-out) possono perdersi informazioni utili.
CLASSIFICAZIONE IN GENERALE DEL SOFTWARE
1. Copyright vs Copyleft Copyright = coperto dai diritti d'autore. Una volta venutone in possesso non posso copiarlo, modificarlo, rivenderlo… ● commerciale →occorre acquistarlo ● shareware →gratuito solo per un periodo di prova ● freeware →disponibile gratuitamente Senza copyright = software di pubblico dominio non coperto dai diritti di autore 2. Software proprietario vs Software “open source” Software proprietario = il codice sorgente (istruzioni) è tenuto segreto Software "open source" = il codice sorgente è liberamente disponibile (modificabile, migliorabile, …) Software libero →libertà dell’utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software. Quattro tipi di libertà: - libertà di eseguire il programma - libertà di studiare come funziona il programma e adattarlo alle proprie necessità - libertà di ridistribuire copie in modo da aiutare il prossimo - libertà di migliorare il programma e distribuirne i miglioramenti. Tipici fraintendimenti del software libero: - il software è spesso gratuito ma non è detto che lo sia - il software gratuito non è per forza libero – molte aziende divulgano software gratuitamente per vendere altri prodotti, per attirare clienti o per porre fuori gioco un concorrente. Si ha gratuitamente l’uso del software ma non si può modificare o ridistribuire. Linux →sistema operativo open source gratuito. Tutti possono accedere, copiare programmi e modificarli o eliminare malfunzionamenti… LE RETI INFORMATICHE
RETI DI CALCOLATORI
Una rete è un insieme di calcolatori, altri dispositivi di calcolo e dispositivi di rete, connessi fra loro tramite collegamenti. In una rete di calcolatori, i collegamenti consentono ai calcolatori, agli altri dispositivi di calcolo e a quelli di rete di comunicare fra loro. Tali collegamenti sono il mezzo attraverso cui passano le comunicazioni in una rete di calcolatori Nelle reti, oltre a calcolatori e dispositivi di rete troviamo anche dispositivi quali telefoni cellulari, "smartphone", telefono VoIP , PDA, televisori e altri elettrodomestici, ecc. Si costruiscono reti di calcolatori per:
- scambio di informazioni e comunicazione fra utenti (es. email, newsgroup, blog, messaggistica online, social network, ecc.)
- condivisione e accesso remoto a risorse (es. risorse hardware quali, ad es., hard disk, stampanti e altre periferiche; risorse Web; file; basi di dati, ecc.)
- accesso remoto a servizi software (es. Mappe Google, applicazioni software fruibili secondo modello SaaS [Software as a Service], ecc.)
- elaborazione distribuita (es. suddivisione di un problema in sottoproblemi e risoluzione dei sottoproblemi distribuita fra vari calcolatori, ecc.)
- aumento della tolleranza ai guasti (un sistema di calcolo costituito da diversi calcolatori in rete è generalmente più tollerante ai guasti rispetto ad un singolo calcolatore)
- connessioni →collegano tra di loro i dispositivi, compresi gli host. Principali tipi di connessione: 1. doppini (tipo quelli usati nella rete telefonica classica): costituiti da coppie di cavi di rame intrecciati. Informazione trasmessa per mezzo di segnali elettrici. Molto economici. Molto usati nelle LAN. Soggetti ad interferenza elettromagnetica. 2. cavi coassiali (tipo quelli usati per condurre il segnale televisivo dall’antenna alla TV): costituiti da due mezzi conduttori concentrici (di qui il termine “coassiale”), separati da un isolante (il tutto ricoperto da una guaina). Informazione trasmessa per mezzo di segnali elettrici. Soggetti ad interferenza elettromagnetica. 3. fibre ottiche: informazione trasmessa per mezzo di segnali luminosi. Molto veloci. Molto usati soprattutto nelle “dorsali” Internet (ma non solo). Immuni da interferenza elettromagnetica. 4. onde elettromagnetiche: realizzano le cosiddette connessioni “wireless”. Tipicamente, sono onde radio (con varie distanze di propagazione: aree circoscritte sulla superficie terrestre; vaste aree sulla superficie terrestre; comunicazioni satellitari).
Componenti di Internet
- ISP (Internet Service Provider) → potrebbe essere istituzionale (per esempio, le compagnie telefoniche), aziendale, universitari ecc. Contiene un insieme di collegamenti e commutatori di pacchetto. Fornisce ai sistemi terminali vari tipi d’accesso ad Internet (a banda larga, senza fili ecc.) Fornisce anche ai fornitori di contenuti l’accesso a Internet (per connettere un sito web a Internet).
Client/server
Host possono essere identificati come client e/o server. Client → il computer che richiede servizi da un altro computer. Normalmente: i PC, gli smartphone, ecc. Server → il computer che fornisce un servizio a un client. Normalmente: computer potenti. Il concetto di client / server si applica sia alle reti locali sia alla rete Internet. Esempi di server (in una rete locale):
- server gestore dei dati (file server): gestisce la memorizzazione e la condivisione di dati.
- server di stampa (printer server): gestisce le stampanti disponibili nella rete.
- server di comunicazione: permette l’accesso ad altre reti locali o ad Internet Esempio di server (in Internet):
- web server: risponde alle richieste per accedere a una pagina web.
- server di posta elettronica: riceve e memorizza email, permette la lettura della casella di posta elettronica. In un certo (lungo) intervallo di tempo: un host può essere client di molti server e un host può essere server di molti client. es. un client può richiedere tanti siti web, un web server può fornire una pagina web a tanti client.
Comunicazione tra host
Gli host (o meglio le applicazioni che stanno su di essi) comunicano fra loro tramite “commutazione di pacchetto”:
- Quando partono dal mittente, i messaggi più grandi vengono spezzati in “blocchetti”+
- Ogni blocchetto viene “impacchettato” cioè associato ad una serie di informazioni, ad esempio: indirizzo di origine; indirizzo di destinazione: numero di sequenza; tipo di protocollo; dimensione del pacchetto; controllo di errore
- I pacchetti vengono inoltrati (indipendentemente l’uno dall’altro) verso la destinazione...l’infrastruttura costituita dalle varie reti, dai collegamenti fra i sistemi terminali e Internet e la rete di router che costituisce il nucleo di Internet è la responsabile dell’inoltro dei vari pacchetti dal mittente verso il destinatario
- presso il destinatario, dai pacchetti vengono estratti i “blocchetti” costituenti il messaggio originale e, grazie alle informazioni associate, quest’ultimo viene ricostruito. Un’altra strategia di comunicazione è la “commutazione di circuito”. È la strategia applicata nella linea telefonica: Viene riservato un circuito di canali di comunicazione punto a punto su ogni connessione lungo tutto il cammino dal mittente al destinatario. Il vantaggio è che il circuito riservato consente sempre la comunicazione veloce, ma il circuito risulta occupato anche quando non si scambiano dati e all’aumentare delle comunicazioni si possono creare colli di bottiglia. Applicazioni e comunicazione Internet non è un sistema fine a se stesso: è stata costruita per realizzare particolari applicazioni come il controllo in remoto di un host da parte di un utente (per mezzo di un’interfaccia utente locale), o il trasferimento di file fra calcolatori (anche) fisicamente distanti fra loro. Nel corso degli anni, sono state realizzate numerose nuove applicazioni Internet, come la posta elettronica, i newsgroup, il Web, i social media, ecc.
Tutte le applicazioni Internet sono realizzate per mezzo di processi software che comunicano fra loro. es. nel Web, il (processo software del) browser comunica con (il processo software del) Web server. internet (i minuscola) = rete di (sotto)reti Per connettere due sottoreti per formare una internet, occorre un calcolatore che si possa collegare ad entrambe le sottoreti Il calcolatore che si attacca alle due sottoreti deve essere in grado di fare passare i pacchetti da una sottorete all'altra, quando richiesto. Questi calcolatori che interconnettono due o più sottoreti e che sono capaci di passare i pacchetti da una sottorete all'altra si chiamano internet gateway o internet router. Quando un router inoltra un pacchetto proveniente da una sottorete ad un’altra sottorete svolge IP forwarding. Le reti locali si collegano a Internet tramite un dispositivo chiamato router. I router instradano i pacchetti tra le varie sottoreti. Internet (i maiuscola) = applicazione dell’internet con la i minuscola a tutte le reti del mondo
Naming
Ogni elaboratore in rete deve possedere un nome, altrimenti sarebbe impossibile comunicare con esso (a chi è rivolto un messaggio). Il nome si chiama indirizzo e viene usato per: identificare l’elaboratore e localizzare l’elaboratore nella rete. Un elaboratore possiede due (tipi di) indirizzi:
- indirizzo IP → sononumerici e hanno attualmente un formato a 4 byte. (es. 130.192.156.1). Gli indirizzi IP permettono di localizzare un elaboratore, cioè di sapere a quale parte di Internet è collegato, in modo da recapitare i messaggi. Dovendo essere leggibili da computer, gli indirizzi IP nella pratica vengono scritti in forma binaria. Ogni indirizzo IP è quindi formato da 4 numeri, ognuno delle quali compreso tra 0 e 255. Questo significa che non tutte le sequenze di 4 numeri di massimo 3 cifre possono essere indirizzi IP. Gli indirizzi IP sono utilizzati dai programmi di comunicazione, ma sono ostici per gli umani. Quindi, gli elaboratori in rete possono avere un nome logico , più semplice e intuitivo.
- indirizzo logico → sonocomposti da due o più parti separate da punti, ad es. www.unito.it. Specificano domini, sottodomini, sotto-sottodomini e così via, fino a identificare il singolo elaboratore collegato in rete I domini di primo livello possono essere: geografici (es. www.google.de) o generici, quindi evocano il tipo di ente (università, aziende, ecc…) es. .unito.it : sottodominio di it, che identifica l’Università di Torino .di.unito.it : sotto-sottodominio, che identifica la rete del Dipartimento di Informatica pianeta.di.unito.it : identifica l’elaboratore “pianeta" appartenente al sotto-sottodominio del Dipartimento di Informatica. Domain name system Problema: per localizzare un elaboratore occorre conoscere il suo indirizzo IP: come ottenerlo a partire dall’indirizzo logico? Il DNS è il servizio che gestisce la traduzione tra indirizzi logici e indirizzi I Un unico server DNS per l’intera Internet sarebbe ingestibile, quindi esistono vari server DNS distribuiti sul territorio che realizzano il servizio. I server DNS sono organizzati in una gerarchia. Ogni server DNS mantiene una lista con la risoluzione solo di alcuni indirizzi. Se gli arriva la richiesta di tradurre un indirizzo logico in un indirizzo IP che fa parte della sua lista, manda all’host la traduzione. Se la richiesta riguarda un indirizzo di cui non conosce la traduzione, risale la gerarchia fino ad un server DNS che la conosce. Internet, ISP e dorsali In Italia, come nel resto degli altri paesi del mondo, Internet ha una struttura composta da:
- molti ISP (Internet Service Provider) locali, a cui tutti gli host terminali si collegano (smartphone, computer ecc.)
- uno o più ISP regionali che possono avere estensione variabile, anche di un intero stato. Gli ISP regionali sono collegati a ISP internazionali detti NBP (National Backbone Provider) che collegano le diverse reti nazionali. Nel loro insieme i gestori degli ISP regionali e NBP internazionali formano la dorsale di Internet, la sua struttura portante. Nel caso dell’Italia esiste una dorsale gestita dal consorzio GARR , Gruppo per l'Armonizzazione della Rete della Ricerca.
WORLD WIDE WEB
Servizio basato su internet ma non è internet. Nato all’inizio degli anni ’90 al CERN a Ginevra per permettere agli scienziati di condividere informazioni. Nel mondo oltre 5 miliardi sono i profili sui social media cioè oltre il 62% della popolazione mondiale ha un profilo
- costituito da documenti ipertestuali che si trovano su elaboratori distribuiti in tutto il mondo
- i contenuti dei vari documenti sono in genere collegati fra loro mediante link
- i contenuti sono consultabili mediante programmi chiamati browser
Per ordinare dei documenti in base alla loro rilevanza rispetto ad un argomento dato, un essere umano li legge e ne comprende il significato del contenuto del testo e li ordina di conseguenza. Un computer produce (quasi) lo stesso ordinamento senza comprendere il significato del testo. Un computer si limita a contare da quante pagine è linkata P. Ma il fatto che una pagina sia linkata da altre dimostra indirettamente che il suo contenuto è interessante per più persone. DARK WEB
Deep web
La parte profonda della Rete, Deep Web, è composta da pagine non indicizzate dai motori di ricerca. Una pagina non indicizzata non può essere trovata da un motore di ricerca. Ci sono vari tipi di pagine che non sono indicizzate per validi motivi: le banche dati degli enti governativi o quelle delle aziende, le pagine private dei servizi di home banking o altre che proteggono i contenuti con sistemi di accesso ad esempio basati su password. O pagine appena nate.
Dark web
È una parte ridotta della Rete che può essere raggiunta solo da applicazioni speciali. Nel Dark Web si concentra l’attività più oscura e illegale: spaccio di droga, compravendita di armi o documenti rubati. Stando alle stime dei ricercatori della Nasa, il Dark Web conta decine di migliaia di indirizzi URL. Il Dark Web è fatto di pagine con un dominio .onion, che sono ospitate su dei server utilizzando il protocollo Tor, sviluppato in origine dal dipartimento di difesa statunitense per consentire comunicazioni anonime e sicure. Nel 2004 questo protocollo è diventato di dominio pubblico ed è un buon strumento per proteggere la privacy. Da allora, però, al suo interno è cresciuta anche la privacy di attività illecite. La protezione della privacy dipende dal fatto che la navigazione nel Dark Web avviene in forma anonima, senza registrazione della cronologia. Questo è stato sfruttato anche da gruppi di dissidenti e da individui che si trovano in paesi dove il regime politico impone restrizioni alla libertà personale, come la frequentazione dei social media. Quanto è dark? Nel 2016 due ricercatrici di Terbium Labs, Clare Gollnick e Emily Wilson, hanno selezionato a caso 400 url .onion e poi le hanno suddivise in base a scopo e contenuti. Hanno scoperto che circa la metà di questi siti era legale. MA l’altra metà era illegale e tra questi il 45% aveva a che fare con il commercio di droga, l’11,9% con quello di farmaci, 4,6% erano siti di frodi e un altro 4,6% per cento riguardava operazioni di hacking. Nel Dark Web si trovano anche video pornografici con bambini e adolescenti. Nel 2014 la Polizia Postale italiana ha condotto su Tor l’indagine “Sleeping dogs” che ha portato:
- alla scoperta di fotografie con tre minorenni (il più piccolo dei quali, all’epoca dei fatti, aveva soli tre anni)
- all’arresto di dieci italiani (professionisti, operai, impiegati di banca, di età compresa tra i 24 e i 63 anni, alcuni sposati, alcuni con figli)
- alla scoperta di trenta gruppi di pedofili Navigando nel Dark Web è molto facile imbattersi in virus e malware. Come dimostra l’indagine “Sleeping dogs”, le forze dell’ordine operano un continuo monitoraggio del Dark Web e una semplice visita può essere scambiata per qualcosa di differente. Molti dei servizi e dei prodotti acquistabili nel Dark Web sono delle vere e proprie truffe. Chi subisce un attacco informatico, un attacco malware, un attacco phishing o un furto d'identità rischia di trovare le proprie informazioni private e sensibili rivendute sul Dark Web. Sono disponibili database di dati trafugati illegalmente contenenti username, password, indirizzi email, numeri di telefono che i malintenzionati possono acquistare (tramite bitcoin) per portare a termine attacchi informatici e per ricattare le persone.
LE RETI INFORMATICHE, PROTOCOLLI
(Come colleghiamo i computer?) Tutti I dati che vengono inviati o ricevuti dagli host (punti terminali) della rete vengono trasferiti applicando la commutazione di pacchetto passando tramite vari dispositive fisici e le loro connessioni. Come tutti i programmi anche quelli per il trasferimento in rete diventano processi quando sono in fase di esecuzione. Il trasferimento comporta quindi la comunicazione di processi (perlomeno di invio e ricezione).
Protocolli di comunicazione
Affinché due processi software possano comunicare, è necessario che essi si attengano a dei protocolli di comunicazione. Protocollo di comunicazione = insieme di regole che stabiliscono essenzialmente la gestione dei pacchetti:
- come deve essere strutturato un messaggio
- quali azioni deve compiere il mittente per inviare i messaggi
- quali azioni deve compiere il ricevente quando riceve messaggi Anche la comunicazione fra esseri umani è governata da protocolli! Infatti, perché la comunicazione funzioni: dobbiamo comprendere e formulare frasi (il più possibile) corrette dal punto di vista sintattico e grammaticale; rispettare alcune norme comportamentali e conversazionali I protocolli controllano l’invio e la ricezione di informazione in Internet, e nelle reti in generale:
- usati dai sistemi terminali, i commutatori di pacchetto e altre parti di Internet.
- “un protocollo definisce il formato e l’ordine dei messaggi scambiati tra due o più entità in comunicazione, così come le azioni intraprese in fase di trasmissione e/o di ricezione di un messaggio o di un altro evento.” I principali protocolli in Internet hanno il nome collettivo di TCP/IP: TCP: Transmission Control Protocol. IP: Internet Protocol.I protocolli. Il protocollo usato quando si invia una richiesta per una pagina web:
- Il nostro computer invia la richiesta per una connessione al server web (il computer che fornisce la pagina web)
- Il server web risponde con un messaggio di risposta di connessione
- Il nostro computer invia il nome della pagina che vuole prelevare tramite il messaggio “Get”
- Il server web restituisce la pagina () a nostro computer Un protocollo “monolitico” che realizzi tutte le funzionalità necessarie per la comunicazione tra elaboratori in rete è difficile da realizzare. Inoltre, se cambia qualche componente della rete, si deve modificare l’intero protocollo. Per ridurre la complessità di progettazione la maggior parte dei protocolli è organizzata come una serie di livelli. Il numero dei livelli, il loro nome, le funzionalità differiscono da una rete ad un’altra. Nell’ambito delle reti di calcolatori, vi sono più protocolli di comunicazione. Ogni protocollo di comunicazione regola una parte del complesso meccanismo di comunicazione. I protocolli di comunicazione sono organizzati in una gerarchia (o “pila”): se pensiamo ad un protocollo di comunicazione come alla definizione di un servizio, i protocolli più in alto nella gerarchia possono definire i propri servizi avvalendosi dei servizi definiti dai protocolli che stanno più in basso nella gerarchia. La “gerarchia di servizi” è strutturata in livelli e su ogni livello possono essere presenti più servizi. Un servizio ad un certo livello può usare servizi di livelli inferiori secondo la logica client/server. Vantaggi dell’organizzazione gerarchica:
- Nella realizzazione di un certo servizio ad un dato livello, ci si può concentrare sulle specifiche problematiche di quel particolare servizio e assumere come disponibili tutti i servizi “sottostanti”.
- I servizi di un dato livello possono essere utilizzati per realizzare più tipologie di servizi ai livelli superiori. Il riutilizzo di un servizio sarebbe più complicato (se non impossibile) se ogni servizio inglobasse in sé la realizzazione anche di quelle funzionalità più di base che, per quanto necessarie, non fanno parte del servizio.
- L ’organizzazione in livelli è un buon modo per affrontare un problema complesso suddividendolo in sottoproblemi più semplici: questo facilita la risoluzione del problema complessivo. E’ un'applicazione del principio “divide et impera”, adottato spesso in informatica per risolvere problemi complessi. Il sistema ha un’architettura modulare (moduli che offrono un insieme di funzionalità e che interagiscono fra loro) che ne facilita manutenzione e modifica. La gerarchia di protocolli Internet I protocolli Internet sono organizzati in una gerarchia di cinque livelli. Tali livelli sono stati identificati nel corso della definizione e realizzazione della tecnologia Internet e si riferiscono ciascuno ad un aspetto rilevante del complesso problema di far comunicare due host in un complesso sistema che connette fra loro reti di varia natura e geograficamente distribuite. Ad ogni livello, viene risolta una porzione del problema complessivo. Su ogni livello, possono essere presenti più protocolli. Livelli nella gerarchia di protocolli Internet: applicativo; trasporto; rete; collegamento; fisico. Affinché due nodi (host o dispositivi di rete) possano comunicare, occorre che essi attuino tali regole: su ciascuno dei due nodi comunicanti, ci devono essere delle entità che implementano i protocolli. Un’entità per un protocollo implementa le funzionalità di quel protocollo (realizza il servizio specificato dal protocollo) Le entità possono essere elementi puramente software (come le tipiche le entità per i protocolli applicativi, es. client e server di posta), oppure elementi puramente hardware (come le entità che realizzano i protocolli a livello fisico), o entità ibride software e hardware (come tipicamente avviene per le entità che implementano il livello di collegamento) Su uno stesso nodo (host o router), un’entità ad un certo livello comunica direttamente con un’entità a livello inferiore (per richiederne i servizi) e con un’entità a livello superiore (per passarle il pacchetto) Fra due entità omologhe (cioè che implementano lo stesso protocollo e che, quindi, si situano sullo stesso livello) e che risiedono su nodi diversi la comunicazione è diretta solo nel caso di entità a livello fisico, altrimenti la comunicazione è virtuale (cioè mediata dalle entità a livelli sottostanti). Il Protocollo TCP/IP Il protocollo TCP/IP realizza in particolare la commutazione di pacchetto. Su Internet si può spedire una qualsiasi quantità di informazioni dividendola in una sequenza di piccole unità di dimensione prefissata (i pacchetti IP) che includono:
- dati, destinatario (indirizzo IP) e numero progressivo
- inviati attraverso Internet uno alla volta (possono usare diversi itinerari - ogni pacchetto è indipendente)
- giunti a destinazione sono riordinati
- per ogni pacchetto arrivato integro, viene spedita la ricevuta di ritorno.Il Protocollo TCP/IP