Codifica immagini e suoni

Codifica immagini e suoni

 

 

 

I riassunti , gli appunti i testi contenuti nel nostro sito sono messi a disposizione gratuitamente con finalità illustrative didattiche, scientifiche, a carattere sociale, civile e culturale a tutti i possibili interessati secondo il concetto del fair use e con l' obiettivo del rispetto della direttiva europea 2001/29/CE e dell' art. 70 della legge 633/1941 sul diritto d'autore

 

 

Le informazioni di medicina e salute contenute nel sito sono di natura generale ed a scopo puramente divulgativo e per questo motivo non possono sostituire in alcun caso il consiglio di un medico (ovvero un soggetto abilitato legalmente alla professione).

 

 

 

 

Codifica immagini e suoni

INFORMATICA
Computer = macchina in grado di elaborare dei dati a partire da programmi che descrivono l’elaborazione da compiere.
Il computer memorizza ed elabora informazioni che devono essere rappresentate in una forma gestibile =>  rappresentazione digitale : rappresentare l’informazione per mezzo di bit (cifre 0,1)-> la rappresentazione binaria.  Più in generale “rappresentazione digitale” significa:rappresentare l’informazione per mezzo di (un insieme finito di) simboli.
L’entità minima di informazione che possiamo trovare all’interno di un elaboratore prende il nome di bit (Binary digit – cifra binaria). Un bit può assumere due valori(0 e 1). Le informazioni rappresentate nel sistema binario possono essere elaborate secondo vari criteri e con vari strumenti
In generale: la rappresentazione binaria è basata sulla presenza o assenza di un fenomeno fisico (in un certo luogo, a un certo punto di tempo). Discreta: non esiste alcuna gradazione di valore. Il fenomeno è presente oppure assente, con nessuna via di mezzo.
Codifica dell’informazione => Per poter rappresentare un numero maggiore di informazione si usano sequenze di bit. Il processo secondo cui si fa corrispondere ad un’informazione una sequenze di bit prende il nome codifica dell’informazione.
Codifica binaria: Con 2 bit si codificano 4 informazioni (22). Con 3 bit si codificano 8 informazioni (23).  Con N bit si possono codificare 2n informazioni differenti.
Se il problema è quello di dover rappresentare M informazioni differenti si deve selezionare il numero di N bit in modo tale che 2N  M
Esiste una particolare aggregazione di bit che è costituita da 8 bit (28 = 256 informazioni) e prende il nome di byte.
Di solito si usano i multipli del byte-> Kilo KB 210 (~ un migliaio, 1024 byte); Mega MB 220 (~ un milione, 1KB x 1024); Giga GB 230 (~ un miliardo, 1MB x 1024); Tera TB 240 (~ mille miliardi, 1GB x 1024)
Il metodo di codifica più diffuso tra i produttori di hardware e di software prende il nome ASCII (American Standard Code for Information Interchange).
data una sequenza di bit, il testo che essa codifica può essere ottenuto nel modo seguente:

  • Si divide la sequenza in gruppi di otto bit (byte).
  • Si determina il carattere corrispondente ad ogni byte.

Codifica dei caratteri:  Abbiamo considerato il codice ASCII (8 bit per carattere):  ASCII base: usa solo 7 degli 8 bit (non codifica ad es. i caratteri nazionali); ASCII esteso: usa tutti gli 8 bit.
Altri codici (lunghezza variabile): UTF-8: 8 bit per i caratteri di ASCII esteso, 32 bit per altri caratteri (ampio uso nel WWW); UTF-16: 16 bit per alcuni caratteri, 32 bit per altri (usato, ad esempio, per testo in Microsoft Windows).
CODIFICA DELLE IMMAGINI
=> Suddividiamo l’immagine mediante una griglia formata da righe orizzontali e verticali a distanza costante.
Ogni quadratino derivante da tale suddivisione prende il nome di pixel (picture element) e può essere codificato in binario secondo la seguente convenzione:

  • Il simbolo “0” viene utilizzato per la codifica di un pixel corrispondente ad un quadratino in cui il bianco è predominante.
  • Il simbolo “1” viene utilizzato per la codifica di un pixel corrispondente ad un quadratino in cui il nero è predominante.

La rappresentazione sarà più fedele all’aumentare del numero di pixel, ossia al diminuire delle dimensioni dei quadratini della griglia in cui è suddivisa l’immagine.
Assegnando un bit ad ogni pixel è possibile codificare solo immagini in bianco e nero. Per codificare le immagini con diversi livelli di grigio oppure a colori si usa la stessa tecnica: per ogni pixel viene assegnata una sequenza di bit.
Per memorizzare un pixel non è più sufficiente un solo bit.  Per esempio, se utilizziamo quattro bit possiamo rappresentare 24 = 16 livelli di grigio o 16 colori diversi.  Mentre con otto bit ne possiamo distinguere 28 = 256, ecc.
Il colore può essere generato componendo 3 colori: red, green, blue (codifica RGB). Ad ogni colore si associa una possibile sfumatura.
Per essere riprodotta (per esempio, sullo schermo), la rappresentazione binaria di un’immagine deve anche avere informazioni sul: Numero di righe dell’immagine. Numero di colonne dell’immagine. Numero di colori usati.
Qualità delle immagini digitali -> Due parametri di qualità: risoluzione e profondità del colore.

  • La risoluzione indica la precisione con cui viene effettuata la suddivisione di un’immagine in pixel. La risoluzione si misura dunque in pixel.
  • La profondità del colore è il numero di bit o byte utilizzati per rappresentare ciascun pixel.  La profondità del colore si misura quindi in bit o byte. Indica (ma non è uguale a) 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. Maggiore la qualità, maggiore la dimensione.

Compressione delle immagini: Le immagini codificate pixel per pixel sono dette immagini in grafica bitmap (mappa di bit) o raster.
Le immagini bitmap occupano parecchio spazio. Esistono delle tecniche di compressione che permettono di ridurre le dimensioni. Sono essenzialmente modi “più intelligenti” di memorizzare le immagini, invece che elencare semplicemente i pixel che le compongono. A volte comportano una riduzione della qualità dell’immagine (che normalmente risulta impercettibile per l’occhio umano). Esempi di formati diffusi per le immagini: GIF, PNG e JPEG.
Distinzione tra compressione lossless e compressione lossy.

  • Lossless: compressione senza perdita di informazioni. Dalla versione compressa, si può ricostruire perfettamente la versione non-compressa.Per esempio, GIF, PNG (ma dipende dal numero di colori: c’è più informazione su slide 46).
  • Lossy: compressione con perdita di informazioni. Dalla versione compressa, non è possibile recuperare la versione originale. Per esempio, JPEG.

Una semplice tecnica di compressione lossless: run-length encoding ->  Invece di elencare i pixel uno per uno elenca il numero di pixel consecutivi di uno stesso colore.
Compressione GIF (GIF = Graphic Interchange Format): Applicabile quando i colori sono “pochi” (max 8 bit = 256 colori).  Vantaggi: Se l’immagine ha pochi colori non viene “deteriorata”(compressione lossless).  Svantaggi: Se l’immagine ha molti colori (es. una foto) bisogna ridurli, perdendo in qualità. Pertanto questo formato è preferibile per immagini dalle linee nette e con poche sfumature.
Compressione JPEG(JPEG = Joint Photographic Expert Group): Studiata appositamente per le fotografie. Si basa sul principio di rinunciare ad una parte dell’informazione presente nell’immagine (compressione lossy) quando quell’informazione non verrebbe comunque percepita dall’occhio umano. Ovviamente se si esagera con la riduzione dell’informazione la perdita di qualità diventa percepibile. Le idee su cui è basata (in breve): L’occhio umano è più sensibile alle variazioni di luminosità che di tonalità: meglio dunque sacrificare le seconde.  Tali variazioni di luminosità sono ben percepite su aree ampie, ma non su aree piccole (un singolo pixel molto più luminoso in mezzo ad altri più scuri non viene notato).
Grafica bitmap vs. grafica vettoriale => Un oggetto bitmap/raster è memorizzato semplicemente come una griglia di pixel a ciascuno dei quali è associato un colore. Una volta disegnata una linea, essa non è più una “linea” ma solo un insieme di pixel sullo schermo.  La qualità dipende da tanti fattori:  Numero di bit utilizzati per ciascun pixel.  Caratteristiche dell’immagine. Algoritmo di compressione usato.  Fattore di ingrandimento sul video.
Un oggetto vettoriale è costituito da una sequenza di segmenti e un insieme di attributi.  Segmenti: Possono essere dritti o curvi, e possono essere uniti a formare una linea spezzata, aperta o chiusa. • Vengono memorizzati registrando le coordinate delle estremità di ciascun segmento. Attributi:  Ad esempio il colore e lo spessore della linea, il riempimento se si tratta di una figura chiusa (ad es. un rettangolo), etc.
Gli attributi sono memorizzati separatamente dalle coordinate: è possibile modificare le coordinate lasciando inalterati gli attributi, oppure modificare gli attributi senza cambiare la forma dell’oggetto. La qualità dell’immagine è indipendente dal fattore di ingrandimento.
Codifica delle immagini:  Immagini complesse od irregolari: codifica bitmap (o raster).  Immagini regolari: codifica vettoriale (es.SVG). Codifiche ibride (raster/vettoriale). Codifiche standard: Postscript, PDF.
Codifica di immagini in movimento =>  Un filmato è una sequenza di immagini statiche (dette fotogrammi o frame).  Per codificare un filmato si digitalizzano i suoi fotogrammi.  Tanto maggiore è il numero di fotogrammi tanto migliore apparirà la qualità del movimento
Si possono comprimere le immagini con le tecniche viste prima. Si memorizza il primo fotogramma e nei successivi si memorizzano le differenze rispetto a quello iniziale. Dopo un certo numero di fotogrammi si memorizza un nuovo fotogramma in modo completo. Esempi di formati per il video: AVI, MOV. Compressione: MPEG (Moving Picture Expert Group),differenza tra fotogrammi. CODEC (Compress or DECompress): software in grado di codificare e decodificare un flusso di dati, come una sequenza video.
CODIFICA DEI SUONI
Fisicamente un suono è rappresentato come un’onda che descrive la variazione della pressione dell’aria nel tempo (onda sonora) che quando rilevata dall’orecchio viene trasformata in un particolare stimolo elettrico.  Sull’asse delle ascisse viene rappresentato il tempo e sull’asse delle ordinate viene rappresentata la variazione di pressione corrispondente al suono stesso.
Il segnale analogico deve essere convertito in rappresentazione digitale (digitalizzato). Si effettuano dei campionamenti sull’onda (cioè si misura il valore dell’onda a intervalli di tempo costanti) e si codificano in forma digitale le informazione estratte da tali campionamenti. Quanto più frequentemente il valore di intensità dell’onda viene campionato, tanto più precisa sarà la sua rappresentazione. Il numero di campioni raccolti per ogni secondo definisce la frequenza di campionamento.
Frequenza dell’onda: numero di cicli del onda per secondo,misurata in Hertz (Hz). R campioni al secondo consente di riprodurre tutte le frequenze di suono fino a R/2 Hz.  L’orecchio umano è in grado percepire i suoni con frequenza nell’intervallo tra 20 e 20.000 Hz. È necessario una frequenza di campionamento di almeno 40.000 campioni al secondo.
La sequenza dei valori numerici ottenuti dai campioni può essere facilmente codificata con sequenze di bit. La rappresentazione è tanto più precisa quanto maggiore è il numero di bit utilizzati per codificare l’informazione estratta in fase di campionamento.
Codifiche standard

  • MP3 , WAV (MS-Windows), AIFF (Audio Interchange File Format, Apple), MIDI. Variante MPEG per suoni. Lossy. Grande diffusione, molto efficiente (fattore di compressione circa 5:1 - 10:1, circa 1-2 MB ogni minuto).
  • MIDI: codifica le note e gli strumenti che devono eseguirle Efficiente, ma solo musica, non voce.

