




















































































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
RIASSUNTO DELLE SLIDE PER ECDL
Tipologia: Slide
1 / 92
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





















































































Codifica dell'informazione Informazione e codifica L’informazione può essere definita come un insieme di dati espressi mediante una rappresentazione simbolica ed inseriti in un contesto interpretativo. In generale, per rappresentare le informazioni è possibile adottare sistemi di simboli diversi. Ad esempio, come mostrato nella Figura 2.1, le lettere dell’alfabeto, i numeri arabi, i numeri romani o ancora i segnali stradali sono sistemi di simboli comunemente usati per rappresentare e comunicare informazioni. Esiste dunque una corrispondenza arbitraria fra ogni singolo simbolo e l’informazione che esso intende rappresentare. Questa corrispondenza viene chiamata codifica dell’informazione. Un codice è un insieme di simboli e di regole. Queste ultime sono necessarie a definire l’uso e il significato dei simboli. Codificare un’informazione significa determinare una corrispondenza fra i segni di un codice e i dati che costituiscono l’informazione e il suo significato. Di una stessa informazione sono possibili diverse codifiche che usano regole e segni diversi. Ad esempio, in un ristorante si può trovare un cartello con la scritta “vietato fumare” o più semplicemente il simbolo della sigaretta con il divieto. Nonostante l’informazione sia sempre la stessa, ossia che in quel ristorante non si può fumare, per trasmetterla si possono utilizzare codici (cioè simboli) anche molto diversi tra loro. Come costruire un codice Si voglia costruire un codice per comunicare a uno studente il voto conseguito a un esame universitario senza usare la normale numerazione in trentesimi. Le possibili informazioni che il codice deve poter rappresentare sono: “insufficiente”, i voti da diciotto a trenta e il voto “trenta e lode”. Per prima cosa, si deve individuare un insieme di simboli che costituisca il codice, avendo cura di definire un simbolo per ognuna delle informazioni da rappresentare. Ci sarà quindi bisogno di 15 simboli diversi e si dovrà associare ad ogni simbolo la corrispondente informazione, definendo un’opportuna tabella di codifica come nell'esempio della Figura 2.3. In questo modo, dato un voto ( messaggio ), è possibile derivarne una rappresentazione conforme al codice definito (attività di codifica ). Viceversa, dato un messaggio espresso con tale codice, è possibile ricavare il voto corrispondente (attività di decodifica ). Ad esempio, dato il simbolo #, è possibile decodificare il messaggio e affermare che il voto conseguito è 24. E’ importante che a ogni simbolo corrisponda una e una sola informazione, in modo che il messaggio non risulti mai ambiguo. Nell'esempio della Figura 2.3, è stato mostrato un codice che richiedeva 15 simboli per rappresentare altrettante informazioni diverse. Un codice costruito in questo modo è molto semplice e di rapida realizzazione, ma comporta che il numero di simboli che compongono
il codice e la tabella di codifica crescano con il numero di informazioni da rappresentare. È facile intuire che la gestione di un codice con un elevato numero di simboli possa essere molto complessa. È possibile costruire un codice che consenta di rappresentare lo stesso numero di informazioni diverse utilizzando un numero inferiore di simboli. Ciò significa ridurre il numero di simboli a disposizione senza tuttavia ridurre il numero di informazioni che possono essere codificate. E' evidente che, avendo meno simboli a disposizione, la rappresentazione di un’informazione richiederà una combinazione di più simboli e quindi una maggiore lunghezza dei messaggi codificati. Con riferimento all'esempio del codice per rappresentare i voti di un esame universitario, si supponga di poter utilizzare soltanto i simboli! £ $ %. Nella Figura 2.4, si mostra un esempio di tabella di codifica basata sui quattro simboli considerati. In questo modo, dato un voto, la lunghezza del messaggio codificato sarà pari a due simboli, il doppio rispetto all'unico simbolo richiesto dal codice della Figura 2.3. Si noti inoltre che sono importanti tanto i simboli quanto la posizione che questi occupano nel messaggio. Infatti il significato di “!$” è ben diverso da “$!”. La rappresentazione dell’informazione numerica può adottare varie tecniche. Normalmente si usa la numerazione decimale posizionale, dove una cifra assume un valore dipendente dalla posizione che occupa nel numero. Per esempio, la cifra “2” nel numero 12 vale 2*10^0 (dove 0 è la posizione occupata dal 2 nel numero in esame) e nel numero 2987 vale 2*10^3 (dove 3 è la posizione occupata dal 2 nel numero in esame). Adottando una numerazione in base 10 si hanno 10 cifre con le quali costruire i numeri: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Esistono molti altri tipi di numerazione in cui il numero di cifre è minore a 10, come ad esempio nella numerazione binaria. Questa fu inventata nel XVII secolo da Gottfried Liebniz e si basa sull’utilizzo di soltanto due cifre: 0 e 1. La differenza è che mentre nella numerazione decimale il valore si misura in potenze di 10, nel caso della numerazione binaria il valore si misura in potenze di 2. A parità di valore da scrivere con la numerazione binaria, è necessario impiegare molte più cifre. Questo tipo di numerazione divenne fondamentale con l’avvento dei calcolatori elettronici, poiché le due cifre 0 e 1 sono intuitivamente associabili ai due possibili stati fisici del calcolatore, come ad esempio passaggio/non-passaggio di corrente attraverso un cavo elettrico; polarizzazione/non- polarizzazione di una sostanza magnetizzabile; c arica elettrica positiva/negativa di una sostanza. Per manipolare ed elaborare informazioni (numeri, testo, immagini, audio, video), il calcolatore ha bisogno che queste siano codificate attraverso un codice composto dai soli simboli di 0 e 1. Tale rappresentazione dell’informazione prende il nome di rappresentazione binaria o rappresentazione digitale. Un bit ( binary digit ) rappresenta l’unità minima di informazione, ossia una sola unità informativa che può avere valore 0 o 1. Per poter rappresentare un numero maggiore di informazioni sarà necessario combinare i bit in sequenze. Ad esempio, si supponga di voler fornire una rappresentazione binaria del codice della Figura 2.4. Ogni informazione, cioè ogni possibile voto, deve avere una
Ad esempio, se si vogliono memorizzare 5000 numeri, ognuno con una precisione di 16 bit (cioè 2 byte), saranno necessari: 5000*2 = 10000 byte = 9.76 KiB = 10 KB Rappresentazione digitale del testo La codifica binaria può essere utilizzata anche per rappresentare i caratteri alfanumerici, cioè i caratteri alfabetici, i numeri e gli altri simboli usati nella scrittura di testi. A tal fine, è necessario che ogni carattere di scrittura possieda una propria rappresentazione binaria univoca. Si noti che pure segni come le parentesi, le cifre numeriche, gli operatori aritmetici, i segni di punteggiatura e le lettere maiuscole devono avere la propria rappresentazione binaria univoca. I codici attualmente più utilizzati per rappresentare digitalmente i testi sono: ASCII Esteso : un codice di 8 bit (1 byte) UNICODE: un codice che può essere usato a 8, 16 o 32 bit (1, 2 o 4 byte) e che codifica i caratteri usati in quasi tutte le lingue vive e in alcune lingue morte, nonché simboli matematici e chimici, cartografici, l'alfabeto Braille, ideogrammi, ecc. In base al numero di bit usati prende il nome di UTF-8, UTF-16 o UTF-32 (per garantire la compatibilità tra i diversi sistemi, la codifica dell'ASCII Esteso è uguale a quella di UTF-8). Il fatto che un codice “sia di 8 bit” significa che la rappresentazione di un singolo carattere occupa 8 bit (ad esempio, la lettera “a” nella codifica ASCII è rappresentata dal codice
caratteri. Questo significa che ASCII a 7 bit è in grado di rappresentare fino a 128 caratteri diversi. In questo primo standard (mostrato nella Figura 2.6) non era possibile rappresentare caratteri come le lettere accentate, di uso comune nei paesi di influenza neolatina. A questo primo codice ne fece seguito una sua estensione, detta ASCII esteso. Questa si serve di un byte (8 bit) consentendo la rappresentazione di 2^8 = 256 caratteri diversi nei quali sono contenute anche le lettere accentate e altri simboli. Per codificare una parola occorre recuperare dalla tabella ASCII la sequenza di bit corrispondenti ad ogni lettera che la compone. Ad esempio si voglia rappresentare la stringa “Inf”. Essa richiede 3 byte, uno per ogni carattere, e l’insieme dei bit corrispondente ad ogni lettera sarà: I = 01001001 n = 01101110 f = 01100110 Per decodificare un testo ASCII il procedimento è inverso rispetto a quello di codifica. Data la sequenza 010010010110111001100110, dobbiamo suddividerla in gruppi di otto bit, e poi decodificare ogni gruppo con il carattere corrispondente mediante la tabella ASCII: 01001001 = I 01101110 = n 01100110 = f Si noti come alla lettera maiuscola corrisponde un simbolo diverso rispetto alla corrispettiva minuscola, infatti la lettera “i” corrisponde alla sequenza 01101001. I caratteri maiuscoli e minuscoli sono a tutti gli effetti diversi dal punto di vista della codifica binaria. Si noti inoltre che per decodificare un messaggio è necessario conoscere a priori il tipo di codifica usato. Dall'analogico al digitale La codifica di elementi come suoni, immagini e animazioni presenta aspetti molto diversi rispetto a quella di testi e singoli numeri. Il testo è naturalmente composto da un insieme discreto di simboli (che diventano quindi l'unità minima di informazione), mentre per i numeri ciò che conta è il loro valore (codificato direttamente in binario con la precisione desiderata). Ma quali sono le unità informative minime di un suono o di un'immagine? Suoni e immagini sono descrivibili come segnali , cioè variazioni di una certa grandezza fisica lungo una o più dimensioni: la pressione che varia in funzione del tempo nel caso di un suono, la luce che varia in funzione dello spazio nel caso di un'immagine, o la posizione di un corpo che varia in funzione del tempo nel caso di un'animazione. La particolarità di questi segnali è che sono continui (Figura 2.7): perchè la pressione sonora passi da un valore ad un altro, devono essere attraversati tutti gli infiniti valori intermedi. Lo stesso vale per una fotografia (la transizione tra due colori, per quanto
La risoluzione e la dimensione di un’immagine dipendono dal numero di pixel da cui è composta: un’immagine la cui griglia misura 800 colonne x 600 righe sarà divisa in 480000 pixel (0.48 megapixel). Ogni pixel rappresenta un punto di colore, la cui tonalità è descritta mediante una sequenza di bit. Se l’immagine è in bianco e nero sarà sufficiente un unico bit per descrivere ciascun pixel: 0 per il nero e 1 per il bianco. Se l’immagine è a colori sarà necessario un numero maggiore di bit per pixel, che dipende da come vengono codificati i colori. Un sistema per la rappresentazione digitale dei colori viene detto modello di colore , e ne esistono molti. La maggior parte usa i colori primari convenzionali per derivare tutte le possibili tonalità. Il più utilizzato è lo schema RGB , (Red Green Blue, rosso verde blu) che sono i colori primari su cui il modello è costruito. Per distinguere i colori l’occhio umano utilizza fotorecettori di tre tipi, rispettivamente più sensibili al rosso, al verde o al blu. Questi colori sono quindi detti primari perchè miscelandoli è possibile evocare la percezione di qualsiasi altro colore. Solitamente in RGB si utilizza un byte per ognuno dei tre colori primari, per un totale di 24 bit per pixel (cioè 3 byte). E' quindi possibile rappresentare 256 sfumature diverse per ogni colore primario, quindi complessivamente 256 x 256 x 256 colori diversi, cioè circa 16 milioni di tonalità di colore. In definitiva, la rappresentazione binaria di un’immagine è costituita da una sequenza di pixel, cioè gruppi di bit che descrivono il colore associato a ciascun punto. Se consideriamo un’immagine di dimensione 640 x 480 espressa secondo lo schema RGB, possiamo calcolare quanti byte saranno necessari per memorizzare tale immagine: 640 x 480 = 307200 pixel, ognuno dei quali richiede 3 byte per rappresentare il colore associato, quindi 307200 x 3 = 921600 byte = 900 KiB. Rappresentazione digitale dei suoni Per i suoni l’unità minima di informazione è rappresentata da un campione di ampiezza, cioè il valore di ampiezza dell'onda sonora in un determinato istante. Gli esempi in Figura 2.7 e 2.8 si riferiscono proprio al suono (questa codifica prende il nome di Pulse Code Modulation, PCM). Un suono può essere descritto come la sensazione causata dall'oscillazione più o meno periodica dell'aria che incide sul timpano dell'ascoltatore. Oscillazioni di diversa ampiezza danno origine alla sensazione di volumi più o meno elevati, mentre il periodo delle oscillazioni incide sulla percezione di suoni gravi o acuti. L'orecchio umano può sentire suoni che oscillano da 20 fino a 20000 volte al secondo (da 20 a 20000 hertz, o Hz). Dunque, per il teorema di Nyquist-Shannon, in genere si campiona il segnale più di 40000 volte al secondo (solitamente 44100 o 48000). Tuttavia, per suoni particolari come la voce, tutte le oscillazioni sopra i 4000 Hz non hanno un particolare contenuto informativo; non è quindi raro vedere codifiche a 8000 campioni al secondo per applicazioni come telefonia o messaggistica vocale.
Riguardo alla precisione di ogni campione audio, si è scelto un numero di bit consono a rappresentare la gamma di volumi a cui si è normalmente esposti, dal sussurro fino a rumori forti (ma sotto la soglia del dolore); questo valore è stato fissato a 16 bit. Tuttavia non è raro trovare suoni registrati a 24 bit, in modo da poter sfruttare una precisione maggiore durante le fasi di lavorazione di un prodotto, come può essere un disco musicale. Infine si noti che l'essere umano, in genere, è dotato di due orecchie. Questo gli permette di localizzare la direzione da cui provengono i suoni. Per poter codificare (almeno in parte) questo tipo di informazione, solitamente vengono rappresentati segnali audio stereofonici, cioè composti da due sequenze di campioni, una relativa al canale sinistro ed una al canale destro. Esistono poi codifiche a più canali (come il 5.1, composto da 6 canali indipendenti), che permettono una maggiore precisione spaziale. In definitiva, la rappresentazione binaria di un suono è costituita da una sequenza di campioni, cioè gruppi di bit che descrivono il valore di pressione sonora di ciascun canale. A scopo esemplificativo si può calcolare la memoria necessaria a memorizzare un minuto di musica in qualità CD: 60 secondi x 44100 campioni al secondo x 16 bit per campione x 2 canali = 84672000 bit = 10584000 byte =10336 KiB = 10.1 MiB Rappresentazione digitale dei video Per un video l’unità minima di informazione è rappresentata dal fotogramma, a sua volta composto da pixel. Un video quindi eredita quanto detto relativamente alle immagini, con l'aggiunta però di avere tante immagini quanti sono i fotogrammi di cui è composto, riprodotte ad una velocità sufficientemente alta da fornire, all'occhio umano, l'illusione del movimento. Per via del fenomeno di persistenza delle immagini sulla retina, l'occhio umano fatica a percepire come separate tra loro immagini che si susseguono ad una velocità minima di 10 o 15 fotogrammi al secondo (fps), dunque tale velocità è sufficiente per creare l'impressione del movimento. Tuttavia velocità più elevate consentono di creare un'illusione più realistica, e non è raro trovare codifiche a 25, 30, 50 o 60 fps. Va inoltre considerato che anche in questo caso vale il teorema di Nyquist-Shannon: sarà capitato di vedere video in cui le pale di un elicottero sembrino ferme o girino molto lentamente; questo è il tipico effetto di aliasing temporale che ha luogo quando il movimento da codificare è molto superiore alla velocità con cui si campiona. Materiale registrato a fps più alti (come 120, 240, 300 o addirittura >1000) viene impiegato per la riproduzione in "slow motion" (movimento rallentato), viene cioè riprodotto ad una velocità inferiore per osservare nel dettaglio i movimenti del soggetto del video, altrimenti troppo veloci per essere notati. La tecnica opposta prende invece il nome di "stop motion"; in questo caso i fotogrammi sono registrati a distanza di diversi minuti l'uno dall'altro e poi riprodotti a fps tradizionali, in modo da rendere percepibili movimenti altrimenti troppo lenti per essere notati. Infine si noti che l'essere umano, in genere, è dotato di due occhi, che consentono la cosiddetta visione stereoscopica. Questo permette di valutare la distanza a cui si trovano gli oggetti grazie alle diverse informazioni che ogni occhio riceve. Per poter codificare
lavorazione del bene multimediale. Nella tabella seguente si illustrano i nomi di alcuni formati e contenitori di questo tipo: Esempi di codifiche non compresse Tipo di dati Esempio di Codifica Esempio di Contenitore Esempio di funzionamento Audio PCM WAV, AIFF Vengono memorizzati tutti i campioni audio nella loro forma originale Immagini Raster/Bitmap RAW, BMP, TIFF Vengono memorizzati tutti i pixel nella loro forma originale Video Raster/Bitmap AVI, MOV Vengono memorizzati tutti i fotogrammi nella loro forma originale Altro (nativa) (nativo) Vengono memorizzati tutti i dati nella loro forma originale I metodi di compressione lossless si basano sull'idea di eliminare ciò che è ridondante, si evita cioè di memorizzare informazioni inutilmente ripetute. Questo comporta un risparmio di memoria che in media si aggira intorno al 50% dell'occupazione originale. Il costo di questo risparmio si riflette nella necessità di reintrodurre la ridondanza (decompressione) per poter elaborare le informazioni (fosse anche solo per visualizzare l'immagine su schermo o sentire il suono). Va comunque notato che la decompressione di un file lossless dà origine alle stesse informazioni di partenza, senza che sia scartato alcun dettaglio. Formati di questo tipo sono quindi l'ideale per l'archiviazione o la trasmissione di dati nella forma più conservativa, senza che però sia sprecata memoria. Nella tabella seguente si illustrano i nomi di alcuni formati e contenitori di questo tipo: Esempi di codifiche lossless Tipo di dati Esempio di Codifica Esempio di Contenitore Esempio di funzionamento Audio
Se un campione è ripetuto, viene memorizzato solo una volta con l'indicazione di quante volte va ripetuto Immagini RLE, LZW TIFF, PNG Se un pixel è ripetuto, viene memorizzato solo una volta con l'indicazione di quante volte va ripetuto Video HuffYUV, Animation
Viene memorizzata solo la porzione di fotogramma diversa dal fotogramma precedente
Esempi di codifiche lossless Tipo di dati Esempio di Codifica Esempio di Contenitore Esempio di funzionamento Altro Huffman ZIP, RAR Si modifica la codifica in modo che i simboli più ripetuti abbiano un codice più corto Infine, i metodi di compressione lossy si basano sull'idea di eliminare ciò che è irrilevante, si evita cioè di memorizzare informazioni non percepibili dall'utente. Viene quindi persa in modo definitivo tutta quell'informazione che in media non viene percepita. Questo comporta un oggettivo degrado dell'informazione, con la potenziale introduzione di artefatti e distorsioni non presenti nel dato originale. Il risparmio che ne deriva può arrivare fino al 90% dell'occupazione originale. Oltre all'oggettiva perdita di informazioni, il costo è che la decompressone in genere è più onerosa per il calcolatore in termini di potenza di calcolo richiesta. Inoltre, sebbene la decompressione sia sempre necessaria per la fruizione del dato originale, è caldamente sconsigliata la manipolazione dei dati e la successiva ricompressione lossy, in quanto si affronterebbe una nuova perdita di informazioni, con l'introduzione di sempre più distorsioni e artefatti. Formati di questo tipo sono ideali per la fruizione in streaming da parte dell'utente finale. Nella tabella seguente si illustrano i nomi di alcuni formati e contenitori di questo tipo, mentre in Figura 2.10 si può vedere un esempio di immagine che ha subito diverse ri-codifiche (decompressione e ricompressione) in formato JPEG. Esempi di codifiche lossy Tipo di dati Esempio di Codifica Esempio di Contenitore Esempio di funzionamento Audio Mpeg, AAC, ADPCM, GSM, AMR, WMA
Se una porzione di segnale è sotto la soglia di udibilità viene scartata Immagini JPEG, GIF TIFF, JPG Si riduce la quantità di colori disponibili (GIF) o si eliminano i dettagli impercettibili (JPG) Video DV, H264, Divx, 3GPP, WMV, Mpeg
Ogni immagine viene divisa in blocchetti e si memorizzano le coordinate dello spostamento di ogni blocco Altro - - Non conoscendo la tipologia di dati non è possibile sapere cosa si può scartare Struttura del calcolatore Anatomia di un calcolatore
moltiplicazione e divisione, oltre che le principali operazioni logiche come AND, OR e NOT. Una volta prelevati gli operandi dai Registri di memoria, la ALU esegue l'operazione richiesta e ne deposita il risultato nuovamente in memoria. La ALU, insieme all'unità di controllo, collabora al completamento di un ciclo macchina. I bus sono canali di comunicazione tra le varie componenti dell’elaboratore e si differenziano a seconda della funzione svolta. Tra i principali produttori di microprocessori è possibile citare Intel, AMD, Motorola, Qualcomm e ARM. Ogni microprocessore è caratterizzato da un clock che scandisce la sequenza delle operazioni da eseguire. Ogni operazione può richiedere uno (nel caso di operazioni elementari) o più cicli di clock. La frequenza di clock è uno dei parametri con i quali si valuta la velocità di calcolo di un microprocessore. L’unità di misura della frequenza di clock è l’hertz (1 hertz corrisponde ad un ciclo al secondo). I microprocessori attualmente in commercio raggiungono frequenze di clock nell'ordine dei Gigahertz (10^9 hertz). Microprocessori più piccoli e veloci sono difficili da costruire per via di alcuni limiti fisici, dunque per la produzione di calcolatori più performanti la tecnologia moderna si sta concentrando nella realizzazione di microprocessori che contengono più CPU (chiamate core) in modo che queste possano svolgere più compiti in parallelo. Memoria primaria Un calcolatore possiede due tipi di memoria: la memoria primaria (chiamata anche centrale o di lavoro) e la memoria secondaria o di massa. La memoria primaria è quella che conserva i programmi in esecuzione e i dati in uso all'interno della CPU. E’ organizzata come una successione di bit raggruppati in unità dotate di indirizzo (un numero progressivo a partire da 0) dette celle. La velocità di accesso a questa memoria è cruciale perché da essa dipende la reattività del calcolatore alle richieste dell’utente. Il metodo di accesso alla memoria primaria è casuale, nel senso che, conoscendo l’indirizzo, è possibile accedere a una qualsiasi cella di memoria in modo diretto e il tempo di accesso alla cella non dipende dalla sua posizione. Per questo motivo, la memoria primaria è anche detta Random Access Memory o RAM. Un’ulteriore caratteristica distintiva della memoria primaria è la sua volatilità: questo significa che, spegnendo il calcolatore, il contenuto delle celle di memoria viene cancellato e non è più recuperabile. Memoria secondaria La memoria secondaria è la memoria dei dischi e delle unità di memorizzazione permanente, quali ad esempio i dischi fissi (hard disk), i dischi ottici (CD-ROM, DVD, Blu- Ray) e le memorie flash (utilizzate, per esempio, nelle chiavette USB). Questo tipo di memoria è in grado di memorizzare grandi quantitativi di informazioni che, nel caso dei dischi ottici, può andare da qualche centinaio di MB fino a qualche decina di GB e, nel caso dei dischi fissi, può arrivare a decine di TB. Nella memoria secondaria l’informazione viene memorizzata in maniera permanente, ma, a differenza della memoria primaria, questo tipo di memoria ha tempi di accesso molto più elevati. Le memorie basate su dischi (hard disk, CD-ROM, DVD-ROM, ...) non possono accedere a una cella di memoria in modo diretto ma richiedono un tempo di posizionamento del dispositivo di lettura e
scrittura per raggiungere la zona di memoria richiesta. Per questo motivo, il tempo di accesso ad un dato dipende dalla posizione della cella sul disco. I principali dispositivi di memoria secondaria (Figura 3.2) sono: dischi fissi (hard disk): utilizzati per l’archiviazioni di programmi e dati e generalmente collocati all'interno del calcolatore. Esistono anche hard disk esterni, di solito collegabili tramite porte USB. Questi dispositivi sono composti da una pila di dischi metallici rotanti collegati a due testine di lettura/scrittura ciascuno (una per lato del disco). Le testine possono spostarsi dalla parte più esterna del disco alla parte più interna (il funzionamento è pressoché identico a quello dei vecchi lettori di dischi in vinile) e possono magnetizzare o smagnetizzare i vari blocchi dati in cui i dischi sono suddivisi; supporti a lettura ottica (CD-ROM, DVD, Blu-Ray): sono utilizzati per la distribuzione del software e di grossi archivi di dati multimediali (testi audio, foto, video). Sono generalmente usati come supporto alla memorizzazione di dati in sola lettura e richiedono dispositivi dedicati, cioè i masterizzatori, per poter eseguire operazioni di scrittura. Il funzionamento meccanico di questi dispositivi è praticamente identico a quello degli hard disk: la principale differenza riguarda l'interazione della testina con il disco che, in questo caso, è basata su un principio ottico (la testina emana luce e riceve la luce riflessa dal disco); memorie flash (chiavette USB, Solid State Drive, memory card): questa tipologia di memorie è di recente introduzione e funziona, come la memoria primaria, senza l'ausilio di parti meccaniche. Le memorie flash, generalmente basate su principi di fisica quantistica (come l' effetto tunnel ), sono ad accesso casuale, molto più veloci di tutte le altre tipologie di memorie secondarie e permettono una notevole riduzione dei consumi (dovuta all'assenza di parti meccaniche). Negli ultimi anni si sta assistendo all'introduzione di supporti chiamati SSD (Solid State Drive) utilizzati come sostituti dei vecchi hard disk: questi nuovi dischi sono ancora molto costosi e non riescono a raggiungere la capacità di memorizzazione dei vecchi hard disk, ma garantiscono enormi incrementi della velocità di lettura e scrittura oltre che consumi ed emissioni sonore estremamente ridotte. Le periferiche Oltre alla CPU e alla memoria primaria e secondaria, il calcolatore ha bisogno di dispositivi di input e output chiamati periferiche per supportare l'interazione con l’ambiente esterno. Le periferiche si collegano al calcolatore mediante interfacce di comunicazione (comunemente dette porte), e possono variare a seconda del tipo e della velocità di trasmissione. Inoltre, per ogni tipo di periferica esiste una scheda chiamata controller che viene connessa alla scheda madre e che ha il compito di gestire il comportamento della periferica. I dispositivi di input consentono di comunicare al calcolatore informazioni provenienti dall'utente o dall'ambiente esterno. I principali dispositivi di input (Figura 3.3) sono: la tastiera, gli strumenti di puntamento (mouse), lo scanner, il microfono, le macchine fotografiche e le videocamere digitali. La tastiera è il dispositivo di input principale ed è comunemente affiancata dagli strumenti di puntamento. Oltre al popolarissimo mouse, un esempio di strumento di puntamento è il touchpad, molto diffuso sui calcolatori portatili e con funzionalità analoghe a quelle del mouse. In particolare, il touchpad è costituito da
E’ consuetudine suddividere il software in due macro-categorie: il software di sistema e il software applicativo. Il software di sistema è l’insieme dei programmi che gestiscono le risorse e il comportamento del calcolatore. In questa categoria, il software più importante è il sistema operativo , un insieme di programmi che controlla e gestisce le funzionalità legate a CPU, memoria, periferiche e dispositivi di input/output collegati al calcolatore. Nel software di sistema sono inclusi i firmware e i driver. Il firmware è un software integrato in un dispositivo elettronico per svolgere funzioni specifiche, come l’avvio del dispositivo stesso. Un esempio di firmware è il BIOS ( Basic Input-Output System ) che è un firmware integrato sulla scheda madre del calcolatore con il compito di eseguire la procedura di avvio all'accensione della macchina. Il driver è un software che affianca uno specifico dispositivo e ne consente il corretto funzionamento. Il driver è normalmente installato all'interno del sistema operativo e consente al calcolatore di utilizzare il dispositivo. Ogni dispositivo possiede il proprio driver, e il driver è composto da un insieme di procedure che controllano le varie funzionalità del dispositivo. Ad esempio, una stampante, come ogni dispositivo collegabile a un calcolatore, è dotata del proprio driver, la cui installazione è necessaria affinché il calcolatore possa correttamente farne uso. Il software applicativo comprende tutti i programmi che consentono all'utente di eseguire compiti specifici. Sono esempi di software applicativo i programmi per la creazione e la gestione di documenti (es. Microsoft Word), i fogli di calcolo (es. Microsoft Excel), i browser per la navigazione su web (es. Mozilla Firefox), i programmi per la gestione della posta elettronica (es. Microsoft Outlook), i programmi per l’elaborazione delle immagini (es. Adobe Photoshop) e così via. Il sistema operativo Il sistema operativo (SO) è il software di sistema più importante per il corretto funzionamento di un calcolatore e presiede numerose funzionalità. Da un lato, il sistema operativo si occupa di gestire le componenti fisiche del calcolatore. In particolare, sono di sua competenza funzioni come: la gestione della CPU e della memoria principale (RAM). In ogni istante, il calcolatore esegue numerosi programmi. Per questo motivo, il sistema operativo deve stabilire come e in quale ordine questi programmi avranno accesso alla CPU, allocando inoltre lo spazio in memoria principale per ciascuno di essi; la gestione dei file e la memorizzazione sui dispositivi di memoria secondaria. Il sistema operativo è dotato di un modulo denominato file system per la gestione dei file. Questo modulo presiede le operazioni di salvataggio/memorizzazione dei file e le corrispondenti operazioni di lettura/caricamento dei medesimi. Il file system utilizza un’organizzazione dei file in cartelle ( directory ) per favorire una gestione ordinata e intuitiva dello spazio disponibile da parte dell’utente; l’interazione con le periferiche. Tramite i driver, il sistema operativo è in grado di comunicare con i dispositivi collegati al calcolatore consentendone il corretto funzionamento.
Inoltre, il sistema operativo si occupa di gestire l’interazione fra l’utente e il calcolatore. In particolare, è compito del sistema operativo intercettare i comandi dell’utente e fare in modo che essi siano correttamente eseguiti orchestrando il funzionamento delle varie componenti del calcolatore che si rendessero necessarie. A tal fine, il sistema operativo è dotato di un’interfaccia, normalmente visuale, che consente all'utente di comunicare in maniera intuitiva e naturale con il calcolatore. Questa interfaccia è chiamata GUI ( Graphical User Interface ) e utilizza strumenti come finestre, pulsanti e puntatori per fornire all'utente gli strumenti necessari per invocare l’esecuzione dei comandi. Ad esempio, tramite gli strumenti di input come la tastiera e il mouse, l’utente può invocare la stampa di un documento. Il sistema operativo intercetta il comando e fa in modo che il documento richiesto sia passato alla stampante. Tramite il driver della stampante, il sistema operativo manda in stampa il documento e produce l’output richiesto. Quale sistema operativo? Il sistema operativo è lo stesso per tutti i calcolatori? La risposta è no: esistono sistemi operativi diversi, ognuno con le proprie caratteristiche e peculiarità. I sistemi operativi più diffusi e conosciuti sono Microsoft Windows , Linux, Apple Mac OS X e Android. Windows è un prodotto della società statunitense Microsoft e prende il nome dall'elemento che ne caratterizza l’interfaccia grafica: la finestra (window). Nel corso degli anni, le versioni di Microsoft Windows che sono andate succedendosi sono piuttosto numerose: Windows 95, 98, 2000, XP, Vista, 7, 8 e 10, solo per citarne alcune. Si tratta di un SO disponibile per numerose piattaforme , cioè installabile su calcolatori con diverse tipologie di microprocessore e scheda madre. Microsoft Windows è un SO commerciale , è dunque necessario pagare l’acquisto di una licenza per poterlo installare su un calcolatore. Linux è un SO non commerciale e può essere installato su un calcolatore senza dover pagare alcuna licenza. La prima versione nasce nel 1991 a opera di Linus Torvalds, un giovane studente da cui il sistema ereditò il nome. Si tratta di un SO estremamente versatile (ispirato ad un importante sistema dell'epoca chiamato UNIX) e, come Microsoft Windows, installabile su numerose piattaforme. Oggi questo SO è disponibile in svariate distribuzioni. Le diverse distribuzioni Linux condividono l’uso del medesimo nucleo ( kernel ) del sistema e si differenziano nei restanti moduli. Ne risulta che le varie distribuzioni possono presentare differenze anche sostanziali per l’utente. Sono esempi di distribuzioni Ubuntu , Fedora e SuSE. Mac OS X è un prodotto della società statunitense Apple ed è concepito per essere installato solo ed esclusivamente sui dispositivi di questo stesso produttore (PC o dispositivi mobili). Come Microsoft Windows, anche Mac OS X è un prodotto commerciale ed è necessario pagare una licenza per installarlo su un calcolatore; come Linux, anche questo SO è ispirato al SO UNIX. Android è un sistema operativo non commerciale sviluppato da Alphabet (azienda nota anche col nome Google) basato su Linux, ma ottimizzato per i dispositivi mobili (smartphone, tablet ecc). E’ possibile scegliere il sistema operativo da installare sul proprio calcolatore? In genere, all'acquisto del calcolatore, il sistema operativo è già installato (e l’eventuale licenza d’uso già pagata in caso di prodotto commerciale). Installare un nuovo sistema operativo può implicare l’acquisto di un’ulteriore licenza d’uso nel caso si scelga un prodotto
per funzionare solo con uno specifico sistema operativo e non è possibile utilizzarli su altri sistemi. Si pensi al caso di Microsoft Access, un software applicativo della suite di Microsoft Office che è disponibile solo per sistema operativo Windows. File system e gestione delle memorie di massa Dopo che un testo, un'immagine o qualsiasi altro dato è stato creato, acquisito mediante conversione analogico-digitale, o modificato, è necessario memorizzarlo in maniera persistente nella memoria di massa. Questo in genere viene fatto memorizzando i dati ( contenuto ) in un file (dall'inglese"schedario", il contenitore ). Un file non è altro che una zona di memoria non volatile localizzata mediante un file system , ovvero un modo usato dal SO per suddividere ed organizzare una memoria di massa. Esistono diversi file system, in genere caratteristici di un sistema operativo e non sempre compatibili tra loro. Tuttavia tutti i file system più diffusi supportano l'organizzazione di file in cartelle (raggruppamenti logici che hanno il solo scopo di aiutare l'utente a reperire i propri file, ma non necessariamente identificano aree diverse del dispositivo di memoria) e la memorizzazione di dati satellite relativi ad un file (come la data di creazione, la visibilità del file negli elenchi e i permessi di accesso da parte di diverse categorie di utenti). Per citare alcuni nomi a scopo di esempio, Windows può utilizzare file system come NTFS o exFAT; Mac OSX in genere supporta HFS+ o exFAT; Linux e Android supportano Ext, JFS, exFAT. In ogni caso, lo spostamento di un file in una cartella sullo stesso dispositivo o la cancellazione di un file non necessitano di una effettiva lettura e riscrittura dei dati, sarà il file system a tenere traccia della posizione logica del file o a segnalare come libera la porzione di memoria precedentemente occupata. In generale i file sono organizzati in cartelle mediante una struttura ad albero che consente molteplici livelli di annidamento. Per localizzare un file da un punto di vista logico ci si riferisce al suo percorso , ossia il nome delle cartelle e sottocartelle separate da un carattere speciale (non utilizzabile quindi all'interno del nome di un file o di una cartella). Ad esempio, il percorso del file pippo.txt posto all'interno di una cartella pluto , a sua volta all'interno di paperino , tutte residenti sul disco identificato dal SO con la lettera C: sarà: C:\paperino\pluto\pippo.txt Esempi di programmi applicativi Di seguito proponiamo un elenco di software applicativi raggruppati per funzionalità offerte: Software di videoscrittura o word processor. Alcuni software di questo tipo sono molto semplici e offrono funzionalità minimali per lo più legate alla semplice scrittura (es. Blocco Note o Notepad++ ) o alla formattazione del testo (es. Wordpad o Text Edit ). Altri software offrono funzionalità avanzate per la videoscrittura che comprendono strumenti di revisione e supporto all'inserimento di immagini e altri elementi grafici (es. Microsoft Word e OpenOffice Writer ). Altri ancora sono
concepiti per la scrittura in ambito scientifico e facilitano l'uso di notazioni matematiche sofisticate (es. LaTeX ). Fogli di calcolo o spreadsheet. Consentono la memorizzazione di dati sui quali eseguire funzioni di calcolo di varia natura (ad esempio calcoli matematici, statistici, finanziari). Esempi di software di questo tipo sono Microsoft Excel, OpenOffice Calc e Lotus 123. Software per la gestione di basi di dati o DBMS ( Database Management System ). Questi software supportano l'interazione con le base di dati, cioè oggetti capaci di memorizzare dati in forma strutturata. Esempi di software di questo tipo sono Microsoft Access e OpenOffice Base. Software per realizzare presentazioni. Consentono di creare presentazioni composte da diapositive ( slide ) in sequenza. Esempi di software di questo tipo sono Microsoft PowerPoint e OpenOffice Impress. Software di intrattenimento. Consentono di giocare e di usare il calcolatore come uno strumento ludico. Questi software possono essere semplici emulazioni di giochi esistenti nella realtà (come ad esempio giochi di carte, dama, scacchi) o giochi più complessi di avventura e strategia. Software per grafica (disegno, fotoritocco, progettazione). Consentono la modifica e la manipolazione di immagini e oggetti di tipo grafico. Esempi di software di questo tipo sono Adobe Photoshop , Adobe Illustrator, Autocad e Gimp. Software per la riproduzione audio e video. Esempi di software di questo tipo sono Windows Media Player , Video Lan Player , iTunes , QuickTime player e FooBar. Software per la navigazione su web ( browser ). Consentono di reperire e visualizzare pagine web. Esempi di software appartenenti a questa categoria sono Microsoft Edge , Google Chrome , Safari , Opera e Mozilla Firefox. Software per scrivere ( sviluppare ) software. Si tratta di complessi ecosistemi composti (nella forma più basilare) da un semplice applicativo capace di scrivere del testo non formattato e da un secondo applicativo (il compilatore ) in grado di tradurre il testo scritto in un linguaggio di alto livello (il codice sorgente ) in linguaggio comprensibile dal calcolatore (il codice macchina ). Software gestionali , concepiti e sviluppati per soddisfare le esigenze di realtà specifiche. I software di gestione di ospedali, biblioteche, uffici, magazzini sono esempi di questo tipo. I software gestionali sono commissionati dall'interessato (l'azienda che necessita del software per le proprie esigenze gestionali) ad una o più società di sviluppo software ( software house ) concordando le funzionalità da sviluppare e il prezzo da corrispondere. Come il calcolatore capisce come interpretare un file Quando l'utente vuole visualizzare o modificare il contenuto di un file, il sistema operativo si occupa di eseguire l'applicazione più adatta per decodificare e manipolare i dati in esso contenuti. Ogni sistema operativo ha una strategia diversa per riconoscere la tipologia di un file (immagine, testo, suono, ecc). Le tecniche principali sono le seguenti: Estensione: In Windows i caratteri successivi all'ultimo punto (".") determinano l'estensione del file (nascosta per impostazione predefinita). Ad ogni estensione è associata una applicazione predefinita, che può essere cambiata dall'utente.