CODIFICA DEI NUMERI
=>  Il codice ASCII consente di codificare le cifre decimali da “0” a “9” fornendo in questo modo una rappresentazione dei numeri.
Ma questa rappresentazione non è adatta per eseguire le operazioni aritmetiche sui numeri. Sono stati pertanto studiati codici alternativi per rappresentare i numeri in modo efficiente ed eseguire le usuali operazioni aritmetiche.
La numerazione decimale quindi utilizza una notazione posizionale basata sul numero 10. La notazione posizionale può essere utilizzata in qualunque altro sistema di numerazione.  Per ogni sistema di  numerazione si usa un numero di cifre uguale alla base. Base: il numero di cifre disponibile nel sistema. In base 10 (il sistema di numerazione decimale), i numeri vengono codificati utilizzando le dieci cifre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. In base 2, (il sistema di numerazione binario) i numeri vengono codificati utilizzando le due cifre 0 e 1.
Conversione base 10-> base 2: Dato un numero N rappresentato in base dieci, la sua sarà d rappresentazione in base due del tipo cm cm-1 cm-2 …c1c0 (le “ci” sono cifre binarie)

ARCHITETTURA DEGLI ELABORATORI
L’attività principale di un computer è fare calcoli... Tale elaborazione è effettuata dal processore. In prima approssimazione possiamo vedere il processore come una calcolatrice molto sofisticata.
Per effettuare i calcoli autonomamente il processore deve conoscere: I dati su cui operare. Le operazioni da eseguire (il “programma”).  Durante il calcolo queste informazioni si trovano nella memoria principale.
Memoria principale e processore, collegate fra loro per poter trasferire le informazioni da una all’altra, sono il “cuore” del computer (l’unità centrale). Questa architettura di base è ciò che definisce un computer.
Ovviamente sarà necessario mostrare all’esterno i risultati dell’elaborazione->  Dispositivi di output (letteralmente: emettere). Almeno un dispositivo di output è obbligatorio: il video! Altri tipi di output: scritto (stampante), audio...
Dispositivi di input (letteralmente: immettere). Tipici dispositivi di input: tastiera, mouse. Altri tipi di input: scanner, microfono, tavoletta grafica...
La memoria principale si cancella quando si spegne il computer. Per non costringere gli utenti a reinserire ogni volta dati e programmi, si aggiunge una memoria secondaria. La memoria secondaria è permanente.
Tipiche memorie secondarie: hard disk, cd, dvd, USB memory stick...
I dispositivi che non sono parte del cuore del computer sono detti periferiche. Sebbene ciascuna funzioni in modo diverso, sono simili nel modo di interagire con la parte centrale. Alcune periferiche sono “dentro” la scatola (case) che racchiude il computer, altre sono“fuori”. Questo non ne cambia il funzionamento.
La memoria principale (RAM): Insieme al processore costituisce il cuore del computer. Memoria Principale =>  Immagazzina i programmi che istruiscono il processore sull’elaborazione da svolgere, e i dati da elaborare.  Programmi e dati sono in formato digitale. Sono quindi rappresentati come sequenze di bit.
La memoria principale deve permettere di:  Registrare sequenze di bit.  Recuperare una sequenza di bit precedentemente registrata.
Per memorizzare un bit usa due diverse cariche elettriche: una carica per lo 0 e una carica per l’1. Memoria volatile: quando si toglie la corrente si perdono le informazioni. La memoria è suddivisa in celle da 8 bit (1 byte) ciascuna. Le celle sono l’unità minima di lettura e scrittura. Sono numerate consecutivamente 0,1,2,....  Il numero associato ad una cella è chiamato indirizzo della cella.
La dimensione della RAM esprime il numero di celle disponibili. Si misura quindi in (Mega/Giga)Byte.
La dimensione della RAM influisce sulle dimensioni dei programmi e dei dati che si possono caricare
contemporaneamente in memoria.  I PC attuali hanno RAM intorno a 4GB -> circa 4 milione di celle.
Spazio di indirizzamento =>  Il processore può:

  • Scrivere una sequenza di 8 bit in una cella di memoria principale. 
  • Leggere una sequenza di 8 bit da una cella di memoria principale.

 In entrambi i casi deve specificare l’indirizzo della cella. L’indirizzo è un numero -> sequenza di bit.  Per ragioni di rapidità il processore deve poterlo comunicare in “un colpo solo” alla memoria -> 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 (max 4 GB di memoria) o 64 bit per gli indirizzi.
Altro parametro importante => tempo di accesso. Il tempo che richiede leggere o scrivere in una cella. Caratteristica importante della RAM: tale tempo non dipende dalla posizione della cella.  Questa caratteristica si chiama accesso casuale (da una traduzione dell’inglese random access). Infatti: RAM = Random Access Memory.  Tempi di accesso negli attuali PC: 10-60 nanosecondi .
L’unità centrale: altri tipi di memoria=> 

  • Memoria di sola lettura (ROM): Non può essere modificata.  A differenza della RAM non è volatile. Veloce quasi come la RAM. Contiene le informazioni di inizializzazione usate ogni volta che si accende l’elaboratore (bootstrap).
  • SRAM (RAM statiche): Costi elevati.  Tempi di accesso ridotti.  Normalmente usate per la memoria cache.  DRAM (RAM dinamiche): Tempi di accesso più della SRAM (40-60 nanosecondi). Normalmente usate per la memoria principale.
  • SDRAM: DRAM sincrono, un clock (che ha una frequenza misurata in MHz) sincronizza l’accesso alla memoria. DDR: Double Data Rate, raddoppia la velocità di trasferimento di dati tra la memoria e il processore. 
  • VRAM (RAM video): usate per la gestione delle immagini.

Il processore (CPU - Central Processing Unit):  Insieme alla RAM costituisce il “cuore” del computer.
Esegue le istruzioni contenute programmi memorizzati nelle RAM. I programmi: sequenze di istruzioni per l’elaborazione delle informazioni. Definiscono quale debba essere il comportamento del processore.
I computer eseguono deterministicamente istruzioni.  Tali istruzioni per essere comprese dalla CPU devono essere scritte in linguaggio macchina.
Il processore lavora per cicli di esecuzione. Ad ogni ciclo: Recupera dalla RAM la prossima istruzione da eseguire. Esegue l’istruzione.
La CPU non è un unico componente ma è costituita da componenti diversi che svolgono compiti diversi
Gli elementi hardware che compongono il processore:

  • Unità di controllo -> coordina le attività del processore. 
  • Registri -> piccole unità di memoria (2-8 byte) molto veloci su cui è possibile eseguire direttamente i calcoli. Registri speciali adibiti ad informazioni particolari. Distinguiamo in particolare:
    •  Program -> contiene l’indirizzo counter l indirizzo in memoria della prossima istruzione da eseguire.
    •  Registro istruzione -> contiene l’istruzione da eseguire attualmente.
    • Registro di stato -> contiene informazioni sullo stato di esecuzione e su eventuali errori. 
    • Registri generici che contengono i dati su cui le istruzioni devono essere eseguite. 
    • Unità logico-aritmetica (ALU) -> esegue calcoli aritmetici e test logici (Es. somma,confronto, etc).

CPU: funzionamento=> L’unità di controllo scandisce i cicli di esecuzione della CPU grazie al clock (orologio).  Ad ogni ciclo: 1. Recupera dalla memoria l’istruzione che si trova all’indirizzo segnalato dal Program Counter. L’istruzione viene trasferita dalla memoria nel Registro Istruzione.2. Incrementa di 1 il valore del Program Counter. Al prossimo ciclo si leggerà l’istruzione successiva. 3. Legge il Registro Istruzione e ne interpreta il contenuto per decidere il da farsi.
4 tipi di istruzioni: a. Lettura di un dato dalla memoria. b. Scrittura di un dato in memoria. c. Calcolo aritmetico logico su dati precedentemente prelevati. d. Salto condizionale in un punto diverso del programma.
Lettura/Scrittura dalla Memoria=> Per eseguire calcoli (tramite la ALU) su dei dati la CPU ha bisogno di averli nei propri registri generici.  Per elaborare un dato in memoria è quindi necessario:  Trasferirlo dalla memoria in un registro (lettura).  Dopo l’elaborazione ritrasferirlo dal registro alla memoria (scrittura).Ogni istruzione di elaborazione deve dunque:  Essere preceduta da appropriate istruzioni di lettura. Essere seguita da appropriate istruzioni di scrittura.  L’istruzione di lettura/scrittura contiene anche: L’indirizzo di memoria su cui operare.  Il registro generico su cui operare.
Quando nel registro istruzione arriva una istruzione di calcolo: I dati si trovano già nei registri generici della CPU. L’unità di controllo segnala alla ALU: Quale operazione eseguire. In quali registri generici si trovano i dati da elaborare. In quale registro generico deve mettere il risultato. La ALU esegue quanto richiesto. La dimensione dei registri generici (word o parola) stabilisce quale è il massimo numero che si può calcolare.  Nei PC attuali è 32 bit o 64 bit.
Salto condizionale=>  Per quanto abbiamo visto sino ad ora: La CPU esegue le istruzioni nell’ordine esatto in cui sono registrate in memoria.  Infatti il Program Counter viene incrementato di 1 ad ogni ciclo di esecuzione. L’istruzione di salto condizionale permette di modificare questo ordine.
Il salto condizionale:  Scrive nel Program Counter un indirizzo di memoria diverso da quello programmato, permettendo di saltare ad un’istruzione diversa (salto...). Antepone a tale operazione una verifica su un dato (es.: il contenuto del registro 5 è maggiore di 2?) e la esegue solo se il test ha risultato positivo (...condizionale). L’istruzione di salto condizionale è ciò che rende i computer così potenti. In particolare permette di: 1. Scrivere istruzioni diverse per trattare circostanze diverse. 2. Ripetere più volte una stessa sequenza di istruzioni fino a che un certo requisito è soddisfatto. Quest’ultima possibilità è determinante per le capacità di un computer.
Linguaggio Macchina => L’insieme delle istruzioni che una CPU può eseguire si chiama Linguaggio Macchina. Processori di produttori diversi hanno linguaggi macchina diversi. Si è comunque abbastanza imposto come standard il linguaggio macchina dei PC IBM. Processori IBM compatibili (Intel, AMD). Ora anche Apple monta gli Intel. Altri tipi di processori esistono per computer non “personal”.
Frequenza della CPU => Parametro fondamentale: Misura il numero di cicli di esecuzione che una CPU è in grado di eseguire in un secondo. Si misura in Hertz (1 Hz = 1 ciclo al secondo). Meglio: in Mega/Giga Hertz (MHz/GHz). Ovviamente la frequenza determina la velocità a cui vengono eseguite le istruzioni.  In generale processore a maggiore frequenza -> PC più veloce. I processori per PC attuali hanno una frequenza di 3-4 GHz (milioni di Hertz).
La memoria cache => Una componente accessoria delle CPU. Non è indispensabile ma ormai c’è su tutte le CPU. E` 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, e quindi non se ne possono mettere troppi. Usata come “deposito intermedio” per dati che vengono usati molto di frequente ma devono essere tolti dai registri per ragioni di spazio. “Cache” deriva dal francese per “nascondere”. Una memoria cache di dimensioni maggiori velocizza il PC -> parametro importante. Cache attuali PC: circa 2-6MB, 8MB nei più avanzati.
Il bus =>  Si chiamano bus i gruppi di cavi che trasferiscono i dati da una parte all’altra. Dalla memoria alla CPU e viceversa. All’interno della CPU fra le varie componenti. Perché si chiamano bus? Perché portano in giro i bit! Un cavetto per ciascun bit: trasporta la carica elettrica appropriata (bassa: 0, alta: 1). La dimensione del bus stabilisce quanti bit si possono trasferire in un colpo solo. Influisce sulla velocità del PC! Solitamente dimensione bus dimensione word.
La scheda madre => La scheda madre (motherboard) è la base su cui sono montati CPU e RAM, collegati fra loro dai bus.

Abbiamo visto il del computer: La scheda madre su cui sono montati RAM e CPU (unità centrale). Passiamo ora ad analizzare le periferiche. Analizziamo innanzitutto gli elementi comuni a tutte le periferiche. Come si collegano al cuore del computer? Come comunicano con il processore?
Collegamento: le porte => Collegamento fisico -> tramite le porte (anche dette interfacce).  Le porte sono le “prese” a cui si collegano i dispositivi. Sono attaccate alla scheda madre. Alcune sono esterne (visibili al di fuori del case), alcune sono interne. Periferiche esterne -> si possono attaccare/staccare, maneggiabili dall’utente. Periferiche interne->sono pensate per non essere scollegate; si possono però sostituite con relativa facilità. Diversi tipi di porte; si differenziano per:  Quantità di informazioni che lasciano passare (numero di bit). Velocità di trasferimento delle informazioni. Alcune porte permettono anche di alimentare i dispositivi.
Ciascun tipo di porta ha una presa riconoscibile a cui corrisponde uno specifico connettore. Il cavo porta avanti e indietro un certo numero di bit. Possiamo distinguere due famiglie di porte: Porte parallele -> i bit che arrivano dalla periferica vengono trasferiti contemporaneamente al PC (e/o vice versa). Porte seriali -> i bit che arrivano dalla periferica vengono trasferiti uno per volta al PC (e/o vice versa).
Principali porte in uso sul PC: USB (Universal Serial Bus). Porta  parallela. Porta seriale RS-232. Porta PS-2. Meno diffusa: Porta SCSI. Sui portatili: Porte PCMCIA. Porte senza fili: Raggi infrarossi / Bluetooth. Porte per connessione in rete  Modem, Ethernet, Wi-Fi,...
Le periferiche: Operano in modo asincrono rispetto al processore. Input -> Il processore non è in grado di prevedere e di controllare il momento in cui un dato di input sarà a disposizione. Output -> Il processore non può prevedere il momento in cui un dispositivo in output avrà terminato di produrre i dati in uscita. Si dice che sono “schiave” del processore. Si parla di gestione master-slave: è il processore che deve coordinare le attività di tutti i dispositivi.
Trasferimento delle informazioni =>  A ciascuna porta sono associati degli spazi di memoria sulla scheda madre. Essi sono contraddistinti da indirizzi particolari. Comunicazione da periferica a processore: Tramite la connessione, la periferica scrive le informazioni in questo spazio di memoria. Avverte il processore, tramite un apposito segnale, che il dato è disponibile. Comunicazione da processore a periferica: Il processore scrive le informazioni nello spazio di memoria. Tramite un segnale attiva la connessione via cavo che trasferisce le informazioni alla periferica.
Interrupt => Si chiama interrupt il segnale che le periferiche inviano al processore quando hanno trasferito un dato che vogliono venga considerato. Interrompe l’attività che il processore stava eseguendo. Lo “costringe” a eseguire un programma speciale che gestisce la periferica.  Questo programma si chiama driver. Deve essere presente nel computer (installato) perché la periferica possa funzionare. Una volta terminata l’esecuzione del driver, il processore torna a quello che stava facendo prima.
Limiti della RAM:  La RAM volatile, ossia si cancella quando si spegne il computer. È inoltre relativamente piccola (in quanto costosa): Riesce a contenere i programmi in esecuzione in un dato momento e i relativi dati. Non riesce a contenere tutti i programmi che l’utente desidera poter eseguire in momenti diversi. Si aggiunge quindi una memoria secondaria. Rispetto alla RAM, la memoria secondaria è: Permanente: evita di dover reinserire ogni volta dati e programmi. Meno costosa, 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.
Memorie secondarie più diffuse =>

  • HARD DISK (disco fisso): È la memoria secondaria per eccellenza. “Magazzino” sempre disponibile per programmi e dati. Memoria di tipo magnetico. Permette di leggere e scrivere dati liberamente.
  • CD e DVD (dischi ottici):  Si spostano con facilità fra computer diversi. Serve un dispositivo (lettore) per leggerli. La scrittura è un po’ problematica (richiede una apparecchiaturaapposita -> masterizzatore). Usati per: Archiviare stabilmente informazioni. Distribuire dati e/o programmi che servono a più PC. Memoria di tipo ottico.

Altre memorie secondarie =>

  • Nastri magnetici: Usati per archiviare grandi quantità di informazioni non più in uso.
  •  Chiavi USB: Funzionano come piccoli Hard-Disk portatili. La tecnologia è però diversa.
  • Compact Flash:  Schede di memoria usate principalmente per fotocamere digitali. Ne esistono diversi tipi. Per essere usate con il PC richiedono un lettore/scrittore.
  • Floppy Disk: Stessa tecnologia degli hard-disk, ma portatili. Richiedono un lettore/scrittore. Ormai in disuso a causa della capacità ridotta.

Tipologie di accesso ai dati:  Accesso -> termine generico per lettura/scrittura. Accesso sequenziale vs. accesso diretto o uniforme. Accesso sequenziale -> per accedere alle informazioni in un certo punto devo scorrere tutte quelle precedenti. Il tempo di accesso ad un dato dipende dalla sua posizione. Per molti versi sconveniente ma più semplice da gestire. Esempi: nastri magnetici, ma anche CD e DVD. Accesso diretto -> posso accedere direttamente alle informazioni in un punto qualunque. Il tempo di accesso è uniforme per tutti i dati (come nel caso della RAM).  Esempi: i dischi magnetici.
Indirizzamento => Come per la RAM, per accedere alla memoria secondaria si deve specificare un indirizzo.
Unità indirizzabili in RAM -> celle. Unità indirizzabili in memoria secondaria ->  blocchi. I blocchi sono molto più grandi delle celle. Cella: 1B / Blocco: 1 KB. Motivo 1: la memoria secondaria è tendenzialmente più grossa della RAM (ordine di grandezza: GB). Se le unità indirizzabili sono molto piccole, vuol dire che ce ne sono tantissime. Lo spazio di indirizzamento è enorme. Per scrivere un indirizzo servono tantissimi bit! Motivo 2: la lettura/scrittura è più lenta che in RAM, meglio trasferire più dati (dalla memoria secondaria alla RAM) in una operazione unica.
Funzionamento dei dischi magnetici => Supporti di plastica, vinile o metallo, su cui è depositato del materiale magnetizzabile. La polarizzazione può essere di due tipi: positiva (bit = 1) e negativa (bit = 0). La magnetizzazione è permanente fino a quando non viene modificata per effetto di un agente esterno. L’apparecchiatura di scrittura è in grado di cambiare la polarizzazione di ciascuna unità. Meccanismo di lettura/scrittura: Il disco viene mantenuto ad una velocità di rotazione costante. Quando si deve leggere/scrivere, una testina viene posizionata sul punto desiderato. Il disco gira; la testina sposta solo in senso radiale.
I dischi sono suddivisi in: Tracce concentriche. Settori ossia “fette” di disco. I settori suddividono ogni traccia in porzioni dette blocchi. Per indirizzare un blocco è sufficiente specificare la sua traccia e il suo settore (es.: settore 2, traccia 5). Tutti i blocchi contengono la stessa quantità di informazione, indipendentemente dalla loro posizione sul disco. Le tracce adiacente e i settori consecutivi sono separati da una parte vuote (gap). Formattazione: operazione con cui la superficie di un disco viene suddivisa in tracce e settori.
Accesso diretto ai dati. Data una traccia e un settore, la testina si posiziona direttamente sul blocco corrispondente. Tempo di accesso dipende da: Seek time: tempo necessario alla testina per raggiungere la traccia desiderata. Latency time: tempo che si deve aspettare perché il settore desiderato passi sotto alla testina. Dipende dalla velocità di rotazione del disco. Tempo di trasferimento: tempo necessario a trasferire i bit del blocco desiderato dal disco alla RAM o viceversa. Tempo di trasferimento = seek time + latency time + tempo di lettura/scrittura. Nei dischi attuali il tempo di accesso è dell’ordine dei millisecondi.
Interfaccia fra HD e CPU => Collegamento e comunicazione seguono i principi visti per le periferiche. Gli hard disk sono a tutti gli effetti della periferiche! Gli hard disk sono solitamente interni al PC. Si collegano tramite una porta interna (interfaccia Serial ATA) non visibile all’utente. Esistono anche hard disk esterni venduti separatamente. Usati per aumentare la memoria di massa del proprio PC. Solitamente collegati tramite porta USB.
Funzionamento dei dischi ottici => Si usa il raggio laser e si sfrutta la riflessione della luce. Sul supporto ci sono dei piccoli forellini che formano zone trasparenti (lasciano passare la luce) e zone opache (riflettono la luce). Si dirige un raggio laser sul supporto e si vede se viene riflesso: no riflessione = 1; riflessione = 0. I bit vengono memorizzati in un’unica traccia a spirale. L’accesso è quindi sequenziale.
Scrivere su un disco ottico è una operazione complessa. Ancora più complesso è cancellarlo! Differenziazione di dispositivi: Il lettore permette solo di leggere su un disco ottico. Il masterizzatore permette anche di scriverci sopra (eventualmente cancellando scritte precedenti). Differenziazione di supporti: CD/DVD-R -> possono essere scritti solo una volta.  CD/DVD-RW -> possono essere scritti (e cancellati) più volte. Ma non all’infinito, circa un migliaio, poi si deteriorano.
Velocità di lettura/scrittura => Naturalmente la velocità di accesso ai dati è importante anche per i dischi ottici. Dal momento che lettura e scrittura sono sostanzialmente diverse, hanno velocità diverse. velocità scrittura < velocità lettura Per un CD, entrambe le velocità si misurano come multipli rispetto alla velocità di
lettura di un CD audio. 1X ->legge (o scrive) alla stessa velocità di un normale CD audio= circa 170 KB/s. 2X-> legge (o scrive) a velocità doppia rispetto a un normale CD audio = circa 340 KB/s. Per un DVD, le velocità si misurano come multipli rispetto alla velocità di lettura per le prime versioni di dischi DVD/lettori DVD. tipi di dischi ottici => Due famiglie principali: CD (Compact Disc) Capacità: 650-800 MB; DVD (Digital Versatile Disc) Capacità: da 4,7 a 17 GB (normalmente circa 8,7 GB); Blu-Ray: Capacità: da 25 a 128 GB (normalmente circa 50 GB).Attenzione: se cambia il supporto cambiano anche il lettore e il masterizzatore. Attualmente i lettore/masterizzatori per DVD leggono e masterizzano anche i CD. Non vale il viceversa.
Interfaccia fra lettore/masterizzatore e CPU=> Anche i lettori/masterizzatori sono periferiche.  Quelli interni al PC usano lo stesso tipo di interfaccia usato per gli hard disk. Anche in questo caso esistono lettori/masterizzatori esterni venduti separatamente. Solitamente collegati tramite porta USB. Caso particolare: i computer portatili. Molti portatili hanno il lettore/masterizzatore esterno perché il case è troppo piccolo per contenerlo. In questi casi è presente una porta ad hoc per collegare questa periferica.
Output: il monitor=> Il monitor mostra un’immagine che viene elaborata dal computer. L’immagine viene aggiornata spesso -> appare animata. Parametri importanti nella scelta di un monitor: Risoluzione massima dell’immagine mostrata.  Profondità del colore massima dell’immagine mostrata. Frequenza di aggiornamento dell’immagine. Dimensione fisica del monitor. Tipologia di monitor.
Hardware del monitor: La superficie del monitor è suddivisa in pixel. Monitor a cristalli liquidi e matrice attiva (LCD/TFT – Liquid Crystal Display/Thin Film Transistor). Schermo piatto. Cristalli particolari che diventano trasparenti se caricati elettricamente. L’immagine è fissa sullo schermo, quando deve essere aggiornata cambiano solo i pixel diversi. – Meno problematico per l’occhio rispetto ai monitor a tubo catodico (il tipo di monitor usato ampiamente prima dello sviluppo dei monitor LCD).
Dimensione:  La dimensione del monitor: Si misura in pollici (1 pollice = 2,54 cm). Si esprime come la lunghezza della diagonale del monitor. Perché si assume che la proporzione fra altezza e larghezza sia fissa.
Quando non lo è bisogna specificarla. Es.: 16:9. Dimensioni più comuni: 15’’ – 17’’ (portatile), più grande per i computer desktop.
Risoluzione e profondità=>  La CPU scrive l’immagine da visualizzare in una memoria speciale associata al video. Video-RAM (VRAM). L’immagine è codificata come visto nella parte I del corso. Il monitor visualizza l’immagine contenuta nella VRAM. Risoluzione e profondità dell’immagine sullo schermo dipendono: Dalle capacità fisiche del video (dimensioni e possibilità di visualizzare più colori). Dalla dimensione della memoria video VRAM. È possibile variare i parametri di risoluzione e profondità (entro i limiti massimi!). Per i monitor LCD: Esiste una controparte fisica per il pixel, e quindi esiste una risoluzione ”preferita” del monitor. Altre risoluzioni (più basse) si vedono male (sfocate).
Output: la stampante => Principali tecnologie di stampa: Ad aghi: economiche ma solo in bianco e nero. Piccoli aghi colpiscono la carta imprimendovi sopra dei punti di inchiostro. A getto di inchiostro : le più diffuse per uso personale. L’inchiostro viene “sparato” sulla carta da fori piccolissimi. È possibile avere inchiostri di vari colori (tricromia, quadricromia, esacromia). Laser : più costose, convenienti per grandi quantità di stampe. Un rullo viene caricato elettricamente da un laser. Viene fatto passare nel toner, una polvere finissima colorata, che rimane solo nei punti caricati. La carta viene passata sul rullo per imprimere l’immagine.
Qualità di una stampante=> Velocità di stampa: Importante se si devono stampare grandi quantità di documenti. Stampanti laser -> velocità maggiore. Risoluzione di stampa: Precisione della stampante nella resa dell’immagine. Concetto simile alla risoluzione di memorizzazione.  Si misura in DPI (Dot Per Inch = punti per pollice).  600 DPI è una buona risoluzione.
Output: scheda audio =>  È una periferica interna. Ha il compito di trasformare informazioni digitali in suoni. Esternamente mostra solo il jack per inserire le cuffie o gli altoparlanti. Solitamente l’audio non è amplificato per cui conviene che gli altoparlanti lo siano. Può essere dotata di altoparlanti, solitamente di scarsa qualità. Alcuni monitor contengono anche altoparlanti per cui è possibile collegarli anche all’uscita della scheda audio.
Input: la tastiera => Quando l’utente preme o lascia andare un tasto un codice binario corrispondente all’evento viene ricevuto dal processore. Questa informazione viene elaborata e trasformata: Nel carattere corrispondente se si tratta di un tasto-carattere (anche in base allo stato corrente). In un segnale di stato se si tratta di un tasto con funzione particolare (es. SHIFT, CTRL, frecce, etc.). Molte tastiere moderne contengono tasti associati direttamente a funzioni di alto livello. Tastiere diverse; principali distinzioni: Ordine delle lettere (Italia/USA -> QWERTY). Numero di tasti (numero tipico: 108).
Input: il mouse =>  Manda diversi tipi di segnali al processore: Pressione di un tasto. Rilascio di un tasto. Spostamento rispetto alla posizione precedente. Questa informazione viene elaborata e tradotta: In un corrispondente spostamento della freccina sullo schermo per gli eventi di spostamento.  In un segnale di stato in caso di pressione e/o rilascio. Alcune combinazioni di eventi acquisiscono significati particolari: Ad es. pressione+rilascio+pressione+rilascio, se eseguito velocemente,corrisponde ad un “doppio click”.  La trasformazione dalla combinazione iniziale all’evento composto viene operata dal software.
Dispositivi di puntamento =>  Mouse meccanici/ottici: Il classico mouse a forma di topo. Il principio è lo stesso, cambia la tecnologia di registrazione dello spostamento. Mouse ottico più preciso e meno deteriorabile. Trackball:  Invece che spostare il mouse si fa ruotare una pallina girevole. Touchpad: Per comunicare lo spostamento si muove il dito su una superficie sensibile. Pointing stick (o TrackPoint): Simile ad un minuscolo joystick.
Input: lo scanner =>  Immagine su carta -> Immagine digitale. Produce una bitmap. Attenzione: anche se il foglio contiene del testo, lo scanner fa una “foto” e produce un’immagine! Parametro importante: risoluzione di scansione. Come per la stampante si misura in DPI -> numero di punti che lo scanner legge per ciascun pollice. Ciascun punto viene poi convertito in un pixel. La risoluzione di scansione influenza la risoluzione digitale dell’immagine.

SOFTWARE E SISTEMA OPERATIVO
Il ruolo del Sistema Operativo =>  Automatizza la gestione di molti compiti contribuendo ad alzare il livello di astrazione.  È fondamentale nell’ultimo livello di astrazione.  Permette all’utente di usare un computer senza conoscere in dettaglio i suoi meccanismi e senza saperlo programmare!  L’utente gestisce le attività del computer attraverso il sistema operativo. Esegue programmi già scritti per lui dai programmatori (applicativi).
Avvio dell’elaboratore:  Il sistema operativo viene mandato in esecuzione al momento dell’accensione del computer. Questa fase prende il nome di bootstrap. In questa fase una parte del sistema operativo viene caricata nella memoria principale.  Una parte del sistema operativo deve essere sempre mantenuta in memoria principale e deve essere sempre pronta per l’esecuzione.
Cosa fa il sistema operativo?

  • Permette di avere in esecuzione più programmi contemporaneamente:  Gestione del processore -> come “distribuire” il suo tempo fra programmi diversi? Gestione della memoria principale -> come “distribuire” il suo spazio fra programmi diversi?
  •  Gestisce la memoria secondaria.
  •  Permette agli utenti di interagire con il computer: Gestione del sistema operativo stesso: Installare (e disinstallare) programmi . Configurare il computer e il sistema operativo. Attività vera e propria: Mandare in esecuzione un programma con cui creare nuovi documenti o elaborare documenti esistenti. Eliminare e rinominare documenti creati e riorganizzarne la disposizione.  Utilizzare le periferiche.

Esecuzione dei programmi =>  Quando si fa doppio clic sull’icona di un programma (oppure si scrive un comando) … il sistema operativo: Cerca il programma corrispondente sulla memoria secondaria. Copia il programma in memoria principale. Imposta registro Program Counter con l’indirizzo in memoria principale della prima istruzione del programma
Sistemi mono-utente, monoprogrammati => Un solo utente può eseguire un solo programma alla volta. È forzato a “sequenzializzare” i programmi. Il programma viene lanciato, eseguito e quindi terminato. Così il processore non viene sfruttato al meglio: si spreca molto tempo.  Il processore è molto più veloce dei  supporti di memoria secondaria e delle altre periferiche. Passa (potenzialmente) la maggior parte del suo tempo in attesa. Durante l’attesa si dice che il processore è un uno stato inattivo (idle) . Terminologia: un processo è un programma in esecuzione.
Soluzione: sistemi multiprogrammati =>  Quando il processore è nello stato di idle lo si può sfruttare per eseguire (parte di) un altro processo. Quando un processo si ferma (per esempio in attesa di un dato dall’utente) il processore può passare ad eseguire le istruzione di un altro processo.  Il sistema operativo si occupa dell’alternanza tra i processi in esecuzione.
Più programmi sembrano essere eseguiti “contemporaneamente”. In realtà in esecuzione c’è sempre un solo processo. Ma, se l’alternanza è molto frequente, si ha un’idea di simultaneità.
Un processo può trovarsi in tre diversi stati: in esecuzione, in attesa, pronto. Esecuzione ->Quando sta utilizzando il processore. Pronto -> Quando è potenzialmente in condizione di poter utilizzare il processore che è occupato da un altro processo. Attesa -> Quando è in attesa del verificarsi di un evento esterno. Quando un processo viene creato viene messo nello stato di pronto: in tale stato rimane fino a quando non arriverà il suo turno. Quando il processore si libera, il primo processo pronto viene mandato in esecuzione.
Un processo può abbandonare lo stato di esecuzione per tre diverse ragioni: 1. Il processo termina la sua esecuzione e abbandona il sistema. 2. Il processore viene liberato e può essere concesso ad un altro processo pronto. Una volta che l’evento atteso si è verificato, il processo tornerà ad essere pronto e dovrà aspettare il suo turno. 3. Per realizzare in modo equo l’alternanza tra i processi, in certi casi può essere opportuno fermare un processo e concedere il processore ad un altro processo
Sistemi multiprogrammati => In quali casi è opportuno fermare un processo e concedere il processore ad un altro processo? Se un processo non si ferma mai in attesa di input/output o di una risorsa. Se più utenti vogliono usare il computer. In questi casi è necessario far sì che il processore sia distribuita tra i processi dello stesso utente e di utenti diversi. Si parla di scheduling del processore.
Esempio di scheduling: Round Robin =>  Ad ogni processo viene assegnato un quanto di tempo del processore (time slice). Terminato il quanto di tempo, il processo viene sospeso e rimesso nella coda dei processi pronti (al fondo della coda). Il processore viene assegnata ad un altro processo pronto. Un processo può usare meno del quanto che gli spetta se deve eseguire operazioni di I/O oppure ha terminato la sua computazione.
Sistemi multi-utente, multi-programmati => Più utenti possono usare allo stesso tempo il computer: perché il processore viene assegnata periodicamente ai processi dei vari utenti (per esempio ogni 10 o 100 millisecondo). All’aumentare del numero di processi e del numero di utenti le prestazioni del sistema possono degradare.
Gestione dei processi: Per gestire un insieme di processi “contemporaneamente”attivi il sistema operativo mantiene la tabella di processi. Per ogni processo vi è un descrittore nel quale sono memorizzate informazioni come: L’identificatore del processo. L’identificatore dell’utente proprietario.Lo stato del processo. Queste informazioni servono per realizzare l’operazione di cambio di contesto. Quando un processo rilascia il processore, le informazioni sul suo stato vengono memorizzate nel suo descrittore all’interno della tabella dei processi. In questo modo, quando tornerà nuovamente in esecuzione, il processo potrà ripartire dal punto in cui era stato interrotto.
Gestione della memoria:  Due problemi fondamentali: Multiprogrammazione: Più programmi in memoria contemporaneamente. Come lasciare a ciascuno il suo spazio senza che si modifichino i dati a vicenda per errore? Programmi e/o dati di grandi dimensioni: Alcuni programmi potrebbero essere troppo grandi per essere contenuti in RAM. Oppure i dati che essi elaborano potrebbero essere troppo grandi. Esiste un modo che permetta a programmi in queste condizioni di funzionare ugualmente?
Partizioni multiple con allocazione contigua =>  Per tenere più programmi in memoria  contemporaneamente: Si divide la memoria in sezioni chiamate partizioni. In ogni partizione: un programma con i suoi dati. Una partizione consiste di alcuni “blocchi” consecutivi della memoria principale (i blocchi in questo contesto sono diverso di un blocco della memoria secondario). Dimensione di una partizione: un multiplo della dimensione dei blocchi di memoria principale, dove la dimensione dei blocchi è deciso a priori. Una partizione è individuata da: Un indirizzo di inizio partizione (base) . Un indirizzo di fine partizione (limite) . Quando il processore genera un indirizzo... Una unità specifica (MMU) gli somma il valore della base.  In questo modo si “sposta” tutto ciò che il programma fa nell’area di memoria di sua competenza. Inoltre la MMU controlla che non superi il valore del limite. I programmi non possono interferire fra di loro.
Partizioni fisse:  Dimensione delle partizioni decisa a priori una volta per tutte. Problema: spreco di spazio di memoria. All’interno di ciascuna partizione (perché il processo probabilmente sarà un po’ più piccolo della partizione)=> Frammentazione interna. Complessivo (perché potrei avere tante partizioni libere tutte troppo piccole per contenere il mio processo, che però potrebbe stare in memoria se la partizione fosse unica) =>  Frammentazione esterna. Partizioni variabili: Dimensione delle partizioni decisa al momento del caricamento del processo. Ovviamente più difficile da gestire della precedente, ma più flessibile. La frammentazione esterna esiste comunque.
Allocazione non contigua :  Partizioni in generale poco flessibili. Se non azzecco la dimensione giusta per la partizione il programma potrebbe non riuscire a girare! La memoria potrebbe avere abbastanza spazio per un programma, ma non contiguamente. Tanti spazi liberi ciascuno di dimensioni troppo piccole. Sistema più flessibile: allocazione non contigua. I programmi (e i relativi dati) vengono spezzettati. Si deve in pratica memorizzare per ciascun pezzo di programma dove esso viene a trovarsi in memoria.
Segmentazione vs. Paginazione =>  Segmentazione: Il processo viene suddiviso in base ai contenuti. Posso separare la parte contenente le istruzioni da quella contenente i dati. Possono esserci analoghi criteri per suddividere ulteriormente, ad es. tipi di dati o pezzi di programma che vengono usati in momenti diversi. Problema: gestione di segmenti di dimensioni diverse piuttosto complicata.  Paginazione: Il processo viene diviso in pagine di uguale dimensione (solitamente tra 1 KB e 4 KB). La memoria viene divisa in frame [inglese, significa cornice] (simili alle partizioni) della stessa dimensione. Ad ogni pagina è assegnato un frame. Una zona particolare della memoria (tabella delle pagine) contiene le associazioni fra pagine e frame. Vantaggio: tutti gli oggetti da gestire sono dalla stessa dimensione.
Memoria virtuale =>  Permette di avere in esecuzione un insieme di processi la cui dimensione complessiva supera la capacità della memoria. Due tecniche principali: Swapping. Paginazione (a richiesta). Entrambe basate sull’idea di usare la memoria secondaria come deposito temporaneo per ciò che non sta in RAM. Ovviamente questo causa dei rallentamenti nell’esecuzione.
Swapping =>  I processi sono in esecuzione uno alla volta: Quando un processo non è in esecuzione posso toglierlo temporaneamente dalla RAM e metterlo nella memoria secondaria. Quando ritorna in esecuzione lo riporto in RAM spostando eventualmente un altro processo.
Paginazione a richiesta => Nella paginazione il processo ed i suoi dati sono divisi in pagine e la memoria in frame. La tabella delle pagine associa ad ogni pagina un frame. Ma qualche pagina potrebbe anche non avere nessun frame, ed essere temporaneamente depositata sul disco fisso! Quando una pagina serve al processore, viene “promossa” in RAM a scapito di un’altra. Il sistema operativo adotta tecniche particolari per cercare di “intuire” quali pagine non serviranno più per un po’ e possono essere spostate su disco, e quali invece serviranno quasi subito per cui conviene tenerle in RAM
Trashing =  Se la memoria è troppo piccola per l’insieme di programmi caricato il processore va in trashing (thrashing in inglese): Passa più tempo a spostare i processi dalla memoria secondaria alla RAM (e vice versa) che a eseguire i programmi.  Il computer rallenta tantissimo e non è più utilizzabile. Si capisce che il computer è in trashing perché sebbene sembra non stia facendo nulla il disco è continuamente utilizzato.– Unica soluzione: aspettare che abbia finito di “macinare” e quindi chiudere uno o più programmi.
Gestione della memoria secondaria => La memoria secondaria serve per memorizzare programmi e dati in modo permanente. Il concetto centrale è quello di file (= archivio, dossier) . File -> insieme di informazioni omogenee che vengono memorizzate insieme e a cui viene associato un nome che permetta di reperirle. File di programma -> contengono istruzioni che possono venire eseguite dal processore. File di dati -> detti anche documenti, contengono i dati dell’utente. File system -> parte del sistema operativo che si occupa di gestire e strutturare le informazioni memorizzate sulla memoria secondaria.
Dal punto di vista dell’utente:  File di programma: Un programma è solitamente fatto da più file.  Uno di questi è chiamato “principale” o “eseguibile”. Installazione (copiatura “ordinata” dei file che costituiscono il programma, registrazione del nuovo programma presso il sistema operativo). Disinstallazione (cancellazione dei file e de-registrazione) . Esecuzione (caricamento in memoria del file principale del programma e creazione del processo corrispondente) . Documenti:  A seconda del tipo di documento (immagine, testo, etc.) esso potrà essere creato e elaborato con programmi specifici. Il file system permette inoltre di intervenire sulla organizzazione dei documenti. In realtà permette di intervenire anche sulla organizzazione dei file di programma, ma conviene lasciarli stare!
Organizzazione dei file =>  I file devono essere organizzati in memoria secondaria perché sia facile reperirli! Il primo passo è associare a ciascun file una denominazione che permetta di identificarlo univocamente. Il nome è scelto da chi crea il file, e dovrebbe permettergli di ricordare con facilità cosa esso contenga. L’estensione viene solitamente scelta dal programma con cui viene creato il file, e identifica la tipologia di informazioni i n esso contenute. L’estensione identifica il tipo di file, ed è solitamente di tre lettere. “.lib”, “.dll”, “.exe” sono estensioni tipiche dei file di programma.  Per i documenti, dipende dal tipo di documento. Es. “.txt” -> testo, “.bmp” -> immagine bitmap, etc.  È il programma con cui creiamo i documenti che stabilisce l’estensione, solitamente è meglio non modificarla. Modificare l’estensione non cambia il tipo di documento.
Organizzazione dei file =>  Se i file sono molti, dargli un nome non è sufficiente a reperirli con facilità (ed è difficile non usare due volte lo stesso nome!) .  Anche nel file system esiste il concetto di cartella (in inglese, folder o directory) : Una cartella è file speciale che funziona come un contenitore. Una cartella può contenere dei file, e anche delle altre cartelle (chiamate in questo caso sotto-cartelle) . Due file in due cartelle diverse possono anche avere lo stesso nome: a distinguerli è la cartella di appartenenza.  Questo porta alla organizzazione gerarchica dei file. Organizzazione gerarchica La cima della gerarchia è l’unità di memoria secondaria:  Windows usa le lettere dell’alfabeto per identificare le diverse unità: es. C ->hard disk, D -> cd o dvd, E -> penna usb,... All’interno dell’unità si trovano file e cartelle... all’interno dei quali si trovano altri file e cartelle, etc.
Pathname = nome del percorso. Indica il percorso da seguire per raggiungere un file in memoria secondaria. Specifica l’unità (es.: “C”) . la sequenza di cartelle che bisogna aprire per trovare il file (es.: “Documenti” quindi “Mario” ) . Il nome del file (es.: “lucidi.ppt”) .
Manipolazione dei file=> Un insieme di operazioni minimale:Creazione di un file.Cancellazione di un file.Copia o spostamento di un file.Visualizzazione del contenuto di un file.Stampa di un file.Modifica del contenuto di un file.Rinomina di un file.Visualizzazione delle caratteristiche di un file.
Operazioni sulle cartelle => Per organizzare gerarchicamente i file, il sistema operativo deve fornire all'utente un insieme di operazioni per:Creare una nuova directory.Rimuovere una directory.Rinominare una directory.Elencare il contenuto di una directory.Copiare o spostare i file da una directory ad un'altra.
Organizzazione fisica dei file => L’organizzazione del file system vista fino ad ora è di tipo puramente logico. Cioè fa vedere come il file system “fa vedere” i propri contenuti all’utente per permettergli di manipolarli.
Organizzazione fisica: I file (e le cartelle) occupano dei blocchi su disco. Il sistema operativo deve: Sapere quali sono i file memorizzati sul disco, Sapere dove si trovano (in quali blocchi) per poterli reperire, ottimizzare lo spazio su disco (cioè evitare di sprecare spazio inutilmente) .
Device directory:  Per sapere quali sono i file memorizzati sul disco e dove si trovano …? Device directory => Una tabella memorizzata in una porzione prefissata del disco che contiene un elenco di file descriptor. I file descriptor sono numerati. Ciascun file o cartella ha il suo file descriptor che contiene le info su di esso. Per ciascun file nome, dimensione, data di creazione e ultima modifica, ... e soprattutto: dove si trova su disco. Per ciascuna cartella nome, dimensione, data di creazione e ultima modifica, ... e soprattutto: l’elenco dei file descriptor (tramite i loro numeri d’ordine) dei file e delle cartelle in essa contenuti. Esempio: C:\Documenti\Mario\lucidi.ppt => Vado nella device directory del disco C; il primo file descriptor (0) è quello della cartella principale. Cerco nel file descriptor 0 l’elenco dei contenuti della cartella, trovo che “Documenti” corrisponde al file descriptor 7. Cerco nel file descriptor 7 (che corrisponde a “Documenti”) e trovo che “Mario” corrisponde al file descriptor 22. Cerco nel file descriptor 22 (che corrisponde a “Mario”) e trovo che “lucidi.ppt” corrisponde al file descriptor 18. Cerco nel file descriptor 18 (che corrisponde a “lucidi.ppt”) e, dal momento che si tratta di un file, trovo la sua collocazione fisica su disco (ad esempio blocco (30,10). Trovo anche che il file è grande 4 KB, cioè 4 blocchi, quindi so che per portarlo in memoria devo trasferire i blocchi (30,10), (31,10), (32,10) e (33,10) (nel caso di allocazione contigua: vediamo la prossima slide…).
Ottimizzare lo spazio su disco =>  Allocazione contigua: Il file è memorizzato in una sequenza di blocchi uno consecutivo all’altro. Il file descriptor memorizza l’indirizzo del primo blocco + la dimensione del file (numero di blocchi) . Problemi: Se il file cresce di dimensioni e il primo blocco successivo non è libero devo spostarlo tutto da un’altra parte. Cancellando (o spostando) i file si creano dei buchi che è difficile riempire perché non è detto che si trovino file della dimensione giusta. È possibile ovviare a questi problemi con la compattazione: periodicamente si riordina il contenuto del disco per riunire i buchi liberi -> però la compattazione è lunga da effettuare.
Allocazione sparsa: I blocchi che compongono il file possono trovarsi sparsi per il disco. Come fare a sapere in quali blocchi si trova il file? Due metodi principali: Allocazione (sparsa) indexata. Allocazione (sparsa) linkata. Le tecniche più moderne adottano combinazioni di questi due metodi.
Allocazione (sparsa) indexata: il file descriptor contiene l’elenco di tutti i blocchi. Ad es. per un file di 3 blocchi: (30,10), (27,15), (42,13). Ci si complica la vita con i file descriptor, le cui dimensioni dovrebbero allungarsi o accorciarsi insieme al file!
Allocazione (sparsa) linkata: il file descriptor contiene l’indirizzo del primo blocco (es. (30,10). In fondo a ciascun blocco che compone il file c’è l’indirizzo del blocco successivo. L’accesso ai file diventa sequenziale (ossia per accedere al quarto blocco di un file devo prima leggermi i tre precedenti).

Cosa può fare l’utente grazie al S.O.? Gestione del sistema operativo stesso: Installazione di nuovi programmi (e disinstallazione). Configurazione del sistema. Attività vera e propria: Mandare in esecuzione un programma (+ tramite il programma, creare nuovi documenti o elaborare documenti esistenti). Manipolare il file system:  Eliminare documenti creati. Riorganizzare la disposizione dei documenti. Rinominare documenti esistenti. Accesso alle periferiche.
Ricapitolando: il Software
Sistema operativo (software di base): Viene fornito a corredo dell’hardware. Programmi speciali per eseguire operazioni di base che: Determinano in generale il comportamento del computer. Permettono facilità d’uso da parte di un utente che eventualmente non ne conosca la struttura fisica. Consente l’esecuzione del software applicativo.
Software applicativo: Ciascun applicativo permette di elaborare dati di natura diversa. Editare testi, creare fogli elettronici, elaborare immagini. Richiede la presenza del sistema operativo.
Programmi applicativi e sistema operativo => Sistema Operativo: Indispensabile (senza il sistema operativo il computer non funziona). Dal sistema operativo dipendono le funzioni comuni a tutti i programmi. Esempi di sistemi operativi su PC: Windows, Linux, Unix, OS X. Programmi Applicativi: Opzionali. Necessari per funzioni specifiche (come scrivere, archiviare dati …). Compatibili con il software di base. Esempi: Word, Excel, Access (Microsoft Office); Write, Calc, Impress (Open Office); Internet Explorer, Mozilla Firefox, … .
opyright vs copyleft =>Classificazione del software in generale e quindi anche degli applicativi:
1. Copyright vs. senza copyright:  Copyright -> è coperto da 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 da 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. Posso modificarlo come voglio, migliorarlo, adattarlo alle mie esigenze ...
Il manifesto del software libero=>  L'espressione "software libero" si riferisce alla libertà dell'utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software. Più precisamente, esso si riferisce a quattro tipi di libertà per gli utenti del software: Libertà di eseguire il programma, per qualsiasi scopo . Libertà di studiare come funziona il programma e adattarlo alle proprie necessità. L'accesso al codice sorgente (open source) ne è un prerequisito. Libertà di ridistribuire copie in modo da aiutare il prossimo. Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio. L'accesso al codice sorgente ne è un prerequisito.
Software libero => Dalla lettura del manifesto emergono tre concetti fondamentali: Accesso al codice sorgente -> la traduzione letterale di software “open source” è proprio software a “codice sorgente aperto”. Libertà di copia e ridistribuzione. Libertà di modifica per adattamento alle proprie
esigenze o per migliorare il programma in sé. La disponibilità del codice sorgente consente sia la sua libera circolazione, sia processi di modifica, produzione, ridistribuzione, evoluzione e riuso. Tipici fraintendimenti rispetto al software libero. Il software libero è spesso gratuito ma non è detto che lo sia. “Support”: esistono programmatori che vengono retribuiti per aggiornare, modificare, adattare programmi. Il software gratuito non è per forza libero. Molte aziende divulgano software proprietario gratuitamente per vendere altri prodotti, per attirare nuovi clienti o per porre fuori gioco un concorrente. Si ha gratuitamente l’utilizzo del software, ma non si può modificarlo, ridistribuirlo, etc.

LE RETI INFORMATICHE
Reti di computer => Tipi di reti: Locale: di un’università, azienda, scuola, ecc. Geografiche: per esempio Internet (la rete delle reti). Cambiamenti portato da Internet (da Snyder): Nessun luogo è remoto. Le persone sono interconnesse. Le relazioni sociali stanno mutando. L’inglese sta diventando un linguaggio universale. La libertà di parola e di associazione si è estesa.
Reti di computer:  Perché collegare i computer nelle reti? Condivisione risorse: Risorse fisiche: per esempio non è economico comprare 1 stampante laser per ogni personal. Dati e programmi: per esempio base di dati a cui molti utenti (da diversi computer) possono accedere. Sistema di prenotazioni e assegnamento posti di una compagnia aerea, sistema informativo di una banca, ecc. Comunicazione tra utenti in locazioni fisiche differenti (scambio di messaggi e dati). Comunicazioni in ambito di ricerca, lavoro cooperativo, possibilità di volgere attività di lavoro a casa (tele-lavoro), ecc.
Il modello centralizzato ->  Anni ’70: modello centralizzato (timesharing multi-utente). Il collegamento di molti utenti ad un unico elaboratore potente (centralizzato) attraverso terminali. Terminale: usato solo per inserire dati e ricevere dati per la visualizzazione (per esempio, con tastiera, schermo, mouse, ma senza capacità di elaborazione). Svantaggio: più utenti → necessità di usare computer (centralizzati) più potenti. Altri svantaggi: non flessibile, non economico
Il modello distribuito -> Anni ’80: il modello distribuito. elaboratori Collegare in rete gli (di varie potenze, tipi, nella stessa località o in località diverse). Vantaggi rispetto al modello centralizzato: Flessibilità: In un sistema centralizzato, in caso di guasto all’elaboratore centrale nessuno può lavorare. Nel caso distribuito invece, la rottura di una macchina blocca un solo utente mentre gli altri possono continuare a lavorare. Economicità: In termini di costi, è più conveniente acquistare molti elaboratori personali e collegarli in rete.
Internet => Nato da ARPAnet (creato alla fine degli anni ’60, una rete singola e chiusa) e altre reti (reti proprietarie). Rete delle reti: basato sull’interconnessione delle reti (eterogenee) già esistente (inter-networking). Idea di interconnessione tra le reti è dei primi anni ’70.Anni ’90: esplosione di Internet. In particolare, negli primi anni ’90: creazione del World Wide Web. Giugno 2012: 2,406 bilioni di persone hanno accesso ad Internet (circa 45% in Asia, 22% in Europa, 11% in America del Nord, 11% in America Latina/Caraibi, 7% in Africa, 4% in Medio Oriente, 1% in Oceania).
Tipi di comunicazione=>  Comunicazione sincrona: il mittente e il destinatario sono attivi nello stesso momento. Per esempio, una conversazione telefonica. Comunicazione asincrona: l’invio e la ricezione hanno luogo in istanti diversi. Per esempio, una cartolina. Comunicazione broadcast: un singolo mittente e molti destinatari. Per esempio, la radio, la TV. Comunicazione multicast: un singolo mittente e un numero
limitato di destinatari: Per esempio, le riviste. Comunicazione point-to-point: un singolo mittente e un singolo destinatario. Per esempio, il telefono.
Internet può essere considerato come un mezzo di comunicazione universale. Asincrona point-to-point: per esempio, la posta elettronica. Sincrona point-to-point: per esempio, Instant Messaging, Voice over IP (tra due utenti). Multicast: per esempio, gruppi di piccola o media dimensione possono comunicare nelle chat, Voice over IP (audioconferenza/conferenza telefonica). Broadcast: per esempio, le pagine web.
Componenti di Internet => 

  • Host (o sistema terminale): Tradizionalmente, un PC, un workstation, o un computer più potente. Sempre più connessi i sistema terminali come portatili, gli smartphone, televisori, automobili, elettrodomestici, ecc.
  • Collegamenti (communication link): Di vari tipi: cavi (di rami, fibre ottiche ecc.), onde elettromagnetiche (collegamenti senza fili, satellitari ecc.). Commutatori di pacchetto (esempi: router, switch): I computer vengono connessi in un modo indiretto tramite dispositivi di instradamento. Prendono informazioni da uno dei collegamenti e ritrasmettono su un altro collegamento (verso la destinazione finale).
  • 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. Per esempio, a banda larga, senza fili ecc. Fornisce anche ai fornitori di contenuti l’accesso a Internet. Per esempio, per connettere un sito web a Internet.
  •  Client/server:  I 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. 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. Tipicamente, in un certo (lungo) intervallo di tempo: Un host può essere client di molti server. Un host può essere server di molti client. Per esempio: un client può richiedere tanti siti web, un web server può fornire una pagina web a tanti client.

Nel contesto di software per le reti: Programma client: un programma eseguito da un host che richiede e riceve un servizio da un programma server in esecuzione su un altro host. Programmi Peer-to-peer (P2P): un programma P2P sul host funziona sia come client che come server. Un host in questo caso viene chiamato peer. Un host agisce come client quando richiede un documento da un altro peer. … agisce invece come server quando invia un file a un altro peer. Esempio: la telefonia Internet (Voice over IP), condivisione dei file (file sharing).
I protocolli =>  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 parte di Internet. Dal testo “Internet e Reti di Calcolatori” di Kurose e Ross: “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: nome collettivo di TCP/IP. TCP: Transmission Control Protocol. IP: Internet Protocol.
Il protocollo usato quando si invia una richiesta per una pagina web: 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. Nostro computer invia il nome della pagina che vuole prelevare tramite il messaggio “Get”. Il server web restituisce la pagina (<file>) 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.
Nei protocolli di comunicazione nelle reti si ipotizzano dei livelli. Il livello n di un dispositivo in rete comunica (virtualmente) con il livello n di un altro dispositivo. In realtà nessun dato viene trasferito da un livello n ad un altro (n>1) ma passa ad un livello sottostante. Un protocollo di livello n svolge le sue funzioni usando i servizi forniti dal livello n-1 e fornisce i servizi al livello n+1. Per ogni coppia di livelli adiacenti esiste una interfaccia.  Al di sotto del livello più basso c’è il mezzo fisico che serve per il trasferimento dei dati.  Un livello di protocollo può essere implementato via software, hardware, o in modo combinato. Possibili svantaggi del uso dei livelli: La possibilità che un livello duplichi le funzionalità di quello inferiore. Un livello può richiedere informazioni presenti solo in un altro livello.
protocolli Internet: TCP/IP =>

    • I protocolli del livello di applicazione: Ruolo: vari funzioni, relativi ai programmi applicativi di Internet usati dagli utenti. Per esempio: SMTP: Simple Mail Transfer Protocol. FTP: File Transfer Protocol. SSH: Secure Shell. HTTP: HyperText Transfer Protocol. DNS: Domain Name System. Creano messaggi di vari tipi (per esempio, messaggi di richiesta per la visualizzazione di una pagina web, un messaggio che contiene un’email/una pagina web, ecc.).
    • I protocolli del livello di trasporto:  Ruolo: trasferimento dei messaggio dal livello di applicazione dall’origine alla destinazione (da un host a un altro). In Internet, due protocolli di trasporto: TCP (Transmission Control Protocol): Garantisce il trasferimento dei messaggi. Controlla il flusso in rete (fa il confronto della velocità tra il mittente e il destinatario). Fraziona il messaggio in frammenti più brevi (pacchetti). UDP: non fornisce nessuna garanzia di consegna di un messaggio (tipicamente usati per la telefonia Internet e la videoconferenza).
    •  I protocolli del livello di rete: Ruolo: trasferimento dei pacchetti dall’origine alla destinazione (da un host a un altro).  Due principali componenti: Protocollo IP: definisce l’informazione che deve essere aggiunto al pacchetto per realizzare il trasferimento nella rete. Protocolli per instradamento: determinano i percorsi che i pacchetti devono seguire nella rete. Internet è una rete di reti: ognuna può scegliere il proprio protocollo di instradamento. Livello spesso chiamato livello IP.
    • I protocolli del livello di collegamento: Ruolo: trasferimento dei pacchetti da un nodo (host, commutatore ecc.) della rete al successivo.  Alcuni protocolli del livello di collegamento garantiscono la consegna affidabile.  Un pacchetto potrebbe essere gestito da differenti protocolli lungo il suo percorso dall’origine alla destinazione. Esempi: Ethernet, PPP (protocollo punto-apunto).

Ethernet: diffuso per le reti locale, in cui un numero di computer condividono un mezzo di comunicazione. Quando un computer vuole comunicare, verifica che il mezzo di comunicazione sia libero e invia il segnale. Se invece si accorge che un altro computer sta trasmettendo, aspetta. Se si verifica un conflitto (due o più computer hanno inviato i loro messaggi contemporaneamente) i computer coinvolti: Si fermano, Aspettano per un tempo T casuale.,  Riprovano la trasmissione. Lo stesso tipo di gestione di conflitti: anche in reti senza fili . I protocolli del livello fisico: Ruolo: trasferire i singoli bit da un nodo nella rete a un altro. Sono dipendenti dall’effettivo mezzo trasmissivo del collegamento. Per esempio, possiamo avere protocolli diversi per tipi di cavi diversi, per collegamenti satellitari diversi, ecc.
Ogni computer collegato in Internet ha un indirizzo unico: il suo indirizzo IP. Gli indirizzi IP devono essere univoci. – Per questo motivo è stata istituita una organizzazione, Internet Assigned Number Authority, preposta ad assegnare gli indirizzi IP garantendone l’univocità. Quando vi collegate ad Internet da casa è il provider (ISP) che vi assegna un indirizzo IP scegliendolo tra quelli che ha acquistato.
IPv4: Un indirizzo IPv4 contiene 32 bit (232 = 4.294.967.296 indirizzi), che sono suddivisi in 4 campi da 8 bit ciascuno. – Di solito si usa una rappresentazione formata da 4 numeri decimali (tra 0 e 255) separati da un punto. IPv6:  Un indirizzo IPv6 contiene 128 bit (2128, uguale a circa 3,403 x 1038 indirizzi).
Gli indirizzi IP numerici sono difficili da ricordare=>  Si usano quindi degli indirizzi simbolici che sono più significativi per l’essere umano. Esempi (siti web): www.unito.it, www.di.unito.it, www.psicologia.unito.it, www.cs.bham.ac.uk Questi nome vengono tradotti in indirizzi IP numerici mediante il Domain Name System (DNS).
Gli indirizzi simbolici hanno un formato come quello seguente … nome5.nome4.nome3.nome2.nome1. Sono costruiti a partire da uno schema gerarchico di nomi basato sul concetto di dominio. Domini di primo livello (top level): alcuni esempi. com aziende edu università  americane; gov istituzioni governative; mil istituzioni militari; net fornitori d’accesso;org organizzazioni non-profit; au Australia; ch Svizzera; fr Francia; it Italia; jp Giappone; uk Regno Unito. Non vi è alcuna  corrispondenza diretta tra i domini e le reti che costituiscono Internet. Cioè, computer nella stessa rete fisica possono essere in domini logici diversi. Computer in reti fisiche diverse possono trovarsi nello stesso dominio logico.
Anche gli indirizzi di posta elettronica hanno una struttura: La parta a destra della @ ha una struttura basato sui domini (interpretato dal computer che spedisce il messaggio). La parta a sinistra della @ è l’identificativo dell’utente (interpretato dal computer che riceve il messaggio). Ogni dominio deve essere in grado di “risolvere i nomi” dei calcolatori di sua competenza. Si usano i name server (anche chiamati i server DNS) che gestiscono la corrispondenza tra nomi simbolici e indirizzi IP numerici. I name server sono  organizzati in modo gerarchico.
Quando un’applicazione deve collegarsi ad una risorsa di cui conosce il logico (es. www.unito.it), invia una richiesta al suo name server locale. Il name server locale, se conoscela risposta, la invia direttamente al richiedente. Altrimenti interroga il name server di top level (root).  Questo può conoscere l’indirizzo oppure inoltrare l’interrogazione ai suoi figli nella gerarchia. Si continua con le interrogazioni fino a quando non si ottiene l’indirizzo IP numerico della risorsa. Quando l’applicazione riceve la risposta crea una connessione TCP con la destinazione, usando l’indirizzo IP appena ricevuto.
Abbiamo visto che … Un ruolo del protocollo TCP è di suddividere il messaggio in frammenti più brevi (pacchetti). Il protocollo IP definisce l’informazione che deve essere aggiunto al pacchetto per realizzare il trasferimento nella rete.
Pacchetti IP=>  Pacchetto IP: contiene lo spazio per scrivere: Informazione (una quantità limitata). Un numero progressivo (identificatore). L’indirizzo IP del destinatario. I pacchetti IP sono inviati attraverso Internet uno alla volta. Possono seguire percorsi diversi dallo stesso mittente e lo stesso destinatario. Giunti la destinazione sono riordinati secondo al numero identificatore. Un vantaggio della possibilità di seguire diversi percorso in rete: Nel caso di congestioni in rete (potrebbe essere più efficiente seguire un percorso invece di un altro). Nel caso di un guasto di un dispositivo di un percorso (in questa situazione, il percorso non è più disponibile). Per visualizzare un percorso tra nostro computer e quello di un sito web: www.traceroute.org

Collegare un computer a Internet: Un computer è collegato ad Internet tramite un ISP (Internet Service Provider). Tre modi principali per collegare un computer a Internet: Accesso residenziale. Accesso aziendale o universitarie. Accesso senza fili.
Accesso residenziale: Sono necessari dei dispositivi per poter usare la rete telefonica come mezzo di comunicazione tra computer: i modem. Il modem del computer dell'utente deve essere connesso alla rete telefonica (usando un spinotto identico a quello usato per i normali apparecchi vocali). Per accedere ad Internet, il modem deve comporre il numero del provider (ISP). Il provider anche ha un computer (permanentemente) connesso ad Internet tramite un modem. Una connessione tra il computer del utente e il computer del provider è creato. Il computer del provider abilita l'invio e la recezione di informazione in Internet al computer dell'utente. Per esempio, quando l'utente clicca su un link in una pagina web: La richiesta per accedere alla nuova pagina passa dal computer dell'utente a quello del provider. ... poi dal computer del provider al web server remoto che gestisce la pagina richiesta.  ... poi il web server manda la pagina al computer del provider. ... poi il computer del provider manda la pagina al computer dell'utente. Modem dial-up: Usa la stessa linea utilizzata per le normali chiamate telefoniche.  Frequenza può raggiungere 56 Kbps (Kilobit per secondo). Sempre meno diffuso: Negli ultimi anni sono diffuse tecnologie come ADSL (Asymmetric Digital Subscriber Line). Un esempio di accesso residenziali a banda larga. Velocità (asimmetrico): Verso l'utente: tipicamente circa 10 - 24 Mbps (Megabit per secondo). Verso l'ISP: tipicamente circa 1 - 3 Mbps. Progettato per brevi distanze tra i modem residenziali e quelli dell'ISP. Permette una frequenza di trasmissione più alta rispetto a quella dei modem dial-up tradizionali. ADSL (Asymmetric Digital Subscriber Line) : Usa tre bande di frequenza non sovrapposte: un canale verso l'utente, un canale verso l'ISP, un canale telefonico ordinaria a due vie .
Accesso aziendali o universitarie (LAN):  I computer sono collegati sotto forma di rete locale (LAN, Local Area Network).  Ethernet è comunemente usato nelle LAN: versione Ethernet di 2006 ha una velocità di 10 Gbps. Intranet: un nome per la rete locale di un'organizzazione. Tramite un computer chiamato gateway, una rete locale (e quindi tutti i computer che contiene) può essere connesse ad Internet.
Accesso senza fili: Rete senza fili (wireless): una variante di un LAN. Un computer chiamato hub è fisicamente collegato a Internet (forse tramite altri computer e dispositivi nella LAN). Il hub è capace di ricevere e trasmettere (in broadcast) segnali, solitamente in radiofrequenza. I computer mobili (portatili, tablet, e-reader, MP3 player, ecc.) anche sono in grado di ricevere e trasmettere sulla stessa frequenza. Il protocollo usato dalle reti senza fili funzione come Ethernet (che è anche un protocollo di "broadcast"). Per esempio, IEEE 802.11 (velocità della versione di 2003: 54 Mbps).
WWW (World Wide Web): tutti i web server (che hanno il ruolo di inviare file ai browser) e i loro file. I file normalmente sono le pagine web, ma anche possono essere file di audio, filmati ecc. Distinzione tra Internet e il WWW: Internet: cavi e router che collegano i computer che hanno un indirizzo IP. WWW: un servizio di Internet fornito dal sottoinsieme di quei computer (i web server). Una richiesta per visualizzare una pagina web: tramite uno Universal Resource Locator (URL) Tre parti principali: Protocollo: http:// indica al computer come gestire i file. Nome del server: www.di.unito.it, che è il nome simbolico dell'indirizzo IP del web server della pagina richiesta. http://www.di.unito.it/~topolino/Psicologia/1213/ECDL.html Percorso della pagina: /~topolino/Psicologia/1213/ECDL.html identifica il file e la sua posizione nel file system del web server. Le pagine sono rappresentate (memorizzate, spedite) sotto forma di sorgente. Sorgente: una descrizione di come la pagina deve apparire all'utente. Non è il caso che le pagine sono rappresentate come un grafico. I file di descrizione in generale richiedono meno spazio (rispetto alla rappresentazione grafico di una pagina). Il browser può adattare la visualizzazione di una pagina. Per leggere il sorgente di una pagina: scegliere Visualizza dalla barra dei menu del browser, poi Sorgente o HTML. Sorgente tipicamente scritto nel linguaggio HTML (Hypertext Markup Language).

 

Fonte: http://www.appuntiunito.it/wp-content/uploads/2013/12/informatica.docx

Sito web da visitare: http://www.appuntiunito.it

Autore del testo: non indicato nel documento di origine

Il testo è di proprietà dei rispettivi autori che ringraziamo per l'opportunità che ci danno di far conoscere gratuitamente i loro testi per finalità illustrative e didattiche. Se siete gli autori del testo e siete interessati a richiedere la rimozione del testo o l'inserimento di altre informazioni inviateci un e-mail dopo le opportune verifiche soddisferemo la vostra richiesta nel più breve tempo possibile.

 

Codifica immagini e suoni

 

 

I riassunti , gli appunti i testi contenuti nel nostro sito sono messi a disposizione gratuitamente con finalità illustrative didattiche, scientifiche, a carattere sociale, civile e culturale a tutti i possibili interessati secondo il concetto del fair use e con l' obiettivo del rispetto della direttiva europea 2001/29/CE e dell' art. 70 della legge 633/1941 sul diritto d'autore

Le informazioni di medicina e salute contenute nel sito sono di natura generale ed a scopo puramente divulgativo e per questo motivo non possono sostituire in alcun caso il consiglio di un medico (ovvero un soggetto abilitato legalmente alla professione).

 

Codifica immagini e suoni

 

"Ciò che sappiamo è una goccia, ciò che ignoriamo un oceano!" Isaac Newton. Essendo impossibile tenere a mente l'enorme quantità di informazioni, l'importante è sapere dove ritrovare l'informazione quando questa serve. U. Eco

www.riassuntini.com dove ritrovare l'informazione quando questa serve

 

Argomenti

Termini d' uso, cookies e privacy

Contatti

Cerca nel sito

 

 

Codifica immagini e suoni