Tecno 1. dai numeri binari ai Sistemi Operativi 1 - TECNO 1 REL Tecnologie e Progettazione dei Sistemi Informatici e di Telecomunicazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tecno 1. dai numeri binari ai Sistemi Operativi 1 - TECNO 1 REL. 15.09.01 5. Tecnologie e Progettazione dei Sistemi Informatici e di Telecomunicazione"

Transcript

1 Tecno 1 Tecnologie e Progettazione dei Sistemi Informatici e di Telecomunicazione dai numeri binari ai Sistemi Operativi Paolo Macchi ISIS Cipriano Facchinetti Castellanza TECNO 1 REL

2 Prometeo, (in greco antico Promethéus, «colui che riflette prima») era un Titano, un gigante fortissimo, ed era amico del genere umano. Era un cugino di Zeus e non andava molto d'accordo con lui, perché a quel tempo il re dell'olimpo voleva cancellare gli uomini dalla Terra. I Titani si ribellarono a Zeus, ma Prometeo (che aveva previsto la sconfitta dei Titani) e suo fratello Epimeteo («colui che riflette dopo») si schierarono dalla sua parte e questo permise a Prometeo di diventare amico degli altri dei, come Atena che gli insegnò molte bellissime arti come l'architettura, l'astronomia, la matematica, la medicina, la metallurgia e la navigazione che poi Prometeo insegnò agli umani. Prometeo e suo fratello ricevettero dagli dei un numero limitato di "buone qualità" da distribuire saggiamente fra tutti gli esseri viventi. Epimeteo (che non usava molto la testa!) cominciò a distribuire le qualità agli animali ma si dimenticò degli uomini, così Prometeo, per rimediare, decise di rubare dalla casa di Atena uno scrigno in cui erano riposte l'intelligenza e la memoria, e le donò alla specie umana. Zeus non fu contento di questo gesto: così gli umani sarebbero stati più difficili da sterminare! Come ulteriore punizione Zeus tolse il fuoco agli uomini e lo nascose. Prometeo si recò allora da Atena affinché lo facesse entrare di notte nell'olimpo e appena giunto, accese una torcia dal carro di Elio (che teneva il sole) e si dileguò senza che nessuno lo vedesse. Il padre degli dei fece incatenare Prometeo, nudo, con lacci d'acciaio nella zona più alta e più esposta alle intemperie del Caucaso e gli venne conficcata una colonna nel corpo. Inviò poi un'aquila perché gli squarciasse il petto e gli dilaniasse il fegato, che gli ricresceva durante la notte, giurando di non staccare mai Prometeo dalla roccia. Dopo tremila anni, Eracle (il mitico Ercole!) passò dalla regione del Caucaso, trafisse con una freccia l'aquila che lo tormentava e liberò Prometeo, spezzando le catene. [tratto da Prometeo, simbolo della libertà di ricerca, viene punito da Zeus perché ha rubato il fuoco agli dei per donarlo agli uomini. Il re degli immortali appena si sedette sul trono del padre, subito divise tra gli dei i diversi privilegi. Ma degli infelici mortali non si diede alcun pensiero. Per questo Prometeo decide di aiutarli andando contro i divieti divini. Ermete cerca di convincerlo a non opporsi al volere di Zeus: Rifletti, Prometeo, perché questa non è una minaccia vana, questa è la parola di Zeus, è il suo volere, al quale non c è mai scampo, ma il Titano si è schierato dalla parte dei più deboli. Prometeo ha donato agli uomini la padronanza del fuoco, aprendo così agli infelici mortali la strada del progresso. [tratto da Dal dizionario: nuove tecnologie : sono le applicazioni dell informatica e della telematica alle diverse attività umane,. La parola tecnologia è formata da tecno- (dal greco τεχνο- ovvero arte e da -logia ( dal greco -λογία) ossia discorso (http://it.wiktionary.org/wiki/tecnologia) 2 - TECNO 1 REL

3 Tecno 1 Il digitale: ma di cosa stiamo parlando? 7 Il Sistema di Elaborazione 10 bit e byte 11 Hardware 13 Software 13 Reti 14 Rappresentazione dell informazione numerica 1 Rappresentazione dei numeri naturali 1 Numerazione binaria 16 Conversione da Binario a Decimale 16 Conversione da Decimale a Binario 17 Numerazione esadecimale 18 conversioni decimale-esadecimale-decimale 18 conversione: da binario ad esadecimale e viceversa 18 Rappresentazione di numeri interi 19 Somma binaria 19 Somma in esadecimale 19 Modulo e segno 20 Complemento a 2 20 Sottrazione binaria in complemento a 2 22 Rappresentazione dei numeri reali 22 Rappresentazione in virgola fissa 22 Conversione Decimale->Binario di numeri frazionari in virgola fissa 23 Rappresentazione in virgola mobile (floating point- IEEE74) 24 Conversione decimale > floating point 2 Operazioni con la rappresentazione floating point 2 Proprietà dell aritmetica in virgola mobile 26 BCD 26 Comunicazione e Codici 28 Informazione 28 Schema fondamentale della comunicazione. 30 L interazione uomo-macchina 32 Codici per la rilevazione e la correzione degli errori 33 Codifica dei caratteri alfanumerici 34 ASCII a 7 bit (ISO 646) 3 ASCII (esteso) a 8 bit (ISO 889) 3 Unicode 36 Codice QR 38 codifica di immagini e suoni 39 Immagini 39 Grafica Digitale 40 Grafica Raster (bitmap) 40 Grafica vettoriale 42 Suoni 42 Esercizi riepilogativi 43 Compressione dati 44 Ottimizzazione dei messaggi 44 Tecniche non distruttive (senza perdita di informazione) 4 Tecniche distruttive (con perdita di informazione) 47 Introduzione ai Sistemi Operativi 49 Cos è un Sistema Operativo 49 Evoluzione 1 Prima generazione (194-19) 2 Seconda generazione (19 196) 2 Terza generazione ( ) 4 Quarta generazione ( > ai giorni nostri) 6 Sensori e MEMS 9 Sensori 9 MEMS 9 Struttura di un Sistema operativo 63 Il modello onion skin 64 I PROCESSI 66 Definizione di processo 66 Descrittore di processo (PCB) 67 Interazioni tra processi 68 Relazioni di precedenza 69 Sistemi multiprogrammati 70 Time sharing TECNO 1 REL

4 Stati di un processo 72 Il nucleo 74 Virtualizzazione CPU 74 Scheduler Algoritmi di scheduling 7 First Come First Served (FCFS) 76 Round Robin (RR) 77 Shortest job first 78 Meccanismo di priorità 78 Thread 79 La priorità in Windows 80 La priorità in Linux 81 Processi sequenziali e concorrenti 83 Corse critiche, Interferenza e Cooperazione 83 Sezioni critiche Mutua esclusione 84 Soluzioni 84 Semafori 8 SEMAFORO BINARIO 86 Mutua esclusione 86 Produttore / consumatore : 86 SEMAFORO GENERALIZZATO 88 Produttore / consumatore con buffer multiplo 88 Problemi: 89 Deadlock 93 Primitive di Comunicazione tra Processi 94 Monitor 9 Perché i monitor? 9 Un monitor è 9 Sincronizzazione di thread in Java 9 I thread in Java 96 SO: due esempi 98 Windows 98 Processi e thread secondo Microsoft 100 Creare un'applicazione Visual Basic.NET con thread 101 Linux-Unix 103 Lista comandi LINUX Sistemi operativi basati su Kernel Linux 106 Android 106 ios 106 BlackBerry Tablet OS 107 Gestione della Memoria 109 Indirizzi di memoria fisici e logici 109 Traduzione di indirizzi logici in fisici 109 Memory-Management Unit (MMU) 109 Swapping 110 Allocazione della memoria 111 Allocazione contigua 111 Allocazione non contigua 112 segmentazione 113 Memoria Virtuale 113 Paginazione su richiesta (Demand Paging) 114 Page Fault 114 File System 117 Il concetto di file 117 File system 117 Il File System Logico 117 File system fisico 119 Metodi di assegnazione dello spazio su disco 120 FAT File Allocation Table 120 Assegnazione indicizzata 121 NTFS 122 Protezione e sicurezza 124 Protezione 124 Sicurezza 124 Autenticazione (controllo dell accesso) degli utenti 124 Minacce ai programmi 12 Esercitazioni 126 IL PC... in pratica 126 La scheda madre I componenti di una scheda madre 128 BOOT: avvio del PC TECNO 1 REL

5 Memorie di massa 133 flash memory card 134 L hard disk 13 DVD 137 IL TECNICO: ESERCITAZIONI 138 Windows 141 Funzionalità 141 Il menu start 142 Il pannello di controllo 143 Gestione attività (task manager) 143 File System 148 Esplora 148 Estensioni dei file e attributi 149 Esempio 10 Il prompt dei comandi (cmd) 12 Esercizio guidato 12 ESERCIZI 14 Il file.bat 1 OPERAZIONI con VARIABILI 18 Gruppi e Utenti 160 Gestione di MMC 160 Aggiungi snap-in 161 Il registro di sistema - Windows Registry 162 Installazione di Windows 16 Procedura Installazione Sistema Operativo (Windows XP) 16 Windows: avvio (basato su appunti Cisco System) 166 Capire i problemi di un dispositivo (troubleshooting) 167 Il documento WEB: HTML e CSS 170 Fogli di Stile (CSS) 171 Attributi di stile 172 Box model e Schemi di posizionamento 173 Strumenti di grafica 176 Paint.net 176 Finestra principale di Paint.NET Barra del titolo Barra dei menu Barra degli strumenti Elenco immagini 177. Immagine Canvas Strumenti finestra Finestra cronologia Finestra livelli Finestra colori Barra di stato 177 Movie Maker 177 Tecno 1 Dai numeri binari ai Sistemi Operativi Questo testo è pubblicato sotto licenza Creative Commons - Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported - Per le condizioni consulta: Le utilizzazioni consentite dalla legge sul diritto d'autore e gli altri diritti non sono in alcun modo limitati da quanto sopra. Il documento è scaricabile da sezione download, per fini esclusivamente didattici e non commerciali. Il documento è scaricabile liberamente da: - TECNO 1 REL

6 E possibile richiedere la dispensa in formato cartaceo, all'ufficio Stampa dell'isis Facchinetti Segnalazioni di errori, critiche e consigli sono molto graditi e possono essere inoltrati a oppure lasciando un commento al momento del download se siete registrati. (in copertina : Theodoor Rombouts ( ) Prometheus) Convenzioni usate nel testo: rappresenta una curiosità, un approfondimento NOTA rappresenta una nota rappresenta una esercitazione o esempio link di riferimento Rappresenta un codice o dei risultati o una segnalazione storica 6 - TECNO 1 REL

7 Il digitale: ma di cosa stiamo parlando? Il digitale è strutturalmente incapace di sfumature. Deve atomizzare il mondo in frammenti piccoli Il digitale pretende che tutto ciò che esiste sia scomponibile in elementi 1 e 0 (perlomeno fino alla risoluzioni che riesci a percepire). Il digitale tratta il mondo come una cosa che si può replicare un numero arbitrario di volte [Jonah Lynch, Il profumo dei limoni. Tecnologia e rapporti umani nell era di Facebook ] 1+1=0 Di cosa stiamo parlando quando parliamo di digitale? Si tratta in generale di metodi che permettono di tradurre un fenomeno analogico, fatto di infinite variazioni, in una sequenza di solo due elementi: 1 e 0, on and off. Se ci si pensa è meraviglioso che un suono possa essere rappresentato molto fedelmente attraverso il procedimento digitale. Un suono è infinitamente variabile, anche se si tratta di una dinamica estremamente semplice, quasi unidimensionale, perché è solo la compressione e rarefazione dell aria. Una sola variabile, la pressione dell aria, è in grado di trasmettere la stupenda ricchezza di una sinfonia, la inimitabile particolarità della voce della donna che amo, o il suono estivo della cicala Questa ricchezza sonora posso convertirla in una stringa di bit, 1 e 0. Si usa un approccio matematico che permette di approssimare una qualsiasi curva, la quale rappresenta la pressione dell aria in singolo istante, con una serie di funzioni semplici. Se voglio mettere questa curva su un CD (o nella memoria del mio PC o trasmetterlo in Internet) devo prima convertire il segnale analogico (infinitamente variabile) in una sequenza di bit. Per fare ciò uso la tecnica di Fourier. Se opero a qualità CD, uso 44100Hz, dunque misuro l altezza della curva e ne registro il valore volte al secondo. E effettivamente un ottima approssimazione ma anche a questo livello di precisione, perdo informazione: tutto ciò che succede TRA i momenti di misurazione viene perso. La curva approssimata sarà poi interpretata dal lettore CD e tradotta in pressione dell aria attraverso una cassa. 7 - TECNO 1 REL

8 Il tutto si complica nel caso delle immagini. Per essere convertita in formato digitale, un immagine deve essere tradotta in pixel, cioè in una serie di punti in cui si rileva la quantità e il colore della luce. Sono discreti, dei punti separati che non hanno niente a che fare uno con l altro. Ognuno di essi ha quindi un valore di colore e di intensità che può essere convertito in numeri come si fa con la musica. E qualcosa di simile al punto e croce che faceva mia nonna una griglia di stoffa, in cui ogni casella era riempita da una piccola croce di filo colorato, formava una immagine. Uno schermo fatto di pixel rende molto facile la produzione di linee rette lungo gli assi dello schermo. Basta una semplice curva e quell immagine non è più tanto bella [remixato da : Jonah Lynch, Il profumo dei limoni. Tecnologia e rapporti umani nell era di Facebook ] Proviamo a vedere l ingrandimento di qualche carattere di questa stessa pagina: Ci si accorge subito che vengono usate delle tecniche per ingannare l occhio che percepisce delle curve là dove c è una scacchiera di pixel. Non sempre il contorno della figura coincide con le linee della griglia. Quella che si ottiene nella codifica è un'approssimazione della figura originaria : 8 - TECNO 1 REL

9 _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 risoluzione dell immagine. Un calcolatore, per come è costruito, lavora solo con i valori 0 e 1. Le informazioni (numeri, testi, immagini, suoni... )che vogliamo rappresentare (e poter elaborare) in un calcolatore devono perciò subire un processo di Codifica e Decodifica che permette di ottenere la loro rappresentazione L elemento base della rappresentazione binaria è il bit (binary digit, cifra binaria). Con un bit possiamo rappresentare un informazione che può assumere 2 valori Esempio Stato di una lampadina: 0 = spento, 1 = acceso (0 = falso, 1 = vero) Una lampadine può trovarsi in soli due stati: accesa o spenta, ON o OFF. Ciò corrisponde a 2^1 (2 stati, 1 lampadina) Due lampadine hanno 4 stati (2^2): Off Off Off On On Off On On con 3 lampadine otto stati (2^3) e in generale Quindi: 1 bit 2 valori: 0, 1 2 bit 4 valori: 00, 01, 10, 11 3 bit 8 valori: 000, 001, 010, 011, 100, 101, 110, 111 In generale: n bit rappresentano 2^n stati, dove n è il numero degli elementi, in questo caso le lampadine. In particolare, una matrice costituita da 20 righe di lampadine per 20 colonne, possiede 400 lampadine. Se ogni lampadina può essere accesa o spenta abbiamo: 2^400 stati possibili, cioè 10^120 stati, cioè 1 seguito da 120 zeri! (cfr Ross Ashby Nota: Si pensi che la terra era in uno stato gassoso circa x10^9 anni fa, cioè 1.6x10^17 secondi, cioè 1.6x10^26ns (1nanosecondo è pari a 10^-9 secondi), ancora molto lontani da 10^120, così come la stima del numero totale di atomi nell'universo visibile, pari a Se poi consideriamo le possibili transizioni tra gli stati, cioè il numero di possibili modi in cui il sistema può passare da uno stato all altro, il numero diventa enorme Infatti, ad esempio, con due sole lampadine con quattro stati di partenza si possono avere 4 stati x 3 transizioni (senza considerare la transizione su se stessa), cioè 12 transizioni possibili. 9 - TECNO 1 REL

10 Con 20, lampadine e 400 stati si possono avere (2^400)! (! È il simbolo di fattoriale). E un monitor quanti pixel ha??? Le semplici considerazioni fatte possono dare almeno una vaga idea della complessità dei sistemi, anche di quelli piu semplici! Attraverso meccanismi di codifica possiamo rappresentare diversi tipi di informazione: Numeri naturali (insieme N) Numeri interi (insieme Z) Numeri razionali (insieme Q) caratteri immagini suoni video Esistono diverse convenzioni (codifiche) per fornire a ciascun tipo di informazione una rappresentazione binaria come vedremo nei prossimi capitoli. Il Sistema di Elaborazione I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L insieme dei due costituisce una forza incalcolabile - Albert Einstein fisico ( ) Un computer ti fa fare più errori e più velocemente di qualsiasi altra invenzione dell uomo. Con l eccezione forse delle armi da fuoco e della tequila - Mitch Ratcliffe (giornalista USA) Un computer, chiamato anche, calcolatore o elaboratore digitale o sistema di elaborazione, o sistema informatico è un dispositivo fisico capace di memorizzare, elaborare e trasmettere informazioni. Un sistema di elaborazione può essere, approssimativamente visto come composto da un Hardware il cui funzionamento viene controllato da un Software particolare chiamato Sistema Operativo. L'hardware è rappresentato dai componenti fisici come il case, i dispositivi di memorizzazione, le tastiere, i monitor, i cavi, gli altoparlanti e le stampanti. Il software è costituito da istruzioni raccolte in programmi che fanno svolgere al computer determinate funzioni. Il sistema operativo ha il compito di dare istruzioni al computer su come operare. Ad esempio permette l accesso ai file su disco e gestisce le periferiche e l esecuzione dei programmi. Il sistema operativo si occupa di gestire la macchina, le sue risorse e i programmi che vi sono eseguiti, e fornisce all'utente un mezzo per inserire ed eseguire 10 - TECNO 1 REL

11 gli altri programmi. I programmi o applicazioni, svolgono svariate funzioni. Vanno dai giochi, all accesso a Internet, a un foglio di calcolo a un editor di testo Le informazioni trattate da un sistema di elaborazione (numeri, parole suoni, immagini ) sono codificate in binario, cioè usano due soli simboli: 0 e 1 che i dispositivi fisici del computer associano a due stati (ad esempio livelli di tensione: 0V e V). bit e byte L informazione minima è il bit (binary digit) che assume i due stati differenti codificando una cifra binaria. I bit sono raggruppati in Byte (8 bit) multipli di esso. Il bit è anche l unità di misura dell Informazione. (remixato, in parte, da : Computer & Web - Corriere della sera) 1bit una goccia d acqua 1 Byte -> un cucchiaio 1KB -> un secchio da 10 litri 1 MB -> una piccola piscina da litri 1 GB -> un lago 10 milioni di litri multipli del bit e del Byte: Nome Abbreviazione (binari) SI Equivale a Capacità bit 1 bit Unità di misura dell entropia 2ˆ0 bit =1 bit byte B 2ˆ3 bit = 8 bit un carattere alfanumerico kilobyte (KiB) kb 2^10 = byte circa 1 righe dattiloscritte megabyte (MiB) MB 2^20 = byte un libro di circa 00 pagine. gigabyte (GiB) GB 2^30 = byte circa 00'000 pagine. terabyte (TiB) TB 2^ byte un milione di libri di 00 pagine ciascuno. petabyte (PiB) PB 2^0 101 byte 180 volte la Biblioteca del Congresso2 exabyte (EiB) EB 2^ byte 180'000 volte la Biblioteca del Congresso zettabyte (ZiB) ZB 2^ byte 180 milioni di volte la Biblioteca del Congresso 1 la parola deriva dalla contrazione dell'espressione inglese binary unit. 2 Si trova a Washington D.C., negli Stati Uniti: con 28 milioni di volumi è la più grande biblioteca del mondo TECNO 1 REL

12 Nome Abbreviazione (binari) SI Equivale a Capacità yottabyte (YiB) YB 2^ byte 180 miliardi di volte la Biblioteca del Congresso (cfr per IEC International Standard Conversioni ) Ad esempio un file della dimensione di 1000byte corrisponde a: bits bytes (10^3 byte) kilobytes (circa 1KB, cioè 8Kbit) megabytes (circa 10^-3 *10^6) gigabytes terabytes Byte: bit byte (10^8byte) kilobyte (circa KB (10^*10^3= 10^ Kbyte )) megabyte (circa 100 MB (100*10^6 Byte)) gigabyte ( 10^8 = 10^-1*10^9=.1 GB) terabyte (10^8 = 10^-4 *10^12) petabyte Per comodità le conversioni in potenze di 2: Esercizi (http://www.di.unito.it/~sproston/psicologia/0607/esercizio_teorico1_soluzioni.html): 1. un file musicale del tuo cantante preferito quanti byte occupa? (Ex. Years Alesso 4.24MB, 2. Dati 6 bit per la codifica, quante informazioni distinte si possono rappresentare? 2 6 =64 informazioni distinti 3. Dato un byte per la codifica, quante informazioni distinte si possono rappresentare? Un byte = 8 bit, 2 8 =26 informazioni distinti 4. Quanti bit si devono utilizzare per rappresentare 20 informazioni distinte? Almeno bit, perché 2 =32 => 20 (4 bit non sono sufficiente, perché 2 4 =16 < 20). Un'immagine a 26 colori è formata da 400x400 pixel. Quanto spazio occupa? Ogni pixel richiede un byte (=8 bit, perché 2 8 =26, sufficiente per rappresentare 26 colori); l'immagine ha 400 x 400 = pixel; l'immagine occupa byte (= bit) 6. Problema: vuoi copiare i dati del tuo disco fisso su CD-ROM. Nel disco fisso ci sono GB di dati (documenti, musica, fotografie, etc.) e tu hai in casa 3 CD-ROM da 700MB l'uno (capienza standard). Ti bastano per copiare i dati o devi andare a comprare altri CD? Soluzione: vediamola insieme 3 CD x 700 MB = MB hai in totale 2.100MB a disposizione per il salvataggio MB : MB = 2,0 GB circa convertendo i MB in GB scopri che hai a disposizione poco più di 2GB mentre te ne servono! Risultato: non ti bastano, hai bisogno di altri CD-ROM! 7. Si desidera salvare su file un testo di 100 pagine, ognuna composta da 0 righe di 70 caratteri. Calcolare la dimensione del file espressa in KB e MB. 0*70=3.00 caratteri per pagina (= n. byte se ogni carattere è composto da 1 byte, cioè 8bit) 3.00*100=3. *10^ = numero byte del testo pari a 30KB, pari a 0,3MB 12 - TECNO 1 REL

13 8. quanti diversi valori posso rappresentare con bit? Risposta: con bit posso rappresentare 2^ = 32 diversi valori. 9. quanti diversi valori posso rappresentare con 2 byte? 2 byte = 16 bit, quindi posso rappresentare 2^16 = 636 diversi valori. 10. quanti bit mi servono per rappresentare 1000 diversi valori? devo trovare il minimo numero n di bit che soddisfi. 2^n > 1000, 2^10 = 1024, quindi n = quanti bit mi servono per rappresentare 112 diversi valori? 7 bit (2^7 = 128). 6 bit sarebbero stati pochi, mentre 8 bit sarebbero stati troppi! Hardware Le componenti hardware possono essere raggruppate in cinque tipologie: i dispositivi di ingresso, per immettere i dati all'interno del computer; i dispositivi di uscita, per visualizzare il contenuto del computer; le unità di elaborazione, per svolgere le operazioni e coordinare tutti i componenti hardware; le unità di memorizzazione, per l'archiviazione dei dati elaborati; i bus, per veicolare le informazioni tra i componenti del computer. Esistono vari tipi di computer: desktop, laptop (chiamato anche portatile, notebook), palmari (PDA - Personal Digital Assistant). Inoltre esistono grandi sistemi informatici (mainframe e supercomputer) che sfruttano la presenza di elaboratori molto potenti che "prestano" le proprie capacità a dispositivi privi di autonomia operativa (terminali). Nonostante vi siano state innumerevoli evoluzioni tecnologiche nell'hardware, alla base del funzionamento di un computer è sempre presente l'architettura della macchina di von Neumann, risalente agli anni Quaranta del secolo scorso. Software Con software si identificano i programmi che devono essere installati sul calcolatore per eseguire operazioni specifiche. I programmi sono una sequenza di operazioni elementari, dette istruzioni, che rispettano la sintassi di un dato linguaggio di programmazione. Si dividono in software di sistema (o di base) e software applicativi. Per riferirsi a gruppi di computer basati sullo stesso microprocessore e su caratteristiche di progetto simili, si usa l'espressione famiglia di computer. In genere, computer di famiglie diverse non sono tra loro compatibili, cioè in grado di usare lo stesso sistema operativo e gli stessi programmi applicativi Il software applicativo non può operare se il funzionamento del sistema non viene controllato e diretto dal software di sistema, che gestisce e sovrintende il lavoro dei vari componenti e l'interazione tra di essi. Il software di sistema più importante è il sistema operativo (SO), ma devono essere considerati appartenenti a questa categoria anche i compilatori per linguaggi di programmazione, che servono per creare software applicativi. È possibile dire che il sistema operativo funge da interfaccia tra il computer e l'utente, cioè offre all'utente tutti gli strumenti necessari per lo svolgimento delle operazioni richieste, garantendo la gestione di tutte le risorse impiegate. L'interfaccia può essere di tipo testuale (come accade in MS-DOS) o di tipo grafico (come accade nelle varie versioni di Windows). Sono molte le operazioni e i controlli che vengono effettuati dal sistema operativo; tra i più importanti, vi è la gestione delle memorie e di tutti i componenti presenti nel sistema, compresa l'interazione e la comunicazione tra di essi. Ad esempio, è il sistema operativo a gestire le periferiche di input o di output, oppure la memorizzazione nei vari supporti, nonché il controllo dei programmi aperti. Attualmente esistono numerosi sistemi operativi, i più diffusi dei quali sono: Windows, MacOS, ios, Android, Linux, Unix... Esiste il problema della compatibilità. I software applicativi vengono creati e usati per svolgere determinate operazioni nei moltissimi campi nei quali può essere usato un computer : word processor o elaboratori di testi, i programmi per l'elaborazione dei fogli elettronici, detti anche fogli di calcolo o spreadsheet, i sistemi per la gestione di basi di dati, (Microsoft Office, Open Office,..),I programmi di grafica permettono di elaborare immagini (Corel Draw, Adobe PhotoShop, Graphics e Adobe Illustrator,Gimp), 13 - TECNO 1 REL

14 Reti Una rete di computer o network è un insieme di computer - o un insieme di gruppi di computer - collegati tra loro per scambiare informazioni di vario tipo. Le macchine collegate in una rete possono essere collocate a brevi distanze, in reti denominate LAN - Local Area Network - ma possono anche essere molto distanti tra loro e connesse tramite reti di vaste dimensioni, in genere dette WAN - Wide Area Network - o reti geografiche, delle quali è un esempio Internet. Internet è una rete di computer mondiale attraverso la quale milioni di utenti possono interagire a vari livelli e con diverse modalità. La nascita di Internet può essere fatta risalire al 1969, ed è legata essenzialmente a ragioni militari. In quell'anno, infatti, sorse l'esigenza di connettere più computer tra loro al fine di consentire la comunicazione alle basi militari sparse in tutto il territorio statunitense anche in caso di interruzione dei collegamenti locali (si pensi a un conflitto nucleare). Nel 1990, Tim Berners Lee, ricercatore del CERN di Ginevra, propose la creazione di un sistema di reperimento dell'informazione a livello mondiale per tenere in contatto tutti i ricercatori in campo fisico. In questo contesto e in questo periodo nacquero il World Wide Web e il linguaggio HTML. Negli anni immediatamente successivi, grazie all'avvento dei personal computer, cominciarono a entrare in rete anche le organizzazioni commerciali. Il fatto che la rete non fosse più dedicata a scopi militari attrasse l'attenzione di utenti appartenenti a svariati mondi, tanto da portare alla nascita dell'attuale Internet, che è ormai definibile come la Rete delle reti TECNO 1 REL

15 Rappresentazione dell informazione numerica Rappresentazione dei numeri naturali Nel passato sono state adottate svariate notazioni numerali in gran parte poco razionali fino a giungere con una certa fatica alle notazioni oggi più diffuse: le notazioni posizionali decimali. Confrontiamo quanto accadeva nelle civiltà antiche basandoci su una spiegazione di Marco Bramanti. La maggior parte delle civiltà (es. Greci, Romani, Indiani) numeravano in base 10, con riferimento all'atto di contare con le dita delle mani e basato essenzialmente sul numero cinque (V, una mano), additivo e non posizionale: il simbolo X (due mani) rappresenta sempre il numero dieci. Ad esempio, un romano diceva triginta quattuor per dire trentaquattro, con la nostra stessa logica nostra: una parola per le decine, una per le unità. Tuttavia la scrittura non sempre seguiva questa logica. Ad esempio per i Romani: trentaquattro si scriveva XXXIV: non bastava un simbolo per le decine e uno per le unità. Il sistema romano non è un sistema con cifre, né è posizionale e risulta perciò impossibile fare le operazioni in colonna : 34 + XXXIV + 47 = XLVII = 81??????? Occorre l abaco, o un sistema di calcolo sulle dita! I babilonesi usavano una numerazione in base 60, infatti ancora oggi i l ora è divisa in 60 minuti, un minuto in 60 secondi Il comune sistema decimale che tutti impariamo a scuola, è, invece, di tipo posizionale: ogni cifra assume un significato diverso a seconda della posizione in cui si trova (unità, decine, centinaia, ecc.). Questo sistema deriva dagli Indiani che usavano un sistema di scrittura posizionale con 9 cifre, e al posto dello zero lasciavano uno spazio vuoto. Gli Arabi appresero dagli indiani questo sistema e lo perfezionarono aggiungendovi lo zero, più comodo dello spazio vuoto. (Vedi anche Da Wikipedia, l'enciclopedia libera 1 - TECNO 1 REL

16 Quindi, come rappresentare un numero naturale? Attraverso una rappresentazione decimale posizionale. Si utilizzano 10 cifre decimali (0, 1,..., 9): - la base è 10; - posizionale: il significato di ogni cifra dipende dalla sua posizione relativa - le posizioni si contano da destra a sinistra partendo da 0 ad es = In generale: numero di n cifre in base b: an 1 bn a1 b1+a0 b0 cifre usate: 0,1,..., b-1 ; a0 è la cifra meno significativa (LSD) ; an 1 `e la cifra pi`u significativa (MSD) Numerazione binaria Il sistema numerico binario è usato in informatica per la rappresentazione interna dei numeri, grazie alla semplicità di realizzare un elemento con due soli valori o stati, ma anche per la corrispondenza con i valori logici di vero e falso. (Wikipedia) Di fatto al posto di considerare le due mani con dieci dita si riduce ai minimi termini il calcolo sfruttando un solo dito: alzato o abbassato, di meno non è possibile! Questo perché le macchine vengono costruite cercando il massimo della semplicità e facilità e quindi hanno bisogno di un linguaggio estremamente semplice e povero. Il sistema binario, ideato in origine dal matematico tedesco Gottfried Leibniz, fu riscoperto nel da George Boole, che fornirà gli elementi matematici per la nascita del calcolatore elettronico. George Boole ( ) è stato un matematico e logico britannico, ed è considerato il fondatore della logica matematica. Nel 184 pubblicò la sua opera più importante, indirizzata alle leggi del pensiero, dopo aver rilevate le analogie fra oggetti dell'algebra e oggetti della logica, ricondusse le composizioni degli enunciati a semplici operazioni algebriche. Con questo lavoro fondò la teoria di quelle che attualmente vengono dette algebre di Boole (o, semplicemente, algebra booleana). Tale algebra permette di definire gli operatori logici AND, OR e NOT, la cui combinazione permette di sviluppare qualsiasi funzione logica e consente di trattare le operazioni insiemistiche dell'intersezione, dell'unione e della complementazione, oltre a questioni riguardanti singoli bit 0 e 1, sequenze binarie, matrici binarie e diverse altre funzioni binarie. Il sistema numerico binario è un sistema numerico posizionale in base 2, cioè che utilizza 2 simboli, tipicamente 0 e 1, invece dei dieci (0,1,2..9) del sistema numerico decimale tradizionale. Di conseguenza, la cifra in posizione N (da destra) si considera moltiplicata per 2^N (anziché per 10^N come avverrebbe nella numerazione decimale). Con n bit, si possono rappresentare, in binario, tutti gli interi da 0 a (2 n 1): con un solo bit posso avere 0 e 1, con due bit posso rappresentare i numeri da 0 a 3: : 00, 01, 10, 11 ; con 3 bit : 000, 001, 010, 011, 100, 101, 110, 111 e così via. (approfondimento in Conversione da Binario a Decimale La formula per convertire un numero da binario a decimale (dove con d si indica la cifra di posizione n all'interno del numero, partendo da 0) è: d (n - 1)2 (n - 1) d 02 0 = N Ad esempio = 1 * * * * 2 0 = TECNO 1 REL

17 Conversione da Decimale a Binario Per convertire da decimale a binario, la parte intera, occorre procedere per divisioni successive per 2. Il resto costituisce una cifra del numero binario da destra verso sinistra, dalla meno significativa (LSD) alla più significativa (MSD). Il procedimento si ferma quando il risultato è 1 che costituisce la cifra più significativa Esempi di conversione Decimale-Binario: 37:2 = 18:2 = 9:2 = 4:2 = 2:2 = Quindi partendo da destra a sinistra otterremo: => : 2 = 7:2 = 3:2 = => : 2 = 8:2 = 4:2 = 2:2 = => = Infatti: 13 : 2 = 6 : 2 = 3 : 2 = = Infatti: 63 : 2 = 31 : 2 =1 : 2 = 7 : 2 = 3 : 2 = : gioco didattico di CISCO, ame/binary_game_page.htm, in cui tramite conversioni binariodecimale si gioca a una specie di Tetris a livelli di complessità crescente. (scaricabile anche su ipad) Altri giochi: /netacad/packetville/index.html ) Possono aiutare anche le carte binarie Calcolatrice scientifica in Windows Conversioni e calcolo binario TECNO 1 REL

18 Numerazione esadecimale Il sistema numerico esadecimale (spesso abbreviato con hex o H) è un sistema numerico posizionale in base 16, cioè che utilizza 16 simboli invece dei 10 del sistema numerico decimale tradizionale. Per l'esadecimale si usano simboli da 0 a 9 e poi le lettere da A a F, per un totale di 16 simboli. Ecco una tabella che confronta le rappresentazioni binarie, esadecimali (in base 16) e decimali di alcuni numeri: bin hex dec A B C D E F conversioni decimale-esadecimale-decimale Per le conversioni decimale-esadecimale il procedimento è analogo a quello in base 2 con la differenza che si deve procedere per divisioni successive per 16, anziché 2. Ad esempio: 18:16=1 18d -> 12H 2 160:16=10 160d -> A0H 0 Per le conversioni esadecimale-decimale il procedimento è analogo a quello in base 2 con la differenza che si deve procedere sommando i prodotti di ciascuna cifra per una potenza di 16 Ad esempio: 12H -> 2*16^0 + 1*16^1 = 2+16 = 18 A0H -> 0*16^ *16^1 = = 160 ABCH-> > conversione: da binario ad esadecimale e viceversa Binario-esadecimale. Prendiamo, ad esempio, il numero binario (corrispondente al decimale 1029). Essendo il sistema esadecimale basato sul numero 16 (2 4 ) lo scriveremo raggruppando le cifre 4 a 4, partendo dalla posizione meno significativa, ovvero quella più a destra: ogni raggruppamento corrisponde ad una cifra esadecimale secondo la tabella precedente. Otterremo, quindi, trasformando i tre raggruppamenti, le tre cifre 4 0 corrispondenti al numero esadecimale 40H Per la conversione esadecimale binario si procede esattamente al contrario: consideriamo ancora il numero 40H e separiamolo in cifre come prima: 4 0 -> TECNO 1 REL

19 Completare la seguente tabella decimale binario esadecimale A B0C FFFF Rappresentazione di numeri interi Come per i naturali, anche l insieme dei numeri interi è infinito. I numeri interi rappresentabili con un numero finito di bit, sono solo un sottoinsieme finito dei numeri interi. L intervallo dei valori rappresentabili dipende dal numero di bit a disposizione. Con n bit possono essere rappresentati 2 n numeri. Somma binaria 0+0 =0 1+0=1 0+1=1 1+1=0 con riporto di 1 Riporto: = Riporto: = = 1010 Somma in esadecimale La somma di due numeri esadecimali viene calcolata adattando le stesse regole della somma dei numeri decimali: Si ha un riporto in esadecimale se la somma in qualunque posizione è maggiore di F TECNO 1 REL

20 Per esempio: A3DH + CAH. Sommiamo ciascuna coppia di cifre. Ad esempio D+ = 2, con riporto di 1. Il riporto viene sommato alle cifre della colonna immediatamente a sinistra. Cioè: A+3+1=E con nessun riporto riporto A 3 D C A E 2 1AFH + 21H Nella colonna più a destra la somma è F+1. Questa origina come bit somma 0 e come riporto 1. Cioè F +1=10. (F=1 ---> F+1= 1+1=16 ---> = 10H) Il riporto viene sommato alle cifre della colonna immediatamente a sinistra. Cioè A La somma di tale colonna origina come cifra somma D e nessun riporto... Il risultato alla fine sarà dunque 1D0H = BC1 16 = ABC 16 + F4 16 = Modulo e segno Per quanto riguarda la sottrazione, le regole sono simili (con la variante che 0-1=1 con prestito di 1), ma, per quanto possa sembrare strano i computer sono in grado solo di effettuare somme e non sottrazioni. La sottrazione si ottiene sommando algebricamente, cioè addizionando un numero negativo, ad esempio 3-2 equivale a 3+(-2). Il problema è allora rappresentare un numero negativo in binario. Vediamo cosa significa. Con n bit possono essere rappresentati 2 n numeri: metà positivi e metà negativi. Il problema allora è quello di distinguere tra positivi e negativi. Un modo è quello di interpretare il bit più significativo con segno (1 se negativo, 0 altrimenti) e i rimanenti (n-1) bit per la rappresentazione del modulo. In modulo e segno posso rappresentare su n bit i numeri da (2 (n-1) 1) + (2 (n-1) 1) ES con 8 bit, - 4 : Per comprendere meglio, usiamo un comodo strumento: l orologio binario. Consideriamo per comodità quattro bit: orologio binario NON usato Questa tecnica però NON viene usata perché ci sono problemi che rendono difficile l utilizzo: ci sono due rappresentazioni dello zero (0000, 1000 ) e difficoltà nelle operazioni di somma (uando i segni sono diversi. Al suo posto viene usato il complemento a 2. Complemento a 2 E il metodo più usato per la rappresentazione dei numeri interi su n bit. Si definisce complemento a 2 di un numero A, su n bit, il numero: Ā = 2 n A 20 - TECNO 1 REL

21 Ad esempio: se A=3, il complemento a 2 su 4 bit è Ā=13, infatti: 2^4 3 = 16-3 =13 Con questa convenzione con n bit possono essere rappresentabili tutti gli interi tra: 2 n-1 + (2 (n-1) 1) Ad esempio con n=8 (8bit) si avrà un range che va da -128 ( , pari a ), fino a +127 ( , pari a ) Per comprendere meglio il complemento a 2 di un numero e la sua importanza applicativa, usiamo l orologio binario. Consideriamo per comodità quattro bit: orologio binario su 4 bit, in complemento a 2 Il numero 0 è rappresentato con 0000, 1 con 0001, -1 è 1111, -2 è 1110 e cosi via. In particolare 7 (0111) è il piu grande numero positivo e 8 (1000) il piu grande, in modulo, negativo. Si può notare che esiste un unica rappresentazione dello 0 e che gli interi codificati in complemento a 2 hanno il bit più significativo a 0 se sono positivi, 1 se negativi. Se consideriamo 8 bit, e non solo 4 come precedentemente descritto, si avrà che il numero 0 è rappresentato da 00h, 1 è 01h, 127 è 7Fh, -128 è 80h, -1 è FFh (2). Il range va da -128 ( ) a +127 ( ) Con 16 bit il numero 0 è 0000h, 1 è 0001h, è 7FFh, è 8000h, -1 è FFFFh (63). Il complemento del complemento restituisce il valore originale. Operativamente, il complemento a 2 di un numero negativo N si calcola così: - si complementano i bit della rappresentazione binaria del modulo N del numero (cioè gli 1 diventano 0 e gli 0 diventano 1) - si somma 1 al risultato ottenuto Esempio -2 (su 4 bit) si ottiene cosi : si parte da 2 = 0010, lo si complementa a uno: 1101 a cui va sommato 1 : = 1110 => -2 Per fare un altro esempio -12 (su bit) si ottiene così: = = CA2 Attenzione al numero di cifre da usare: ad esempio se utilizziamo 4 bit possiamo convertire al massimo il numero 7 (0111 con il bit più significativo che deve essere a 0). Infatti se volessimo convertire su 4 bit il numero 9 (1001) otterremmo Al contrario, su bit, avremo > che è effettivamente -9. Con 8 bit e così via. Dobbiamo anche tener presente che la somma di due numeri positivi potrebbe dare un numero negativo (ad esempio +4, su 4 bit, 1001 cioè -7). Il calcolatore segnala questa eventualità tramite l uso di flag (carry e overflow). Sarà il programmatore che deciderà come interpretare il risultato TECNO 1 REL

22 Sottrazione binaria in complemento a 2 La definizione di complemento a 2 è utile perché permette di ricondurre sempre le sottrazioni ad addizioni. Infatti: B-A = B + (b n A ) b n = B + Ā - b n => B A = B + Ā poiché su n bit b n = 0 Vengono enormemente facilitate le operazioni di somma e differenza, che si riducono alla sola operazione di somma: la differenza è la somma con il numero da sottrarre complementato a 2! ad esempio -3 = + (-3) =2 Tramite il complemento a due una sottrazione è eseguita come un'addizione. Il riporto è trascurato. Si parte da 3 = 0011, lo si complementa a uno: 1100, a cui va sommato 1 ottenendo il complemento a due: 1101: = => 0011= => 1101 = (su bit) => + (-8) = = CA2= 11101= 3 (infatti 11101CA2 =>0011) 12 (su bit) => + ( 12) = = CA2 = 1001CA2= 7-10 (su bit) = + (-10) => = ( = 10110) => = 1011= (su 4bit) = 9 + (-1) => = = 1000 (con riporto 1 che, se su 4 bit, ignoro) Eseguire le seguenti operazioni (su 8 bit) = = ( ) = = = = = = = = Rappresentazione dei numeri reali Finora ci siamo limitati ai numeri interi ma cosa capita per i numeri reali? L insieme dei numeri reali è un insieme infinito: presi due reali qualsiasi, esistono infiniti numeri reali compresi tra essi. N.B. I numeri reali rappresentabili su n bit sono solo un sottoinsieme finito. Ciò significa che si possono rappresentare solo i numeri all interno di un certo intervallo e che anche all interno dell intervallo esistono dei numeri non rappresentabili. Esistono due metodi utilizzati per rappresentare i numeri reali su un calcolatore: la rappresentazione in virgola fissa (FIXED POINT) la rappresentazione in virgola mobile (FLOATING POINT) Rappresentazione in virgola fissa Il metodo più semplice per rappresentare numeri frazionari è quello di scegliere dove posizionare, in modo prefissato (fixed point), la virgola all interno del numero. Ad esempio se si sceglie di usare bit per la parte intera e 4 per la parte frazionaria si ottiene: che rappresenta: 1*2 ^4 + 1*2 ^2 + 1*2^ 0 + 1*2^ *2^ *2 ^-4 = Aiutiamoci con questa tabella di conversione: 22 - TECNO 1 REL

23 n 2^n 2^-n Parte frazionaria binaria Ad esempio, consideriamo il numero Il numero è rappresentato con 8 bit, di cui i primi 6 per la codifica della parte intera, e gli ultimi 2 bit per quella frazionaria. La sequenza rappresenta il numero frazionario binario: = Il numero binario frazionario 0.11 viene rappresentato in virgola fissa con (=0.7) Calcolare a quale numero decimale corrispondono i seguenti numeri binari frazionari: [R ] [R ] [R ] Conversione Decimale->Binario di numeri frazionari in virgola fissa La conversione da sistema decimale a sistema binario in virgola fissa, in cui si impiegano m bit per rappresentare la parte intera ed n bit per rappresentare quella frazionaria si esegue con il seguente algoritmo (http://www.itisvoltafr.it/~virgilio/materiali/mate3/rappres1_4.pdf ): 1. si considerano separatamente parte intera e parte frazionaria; 2. la parte intera viene convertita in un numero binario a m bit; 3. la parte frazionaria viene convertita in un numero binario a n bit effettuando moltiplicazioni successive per 2 separando la parte intera (0 od 1) da quella frazionaria così ottenuta, finché: o si ottiene parte frazionaria nulla o oppure si sono ricavati tutti gli n bit disponibili per la rappresentazione in virgola fissa. In questo caso la rappresentazione del sistema binario è un approssimazione di quella nel sistema decimale. Esempio di conversione 37,12= infatti: separo 37 da 0.12; la parte intera la rappresento come per quanto riguarda la parte frazionaria eseguo iterative moltiplicazioni per 2: 0,12x2 =>0,2 (primo bit dopo la virgola), 0,2x2 =>0, 0.x2 =>1,0 0 termino perché la parte dopo la virgola è 0. la parte frazionaria la rappresento come 001 Consideraiamo ora il numero decimale 0,3= x 2 = 0.6 => bit x 2 = 1.2 => bit x 2 = 0.4 => bit x 2 = 0.8 => bit x 2 = 1.6 => bit x 2 = 1.2 => bit x2 = 0.4 => bit 0 04x2=.. In generale il procedimento potrebbe terminare dopo molte cifre o non terminare mai! E necessario perciò approssimare il numero trovato, fermandosi dopo un numero di passi predefinito. Del resto il numero di bit nella memoria di un computer è limitato. Ad esempio: Convertire in binario il numero 0.3 con un errore di rappresentazione inferiore a x 2 = 0.6 => bit 0 [peso 0.] 0.6 x 2 = 1.2 => bit 1 [peso 0.2] 0.2 x 2 = 0.4 => bit 0 [peso 0.12] 23 - TECNO 1 REL

24 0.4 x 2 = 0.8 => bit 0 [peso 0.062] 0.8 x 2 = 1.6 => bit 1 [peso ] 0.6 x 2 = 1.2 => bit 1 [peso ] 0.2 x 2 = 0.4 => bit 0 [peso ] < 0.01: ho raggiunto la precisione desiderata. (http://www.itisvoltafr.it/~virgilio/materiali/mate3/rappres1_4.pdf ) Convertire in binario il numero 6.2= separo 6 da 0.2; la parte intera la rappresento come 110 per quanto riguarda la parte frazionaria eseguo iterative moltiplicazioni per 2-> = 0.x 2 0.x 2 = 1.0 FINE! Convertire in binario i seguenti numeri: 0.62 [R ] 0.62x2=1.2x2=0,x2= 1, [R ] [R ] Rappresentazione in virgola mobile (floating point- IEEE74) Lo standard IEEE74 definisce un metodo per la rappresentazione dei numeri in virgola mobile - Rappresentare il numero in binario - Trasformare il numero in notazione esponenziale normalizzata in cui rappresenta il valore 0; la rappresentazione degli altri numeri usa il seguente formato: (-1) s (1 + MANTISSA) 2 e Precisione singola 4 byte-> 1 bit per il segno, 8 bit per l esponente, 23 bit per la mantissa Il numero di bit della mantissa rappresenta il numero di cifre significative, cioè dà la precisione del numero. La cifra 1 prima della virgola è sottintesa e quindi si hanno 24 bit interamente dedicati alla mantissa (6,7 cifre decimali) Questa notazione è adatta per le operazioni di confronto tra numeri: per primo c è il segno per vedere se si tratta di numeri positivi o negativi l esponente è indicato prima della mantissa perché numeri con esponente più grande sono più grandi, indipendentemente dalla mantissa Per la rappresentazione dell esponente viene usato un metodo particolare (esponente biased). L esponente viene rappresentato nella forma bias + E dove bias = 2 n /2 1 (dove n è il numero di bit per l esponente) Il numero di bit riservati all esponente determina l intervallo dei numeri ammessi o ordine di grandezza. Il numero di bit riservati alla mantissa determina il numero di cifre significative che si possono usare, cioè la precisione La cifra 1 prima del punto decimale viene sottintesa. Nell esempio che segue si ha: segno=0 => numero positivo (1 rappresenta un numero negativo) => 13 esponente eccesso 127 => =8 =>2^8 mantissa => è da intendersi sempre come In definitiva il numero binario rappresenta: x 2^8 = x 2^4= x 16 = 27x16= segno=0 => numero positivo esponente eccesso 127 => =6 =>2^ TECNO 1 REL

25 mantissa => In definitiva: x 2^6 =77 Precisione doppia 8 byte: 1 bit per il segno, 11 bit per l esponente, 2 per la mantissa La cifra 1 prima della virgola è sottintesa e quindi si hanno 3 bit interamente dedicati alla mantissa (1,16 cifre decimali) [R..12] [R ] [R ] Conversione decimale > floating point il numero è positivo, per cui il segno è 0 - in binario: spostando il punto decimale di 3 posizioni a sinistra, il numero si normalizza in x 2^3 - l'esponente (eccesso 127 ): = 130 = Quindi in Floating Point, singola precisione: segno negativo esponente eccesso 127 mantissa -109,7812 = infatti: 109 = ,11001 che in notazione normalizzata corrisponde a: 1, x2^6. All esponente va aggiunto =133 ( ). Quindi in Floating Point, singola precisione: segno negativo esponente eccesso 127 mantissa.0 [R ] -9.2 [R ] [R ] Operazioni con la rappresentazione floating point Si possono sommare du enumeri floating point solo se hanno lo stesso esponente Se gli esponenti non sono uguali bisogna trasformare il numero con esponente più grande per rendere l esponente uguale a quello dell altro numero; in tal caso il numero è in forma non normalizzata; il risultato deve poi essere normalizzato Per eseguire la moltiplicazione si moltiplicano le mantisse e si sommano gli esponenti (perché la base è la stessa); il prodotto è in forma non normalizzata e aumenta il numero di cifre, quindi deve essere arrotondato Ecco una tabella che riporta in modo schematico le principali classi di valori, numerici e speciali, rappresentabili nello standard aritmetico in virgola mobile IEEE 74. Singola precisione Doppia precisione Entità rappresentata Esponente Parte frazionaria (o mantissa) Esponente Parte frazionaria (o mantissa) Numero denormalizzato da 1 a 24 valore qualsiasi da 1 a 2046 valore qualsiasi Numero in virgola mobile NaN (Not a Number) 2 - TECNO 1 REL

26 Tipi di dati in C Il tipo di un dato è l astrazione della sua rappresentazione. Tipo Dimensione Intervallo di valori Char 1 byte 0 / 2 Int (short int) 2 byte / Long 4 byte / Unsigned int 2 byte 0 / 63 Unsigned long 4 byte 0 / Float 4 byte Notazione IEEE standard double 8 byte Notazione IEEE standard (big endian-little endian) Proprietà dell aritmetica in virgola mobile Questa aritmetica presenta due fondamentali differenze dall'aritmetica reale: l'aritmetica in virgola mobile non è associativa: in generale, per i numeri in virgola mobile, ; l'aritmetica in virgola mobile non è distributiva:in generale,. In definitiva, l'ordine in cui vengono eseguite più operazioni in virgola mobile può variarne il risultato. Questo è importante per l'analisi numerica, in quanto due formule matematicamente equivalenti possono dare risultati diversi, uno anche sensibilmente più accurato dell'altro. Per esempio, nella maggior parte delle applicazioni in virgola mobile, 1,0 + ( ) dà come risultato 1,0, mentre (1, ) dà 0,0. La virgola mobile appare più appropriata quando si richiede una certa precisione relativa al valore. Quando è richiesta una precisione assoluta, la virgola fissa sembra una scelta migliore. BCD Il codice BDC (Binary Code Decimal) viene usato per la rappresentazione di numeri che possano essere convertiti rapidamente in cifre decimali In ogni byte vengono rappresentate due cifre decimali; ogni cifra del numero decimale occupa 4 bit, che assumono il valore della corrispondente rappresentazione binaria. Cifra decimale Codice BCD Con 4 bit le configurazioni possibili sono 16 ma per rappresentare le cifre da 0 a 9 ne vengono usate solo 10; ne restano 6 inutilizzate, cioè il codice è ridondante. Per rappresentare un numero decimale con il codice BCD servono più bit rispetto alla rappresentazione in sistema binario. Il fatto che il codice sia ridondante influenza anche le operazioni aritmetiche. Per ottenere risultati corretti bisogna seguire le seguenti regole: 1 se sommando due cifre BCD si ottiene come risultato una combinazione non lecita bisogna sommare 6 perché le combinazioni illecite sono 6. 2 Se nel risultato della somma di due cifre BCD si verifica un riporto bisogna sommare TECNO 1 REL

27 = Esercizi di riepilogo: 1 Rappresentare i seguenti numeri in complemento a 2 su 8 bit: Rappresentare i seguenti numeri in complemento a 2 su 8 bit: Data la rappresentazione in complemento a 2 (su 8 bit), quali numeri sono rappresentati? Dare la rappresentazione come numeri interi a 16 bit dei numeri 68 e 20 ed eseguire con il metodo del complemento a 2. 4 Eseguire le seguenti sottrazioni usando il complemento a 2 su 8 bit Eseguire le seguenti sottrazioni usando il complemento a 2 su 16 bit Rappresentare con il codice BCD i numeri Eseguire la somma dei seguenti codici BCD e dire a quali numeri corrispondono operandi e risultato = 7 Rappresentare 3,24 secondo lo standard IEEE74 8 Data la seguente rappresentazione (IEEE74), Dare le rappresentazione di 327 come numero intero a 16 bit, con il codice BCD, come numero reale secondo lo standard IEEE74 10 rappresentare 62,1 0,12 4,2 67 secondo IEEE TECNO 1 REL

28 Comunicazione e Codici COMUNICAZIONE = Fenomeno in virtu' del quale l'uomo si relaziona dal punto di vista: Informativo, Esplorativo, Partecipativo con altri uomini e il cosmo E tramite la comunicazione e lo scambio di informazioni che le civiltà umane si sono evolute e sviluppate. Prima attraverso il comportamento, i gesti e la danza, poi con il linguaggio e con le immagini, quindi con la scrittura, con il modo di vestirsi, con i messaggi sonori e di fumo, incidendo piante e rocce, costruendo torri, mandando segnali luminosi, elettrici, magnetici. Ma anche viaggiando, navigando, commerciando e, purtroppo, talvolta, invadendo e facendo la guerra A noi interessa l'aspetto INFORMATIVO: scambio di informazioni da un soggetto a un altro per mezzo di veicoli di varia natura, usando una Sorgente, un'emittente (trasmettitore), un messaggio e un segnale, un canale, un rumore, un ricevente e un destinatario. Informazione L informazione è ciò che aumenta il patrimonio conoscitivo. Può essere di varia natura: immagini (cartelli stradali, semaforo,..), luce (faro), suono (campanella), numeri, parole. Consideriamo un interruttore: esso ha due possibili stati (o scelte) ON (0), OFF (1). All'interruttore è associata una sola informazione: acceso o spento, cioè l'informazione tra due messaggi alternativi è unitaria A due interruttori sono associate due informazioni e 4 stati (2^2). Tre interruttori forniranno tre informazioni con 8 stati (2^3) e cosi' via. La stessa cosa cosa possiamo dire se abbiamo due strade a un bivio: un informazione. Se avessimo 4 diramazioni, avremmo 2 informazioni. Se avessimo un senso unico NON avremmo alcuna informazione (1=2^0). Tanto più ho possibilità di scelta tanto maggiore è la quantità di informazione. L informazione è il numero di diversi messaggi che potrebbero essere trasmessi su un canale in funzione del numero di scelte di simboli usati, L'informazione è uguale al logaritmo in base 2 del numero di scelte equiprobabili e l'unità di misura dell'informazione è il bit [bit] Un bit non è altro che la quantità di informazione fornita dalla scelta fra due alternative diverse, considerate come egualmente probabili. (Il termine bit corrisponde alla contrazione dell'inglese binary digit, numero binario). Nel caso generale di n scelte possibili l'informazione verrà calcolata sostituendo al numero totale di scelte l'inverso della probabilità di scelta se P = 1/n scelte, si ha: [bit] Nel caso in cui le scelte possibili non siano equiprobabili bisogna ricorrere alla formula dell Entropia. L'entropia si presenta come una sommatoria di tutte le informazioni che compongono il messaggio finale, pesate a seconda del numero di casi che esse possiedono. [ bit] Ad esempio: H = 1/3log23 + 1/7log27 + 1/4log24 + 1/2log22 = 1, Il valore così ottenuto rappresenta l'informazione necessaria per individuare una delle quattro destinazioni al primo livello TECNO 1 REL

29 Il concetto di quantità di informazione è associato alla possibilità di comprimere i dati mantenendo inalterato il, contenuto informativo (cfr codice di Huffman, tecniche di compressione basate su gli studi di Lampel-Ziv, ecc). «La mia più grande preoccupazione era come chiamarla. Pensavo di chiamarla informazione, ma la parola era fin troppo usata, così decisi di chiamarla incertezza. Quando discussi della cosa con John Von Neumann, lui ebbe un'idea migliore. Mi disse che avrei dovuto chiamarla entropia, per due motivi: "Innanzitutto, la tua funzione d'incertezza è già nota nella meccanica statistica con quel nome. In secondo luogo, e più significativamente, nessuno sa cosa sia con certezza l'entropia, così in una discussione sarai sempre in vantaggio"» (Shannon) Esercizi su informazione ed entropia Esercizio 1. Qual è il contenuto informativo di una moneta "onesta"? log 2=1 (il log è in base 2) (2 scelte equiprobabili) Esercizio 2. Qual è il contenuto informativo di un dado "onesto"?... [2.8 ] Esercizio 3. Qual è il contenuto informativo di una moneta truccata con probabilità 1/4 e 3/4?? H=... [0.811 n.b. < 1!!! ] Esercizio 4. Si supponga che la frequenza con cui le singole lettere vengono impiegate nella lingua italiana sia quella in tabella (ottenuta su u campione di 128 lettere). Qale è l'entropia?..[4.19 ] lettere frequenza lettere frequenza A E I O 12 B D F G 4 C R S T 7 P U V 4 L M N 6 H Q Z TECNO 1 REL

30 Schema fondamentale della comunicazione. Immaginiamo che in un bacino idrico sia necessario segnalare a distanza quando il livello dell'acqua è entro misure di sicurezza e quando invece diventa pericoloso. Possiamo utilizzare il seguente sistema comunicativo: quando si ha la situazione acque a livello pericoloso" (referente), un galleggiante (sorgente) chiude l'interruttore di un circuito elettrico (produttore) in modo che la chiusura del contatto (trasmettitore) invii il messaggio sottoforma di corrente elettrica (segnale) attraverso il filo (canale), strettamente legato alla natura del segnale che deve far transitare. Il segnale giunge a una lampada (il ricevitore) che si accende. Il sorvegliante (destinatario), recepito il messaggio, capisce, dal contesto, il messaggio e si rende conto che le acque sono a un livello pericoloso. Può capitare che, pur essendo le acque a livello di sicurezza, un contatto lungo il filo o altro elemento esterno producano un passaggio di corrente nel circuito e lo chiudano accendendo la lampada; oppure che, con le acque a livello di pericolo, dei contatti difettosi non permettano alla corrente di raggiungere la lampadina: avremo delle interferenze nel canale o dei fenomeni di rumore. Questo modello può essere tradotto schematicamente cosi : Referente (Contesto) Sorgente/Produttore Trasmettitore/Codificatore (contatto elettrico), traduce messaggio in segnale con il codice : corrente ON/OFF Canale (con rumore) ricevitore/decodificatore Destinatario Torniamo ora al nostro modello per il bacino idrico. Abbiamo qui un codice a solo due sole unità: "luce spenta" (= "a livello sicuro") e luce accesa" ("acque a livello di pericolo"). Proviamo ora a immaginare un codice un poco più complicato, nel quale alle unità "luce spenta" e "luce accesa" vengano sostituite rispettivamente le unità "luce accesa bianca" e "luce accesa rossa". Quali sono le differenze tra il primo codice (A) e il secondo codice (B)? ll primo è più semplice e meno costoso e si fonda sulla contrapposizione fra assenza e presenza di luce. Sono possibili due segni o messaggi distinti. Un codice di questo tipo obbedisce a un principio di minimo sforzo e di economicità. Il codice B è più complesso e costoso; per realizzarlo sono necessarie due lampadine di colore diverso e due canali; il destinatario deve saper distinguere fra due luci diverse. Se però badiamo ai possibili effetti del rumore sui due codici, notiamo che il codice B ha dei vantaggi sul codice A. Nel caso di A l'effetto del rumore (immissione o interruzione non prevista di corrente è di trasmettere comunque un messaggio; esso può risultare erroneo al produttore, ma il destinatario non é in grado di distinguerne l'erroneità; un qualsiasi contatto fa scattare l'allarme, anche se le acque sono a livello di sicurezza. Nel caso B a principio di economicità (una sola lampadina), si sostituisce il principio di ridondanza (due lampadine). Tale ridondanza ha una funzione. In caso di contatto (rumore> lo spegnersi o l'accendersi della luce non è previsto dal codice e non trasmette nessun messaggio e quando avviene non induce in errore il destinatario che, come il produttore, si accorge soltanto che qualcosa non va nell'impianto. La ridondanza quindi funziona da correzione degli errori possibili nella trasmissione di un messaggio. La ridondanza ha anche un'altra funzione: permette al codice di produrre ulteriori messaggi per nuove esigenze che possano sorgere. Se, per es., nel bacino idrico risultasse necessario introdurre un nuovo messaggio per segnalare un livello intermedio delle acque (livello di preallarme), il codice A non potrebbe trasmettere tre diversi messaggi distinti e l'intero impianto dovrebbe essere cambiato; il codice B invece può trasmettere un terzo messaggio (per es. accensione contemporanea di tutte e due le lampadine). La ridondanza quindi consente a un codice di adattarsi a nuove situazioni e di resistere nel tempo. Quando due entità, persone, macchine, cose, comunicano tra di loro attuano dei meccanismi che Shannon e Weaver, nel hanno studiato e codificato nella Teoria Matematica della Comunicazione. La comunicazione è vista come «trasmissione di un informazione attraverso un messaggio inviato da un emittente a un ricevente». L originalità dell approccio di Shannon consistette nell introdurre una misura dell informazione «capace di definirne la quantità dalla sorgente al destinatario». Shannon studia l informazione «utilizzando una teoria matematica, basata sul calcolo delle probabilità, applicata a sistemi che si possono conoscere in modo imperfetto» 30 - TECNO 1 REL

31 La sorgente/produttore dell informazione crea il messaggio Il trasmettitore/codificatore, ricevute le informazioni, le traduce in messaggio da trasmettere lungo il canale Il canale, che funge da mezzo di trasmissione del segnale provvede a trasmetterlo a destinazione Il ricevitore/decodificatore, riceve il segnale trasmesso lungo in canale e provvede a decodificarlo. Il destinatario (persona o macchina), che riceve il messaggio e ne comprende il significato in funzione di un contesto comune al produttore ( referente ) Dato un PRODUTTORE e un DESTINATARIO, il MESSAGGIO che passa dall'uno all'altro è un ATTO DI COMUNICAZIONE. Il messaggio prodotto da una sorgente utilizza un CANALE su cui corre la comunicazione (per es. il filo telefonico la carta stampata, ecc.) per essere inviato al destinatario e viene da questi ricevuto se non si hanno fenomeni di RUMORE (interferenze nel canale, interruzioni o disturbi del processo della comunicazione). Il messaggio che, trasmesso in codice, passa dal produttore al destinatario fa riferimento a un preciso contesto. Cos'è esattamente il contesto? E' ciò che circonda il produttore e il destinatario; è il mondo, la realtà, il complesso di idee che essi hanno in comune. Il CODICE è il sistema delle regole in base al quale il messaggio è strutturato. Esso è costituito da un insieme di simboli (alfabeto) e dalle combinazioni di simboli validi (parole). Un codice è un modo per rappresentare un insieme di informazioni di differente complessità. La codifica permette di associare a ciascuna entità informativa un riferimento univoco, detto codice, rappresentato in genere tramite stringhe o simbologie specifiche (da Wikipedia - definizione di Codice nella Teoria dell'informazione). codici geroglifici Nell utilizzo del computer tutti i codici usano come alfabeto le cifre del sistema binario 0 e 1. L uso di due soli simboli riduce la possibilità di errore (è più facile distinguere tra due valori che tra dieci) e rende semplice la rappresentazione all interno del computer, infatti due simboli possono essere rappresentati con due stati fisici distinti. Per poter utilizzare un codice deve essere definito un processo di codifica che permette di rappresentare delle informazioni mediante un certo codice. Per ogni processo di codifica è definito il processo inverso, o decodifica che permette di estrarre le informazioni da un messaggio codificato. Questo implica 31 - TECNO 1 REL

32 che durante il processo di decodifica deve essere possibile distinguere una dall altra le parole del codice, indipendentemente dalla sequenza con cui sono usate; questa condizione è semplice da rispettare se le parole del codice hanno tutte la stessa lunghezza, cioè lo stesso numero di simboli. Ad esempio se codificassimo le lettere A,B,C,D nel modo seguente: A=0, B=1, C=01, D=10, non sapremmo dire se 010 corrisponda a ABA, AD, CA. In caso contrario occorre definire precisi schemi entro cui il messaggio viene inviato. L interazione uomo-macchina L interazione uomo-macchina è un campo di studi che si prefigge il compito di indagare il rapporto tra l uomo e le tecnologie e di applicare i risultati della propria indagine alla progettazione di sistemi per la comunicazione tra l uomo e la macchina. In modo sintetico, la comunicazione identifica uno scambio di messaggi tra due stazioni, emittente e ricevente, che condividono un codice. Lo schema di base della comunicazione include una stazione di partenza, un canale e una stazione di arrivo. Il messaggio rappresenta il contenuto scambiato tra emittente e ricevente. Jakobson ha proposto una rielaborazione dello schema: Il modello di J. Concentra l attenzione sul codice e soprattutto sul contesto. Nella comunicazione, infatti, l interpretazione dei significati cambia in relazione al variare del contesto, che in tal modo condiziona i soggetti della comunicazione ma, al tempo stesso, viene modificato dalle sempre possibili nuove interazioni proprie della comunicazione effettiva. Quando la comunicazione avviene tra l essere umano e la macchina, l interfaccia è l elemento che veicola questa comunicazione e quindi l interazione tra questi due soggetti. L interazione uomo-macchina può essere definita in molti modi: la disciplina che si occupa della progettazione, valutazione e implementazione di sistemi interattivi e dello studio di tutti i fenomeni più importanti connessi con l interazione tra questi tipi di sistemi e l uomo l interazione uomo macchina si occupa della progettazione di sistemi che siano in grado di sostenere le persone che li usano a svolgere la loro attività in modo produttivo e sicuro Qualunque sia la definizione, l elemento saliente risiede nell applicazione sistematica delle conoscenze sulle caratteristiche cognitive degli esseri umani, sui loro bisogni e sulle loro attività allo sviluppo delle interfacce grafiche dei sistemi informatici impiegati per lo svolgimento di compiti di lavoro, studio, intrattenimento e gioco. L interfaccia uomo-macchina è uno degli elementi caratterizzanti un sistema informatico. Infatti, ogni applicazione può essere classificata anche sulla base della modalità con cui si presenta all utente e, viceversa, grazie alla quale l utente può interagire con l applicazione. Questo elemento, solitamente indicato con il nome interfaccia utente, racchiude quell insieme di funzionalità di comunicazione in cui l utente dell applicazione può essere fonte o destinatario del messaggio. Queste funzionalità rappresentano la parte visibile di un applicativo e permettono l inserimento dei dati di input e la visualizzazione dei dati di output. Sebbene, storicamente, le prime applicazioni per elaboratori fossero di tipo batch, quindi più legate all analisi dei dati, attualmente le applicazioni interattive, in cui l utente e l applicazione dialogano costantemente, a costituire gran parte delle soluzioni. Inizialmente l interazione uomo-macchina ha sfruttato la tastiera per l input e il video e la stampante per l ouptput. Questo tipo di interfaccia era detta testuale, in quanto a video non vi era alcun elemento grafico e i comandi erano impartiti da prompt; da qui anche il nome di Command Line Interface (CLI). In aggiunta potevano esserci dei form all interno dei quali era possibile navigare attraverso tasti speciali (tab, escape, ). Una discontinuità nella realizzazione delle interfacce si è avuta con l avvento delle interfacce grafiche in cui icone e finestre hanno reso più intuitiva e fruibile la comunicazione con i calcolatori. Questo anche grazie all introduzione del mouse quale elemento a disposizione dell utente per definire degli input. Attualmente, con la diffusione del touch screen e dei sintetizzatori vocali le interfacce utente si sono spinte verso l interazione di tipo multimodale. A causa dei vincoli tecnologici, infatti, l interazione uomo-macchina ha prediletto il senso della vista come canale di comunicazione. Attraverso la multimodalità si offre una maggiore versatilità coinvolgendo altri sensi quali il tatto e l udito e, nell ultimo periodo, anche l olfatto (sebbene ancora in fase pionieristica). (Per fare un esempio, il W3C ha un gruppo di lavoro per la definizione di interfacce multimodali per il mondo Web. Questo gruppo, tra le diverse iniziative, ha prodotto un architettura di riferimento per la definizione di interfacce multimodali e un linguaggio XML-based, EMMA (Extensible MultiModal Annotation markup language),per la definizione di elementi multimodali.) Riguardo agli smartphone di ultima generazione, l affidabilità e la precisione sia dell hardware sia del software per la gestione dei movimenti sono elevate- Nel campo della multimodalità anche il mondo delle console dei videogiochi ha potato enormi innovazioni. Esempi come Nintendo e Microsoft Kinect testimoniano come l innovazione negli ultimi anni si sia spostata dalla grafica del videogioco alla fruibilità dello stesso attraverso nuovi tipi di controllori. Sensori di movimento installati sui controllori, così come sensori in grado di catturare il movimento dell utente (eliminando di fatto la necessità di avere un controllore) hanno permesso di immergere maggiormente il giocatore all interno dell azione. Indipendentemente dalla tecnologia e dalle modalità di interazione, spesso accade che il progettista di un applicazione informatica sviluppi una propria idea del profilo utente e dei requisiti dell applicazione in sviluppo senza mai avere incontrato gli utilizzatori finali TECNO 1 REL

33 In questi casi il modello concettuale dell applicazione sviluppato dal progettista (che corrisponde a ciò che egli immagina dei bisogni dell utente e alle soluzioni che implementa per permettere all utilizzatore finale di raggiungere nel modo più efficace i propri obiettivi) può non coincidere con il modello che si è creato l utente (il modello mentale dell utente corrisponde all idea che egli sviluppa del funzionamento dell applicazione, delle operazioni eseguibili su di essa, dei comandi che vengono resi disponibili dall interfaccia, delle azioni necessarie per fornire il proprio input e dei tipi di output che ci si deve aspettare). Quando la distanza tra i due modelli mentali à ampia, il livello complessivo di usabilità dell applicazione informatica può essere molto basso e l utente può andare incontro a problemi di comprensione nell utilizzo dell applicazione stessa. Codici per la rilevazione e la correzione degli errori Come abbiamo visto nei paragrafi precedenti, quando inviamo dei dati su un canale di comunicazione i disturbi (rumore) possono corrompere i dati e far in modo che il destinatario riceva trame contenenti degli errori. Per rilevare e correggere gli errori di trasmissione si trasmettono, assieme ai dati utili, uno o più bit di ridondanza. Al messaggio vengono, cioè, aggiunti dei bit di controllo. Particolari tecniche, applicate in trasmissione e ricezione, consentono di verificare che il messaggio arrivato sia, ragionevolmete, corretto. Le tecniche più semplici aggiungono alla fine del dato un controllo della parità. Altre, all fine della trama di dati, aggiungono un campo contenente la sommatoria dei dati trasmessi (checksum). Altre tecniche più sofisticate (CRC), trattano i bit trasmessi come polinomi numerici e calcolano il resto della divisione tra questi polinomi e un divisore comune (polinomio generatore). Il CRC è usato comunemente nei protocolli moderni perché riduce la probabilità di non rilevare eventuali bit errati. Inoltre il CRC si adatta bene a correggere errori a burst, cioè errori che danneggiano un insieme di bit consecutivi come capita, tipicamente, in caso canali di comunicazione soggetti a rumore. Controllo di parità Il controllo di parità, usato spesso nelle trasmissioni asincrone, è associato ad ogni carattere trasmesso. Esso può essere pari (EVEN) o dispari (ODD). Il calcolo per la definizione del bit di parità viene fatto sempre sul numero di bit a 1 presenti nel carattere. Quando la parità è pari il numero di bit a 1 compreso quello di parità deve essere pari, se invece la parità è dispari il numero dei bit a 1 deve essere dispari. Come si può intuire, risulta impossibile rilevare l'errore quando esso si verifica su un numero pari di bit. Si tratta di un controllo debole, usato per trasmissioni asincrone a bassa velocità e su brevi distanze. Al controllo di parità sul singolo carattere (Controllo a ridondanza verticale(vcr)), è possibile associare un controllo sull insieme dei caratteri trasmessi e (Controllo longitudinale (LCR) detto anche BCC (Block Check Control) per rendere meno debole il risconoscimento dell errore. L esempio sottostante illustra un caso in cui si usa sia VCR che LCR. La stringa inviata CIAO, è codificata in ASCII e risulta: codifica carattere VCR (Parità pari) C > Bit di controllo per un carattere I A O LCR (BCC) Si può notare come un controllo di parità pari corrisponda a un operazione di OR esclusivo (XOR, Exclusive OR, nella realizzazione di programmi software. Controllo a somma aritmetica (checksum) Consiste nel sommare il valore binario, corrispondente alla codifica ASCII dei caratteri, modulo 26. ), tra i bit, una tecnica molto sfruttata Controllo a ridondanza ciclica CRC (Ciclic Redundancy Check) Il CRC consiste nel trasformare il messaggio da trasmettere in un polinomio con potenze di due. Ad esempio il messaggio 1011 può considerarsi uguale al polinomio 2^3+2^1+2^0 o, altrimenti scritto: x3 + x + 1. Il calcolo del CRC si basa sulle proprietà dell aritmetica modulo 2, in cui non si hanno riporti né per somme né per sottrazioni e, di fatto, somme e sottrazioni sono identiche e possono essere pensate come l operazione di OR esclusivo, che restituisce 1 (vero) se e solo se uno solo dei due operandi è 1, mentre restituisce 0 (falso) in tutti gli altri casi TECNO 1 REL

34 La divisione in modulo 2 è analoga a quella decimale tradizionale, ma con l oerazione di XOR al posto delle sottrazioni Il polinomio corrispondente al messaggio da trasmettere viene diviso per un polinomio divisore (o polinomio generatore), noto a entrambe le stazioni collegate. Il resto della divisione viene inviato assieme ai dati. Il ricevente può effettuare il controllo in due modi, il primo è di dividere tutto il messaggio ricevuto compreso il resto della divisione e dividerlo per il polinomio generatore, se il resto della divisione è 0 allora il messaggio è corretto. Il secondo modo è di eliminare il resto della divisione dai dati ricevuti e dividere quest'ultimo per il polinomio generatore, se il resto ottenuto è uguale a quello tolto dai dati ricevuti, il messaggio è corretto. Consideriamo il seguente esempio. Messaggio da inviare = > x9 + x7 + x6 + x + x2 + 1 Polinomio Generatore = > x3 + x + 1 Per effettuare l operazione si aggiungono al messaggio tanti bit a 0 quanto è il grado del polinomio divisore. Perciò: Messaggio + 3 bit 0 = Si procede alla divisione tra polinomi ricordando che la somma 1+1=0 allo stesso modo della funzione XOR. Si trascura il risultato e si considera solo il resto, che viene aggiunto al messaggio e trasmesso al ricevitore: = 110 Resto Messaggio inviato al ricevitore = Polinomi generatori La selezione del polinomio generatore è importante: il polinomio deve essere scelto per rendere massima la possibilità di rilevamento di errori. A questo proposito è determinate la lunghezza del polinomio (legata al suo grado). Ecco perché i polinomi più usati hanno un grado elevato. Ad esempio tra i più usati nelle telecomunicazioni possiamo citare: CRC12 = x12 + x11 + x3 + x2 + x + 1 (13bit) che tradotto in bit risulta: CRC16 = x16 + x1 + x2 + 1 (17bit) che tradotto in bit risulta: CRCCCITT = x16 + x12 + x + 1 (17bit) che tradotto in bit risulta: Esiste anche un CRC-32 e CRC-64, rispettivamente a 33bit e 6bit. Codifica dei caratteri alfanumerici Una codifica per i caratteri è definita dalla corrispondenza tra l insieme di caratteri che si vogliono rappresentare e le parole di un codice. Nell insieme dei caratteri si considerano almeno le lettere, le cifre e alcuni simboli. I diversi insiemi di caratteri sono definiti da standard ISO (International Standards Organization). Per un certo insieme di caratteri definito in uno standard ISO possono esistere metodi di codifica diversi. I codici si differenziano per il numero di byte per ogni carattere e codici che invece possono usare un numero diverso di byte per rappresentare caratteri diversi. Per definire un set di caratteri occorre specificare: 1. l insieme dei codici utilizzato 2. l insieme dei caratteri da rappresentare 3. la corrispondenza tra essi 34 - TECNO 1 REL

35 ASCII a 7 bit (ISO 646) Lo standard ASCII (American Standard Code for Information Interchange) ISO 646. Il set di caratteri ISO 646 usa la codifica ASCII (American Standard Code for Information Interchange) a 7 bit (detto anche ASCII di base o ristretto). Questa codifica usa 8 bit per carattere, ma lascia inutilizzato il bit più significativo (sempre 0). Ad ogni carattere viene associato in modo convenzionale un numero nell intervallo 0 127; tale numero, o meglio, la sua rappresentazione binaria, costituisce la rappresentazione del carattere (si può avere una rappresentazione esadecimale per avere una codifica più compatta) Il codice di ciascun carattere può essere individuato in una tabella che elenca i caratteri e il codice corrispondente comprende 128 caratteri di base: lettere maiuscole lettere minuscole cifre simboli speciali, ad esempio + - ; :, ) caratteri di controllo: questi codici non producono un carattere visibile, ma indicano una funzione da eseguire. Ad esempio a capo, tab, salto pagina, ). In particolare: I primi 32 caratteri sono caratteri di controllo Le cifre da 0 a 9 hanno tutte lo stesso valore (0011) nel semibyte più significativo, mentre il secondo contiene la rappresentazione della cifra in binario. Per passare dalla rappresentazione della cifra come carattere al suo valore numerico da usare nei calcoli, basta sottrarre 30h ( ) e viceversa. Le lettere sono suddivise in maiuscole e minuscole, mantenendo l ordine alfabetico, quindi si possono eseguire operazioni di confronto e ordinamento di caratteri, basandosi sul loro codice ASCII (attenzione: poiché le lettere maiuscole precedono le minuscole) ASCII (esteso) a 8 bit (ISO 889) E evidente che per la maggior parte delle lingue 128 caratteri sono insufficienti (in italiano per esempio, ci sono le lettere accentate) Il bit più significativo dell ASCII base può essere utilizzato per estendere il codice e aggiungere altri 128 caratteri (con 8 bit ho 26 combinazioni) In ASCII a 8 bit, tutti i codici sono compatibili con l ASCII A 7 bit (i primi 128 caratteri sono uguali). 3 - TECNO 1 REL

36 un esempio di ASCII Art - Unicode Il codice ASCII a 8 bit non è adatto per le lingue orientali che usano migliaia di ideogrammi, ciascuno dei quali corrisponde non a un suono (come una lettere) ma ad un intero concetto o parola. E necessaria allora una codifica che usi almeno 16 bit (636 caratteri) TECNO 1 REL

37 Nel 1991 è stato istituito il consorzio Unicode per definire uno standard a 16 bit internazionale noto come codice Unicode. Il set di caratteri Unicode comprende le lettere di tutti gli alfabeti, molti simboli speciali e ideogrammi; se un elemento appartiene a più lingue compare una volta sola; questo vale anche per l insieme degli ideogrammi, indicato con la sigla CJK (cinese, giapponese,coreano) ricavato dai nomi delle tre lingue principali; in questo modo si riduce il numero degli elementi da codificare. I primi 128 caratteri sono identici a quelli dell ISO 646 e i primi 26 all ISO (standard ISO Latin-1). Tuttavia, poiché ogni carattere Unicode è codificato con 16 bit, lo standard Unicode non è strettamente compatibile con le codifiche a 8 bit; per esempio il codice Unicode della lettere A è 0041h mentre l ASCII è 41h. La codifica dei caratteri Unicode è nota come UCS-2 (Universal Character Set a 2 byte). Il codice Unicode è usato dai sistemi operativi Windows per la memorizzazione dei nomi dei file e per l inserimento di simboli nei documenti, e da Java per la codifica di tutti i caratteri. Nel 1991 è stato istituito il consorzio Unicode per definire uno standard a 16 bit internazionale noto come codice Unicode. Il set di caratteri Unicode comprende le lettere di tutti gli alfabeti, molti simboli speciali e ideogrammi; se un elemento appartiene a più lingue compare una volta sola; questo vale anche per l insieme degli ideogrammi, indicato con la sigla CJK (cinese, giapponese,coreano) ricavato dai nomi delle tre lingue principali; in questo modo si riduce il numero degli elementi da codificare. I primi 128 caratteri sono identici a quelli dell ISO 646 e i primi 26 all ISO (standard ISO Latin-1). Tuttavia, poiché ogni carattere Unicode è codificato con 16 bit, lo standard Unicode non è strettamente compatibile con le codifiche a 8 bit; per esempio il codice Unicode della lettere A è 0041h mentre l ASCII è 41h. La codifica dei caratteri Unicode è nota come UCS-2 (Universal Character Set a 2 byte). Il codice Unicode è usato dai sistemi operativi Windows per la memorizzazione dei nomi dei file e per l inserimento di simboli nei documenti, e da Java per la codifica di tutti i caratteri. Nel 1993 l ISO ha definito un nuovo standard ISO e la relativa codifica UCS-4. Vengono usati 4 byte, con il primo bit a 0, cioè 31 bit effettivi. Il è il set di caratteri indicato nella specifica del linguaggio HTML 4.0. Esempio di Unicode per caratteri cuneiformi Esercizio 1 Si desidera salvare su file in formato ASCII (ISO-889-1) un testo di 100 pagine, ognuna composta da 0 righe di 69 caratteri. Ogni riga e terminata dal carattere LF ed ogni pagina è terminata dal carattere FF. Calcolare la dimensione del file espressa in kb. [ kb ] Un carattere ASCII è codificato su 8 bit, ovvero un byte, sia esso un carattere di testo o uno di controllo (es. i caratteri LF e FF citati nel problema). Una pagina occupa quindi: [0 (69+1)] +1 = 301 Byte. Moltiplicando per il numero di pagine ed applicando il fattore di scala per i KByte, si ottiene la dimensione del file: Dimensione file = = kb Esercizio 2 Su una cartella da 1.44 MB si devono scrivere i dati relativi agli studenti di una scuola. Ad ogni studente corrisponde un file che contiene i seguenti dati: cognome (32 caratteri ASCII) nome (32 caratteri ASCII) data di nascita (GGMMAAAA codificata in BCD) matricola (numero intero di 6 cifre codificato in ASCII) Calcolare il numero massimo di studenti i cui dati possono essere scritti sulla cartella. [ studenti ] Un carattere ASCII e codificato su 8 bit, ovvero un byte. Una cifra decimale in codifica BCD occupa 4 bit. Una cifra decimale rappresentata in ASCII necessita di un carattere. Ne consegue: 32 1 B B+8 0. B+6 1 B = 74 Byte/studente 1.44 MB / 74 =20,404.7 studenti = 20,404 studenti 37 - TECNO 1 REL

38 Esercizio 3 Si desidera salvare su file in formato Unicode con codifica UTF-8 un testo in lingua Italiana composto da caratteri. Sapendo che in Italiano la frequenza media delle lettere accentate e il %, stimare la dimensione del file espressa in kb. [ 20. KB ] La codifica UTF-8 richiede da 1 a 4 byte per carattere, a seconda del tipo. I caratteri presenti nell alfabeto ASCII a 7 bit (tra cui ricadono i normali caratteri Italiani) richiedono un byte, mentre i caratteri con simboli diacritici (tra cui ricadono i caratteri accentati Italiani) richiedono due byte. (% => 1000 * 2= 2000 byte accentati) = /1024=20.Kbyte Codice QR testo Tecno 1 : Un Codice QR è un codice a barre bidimensionale a matrice, composto da moduli neri disposti all'interno di uno schema di forma quadrata. Viene impiegato per memorizzare informazioni generalmente destinate ad essere lette tramite un telefono cellulare o uno smartphone. In un solo crittogramma sono contenuti caratteri numerici e alfanumerici. Il nome QR è l'abbreviazione dell'inglese quick response (risposta rapida), in virtù del fatto che il codice fu sviluppato per permettere una rapida decodifica del suo contenuto (Wikipedia). Per approfondimenti si veda: TECNO 1 REL

39 _ Spesso codifica di immagini e suoni Immagini Lettere e numeri non costituiscono le uniche informazioni utilizzate dagli elaboratori, ma molte applicazioni utilizzano ed elaborano anche altri tipi di informazione: diagrammi, immagini, suoni. in questi casi si parla di applicazioni di tipo multimediale. (Per un approfondimento si veda: ) Non sempre il contorno della figura coincide con le linee della griglia. Quella che si ottiene nella codifica è un'approssimazione della figura originaria _ 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 risoluzione dell immagine. Assegnando un bit ad ogni pixel è possibile codificare solo immagini senza livelli di chiaroscuro. Le immagini in bianco e nero hanno delle sfumature (diversi livelli di intensità di grigio). Per codificare le immagini con diversi livelli di grigio si stabilisce per ogni pixel il livello medio di grigio, cui viene assegnata convenzionalmente una rappresentazione binaria. Per memorizzare un pixel non è più sufficiente un solo bit. Ad esempio, se utilizziamo quattro bit possiamo rappresentare 24 = 16 livelli di grigio, mentre con otto bit ne possiamo distinguere 28 = 26, ecc. Analogamente possiamo codificare le immagini a colori. In questo caso si tratta di individuare un certo numero di sfumature di colore differenti e di codificare ogni sfumatura mediante un'opportuna sequenza di bit. La rappresentazione di un'immagine mediante la codifica dei pixel, viene chiamata codifica bitmap e l immagine viene detta discretizzata. Il numero di byte richiesti dipende dalla risoluzione e dal numero di colori che ogni pixel può assumere. I monitor utilizzano, ad esempio, risoluzioni di 640X480, 1024X768, oppure 1280X1024 ed un numero di colori per pixel che va da 26 fino a sedici milioni di colori. Per distinguere 26 colori sono necessari otto bit per la codifica di ciascun pixel: la codifica di un'immagine formata da 640X480 pixel richiederà bit ( byte). Esistono delle tecniche di compressione delle informazione che consentono di ridurre drasticamente lo spazio occupato dalle immagini TECNO 1 REL

40 Le immagini in movimento vengono memorizzazione mediante sequenze di fotogrammi (sono necessarie delle tecniche per ottimizzare tale memorizzazione). Grafica Digitale Digital graphic images can be divided into one of two fundamental types: Vector Graphics and Raster Graphics (bitmap, pixel). Raster Graphics (commonly called bitmap images) are made of pixels. Photographs are an example of a bitmap image. They have a fixed resolution and cannot be resized larger without losing quality. Common bitmap file formats end in:.gif.jpg.png.tiff &.bmp Bitmap images typically have much larger file sizes than the same image as a vector graphic so they are often compressed to reduce their size. Bitmap images can be converted from one format to another with programs such as Photoshop. Vector Graphics are images that have been created in a drawing program such as Adobe Illustrator. They use paths to create lines and curves at connecting points called "nodes" to store the graphic's information mathematically. Vector art is resolution independent; whether you enlarge or shrink the image, the output quality is never compromised. This is why logos should always be created in vector art format. Common file formats for vector art used in the commercial printing industry include:.ai.esp &.pdf A common public misconception is that using > SAVE AS and saving to another file format will somehow fix the problem. Pixel-based raster art will always be made out of pixels regardless of what file format one save the image as. It is possible to convert raster art into vector with methods such as LIVE TRACE in Adobe Illustrator, but the results are usually less than satisfcactory when used on a corporate logo. Grafica Raster (bitmap) TECNO 1 REL

41 La grafica bitmap, o grafica raster (in inglese bitmap graphics, raster graphics), è una tecnica utilizzata in computer grafica per descrivere un'immagine. Nella grafica raster l'immagine viene vista come una scacchiera e ad ogni elemento della scacchiera, chiamato pixel, viene associato uno specifico colore. Il colore può essere definito con due tecniche: se l'immagine contiene pochi colori (massimo 26) si crea un elenco dei colori da utilizzare e nella scacchiera viene inserito l'indice che punta allo specifico colore del pixel; nel caso si vogliano utilizzare molti più colori il singolo pixel non definisce più l'indice a una tavolozza di colori ma definisce il colore direttamente. Il colore viene definito come un'unione delle componenti blu, rossa e verde. La bitmap è caratterizzata da due proprietà: risoluzione; numero di pixel per pollice (equivalente a 2,4 cm); si misura in PPI (Pixel Per Inch) oppure in DPI (Dot Per Inch, Punti per pollice). profondità di colore. numero di bit, associati a ogni pixel, usati per descrivere il colore. Si misura in BPP (Bit Per Pixel); maggiore è il numero di bit, maggiore è il numero di colori che è possibile descrivere. (http://www2.ing.unipi.it/~a00939/corsi/ig/pdf/rappresentazione%20delle%20immagini.pdf ) Aspect Ratio: In un raster, il rapporto tra il numero di righe e colonne, espresso da due numeri: 4:3 (monitor, tv) 16:9 (HDTV, High Definition TV - widescreen) Risoluzione di un dispositivo di uscita (p.e. monitor, stampante): numero di pixel per unità di misura lineare (p.e. pollice), ppi (pixel per inch), dpi (dots per inch) Risoluzioni tipiche Monitor: dpi Stampante: dpi Scanner: 2400 dpi Dimensioni fisiche assolute di un immagine raster (in pollici): Dimensione lineare in punti/ Risoluzione in punti per pollice Es: immagine 1024x768 punti, risoluzione 300 dpi Larghezza= 1024/300 = 3.41 inch Altezza= 768/300 = 2.6 inch Rappresentazione dei colori Base fisiologica: un colore visibile all'occhio umano può essere descritto da una composizione di luce rossa, verde, blu (colori primari) Modello additivo di colore RGB (Red Green Blue): un dato colore è descritto dalla combinazione delle intensità dei tre colori primari associando un numero a ciascun livello di intensità, è possibile definire una rappresentazione digitale di un colore aumentando il numero di pixel, l immagine migliora I dati raster possono essere memorizzati attraverso tipologie di file che sfruttano algoritmi di compressione diversi, gravando in modo differente sul supporto di memorizzazione. I formati raster più comuni sono i seguenti: 41 - TECNO 1 REL

42 Formati di immagini raster Questi formati di file hanno richieste di elaborazione minima, non essendo necessari algoritmi di compressione (in fase di scrittura) e decompressione (in fase di lettura), tuttavia, mancando di compressione, risultano particolarmente voluminosi, in termini di spazio occupato su disco (o altro dispositivo di memorizzazione), rispetto agli altri formati: raw bmp (in alcuni casi i file bmp sono compressi con un algoritmo RLE) compressione lossless (senza perdita di informazione) Le immagini salvate con un algoritmo di compressione dati lossless occupano meno spazio nei dispositivi di memorizzazione, mantenendo inalterata tutta l'informazione originale: png (certe applicazioni permettono anche la scrittura di file png non compressi) tga tiff (sebbene questo sia l'uso più comune, questo formato permette diversi tipi di compressione) gif (per immagini fino a 26 colori) compressione lossy (con perdita di in formazione) Le immagini memorizzate con un algoritmo di compressione lossy subiscono una perdita di informazione; pertanto questa tecnica non è adatta per salvare le immagini che vengono rielaborate coi programmi di fotoritocco (le continue modifiche comporterebbero un progressivo degrado dell'immagine ad ogni salvataggio e riapertura); invece, in virtù delle ridotte dimensioni del file, sono particolarmente indicate per la trasmissione di immagini o per ridurre le dimensioni di un'applicazione o di un prodotto da distribuire. jpeg gif (per immagini con più di 26 colori si ottiene una compressione lossy poiché vengono eliminate la maggior parte delle sfumature di colore) Grafica vettoriale Un'immagine descritta con la grafica vettoriale è chiamata immagine vettoriale. Nella grafica vettoriale un'immagine è descritta mediante un insieme di primitive geometriche che descrivono punti, linee, curve e poligoni ai quali possono essere attribuiti colori e anche sfumature. È radicalmente diversa dalla grafica raster in quanto nella grafica raster le immagini vengono descritte come una griglia di pixel opportunamente colorati. La grafica vettoriale, essendo definita attraverso equazioni matematiche, è indipendente dalla risoluzione, mentre la grafica raster, se viene ingrandita o visualizzata su un dispositivo dotato di una risoluzione maggiore di quella del monitor, perde di definizione. Una linea che percorre lo schermo trasversalmente se viene rappresentata utilizzando la grafica raster viene memorizzata come una sequenza di pixel colorati disposti a formare la linea. Se la medesima linea fosse memorizzata in modo vettoriale la linea sarebbe memorizzata come un'equazione che parte da un punto identificato con delle coordinate iniziali e termina in un altro punto definito con delle coordinate finali. Ingrandire una sezione della linea non produrrebbe artefatti visivi o la visualizzazione dei singoli pixel componenti l'immagine, dato che la linea sarebbe visualizzata sempre con la massima risoluzione consentita dal monitor. Tale sistema di descrizione delle informazioni grafiche presenta inoltre l'indubbio vantaggio di una maggiore compressione dei dati. (Scalable Vector Graphics abbreviato in SVG, indica una tecnologia in grado di visualizzare oggetti di grafica vettoriale e, pertanto, di gestire immagini scalabili dimensionalmente. Più specificamente si tratta di un linguaggio derivato dall'xml). Semplificando, possiamo dire che una linea retta nera in formato vettoriale verrà descritta da una formula che, volgarizzando, suonerà più o meno così: dal punto (x,y) parte una linea di colore nero che termina al punto (x,z). La stessa linea retta in formato bitmap avrà una descrizione che suonerà invece così: il punto (x,y) è nero, il punto (x,a) è nero, il punto (x,b) è nero... e così via, fino al raggiungimento del termine della linea: viene cioè descritta la dislocazione di tutti i singoli punti che costituiscono l'immagine, con il loro relativo valore di colore. Suoni Anche i suoni possono essere rappresentati informa digitale Dal punto di vista fisico un suono è un'alterazione della pressione dell'aria che, quando rilevata dall'orecchio umano, viene trasformata in un particolare 42 - TECNO 1 REL

43 stimolo al cervello La durata, l'intensità e la variazione nel tempo della pressione dell'aria sono le quantità fisiche che rendono un suono diverso da ogni altro Un suono può essere descritto mediante l onda di pressione che rappresenta la variazione della pressione dell aria nel tempo. Sull asse delle ascisse viene rappresentato il tempo e sull asse delle ordinate viene rappresentata la pressione corrispondente al suono stesso. La conversione di un segnale continuo in una successione di numeri viene eseguita con due successive operazioni elementari _ 1. Campionamento del segnale (cioè si preleva una successione di campioni a intervalli costanti di tempo) 2. Ogni campione viene quantizzato, ossia convertito in un numero (si codificano in forma digitale le informazioni estratte dal campionamento) Esercizi riepilogativi (http://www.di.unito.it/~sproston/psicologia/0708/esercizio_teorico1_soluzioni.html) 1. Hai ricevuto un messaggio di posta elettronica da un amico. Il messaggio contiene: 1. un testo di 300 caratteri scritto in ASCII, 2. un'immagine di 120x10 pixel con 1024 colori. Quanti byte occupa il messaggio? Testo: 300 byte. Immagine: ogni pixel richiede 10 bit (perché 2 10 =1024); l'immagine ha 120 x 10 = pixel; l'immagine occupa 10 x = bit = 2200 byte. Testo + immagine: = byte 2. Un'immagine di 300x400 pixel occupa 1000 byte. L'immagine è a colori oppure in bianco e nero? L'immagine ha 300 x 400 = pixel, ed occupa 1000 x 8 = bit. Cioè ad ogni pixel corresponde a un bit, e l'immagine è in bianco e nero 3. Quanto spazio occupa un'immagine animata di 100x100 pixel a 128 colori, formata da 6 frame? Ogni frame ha 100 x 100 = pixel; ogni pixel richiede 7 bit (perché 2 7 =128); ogni frame occupa x 7 = bit; l'immagine animata occupa x 6 = bit (= 200 byte) Codifica dei caratteri Quanti byte occupa i testi seguenti scritti in Extended ASCII? o cervello 8 o dipartimento di psicologia 26 o 20 Codifica dei suoni 1. Quanti byte occupa un suono della durata di secondi campionato a 30 Hz (30 campioni per secondo), in cui ogni campione occupa 6 byte? x 30 x 6 = 900 byte 2. Un secondo di suono campionato a 12 Hz occupa 1 KB. Quanti valori distinti possono avere i campioni? 1 KB = 1024 byte; numero di campioni = 1 x 12 = 12; ogni campione contiene 1024/12 = 2 byte; 2 byte = 16 bit; 2 16 valori distinti Codifica delle immagini 1. Un'immagine in bianco e nero è formata da 400x400 pixel. Quanti bit occupa l'immagine? Quanti byte occupa l'immagine? Ogni pixel richiede un bit (perché l'immagine è in bianco e nero); l'immagine ha 400 x 400 = pixel; l'immagine occupa bit; bit = byte 2. Un'immagine a 26 colori è formata da 400x400 pixel. Quanti byte occupa l'immagine? Ogni pixel richiede un byte (=8 bit, perché 2 8 =26, sufficiente per rappresentare 26 colori); l'immagine ha 400 x 400 = pixel; l'immagine occupa byte 3. Un'immagine a colori è formata da 100x100 pixel. Quanti byte occupa l'immagine? Ogni pixel richiede 3 byte (perché 2 24 = , sufficiente per rappresentare colori); l'immagine ha 100 x 100 = pixel; l'immagine occupa byte 4. Hai ricevuto un messaggio di posta elettronica da un amico. Il messaggio contiene: 43 - TECNO 1 REL

44 o o un testo di 300 caratteri scritto in Extended ASCII, un'immagine di 120x10 pixel con 1024 colori. Quanti byte occupa il messaggio? Testo: 300 byte. Immagine: ogni pixel richiede 10 bit (perché 2 10 =1024); l'immagine ha 120 x 10 = pixel; l'immagine occupa 10 x = bit = 2200 byte. Testo + immagine: = byte. Un'immagine di 300x400 pixel occupa 1000 byte. L'immagine è a colori oppure in bianco e nero? Nel caso in cui l'immagine è a colori, quanti colori ha l'immagine? L'immagine ha 300 x 400 = pixel, ed occupa 1000 x 8 = bit. Cioè ad ogni pixel corresponde a un bit, e l'immagine è in bianco e nero 6. Un'immagine di 00x00 pixel occupa byte. L'immagine è a colori oppure in bianco e nero? Nel caso in cui l'immagine è a colori, quanti colori ha l'immagine? L'immagine ha 00 x 00 = pixel, ed occupa x 8 = bit. Cioè ad ogni pixel corresponde a /20000 = 8 bit, e l'immagine ha 2 8 =26 colori (la prima soluzione dato su questa pagina era erratta) 7. Un'immagine di 100x200 pixel occupa byte. L'immagine è a colori oppure in bianco e nero? Nel caso in cui l'immagine è a colori, quanti colori ha l'immagine? L'immagine ha 100 x 200 = pixel, ed occupa x 8 = bit. Cioè ad ogni pixel corresponde a 80000/20000 = 4 bit, e l'immagine ha 2 4 =16 colori Compressione dati Ottimizzazione dei messaggi (tratto da Marcello Guidotti, ) Supponiamo di voler insegnare ad una scimmia il linguaggio gestuale in modo da farle scegliere di volta in volta il cibo che desidera mangiare: banane, budino, arachidi, torta di lamponi. Un modo semplice è insegnare alla scimmia due segnali per comunicare i propri desideri: per esempio, alzare la mano sinistra oppure la destra (codifica 1 di tab. I). Ognuno di questi due segnali fornisce l'informazione di 1 bit (il più piccolo segnale richiesto per comporre il messaggio). tab. I cibo frequenza codifica 1 codifica 2 codifica 3 banana 9 D DD D budino 6 S DS SD torta 2 DD SS SSD arachidi 1 DS SD SSS Ben presto, però, con questa codificazione si incontrerebbero le prime difficoltà di interpretazione. Supponiamo che la scimmia alzi tre volte la mano destra (DDD). Che cosa significa? Vuole tre banane, oppure una banana e due fette di torta? Certo, si potrebbe ovviare aggiungendo un segnale di interruzione fra un messaggio e l'altro: ad esempio toccarsi la fronte con la mano destra. Ma questo sarebbe un terzo segnale e noi vogliamo utilizzarne solo due (praticamente il numero zero ed il numero 1). Convenendo di indicare ogni cibo con due alzate di mano (codifica 2 di tab. I), la scelta diventa inequivocabile. La sequenza DDSDSSSS significa: una banana, una busta di arachidi, due porzioni di torta. In base a questa convenzione, possiamo affermare che ogni singola richiesta della scimmia comporta due segnali ossia 2 bit d'informazione, mentre per il menù completo (4 portate) occorrono 8 bit. Questa codificazione è efficiente (raggiunge il risultato) ma non è detto che sia efficace (raggiunge il risultato nel miglior modo possibile). Se osserviamo le richieste della scimmia nell'arco di una settimana, potremmo ad esempio constatare che le arachidi non sono il cibo preferito dalla scimmia, mentre lo sono le banane. In altre parole, il segnale SD (arachidi) si presenta molto raramente, mentre il segnale DD (banane) è assai frequente. Di questo fatto bisogna tener conto per una codificazione ottimale. Supponiamo di aver constatato che la scimmia mangi ogni giorno nove banane, sei porzioni di budino, due fette di torta, una busta di arachidi. Per rendere la codificazione ottimale, l'ordinazione delle banane deve essere individuata con un segnale quanto più possibile breve. Invece, il segnale per l'ordinazione delle arachidi potrebbe essere più lungo. Nel corso di una giornata, la scimmia consuma 18 portate le quali, nella efficiente codificazione 2 di tab.i, richiedono 36 segnali, ossia 36 bit TECNO 1 REL

45 Supponiamo di codificare le banane con l'alzata della mano destra: segnale D. Per evitare l'ambiguità nella scelta del prossimo cibo, il prossimo segnale deve essere SD. Infatti, in una sequenza di segnali, la combinazione DD farebbe sorgere il dubbio che fossero desiderate due volte banane. Anche DS potrebbe in qualche modo lasciare una certa ambiguità. Insomma, con un pò di tentativi (in pratica con la codifica Huffman), si può costruire la codificazione 3 di tab. 1. L'ordinazione di 9 banane al giorno richiede ora soltanto 9 bit, contro i 18 bit della precedente codificazione. In più, sono da aggiungere quotidianamente 12 bit per le 6 porzioni di budino, 6 bit per le 2 fette di torta, 3 bit per la busta di arachidi. In totale 30 bit in confronto ai 36 della codificazione: questa nuova codificazione è senz'altro efficiente, ed è anche più efficace della codificazione 2. Al contrario, la codificazione 1, pur richiedendo solo 21 bit, si presta ad equivoci, quindi non è efficiente e dunque è da scartare. Quanto accennato è sufficiente per comprendere come sia possibile compattare i files di dati e programmi riducendone le dimensioni. Sono in commercio programmi (uno dei più noti è WINZIP) che permettono facilmente di effettuare la compressione. Con lo stesso principio funzionano i programmi che permettono di aumentare lo spazio su disco: i dati vengono compressi durante il loro salvataggio e quindi decompressi durante la lettura; è ovvio che il tempo di accesso ai dati aumenta in conseguenza delle operazioni di codifica-decodifica, ma il continuo aumento della velocità di elaborazione dei processori, rende l'operazione interessante. A questo punto, ci si potrebbe chiedere la ragione per cui i messaggi non sono già codificati nel modo più efficace. La risposta è semplice: non tutti i segnali si presentano con la stessa frequenza. In realtà, i programmi di compressione sono essenzialmente basati sullo schema visto sopra, relativo alla codifica Huffman, in cui, prima che un programma sottoponga un file di dati (dati alfanumerici e/o immagini) a compressione, esegue un controllo statistico sulla frequenza degli elementi componenti il messaggio. Per esempio, la stringa "aaaaaaaaaaaaaaaaaaaaa" sarà compressa con un fattore del 67% circa, ma la stringa "abcdefghilmnopqrstuvz" non potà essere compressa! Possiamo percio dire che la compressione dati è il processo che trasforma un certo insieme di dati in una rappresentazione piu' piccola, dalla quale, è possibile (con la decompressione) risalire all'originale. Le applicazioni piu' comuni riguardano non solo la memorizzazione dei file di dati ma anche la loro trasmissione: non solo testo (zip) e immagini (jpg, gif) ma anche filmati (mpeg) e musica (mp3). Se un file viene ad ex. compresso con fattore 2 allora la velocità della linea apparirà duplicato! Non tutti le fonti di dati possono essere compresse, come ad esempio i dati casuali (ad ex. un file.exe) o i dati già compressi in modo ottimale. Inoltre non si puo' affermare con certezza che una stessa compressione raggiunga lo stesso risultato su diversi tipi di dati. Esistono vari algoritmi di compressione dati. Essi possono essere distruttivi se perdono parte del contenuto informativo o non distruttivi se mantengono inalterato il contenuto informativo. Essi si possono classificare in classi: Tecniche non distruttive (senza perdita di informazione) Algoritmi di compressione che operano con codici di lunghezza fissa. Sono algoritmi basati su approcci di forza bruta (brute force) come ad ex. la NULL COMPRESSION (una delle prime tecniche usate) in cui l'idea è quella di scandire i dati alla ricerca del carattere spazio (blank). Il primo carattere è un indicatore di compressione, il secondo rappresenta il numero di blank compressi. Ad ex.: stringa originaria: CIAO MAMMA stringa compressa: CIAO^8MAMMA dove ^ è il carattere di compressione e 8 il numero di blanks Molte sono le varianti di questa compressione con miglioramenti aggiustamenti (Bit Mapping in cui viene aggiunta una mappa di bit all' inizio della stringa che sta a indicare la presenza di blank : 1 bit => 1 blank ; Run Lenght Encoding in cui una serie di generici simboli sono rimpiazzati dal simbolo stesso preceduto dal numero di repliche. Ad ex. AAABBCCC: 3A2B3C etc) Modulazione a impulsi differenziali (DPCM) L' idea consiste nel produrre un simbolo di riferimento seguito dalla distanza del simbolo da quello di riferimento.. Ad ex AAABBCCCDD: A In questo caso la distanza puo' essere codificata con soli 2 bit (0,1,2,3) al posto di 8 bit per carattere. Cio' è utile ad ex. per immagini dove le "distanze" tra pixel adiacenti sono piccole perchè i pixel spesso sono simili. Algoritmi di compressione statici che, basandosi sulla frequenza di occorrenza di ogni carattere o gruppo di caratteri che compaiono nel testo, assegnano codici lunghi ai caratteri che vengono usati raramente e codici brevi ai caratteri maggiormente frequenti. In questo modo, mediamente, i messaggi ottenuti saranno codificati in modo piu' corto. Ad ex. lo stesso codice Morse assegna alle lettere E e T, che sono molto comuni nella lingua inglese, i codici. e linea rispettivamente, mentre i famosi corrispondono a SOS, lettre molto meno frequenti. - Il metodo piu' di tipo statico piu' popolare e noto è la Codifica di Huffman il cui vantaggio principale è quello di ridurre la lunghezza media del codice utilizzando un prefisso scelto in modo tale che non possa mai essere lo stesso per sequenze piu' lunghe. Quest'algoritmo non distruttivo fu inventato nel 192 dal matematico D.A. Huffman ed è un metodo di compressione particolarmente ingegnoso. David A. Huffman (9 agosto ottobre 1999). Durante la sua vita, Huffman ha dato contributi significativi allo studio delle macchine a stati finiti, dei circuiti di commutazione, nelle procedure di sintesi e nella progettazione dei segnali. Tuttavia, David Huffman è più noto per la leggendaria Codifica di Huffman, un algoritmo di compressione per la codifica lossless (senza perdita di dati) di lunghezza variabile. È il risultato di una tesi scritta quando era dottorando presso il MIT nel 193. (wikipedia) Funziona in questo modo: 4 - TECNO 1 REL

46 Analizza il numero di ricorrenze di ciascun elemento costitutivo del file da comprimere: i singoli caratteri in un file di testo, i pixel in un file grafico. Accomuna i due elementi meno frequenti trovati nel file in una categoria-somma che li rappresenta entrambi. Così ad esempio se A ricorre 8 volte e B 7 volte, viene creata la categoria-somma AB, dotata di 1 ricorrenze. Intanto i componenti A e B ricevono ciascuno un differente marcatore che li identifica come elementi entrati in un'associazione. L'algoritmo identifica i due successivi elementi meno frequenti nel file e li riunisce in una nuova categoria-somma, usando lo stesso procedimento descritto al punto 2. Il gruppo AB può a sua volta entrare in nuove associazioni e costituire, ad esempio, la categoria CAB. Quando ciò accade, la A e la B ricevono un nuovo identificatore di associazione che finisce con l'allungare il codice che identificherà univocamente ciascuna delle due lettere nel file compresso che verrà generato. Si crea per passaggi successivi un albero costituito da una serie di ramificazioni binarie, all'interno del quale appaiono con maggiore frequenza e in combinazioni successive gli elementi più rari all'interno del file, mentre appaiono più raramente gli elementi più frequenti. In base al meccanismo descritto, ciò fa sì che gli elementi rari all'interno del file non compresso siano associati ad un codice identificativo lungo, che si accresce di un elemento ad ogni nuova associazione. Gli elementi invece che si ripetono più spesso nel file originale sono anche i meno presenti nell'albero delle associazioni, sicché il loro codice identificativo sarà il più breve possibile. Viene generato il file compresso, sostituendo a ciascun elemento del file originale il relativo codice prodotto al termine della catena di associazioni basata sulla frequenza di quell'elemento nel documento di partenza. Il guadagno di spazio al termine della compressione è dovuto al fatto che gli elementi che si ripetono frequentemente sono identificati da un codice breve, che occupa meno spazio di quanto ne occuperebbe la loro codifica normale. Consideriamo ad exsempio il caso mostrato in figura di 4 simboli K1,K2,K3 e K4 che vengono sistemati in base alla loro frequenza di occorrenza in una struttura ad albero in cui i simboli piu' frequenti sono in alto. I due simboli a minor frequenza (K3 e K4) vengono uniti in un nodo con frequenza 0.2.Tale nodo viene poi unito al simbolo meno frequente tra i rimasti (K2) generando un nuovo nodo a frequenza 0.437, che viene poi unito a K1 generando un nodo con frequenza 1. Assegnando 0 e 1 ad ogni segmento dell'albero a partire da destra (radice) si ottiene il codice di Huffman per ogni carattere. La caratteristica del codice è quella di poter essere decodificata immediatamente da sinistra a destra senza attendere la fine dei dati. Messaggio Codificato Messaggio decodificato K1 K2 K1 K4 K2 K3 K2 K1 Consideriamo un altro esempio: la frase: TRENTATRE TRENTINI ANDARONO A TRENTO 1) OCCORRENZE A = 4 O = 3 D = 1 R = E = 4 T = 7 I = 2 _ = 4 N = 6 2) ASSOCIAZIONI A = 4 A = 4 AE = 8 AE = 8 AET = 1 AET = 1 AET = 1 DI = 3 DIO = 3 DIO = 3 DIO = 3 DIO = 3 DION = 12 DIONR_ = 21 E = 4 E = 4 N = 6 N = 6 N = 6 R_ = 9 N = 6 N = 6 R = R_ = 9 R_ = 9 O = 3 R = T = 7 T = 7 R = T = 7 _ = 4 T = 7 _ = 4 _ = TECNO 1 REL

47 Questo codice è molto semplice e lineare ma si complica moltissimo se i simboli sono molti. Inoltre codifiche come questa si basano sulla conoscenza a priori dei dati da comprimere e della loro frequenza relativa. - Compressione Adattativa (basata sul dizionario). A differenza delle tecniche precedenti, che si basavano sulla conoscenza a priori dei dati, in questi algoritmi il dato che deve essere compresso viene analizzato man mano che sui presenta e vengono apportate le opportune modifiche alla tabella dinamica di compressione In altre parole vengono create delle tabelle con contatori interni, relativi ai caratteri incontrati, che vengono continuamente aggiornati in funzione delle occorrenze, variando di conseguenza i codici di compressione, in modo efficiente e indipendente da una analisi a priori del file da comprimere. Tra le varie tecniche di compressione di questo genere il BTLZ (basato sugli studi di Lampel e Ziv 1976/78) è un algoritmo di compressione adattativo ottenuto sostituendo stringhe di caratteri con codici di lunghezza fissa. Esso è divenuto popolare attraverso implementazioni e variazioni diverse per l'uso nella compressione dati usata nei modem (cfr. V42bis).I processi di codifica e decodifica usano un dizionario nei quali sono memorizzate le stringhe aggiornate dinamicamente. Il dizionario è costituito, nella sua essenza, da una serie di alberi ciascuno dei quali ha per radice uno specifico carattere dell'alfabeto usato: se ad ex. i simboli base sono 26, tali saranno gli alberi. Un nodo senza figli rappresenta l'ultimo carattere della stringa. Ad ex, consideriamo l'albero in struttura e confrontiamo la stringa "dei cani". Analizzando in successione si trovano già nell'albero i caratteri d,e,i ma non ' '. In questo caso viene spedito il codice 202 e viene aggiunto all'albero, dopo la i, il carattere ' ' e viene assegnato ad esso un nuovo codice( ad ex, 206).: la prossima volta che sarà incontrata la stringa "dei " verrà inviato il codice 206. Cioè, se viene trovata la stringa S ma non il carattere c, esso viene aggiunto nel dizionario a formare la nuova stringa S=S+c. La lunghezza delle stringhe usate di frequente crescerà molto velocemente. Il decodificatore presenta una struttura analoga al codificatore e, ricevuto il codice, procede nella lettura al contrario dei caratteri che poi vengono riordinati. Naturalmente ogni cambiamento nel dizionario dell'encoder procede di pari passo con il decoder. Tecniche distruttive (con perdita di informazione) Descriviamo qui la tecnica JPEG (Joint Photographic Expert Group) codificata dall' ISO 10918, usata soprattutto nel mondo di Internet, per le immagini, Da essa discendono le tecniche di MPEG (Moving Picture Expert Group) per i filmati e MP3 (MPEG Audio Layer 3) per i file musicali. JPEG è una tecnica basata su tre macro-fasi successive: Nella fase DCT (Discrete cosine transform) viene attuata una trasformazione simile alla FFT (Fast Fourier Transform), in cui dallo spazio dei pixel si passa nello spazio delle frequenze. L idea di base della DCT consiste nel separare le caratteristiche principali, che sono essenziali per la visione dell immagine, dai dettagli che sono meno importanti e che in alcuni casi potrebbero non venire percepiti neppure dall occhio. In particolare, dopo la preparazione dell'immagine in cui ogni matrice di pixel è divisa in blocchi da 8x8, si applica la DCT a ognuno dei blocchi separatamente. L'output è una matrice 8x8 di elementi in cui i coefficienti rappresentano la quantità di potenza spettrale per ogni frequenza e (0,0) il valor medio. Nella fase di quantizzazione, tramite una tabella a pesi differenziati, vengono eliminati i coefficienti DCT con frequenze alte, cioè i meno importanti, quelli che cambiano molto rapidamente e quindi immaginabili come valori non facenti parte del blocco dell'immagine in cui i valori cambiano lentamente. Viene quindi applicata una codifica runlenght e poi Huffman, assegnando ai numeri piu' probabili, codici piu' brevi. In realtà jpeg è complesso ma realizza compressioni di 20:1 e piu', con perdita di informazione che pero' è poco percepita dall'occhio. MP3 (MPEG layer 3) si basa sulla codifica percettiva, per cui alcuni suoni mascherano altri suoni e non sono percepiti dall'orecchio umano. I suoni vengono campionati con un certo bit rate (96Kbps), filtrati e codificati con un numero maggiore di bit per le bande con maggior potenza spettrale non mascherata e applicata la codifica di Huffman TECNO 1 REL

48 Un programma di compressione per il suono quindi si comporta come una sorta di orecchio informatico che trasforma prima il suono nel suo spettro e successivamente toglie dallo spettro tutte le armoniche che non vengono percepite. Se consideriamo che si può eliminare oltre il novanta per cento delle frequenze presenti in un suono ci rendiamo conto della potenza di questo metodo: un suono che in origine occupava undici megabyte, dopo la compressione di tipo percettivo ne occupa solo uno e la perdita di qualità tra queste due rappresentazioni del suono è quasi indistinguibile. ( A B (a) Lo spettro sonoro (realizzato con Audacity ) mostra i livelli sonori in funzione della frequenza. Mentre una singola frequenza è mostrata nel grafico con una singola riga, per un suono, da una serie di righe in corrispondenza alle frequenze fondamentali e alle loro armoniche, per una musica lo spettro è rappresentato da una banda (insieme) di frequenze. In questo esempio il massimo delle frequenza è intorno ai 12000Hz. Ricordiamo che l'insieme delle frequenze udibili dall'orecchio umano si estende da circa 20Hz a 20KHz ma la zona in cui l orecchio è più sensibile è tra i 2KHz e KHz. (b) Draw-Disegna : con zoom vicino al livello massimo, consente di regolare il volume dei singoli campioni audio Permette di appianare il contorno dei campioni, in modo che un campione sia regolato opportunamente rispetto ai campioni vicini TECNO 1 REL

49 Introduzione ai Sistemi Operativi Cos è un Sistema Operativo L'accesso diretto all'hardware può essere anche molto complesso,. Il Sistema Operativo è un programma che agisce da intermediario tra un utente di un computer e l hardware nascondendone la complessità e fornendo una macchina gradevole per l utente. Sistemi Operativi e Distribuiti- Bellettini Maggiorini Il Sistema Operativo perseguie i seguenti scopi: Gestire le applicazioni (Eseguire programmi utente) o Il sistema operativo carica i programmi, le applicazioni, in RAM assicurandosi che le risorse siano sufficienti alla sua esecuzione. Le API (Application Programming Interface) sono un insieme di linee guida utilizzate dagli sviluppatori per garantire che le applicazioni che stanno sviluppando siano compatibili con il sistema operativo. Gestire file e cartelle o Il sistema operativo crea una struttura di file sulla memoria di massa per memorizzare i dati. Un file è un insieme di dati correlati a cui è dato un nome univoco e che viene trattato come singola componente. Controllare e ottimizzare l accesso alle risorse hardware. o Per fare questo il sistema operativo installa un driver per ogni componente hardware. Il driver è un software scritto dal produttore dell'hardware e fornito insieme al componente hardware che viene istallato con la periferica per comunicare con essa. Il sistema operativo configura il dispositivo e aggiorna, in Windows, il registro che contiene informazioni sull hardware, il software, gli utenti le impostazioni di rete e i file Fornire una interfaccia utente. Ci sono due tipi di interfacce utente: o Interfaccia a Linea di Comando (CLI, Command Line Interface) in cui l'utente digita i comandi o Interfaccia Utente Grafica (GUI, Graphical User Interface) in cui l'utente interagisce con menù ed icone 49 - TECNO 1 REL

50 Quindi, scopo di un sistema operativo è quello di: fornire un ambiente in cui un utente possa eseguire programmi rendere l uso di un sistema di elaborazione conveniente eseguire funzioni non utili a se stesso ma fornire un ambiente entro il quale i programmi dell utente possano produrre un lavoro utile: è simile a un governante. distribuire risorse. Un sistema di elaborazione ha tante risorse che possono essere richieste da un programma applicativo: CPU, memoria, file, dispositivi di I/O, Il S.O. ha la funzione di manager: le assegna ai programmi che ne fanno richiesta, in base a determinati criteri (politiche di gestione). controllare l esecuzione dei programmi utente per prevenire eventuali errori, ed evitare un uso improprio del sistema di elaborazione. Ci sono due tipi distinti di sistemi operativi: sistemi operativi desktop e sistemi operativi di rete. I primi sono impiegati in piccoli uffici o in ambiente domestico. Tra essi ricordiamo Microsoft Windows, uno dei sistemi operativi più popolari. Apple Mac OS progettato per essere un sistema operativo dalla interfaccia utente grafica (GUI) facile da usare. Le versioni correnti di Mac OS attualmente sono basate su una versione adattata di UNIX. UNIX/Linux. Unix è stato introdotto alla fine degli anni '60. Linux è stato sviluppato da Linus Torvalds nel 1991 come sistema operativo open-source. Oggo il «pinguino» è però arrivato in realtà ovunque. In settori dove Windows invece latita. Troviamo Linux sulla maggior parte dei server aziendali e nei cosiddetti supercomputer: 9 «cervelloni» su 10 dei top 00 ha il marchio del «pinguino». Che ora marcia anche nell elettronica di consumo: dalle smart tv alle videocamere di Sony, sul Kindle, sui cellulari e i tablet con Android. Rimane solo il nodo del fallimento sui desktop. Tipi di SO: Multi-user Due o più utenti possono lavorare contemporaneamente con i programmi e condividere le periferiche, come ad esempio le stampanti. Multi-tasking e Multithreading Il computer è in grado di eseguire più applicazioni (task, processi) contemporaneamente e un processo può essere 0 - TECNO 1 REL

51 suddiviso in parti più piccole (thread) caricate dal sistema operativo. Multi-processing Il computer può avere due o più CPU (Central Processing Unit), condivise dai programmi. I Sistemi Opertaivi di Rete (NOS) supportano più utenti, esegue applicazioni multi-utente, sono robusti e ridondanti e fornisce maggior sicurezza. Tra i sistemi operativi di rete più comuni ricordiamo Windows Server 2003 e Evoluzione 1 - TECNO 1 REL

52 Prima generazione (194-19) Valvole e schede a spinotti La macchina analitica è stato il primo prototipo di un computer meccanico sviluppato per eseguire compiti generici. Il progetto fu sviluppato dal matematico, filosofo e scienziato inglese Charles Babbage ( ), che cercò anche di realizzarlo praticamente. In realtà la storia dei calcolatori moderni viene fatta risalire alla metà del secolo scorso. Verso il 194, John von Neumann e altri scienziati riuscirono a costruire macchine da calcolo usando valvole elettroniche. Queste macchine erano enormi e riempivano intere stanze con centinaia di migliaia di valvole. Uno dei primi calcolatori è stato l ENIAC del 1946 di US-Military che pesava circa 30 tonnellate! EDSAC, J. Von Neumann I primi computer non erano dotati di sistemi operativi. Non esistevano i linguaggi di programmazione ad alto livello, né l assembly. L utente disponeva di semplici periferiche per posizionare i bit della memoria centrale, in modo da rappresentare istruzioni macchina e dati, e impostare il Program Counter. Il programmatore si registrava su un foglio appeso al muro per un certo numero di ore; poi andava nella sala macchine, inseriva la propria scheda di spinotti con il programma nel calcolatore e passava le ore successive a sperare che nessuna delle circa valvole si bruciasse mentre il programma girava. Inizialmente l utente doveva operare direttamente in binario; in seguito si svilupparono le prime periferiche, in grado di leggere codici rappresentati su schede o nastri perforati, per poi passare alle prime telescriventi che interagivano con la tastiera, la stampante. Furono così sviluppati i primi programmi di sistema per la gestione di queste periferiche che diedero origine allo sviluppo dei sistemi operativi. Il calcolatore era in grado di gestire un solo job (insieme di passi per la generazione di un programma) alla volta. (http://www.youtube.com/user/computerhistory Seconda generazione (19 196) 2 - TECNO 1 REL

53 Transistor e sistemi batch L evoluzione della tecnologia elettronica e l avvento dei transistor durante la metà degli anni 0 del 900, cambiò radicalmente la situazione (http://www.computerhope.com/history/ htm ). Nel 190 venne realizzata la prima unità a nastro magnetico e nel 194 la Texas Instruments iniziò a produrre in serie i transistor, mentre il primo computer totalmente transistorizzato fu del 196. Sempre nel 196 venne creato il primo hard disk. Negli anni 0 fanno la loro comparsa anche i lettori di schede perforate per l inserimento dei dati in memoria. Sempre nel 196 venne creato il primo hard disk Risultò subito chiaro che le periferiche erano infinitamente più lente della velocità di esecuzione della CPU. Per questo nei successivi anni si cercò da un lato di migliorare la velocità delle periferiche, dall altro di sovrapporre nel tempo le operazioni di I/O e CPU agendo su BUFFER di memoria centrale che facevano da tramite tra periferiche e Unità Centrale in cui la CPU poteva pescare o scrivere le informazioni di Ingresso e Uscita velocizzando le operazioni. Fanno la loro comparsa anche i sistemi ad INTERRUPT in cui è la periferica a segnalare alla CPU il verificarsi di un evento. TTY con nastro perforato In questo periodo i calcolatori venivano tenuti chiusi in speciali sale macchine con aria condizionata ed al loro funzionamento erano assegnati operatori specializzati. Il sistema informativo era organizzato in modo da non prevedere l'uso di terminali direttamente collegati con l'elaboratore centrale, l'unico modo che consentiva di ottenere i servizi era quello di inviare al Centro le schede perforate con il programma da eseguire e, poi, di ricevere i risultati stampati. Tale processo di elaborazione prendeva il nome di batch processing. Job organizzati in gruppi omogenei (batch), cioè un Batch comprende piu Job. Un esempio: $JOB user_spec ; identify the user for accounting purposes $FORTRAN ; load the FORTRAN compiler source program cards $LOAD ; load the compiled program $RUN ; run the program data cards $EOJ ; end of job $JOB user_spec $LOAD application $RUN data $EOJ ; identify a new user Linguaggi assembly o ad alto livello 3 - TECNO 1 REL

54 Sviluppo di programmi di sistema per la traduzione in linguaggio macchina primi sistemi operativi per IBM 701, in grado di eseguire un job alla volta ( il job è un applicazione che comprende codice, dati e istruzioni di controllo del job stesso). Introduzione software di sistema sempre più potente non solo per gestione di periferiche, ma anche per gestire code di lavoro Primi centri di calcolo Gestione passa dai ricercatori al personale specializzato (operatori) Nota: il termine batch o batch processing, viene utilizzato attualmente con vari significati che vanno dalla la non interattività dei programmi all esecuzione di più programmi accorpati, all'esecuzione non immediata nel tempo. O anche a programmi di script o comandi batch Sistemi batch (a lotti) IBM 30 RAMAC (196) è il primo computer con hard disk. Nel 197 IBM rilascia il primo computer a transistor Terza generazione ( ) Time sharing e multiprogrammazione. Circuiti integrati Dal momento che i primi computer mainframe erano estremamente costosi, non era possibile garantire l'accesso esclusivo ad un singolo utilizzatore per l'uso in modo interattivo. Dal momento che con questa modalità di utilizzo i computer trascorrono molto tempo in attesa dell'input dell'utente, si pensò di far utilizzare a più utenti lo stesso elaboratore, utilizzando i tempi morti per servire i diversi utenti a rotazione. Allo stesso modo, le piccole porzioni di tempo che trascorrevano nell'attesa dei dispositivi, quali dischi, nastro magnetico o rete potevano essere utilizzati per servire i vari utenti. I computer capaci di fornire servizi in time-sharing normalmente venivano impiegati per lavori in batch durante la notte. (wikipedia) Multiprogrammazione: in grado di gestire contemporaneamente più job in memoria centrale, grazie al meccanismo della commutazione della CPU da un job all altro. Il S.O. fa in modo che la CPU si sospenda per tutto il tempo che un I/O resta inutilizzato e, riservandosi di riprendere il programma ad operazione di I/O ultimata, passa all esecuzione di un altro programma scelto tra quelli presenti nel Job Pool La memoria centrale contiene i vari job e un algoritmo di SCHEDULAZIONE (CPU Scheduling = algoritmo per l assegnazione della CPU) che sceglie il job da mandare in esecuzione. Nasce il problema della condivisione delle risorse da parte di più processi e dei relativi conflitti nell assegnazione delle risorse del sistema: CPU, Memoria, I/O. 4 - TECNO 1 REL

55 VT2-197 Spooling (simultaneous peripheral operations on line). E introdotto un disco come buffer intermedio tra il job e le stampati, affinché il job potesse terminare più velocemente. Il lavoro memorizzato sul disco di spool veniva mandato in stampa quando la stampante era disponibili. Spooling Avvento dei DISCHI usati anche come buffer per lo SPOOLING. Dal TOS (Tape operanting System) al DOS (Disk Oparting System) Monitor e terminali per seguire svolgimento di un job dalla complilazione all output. Time-sharing Ogni utente può dialogare attraverso un terminale ed eseguire programmi. I sistemi dovevano garantire tempi di risposta molto bassi ed un grado di multiprogrammazione elevato: o I job prendono possesso a turno della CPU o o Ogni job non verrà portato fino a termine (run to completion) ma avrà a disposizione la CPU per un tempo limitato Se il tempo a disposizione è abbastanza breve e il cambio di job sufficientemente veloce si ha l illusione di eseguire i job in parallelo - TECNO 1 REL

56 o o o o La CPU è usata a turno da diversi job Un job viene spostato da disco a memoria e viceversa (swapping) Il programma si sospende se: È in attesa di una operazione della periferica Ha finito il suo quanto di tempo ( time slice ) Sistemi INTERATTIVI : un terminale permette di interagire con il computer per l inserimento dei dati (i S.O. si evolvono anche in funzione di alcune esigenze di mercato come, ad es., la prenotazione dei posti aerei Nota: Agli inizi degli anni 60, la maggior parte dei produttori di calcolatori aveva due linee distinte di prodotti incompatibili tra loro: grossi calcolatori scientifici usati per calcoli numerici scientifici e ingegneristici, e calcolatori commerciali usati dalle ditte di assicurazioni e dalle banche. IBM introduce 360 costituito da una serie di macchine compatibili tra loro a livello sw. Differivano per prezzo e prestazioni ( velocità, memoria, numero di dispositivi di I/O collegabili). Avevano però la stessa architettura e lo stesso insieme di istruzioni. Gli stessi programmi potevano girare su tutte le macchine. Negli anni successivi IBM introduce i sistemi 370, 4300, 3080, 3090 tutti compatibili con fu il primo a usare tecnologia con circuiti integrati con vantaggi in termini di prezzo e prestazioni. Quarta generazione ( > ai giorni nostri) Ma un sistema di calcolo deve per forza costare milioni di dollari? L avvento della microelettronica con la realizzazione di chip a larga scala di integrazione consentì, a partire dal 1970, lo sviluppo dei minicomputer aprendo la strada all informatica distribuita. Due SO hanno dominato la scena: MS-DOS e UNIX. L evoluzione successiva fu segnata dal microprocessore, che consentì l enorme diffusione dei calcolatori sia come controllore di apparati, sia come cuore dei nascenti personal computer. Era il 12 agosto 1981 quando Ibm presentò alla stampa il suo IBM Personal Computer (IBM 10). Per molti anni non a caso si parlò comunemente di Pc Ibm e poi di Ibm compatibili per definire tutti quei computer domestici basati su un processore Intel e con sistema operativo Ms-Dos (che a sua volta ha da poco festeggiato i suoi 30 anni) prima e con Windows poi, dagli anni Novanta. Apple 1 fu disegnata e progettata da Steve Wozniak nella Silicon Valley, e commercializzata più tardi proprio da Wozniak e Jobs attraverso una catena di elettronica, Byte Shop, che comprò le prime 0 unità. Di questo modello furono in realtà realizzati solo 200 esemplari e oggi ne esisterebbero solo sei. Sistemi Desktop o Personal computer (PC) sistema di calcolo dedicato ad un singolo utente o Periferiche di I/O evolute tastiere, mouse, schermi o Facilità d uso e performance elevate o I S.O. per queste architetture adottano tecnologie sviluppate per S.O. potenti complessi; tuttavia spesso il PC è una macchina dedicata e non sono necessarie tecniche sofisticate di gestione della CPU o Possono eseguire diversi tipi di sistema operativo(windows, MacOS, UNIX) 6 - TECNO 1 REL

57 Sistemi laptop o Uno dei primi laptop è stato il GRiD Compass 1101, utilizzato nelle missioni spaziali nei primi anni ottanta. Il suo peso era Kg (11 lb) e il costo US $8,000 - $10,000!. Il design compatto, la convenienza e l'evoluzione tecnologica dei notebook li stanno rendendo più convenienti, sotto molti punti di vista, dei desktop. Infatti essi, oltre al basso peso, integrano wi-fi, ottimi schermi, prestazioni sempre più elevate, in modo da essere molto richiesti per la loro comodità: Prendere appunti o ricercare documenti. Illustrare presentazioni. Avere accesso da remoto Giocare, guardare film, sentire la musica durante viaggi e spostamenti Accedere a Internet e inviare in luoghi pubblici. Parlare di morte del PC è sbagliato ma il calo nelle vendite sembra inarrestabile, e i motivi sono essenzialmente due: chi ha un vecchio sistema è restio a cambiarlo mentre smartphone e tablet rispondono alle richieste di connettività dell utente medio sostituendo di fatto l acquisto di un nuovo computer. Sistemi real-time o Spesso usati come strumento di controllo in una applicazione dedicata, come ad esempio controllo di esperimenti scientifici, sistemi di visualizzazione in ambito medicale e sistemi di controllo industriale 7 - TECNO 1 REL

58 o o o o o Vincoli temporali fissati e ben definiti Soft real-time (time critical) Il job terminerà molto probabilmente entro Hard real-time (life critical) Il job terminerà sicuramente entro Memoria secondaria limitata o assente Dati memorizzati in memoria a breve termine o in memoria a sola lettura (ROM) Sistemi multiprocessore (con più CPU comunicanti tra loro) o Sistemi a cluster. o Vantaggi: Maggiore throughput (capacità dielaborazione) Risparmio economico (si fa per dire) Maggiore affidabilità Il clustering permette a due o più sistemi di condividere periferiche (tipicamente dischi). Serve ad aumentare l affidabilità Sistemi operativi distribuiti Ma per fare un sistema parallelo abbiamo per forza bisogno di mettere tutte le CPU nella stessa scatola? NON necessariamente, anzi o Il calcolo viene distribuito tra diversi processori fisicamente distinti o Vantaggi: Condivisione delle risorse Grande capacità di calcolo (distribuzione del carico) Affidabilità Comunicazioni Sistemi distribuiti (paralleli) tightly coupled (strettamente connessi) o i processori condividono la memoria ed il clock o la comunicazione avviene solitamente attraversomemoria condivisa Sistemi distribuiti loosely coupled (lascamente connessi o debolmente integrati). Reti o Ogni processore ha la sua memoria locale o I processori comunicano tra loro attraverso varie linee di comunicazione, come bus ad alta velocità o linee telefoniche o Richiedono un infrastruttura di rete Reti locali (LAN) Reti metropolitane (MAN) Reti geografiche (WAN) Possono essere di due tipi Client-server Peer-to-peer (P2P) Client-server. Il modello client-server presuppone l esistenza di due entità: Server (che eroga il servizio) client (che richiede il servizio) Il cloud computing è un servizio che permette di archiviare ed elaborare le informazioni e sfruttare applicazioni e risorse software messe a disposizione da un fornitore di servizi in Internet (fig t1). 8 - TECNO 1 REL

59 Da una parte c è il fornitore che mette a disposizione dei servizi fruibili da qualsiasi luogo e in qualsiasi momento, dall altro il cliente che accede da remoto ai servizi senza la necessità di disporre di risorse interne all azienda ed eliminando, così, i costi dovuti all infrastruttura, alla manutenzion, aggiornamento e protezione dei sistemi. Rispetto ai semplici servizi di virtualizzazione, il cloud computing offre il vantaggio del self serving ciè la possibilità di ottenere esclusivamente le risorse necessarie su richiesta (on demand), pagando solo i servizi realmente utilizzati. L infrastruttura di un cloud è l insieme di hardware e software che consente di fornire i servizi essenziali del cloud computing. Lo strato fisico include server, storage e componenti di rete. Il livello software implementa i servizi essenziali del cloud: Sensori e MEMS L esigenza di rendere sempre più semplice e diretta la comunicazione tra macchina e persona unita all evoluzione, complessità e miniaturizzazione dei dispositivi elettronici sta imprimendo una nuova svolta nei sistemi di interfaccia tra l uomo e la macchina. In questo contesto attuatori e sensori svolgono un ruolo determinante. Sono essi, infatti, gli elementi che direttamente integrati nel silicio, fanno da tramite tra le grandezze fisiche (temperatura, pressione, suoni, onde,...) e il sistema di elaborazione. La tecnologia relativa a questi componenti è inziata negli anni sessanta del secolo scorso ma avuto una crescita esponenziale a seguito delle applicazioni delle nanotecnologie. Sensori Le tecniche avanzate relative ai sensori permettono una miriade di possibilità. Esistono sensori di luce, come quelli per le fotocellule, o sensori di suono come i microfoni, sensori di temperatura e di calore, per la rivelazione di elettricità, tensione e campi magnetici, sensori per la rilevazione di di radiazioni, come i contatori Geiger o i dosimetri, sensori di pressione e rilevamento di gas, sensori di prossimità o sensori biologici che si basano su tessuti viventi. Sensori Wi-Fi e RFID. MEMS La tecnologia Mems (Micro Electro Mechanical Systems), basata sulle nanotecnologie, consente di integrare in spazi ridottissimi, nello stesso componente, funzioni elettroniche e meccaniche, oltre che ottiche, biologiche o chimiche. 9 - TECNO 1 REL

60 Fondamentalmente, un dispositivo MEMS contiene, su un minuscolo chip di silicio, micro - circuiti integrati con dispositivi meccanico o sensori. In questo modo è possibile disporre di sensori microelettromeccanici che comprendono sensori di pressione, umidità, microfoni, giroscopi, magnetometri, accelerometri, bussole digitali, sensori per ultravioletti e sensori tattili. Le applicazioni sono enormi. Si va dai prodotti di consumo all industria, all automazione. Usi interessanti si trovano nei cellulari, nei giochi e nella robotica dove si fa largo uso di giroscopi e accelerometri per determinare la posizione nello spazio del sistema. Nelle videocamere è possibile compensare il movimento. Nei proiettori di nuova generazione si trovano applicazioni per la gestione di microspecchi. In campo automobilistico i MEMS li troviamo sparsi ovunque: airbag, sistemi di navigazione assistita, scatole nere, antifurto. Anche nel campo medicale i MEMS trovano vaste applicazioni. Ad esempio, vengono usati per il controllo della pressione oculare, oppure per il movimento degli arti (fig. 1). Fig 1- I MEMS applicati al corpo umano.(st Microelectronics ) Bruno Murari, è un pioniere della microlelettronica e, in particolare dei MEMS. Dai primi anni sessanta del secolo scorso lavora alla, divenuta poi STMicroelectronics, Sgs di Agrate in cui si sperimentano i primi circuiti intergrati. Il lungo lavoro nei laboratori lo porta, tra le altre cose, a interessarsi di segnali elettrici di potenza e delle testine di hard disk e stampanti. Negli anni novanta nasce l'accelerometro che, per la prima volta, viene inserito nella consolle Wii della Nintendo realizzando un successo mondiale. Sistemi embedded ( integrati) Sistemi semplici che svolgono compiti specifici e danno priorità alla gestione dei dispositivi fisici. Computer presenti nelle automobili, lavatrici, e centraline di allarme, bancomat embedded systems are found in cell phones, digital cameras, camcorders, portable video games, calculators, and personal digital assistants, microwave ovens, answering machines, home security systems, washing machines, lighting systems, fax machines, copiers, printers, and scanners, cash registers, alarm systems, automated teller machines, transmission control, cruise control, fuel injection, anti-lock brakes, active suspension and many other devices/ gadgets TECNO 1 REL

61 CHARACTERISTICS a) Embedded systems are application specific & single functioned; application is known a priori, the programs are executed repeatedly. b) Efficiency is of paramount importance for embedded systems. They are optimized for energy, code size, execution time, weight & dimensions, and cost. c) Embedded systems are typically designed to meet real time constraints; a real time system reacts to stimuli from the controlled object/ operator within the time interval dictated by the environment. For real time systems, right answers arriving too late (or even too early) are wrong. d) Embedded systems often interact (sense, manipulate & communicate) with external world through sensors and actuators and hence are typically reactive systems; a reactive system is in continual interaction with the environment and executes at a pace determined by that environment. e) They generally have minimal or no user interface. Nessuna macchina moderna può anche muoversi senza elettronica. Iniezione del carburante e ABS, sospensioni e cruise control adattivo, airbag o cambi automatici - tutti questi sotto-sistemi sono controllati da un software altamente efficiente. Gli ingegneri si riferiscono qui a "sistemi embedded". PDA, Cellulari, Sistemi Palmari e Videogiochi Gli assistenti digitali personali (PDA) sono costituiti da un computer di dimensioni contenute, tali da essere portato sul palmo di una mano, dotato di uno schermo tattile (o Touch Screen)). Il PDA è un organizer personale elettronico con strumenti per organizzare le informazioni: Agenda, Calcolatrice, Sveglia, Accesso a Internet, Sistema GPS, televisione, giochi, lettura... Lo smartphone è un telefono cellulare con funzionalità di PDA. Gli smartphone uniscono le funzioni di un telefono cellulare e quelle di un computer in un unico dispositivo palmare. Le tecnologie dei PDA e degli smartphone continuano a fondersi tra loro. iphone è un Palmare prodotto da Apple, Il dispositivo, oltre ai normali servizi di telefonia, permette di utilizzare servizi come , navigazione web, Wi-Fi. Viene controllato dall'utente tramite uno schermo multi-touch, un sensore di movimento del dispositivo (accelerometro), una tastiera virtuale. L'interazione con l'utente è coadiuvata da un sensore di prossimità e un sensore di luce ambientale i-phone Nota: sensori: con il termine sensore si definisce un dispositivo che trasforma una grandezza fisica che si vuole misurare in un segnale di natura diversa (tipicamente elettrico) più facilmente misurabile o memorizzabile. Esistono moltissimi tipi di sensori: ad es. di luce (o sensori ottici)come le fotocellule, i sensori di suono come i microfoni, i sensori di temperaturacome i termometri e le termocoppie, i sensori di movimento come i radar, i velocimetri o i tachimetri, di posizione come i giroscopi L'iPad è un tablet computer prodotto da Apple in grado di riprodurre contenuti multimediali e di navigare su Internet. Si tratta di un dispositivo un dispositivo a metà strada tra un telefono cellulare evoluto e un computer portatile. E dotato di uno schermo da 9,7 pollici, con retroilluminazione a LED e supporto al multi-touch. l'ipad è in grado di eseguire solo software scaricati dall'app Store. L'iPad include Safari (browser), ipod, itunes Store, App Store, Maps, Note, Calendario e Contatti TECNO 1 REL

62 The A7 processor L'architettura ARM (precedentemente Advanced RISC Machine, prima ancora Acorn RISC Machine) indica una famiglia di microprocessoririsc a 32- bit sviluppata da ARM Holdings e utilizzata in una moltitudine di sistemi embedded. Grazie alle sue caratteristiche di basso consumo (rapportato alle prestazioni) l'architettura ARM domina il settore dei dispositivi mobili dove il risparmio energetico delle batterie è fondamentale. Attualmente la famiglia ARM copre il 7% del mercato mondiale dei processori a 32 bit per applicazioni embedded,[1] ed è una delle più diffuse architetture a 32 bit del mondo. I processori ARM vengono utilizzati in PDA, cellulari, tablet, lettori multimediali, videogiochi portatili e periferiche per computer (come router, hard disk di rete ecc). Importanti rami della famiglia ARM sono i processori XScale e i processori OMAP prodotti da Texas Instruments. console per videogiochi che fa largo uso di sensori è Wii (prodotta da Nintendo). La sua caratteristica è il controller senza fili, il Wiimote, simile ad un telecomando, che reagisce alle forze e all'orientamento rispetto nello spazio attraverso un sistema di accelerometri e giroscopi presente al suo interno, e tramite un dispositivo ottico posto ad una delle sue estremità interagisce con la barra sensore rendendo, inoltre, possibile il suo utilizzo come sistema puntatore sullo schermo TV. Microsoft Kinect è un accessorio per Xbox 360 sensibile al movimento del corpo umano senza l'uso di strumenti. Kinect è dotato di telecamera, doppio sensore di profondità a raggi infrarossi composto da un proiettore a infrarossi e da una telecamera sensibile alla stessa banda, più quattro microfoni che sono orientati in direzioni diverse e vengono utilizzati dal sistema per la calibrazione dell'ambiente in cui ci si trova, tenendo conto del modo in cui il suono rimbalza sulle pareti e sui mobili. In tal modo il rumore di fondo e i suoni del gioco vengono eliminati ed è possibile riconoscere correttamente i comandi vocali 62 - TECNO 1 REL

63 Struttura di un Sistema operativo In pratica, il S.O. cosa deve fare? Riuscire a gestire tutte le componenti da cui i sistemi di calcolo sono composti. o o o o o o o Gestore di processi (job) Un processo è un programma in esecuzione. È costituito da: Codice eseguibile Uno stato (esecutivo) Ogni processo necessita di risorse per portare a termine il proprio task: CPU memoria accesso a file I/O Il sistema operativo si occupa di rendere disponibili le risorse ai processi ed è responsabile di tutte le attività legate alla loro gestione: o Creazione e terminazione o Sospensione e ripristino o Sincronizzazione e comunicazione Gestore della memoria La memoria è condivisa da CPU e dispositivi di I/O. Il sistema operativo deve: Tenere traccia di quali parti della memoria sono usate e da chi Decidere, in caso di conflitto chi può accedere per primo Decidere quali processi debbano essere caricati in memoria quando c è spazio disponibile Allocare e liberare zone di memoria in base alle richieste delle applicazioni Gestore dei file Un file è una raccolta d informazioni correlate e strutturate. I file possono rappresentare sia programmi che dati Il sistema operativo è responsabile per: Gestione di una organizzazione gerarchica (directory) Creazione e cancellazione di file e directory Spostamento dei dati da/verso dispositivi di memoria Gestore del sistema di I/O Un interfaccia generale per i driver dei dispositivi Gestore della comunicazione tra processi in ambito Sistemi Distribuiti Non c è condivisione di memoria Usiamo una rete per le comunicazioni La comunicazione avviene secondo un protocollo sia tra entità del sistema operativo, sia con entità esterne al sistema operativo Interprete di comandi La shell è un programma che attua l esecuzione di operazioni, usando i comand del sietma opeartivo. Nel caso di Unix/Linux il linguaggio comandi permette la scrittura di veri e propri algoritmi strutturati (script). Politiche di protezione La protezione si riferisce ad un meccanismo per controllare l accesso al sistema e alle risorse di un utente da parte di programmi, processi o altri utenti Il meccanismo di protezione deve distinguere tra utente/processo autorizzato e non, specificare i controlli che devono essere effettuati, fornire un modo per imporre dei criteri - un esempio di gestione di sisteme di I/O - Il sistema operativo genera, a partire dalla macchina hw, una gerarchia di macchine virtuali, ciascuna delle quali realizza i requisiti: risolvere il problema dell utilizzo delle risorse da parte di moduli di livello superiore moltiplicare il numero dei dispositivi disponibili, accogliendo più richieste, gestite secondo determinate politiche di gestione (virtualizzazione CPU, virtualizzazione memoria, spooling, ) 63 - TECNO 1 REL

64 Il modello onion skin C'era una volta un principe che viveva in un regno prospero. Raggiunta la giusta età, sua madre la regina decise che era il momento di cercargli una sposa. Il principe non voleva sposare una ragazza qualsiasi, ma solo colei la quale si fosse dimostrata una "vera principessa". Quindi viaggiò per il mondo e cercò in tutti i regni, ma non trovò la principessa che lo soddisfacesse. Una notte di tempesta, una ragazza bussò alla porta del castello, dicendo di essere una vera principessa. Sebbene nessuno le credesse, fu invitata a rimanere per la notte. La regina decise di metterla alla prova e, prima che le fosse assegnata la stanza, fece preparare il letto mettendo un pisello sotto una serie di 20 materassi, 20 guanciali e 20 cuscini, al di sopra del quale fu preparato il giaciglio per la notte. La mattina dopo, al risveglio, la regina chiese alla ragazza come avesse dormito: la ragazza rispose che non era riuscita a chiudere occhio perché c'era qualcosa di duro nel letto che le aveva dato fastidio. La regina, felicissima di questa risposta, dichiarò che solo una vera principessa poteva avere la pelle tanto delicata da percepire la presenza del pisello, ed ordinò di far celebrare immediatamente il matrimonio. Il SO è come un letto: per dormirci sopra non basta il telaio! Inoltre il materasso è formato da tanti strati, ognuno con le sue funzioni. Uno dei modelli proposti è il modello onion skin (H.M.Deitel 1983), che rappresenta il Sistema Operativo (Operating System, OS) come una successione di strati costruiti sopra un nocciolo costituito dall hw, ciascuno dei quali rappresenta una macchina virtuale. Il modello onion skin del sistema operativo (Operating System - OS) Primitiva = Ogni procedura standard per mezzo della quale il modulo mette a disposizione i servizi Modulo = è una collezione di routine che attivano i meccanismi fisici necessari per risolvere problemi logici di uno stesso tipo (per es. Le operazioni di i/o o la gestione della memoria) 64 - TECNO 1 REL

65 by Franco 2009 Ciascuno strato costituisce un modulo, composto da programmi che vedono solo le procedure implementate dagli strati sottostanti, attraverso le primitive che queste mettono a disposizione. Le primitive di ciascun modulo possono essere invocate solo dai moduli di livello superiore. Gli strati sottostanti vengono visti come un oggetto unico. I livelli più bassi sono quelli più vicini all hardware, quelli più alti sono vicini all utente e alle sue applicazioni. I moduli sono tutti i programmi che costituiscono un livello scritti per risolvere una classe di problemi. Ogni modulo si può vedere come una scatola che contiene al suo interno le competenze per risolvere un problema e presentare risultati in conseguenza dell elaborazione di richieste. Quello che avviene all interno di un modulo non importa a chi richiede il servizio; esso può essere modificato o riscritto, a patto che non vengano modificate le procedure per accedervi. Esempio: telefonata. La procedura standard consiste nel sollevare la cornetta, attendere il segnale e comporre il numero; il modo in cui la compagnia telefonica invia il segnale (via terrestre, satellite, ponte radio) non è rilevante per chi deve telefonare; ma se la compagnia modificasse la modalità di accesso al servizio, per esempio imponendo di digitare un certo un certo numero di cifre segrete prima del numero, sarebbe molto difficile riuscire a telefonare. La procedura standard è detta primitiva. Un modulo allora è una collezione di routine che attivano i meccanismi fisici necessari per risolvere problemi logici di uno stesso tipo. Per esempio due stampanti, corredate di rispettivi moduli di SO, possono diventare due dispositivi logici identici a condizione che i relativi moduli mettano a disposizione le stesse primitive. I moduli devono mantenere un alto grado di indipendenza; devono essere scritti senza conoscere la struttura interna degli altri moduli di SO. Si consideri, ancora, ad esempio una delle operazioni piu comuni eseguite da un programma, come la lettura di informazioni presenti su disco. A livello di processo utente la risorsa interessata è il file, mentre il linguaggio utilizzato è ad es. il C o il C++. Pertanto il linguaggio sfrutta una primitiva della seguente forma: leggi ( nomefile, nomerecord) Cio significa che l utente non deve preoccuparsi di codificare nel proprio programma gli aspetti legati alla lettura fisica da disco che presuppongono domande del tipo: dove si trova il file su disco fisicamente? Con quale meccanismo le informazioni sono estratte da disco? Esistono altri programmi che stanno utilizzando questo stesso file? Come risolvere eventuali conflitti? Questi problemi vengono affrontati dal livello sottostante di File System che puo comprendere, a sua volta, piu processi che servono a calcolare l indirizzo fisico del disco su cui sono registrate le informazioni cercate. Anche il File System ha pero una visione astratta della risorsa e si serve del livello sottostante di Gestione dell I/O. Tramite opportune primitive il File System comunica al gestore di I/O che conosce nel dettaglio la periferica (Device Driver) l operazione da compiere e questo provvederà ad effettuare le operazioni di I/O necessarie al trasferimento delle informazioni da disco alla memoria centrale. A questo punto il Gestore della Memoria Centrale (in cui tutti i processi devono risiedere per essere eseguiti) provvede a convertire gli indirizzi virtuali di ogni processo in indirizzi assoluti. Chi gestisce l esecuzione dei processi è il Nucleo! Alcuni programmi di SO interagiscono direttamente con le componenti hw; questi quindi devono conoscere le caratteristiche degli specifici dispositivi, per poterli controllare e adoperare. Inoltre è opportuno che un SO possa accedere anche a dispositivi inizialmente non previsti. Ad ogni dispositivo è associato un software:device driver (plug and play) Un device driver scritto per un dispositivo anche simile, ma non uguale, può non funzionare. Si tende quindi a definire dispositivi compatibili tra loro, secondo standard affermati che si impongono o vengono imposti in vari modi: dominio sul mercato di una particolare azienda produttrice normative erogate da istituti riconosciuti a livello internazionale (es ISO). In seguito al lavoro di gruppi di ricerca costituiti da team di aziende concorrenti che impostano accordi per lavorare insieme nello sviluppo di nuovi componenti e tecnologie. 6 - TECNO 1 REL

66 I PROCESSI Un processo è un programma in esecuzione, inclusi i valori del program counter, dei registri e delle variabili. Un processo è un attività sequenziale che si concretizza nell esecuzione del codice di uno o più programmi, e che può essere eseguita in parallelo ad altri processi. Ogni processo evolve nel tempo poiché cambiano i valori dei dati. Lo stato di un processo in un determinato istante è descritto dalla fotografia, in quell istante, di tutti i valori dei dati usati dal programma. Programma: è un insieme di bit di codice (sezione codice) e di dati (sezione dati) allocati in ben precise posizioni di memoria durante l esecuzione Processo: è una particolare sequenza di esecuzione delle istruzioni di un programma, porzione di programma, o insieme di programmi; Consideriamo un cuoco che sta preparando una torta. Ha una ricetta e gli ingredienti necessari: farina, uova, La ricetta è il programma (l algoritmo espresso in una notazione adeguata), il cuoco è il processore, e gli ingredienti della torta sono i dati in ingresso. Il processo è l attività che il cuoco svolge leggendo la ricetta, raccogliendo gli ingredienti e impastando e cuocendo la torta. Immaginiamo che la figlia irrompa in cucina piangendo e dicendo di essere stata punta da un ape. Il cuoco segna il punto della ricetta a cui è arrivato (lo stato del processo in esecuzione viene salvato), prende il libro del pronto soccorso, e comincia a seguire le indicazioni. E un esempio di come il processore cambi contesto da un processo ad un altro a priorità più alta, ciascuno con un programma diverso (ricetta, libro pronto soccorso). Quando il figlio sarà medicato, il cuoco riprenderà a cucinare la torta, dal punto in cui era rimasto. Quindi: Un processo è un programma in esecuzione ed è costituito da: Codice eseguibile Uno stato (esecutivo) Ogni processo necessita di risorse per portare a termine il proprio task - CPU - Memoria - accesso a file - I/O ll sistema operativo - Si occupa di rendere disponibili le risorse ai processi - È responsabile di tutte le attività legate alla loro gestione: o Creazione e terminazione o Sospensione e ripristino o Sincronizzazione e comunicazione Definizione di processo Processo P = (C, S) => programma in esecuzione; è formato da una sezione di testo (C) codice del programma (parte statica del programma che non varia nel tempo), e da uno stato di esecuzione (S) composto da: program counter valori dei registri della CPU stack con i dati relativi all esecuzione Il processo è qualcosa di dinamico, che varia nel tempo. Non va quindi confuso con il concetto di programma (statico, non in esecuzione, ossia l insieme di codice contenuto in un file nel supporto di massa); diverse istanze di uno stesso programma sono da considerare infatti diversi processi Un processo è rappresentato nel sistema operativo da un descrittore di processo (PD = process descriptor, chiamato anche PCB = proccess control block ), che contiene tutte le informazioni relative al processo stesso Il processore è l oggetto in grado di attuare le transizioni tra gli stati definiti dalle funzioni di transizione (cioè la macchina su cui gira il programma). Il NUCLEO (Kernel) genera un processore virtuale per ogni processo il termine processo è ormai universale, ma per la precisione: lavoro (job) in caso di sistemi batch 66 - TECNO 1 REL

67 processo in caso di sistemi time-sharing I processi in Windows Descrittore di processo (PCB) Quando un processo si sospende, il suo stato deve essere salvato. Per far cio' si associa al processo un' AREA di memoria (struttura dati) il DESCRITTORE DI PROCESSO (Process Control Block o Task Control Block) cosi' definito (almeno nei campi essenziali, che a seconda del linguaggi puo essere implementato in modo diverso (ad ex. in MASM86 con DB, in C con una struct etc) rappresentazione di un PCB: PCB Puntore dinamico Nome processo Priorità Program Counter Registi... Stack privato Stato Altro (ex memoria privata...) Il SO mantiene una tabella (array di strutture) chiamata tabella dei processi, con una riga per ogni processo, che contiene informazioni sullo stato del processo, il suo PC, SP, l allocazione di memoria, stato dei suoi file aperti, informazioni per lo scheduling e tutte le informazioni necessarie per salvare lo stato di un processo quando questo deve essere sospeso e poi ripristinato TECNO 1 REL

68 Process control block in-kernel data structure containing per-process state (registers, stack pointer, program counter, priority, open files, ) Interazioni tra processi Per capire come scomporre i processi e studiarne la loro interazione vediamo l esempio seguente. Esempio: Il ragu di zio Paolo SEQUENZIALE (successione delle operazioni strettamente deterministica, cioè esiste un ordine di precedenza) un fuoco una pentola - Far bollire la salsa - far soffriggere la carne tritata - dopo un minuto mescolare la salsa - aggiungere sale alla carne - dopo due minuti mescolare la salsa - quindi aggiungere sale alla salsa - continuare a mescolare la salsa ogni minuto finchè la carne è cotta - aggiungere la carne alla salsa - continuare a mescolare il ragu finchè il tutto è ben amalgamato, - quindi togliere dal fuoco e servire CONCORRENTE (uso di due fuochi con due pentole) Salsa 1. far bollire la salsa 2. dopo un minuto mescolare la salsa 3. dopo due minuti mescolare la salsa 4. quindi aggiungere sale alla salsa (*). continuare a mescolare la salsa ogni minuto finchè la carne è cotta (**) 6. continuare a mescolare il ragu finchè il tutto è ben amalgamato, quindi togliere dal fuoco e servire carne 1. far soffriggere la carne tritata 2. aggiungere sale alla carne (*) 3. quando la carne è cotta aggiungerla alla salsa (**) Questi processi, in generale, non possono evolvere e in modo del tutto indipendente ma devono interagire ed essere sincronizzati. In particolare ci sono due tipi di interazione: COOPERAZIONE (sincronizzazione): i processi sono logicamente connessi, cioè quando un processo, per evolvere, ha bisogno dei dati dell'altro INTERFERENZA I processi sono logicamente NON connessi e potrebbero ( e vorrebbero ) evolvere in odo indipendente ma non lo possono fare perche le risorse del sistema (periferiche, memoria, files etc) sono in numero limitato vanno condivise" NB. Le risorse di un sistema possono essere classificate come Condivisibili (Sharable) (cioè usabili da parecchi processi in contemporanea, ad ex,. un file a sola lettura o un'area di memoria protetta) o NON Condivisibili (NON- Sharable) cioè il loro uso è riservato a un processo alla volta (ad ex. periferiche, file scrivibili, aree dati modificabili etc) 68 - TECNO 1 REL

69 Relazioni di precedenza Si abbia ad ex : Un unico processo di questo genere: Leggo 1 Eseguo 1 Scrivo 1 Leggo 2 Eseguo 2 Scrivo 2 Leggo 3 Eseguo 3 Scrivo 3 Si noti che Leggo2 deve essere eseguito dopo Leggo1 ma prima, durante o dopo Eseguo1 il quale deve precedere Scrivo I Quindi potrei scomporre in modo diverso il processo in diversi processi a patto che questi rispettino le precedenze! Cosi' ad ex posso avere: L1 L2 E1 L3 E2 S1 E3 S2 S3 Ma anche: LI L2 L3 E1 E2 E3 S1 S2 S3 In generale ci sono processi in cui le relazioni di precedenza tra le fasi non sono strettamente deterministiche quindi non sequenziali, ma è OPPORTUNO che le funzioni siano SCOMPOSTE E RAGGRUPPATE in modo da ottenere PROCESSI SEQUENZIALI Un processo quindi, è un processo sequenziale La logica del problema non impone un ordinamento totale fra le operazioni da eseguire; ad esempio è indifferente che venga eseguito (2 + 3) prima di eseguire (6-2) o viceversa. Entrambe le operazioni precedenti devono invece essere eseguite prima del prodotto dei loro risultati Certi eventi del processo sono tra loro scorrelati da qualunque relazione di precedenza temporale; il risultato dell elaborazione è indipendente dall ordine con cui gli eventi avvengono Molti settori applicativi possono essere rappresentati da processi non sequenziali: sistemi in tempo reale, sistemi operativi, sistemi di simulazione, etc 69 - TECNO 1 REL

70 Esercizio: scomporre in processi (paralleli) la formula di risoluzione di una equazione di secondo grado implementazione di un processo (sequenziale) Sistemi multiprogrammati Scopo: ottimizzare l utilizzo della CPU Un sistema operativo è composto da un insieme di programmi che, per essere eseguiti dalla CPU, devono risiedere in memoria centrale (MC). Deve però essere possibile eseguire anche almeno un programma utente. Un programma utente deve quindi condividere almeno la CPU e la MC con il sistema operativo. Un sistema è detto monoprogrammato quando la sua memoria centrale contiene, in un determinato istante, codice di un unico programma utente. Talvolta l esecuzione di un istruzione del Processo Utente (PU) comporta la chiamata di una routine di sistema, per esempio richiesta di I/O. Se il programma è scritto in un linguaggio ad alto livello (C,..) sarà il compilatore a generare il codice appropriato per il SO, poiché le primitive usate dipendono dal SO. In ogni caso il compilatore genera una sequenza di istruzioni, tra le quali ad un certo punto compare una chiamata al SO. In questo caso il PU deve essere sospeso a favore del SO, previo salvataggio dello stato del processo. Il salvataggio dei registri, garantisce il ripristino del processo a patto che l area di memoria usata non sia intaccata dalla routine di sistema. E riservata una determinata zona di memoria per i moduli del sistema, e i PU sono caricati in un altra area di memoria. Quando il PU termina, la memoria è disponibile per l esecuzione di un altro PU. Si può dividere il tempo che intercorre tra l inizio e la fine del programma in intervalli caratterizzati dalle diverse attività della CPU: esecuzione di istruzioni del PU esecuzioni di istruzioni del SO inattività, per esempio, quando attende un input da tastiera. Sia Tempo Totale = TempoUtente + Tempo Inattivo + Tempo Sistema Tempo Inattivo può essere grande rispetto agli altri perché la CPU è molto veloce. In particolare in programmi interattivi;il tempo che intercorre tra due battiture di tasti (decimi di secondo) è lunghissimo rispetto ai tempi di esecuzione della macchina (miliardesimi di secondo). Nel Tempo Inattivo la CPU potrebbe eseguire istruzioni di altri programmi Si tenga presente che, come ampiamente visto, è possibile sospendere l esecuzione di un processo a favore di un altro, e poi riprendere l esecuzione del processo sospeso. Conclusione: si potrebbe sfruttare maggiormente la CPU facendo in modo che, nel Tempo Inattivo, venga usata per eseguire un altro PU. In tal modo si ottiene un uso più razionale della risorsa CPU. Anziché usare più CPU, si usa una sola CPU. Un tale Sistema è detto multiprogrammato TECNO 1 REL

71 Per realizzare la multiprogrammazione occorre avere a disposizione meccanismi per: decidere quale istruzione deve essere eseguita dopo quella in esecuzione (se dello stesso programma o di un altro) protezione tra diversi programmi, per evitare che i dati di uno vengano inquinati con quelli di un altro. Risolvere eventuali conflitti che possono sorgere per l assegnazione di una determinata risorsa che può essere condivisa tra più processi. Il SO deve intervenire periodicamente, non solo su richiesta di un PU: tutte le attività sopra descritte devono essere svolte dal SO; da ciò consegue che il Tempo Inattivo recuperato, non sarà completamente utilizzato per eseguire istruzioni di PU, ma anche per eseguire routine del sistema (system overhead : carico di lavoro imposto al sistema) grafico dei processi A,B.C in un sistema MONOPROGRAMMATO: (===== rappresenta l attività) A A B B C C CPU ======...======.======...====== ======...====== A B C I/O.======......======...======... A ======...======... B C.======...======......======...======... - grafico degli stessi processi in un sistema MULTIPROGRAMMATO: A B A B C C CPU =====.====== =====.====== ======...====== A B C I/O.======.======...======... A ======...======... B C ======...======... ======...======... - grafico degli stessi processi in un sistema MULTIPROGRAMMATO con una schedulazione diversa: A B C A B C CPU =====.====== =====.====== ======.====== A B C I/O.======.=====.======... A B C ======.....======... ======.....======... ======....======... Time sharing Una risorsa viene gestita in time sharing quando il suo uso viene concesso al richiedente, per un tempo che non può superare un massimo: questo intervallo di tempo viene chiamato time slice (quanto di tempo). Se la CPU di un sistema multiprogrammato viene gestita in time sharing, essa rimane assegnata ad un Processo Utente fino a che non si verifica una delle seguenti condizioni: il Processo termina il processo in esecuzione richiede I/O scade il time slice Quando si verifica uno di questi eventi il controllo della CPU passa al SO che decide a quale processo assegnare la CPU tra quelli che ne hanno fatto richiesta e che sono pronti per andare in esecuzione. Il tempo impiegato dal SO operativo per effettuare queste operazioni viene detto tempo di riassegnamento. (si verifica context switch) TECNO 1 REL

72 Stati di un processo Immaginiamo di entrare in un supermercato e studiare il comportamento della cassiera e dei clienti: Notiamo alcune analogie: Cassiera/Cassa: Unità Centrale di Elaborazione Clienti: processi Cliente (che sta pagando) alla cassa: in che stato è? Clienti in coda alla cassa: in che stato sono? Clienti in coda alla macchina del caffè/gelato/snack/verdura: in che stato sono? Guardia giurata: schedulatore Ora vediamo la macchina a stati del processo: 72 - TECNO 1 REL

73 - stati di un processo - Esecuzione (run): il processo è in evoluzione; gli è stata assegnata la CPU Pronto (ready) :attende che gli venga assegnata la CPU Attesa (wait): avendo richiesto un operazione di I/O, la CPU gli è stata tolta, ed il processo è in attesa su una periferica. Passaggi di stato: - All inizio il nuovo processo creato viene caricato in memoria e va nello stato di pronto - da pronto a esecuzione: la CPU viene assegnata al processo - da esecuzione a pronto: scade il time slice (o avviene una interruzione) e al processo viene tolta la CPU - da esecuzione a attesa: il processo richiede un I/O, la CPU gli viene tolta anche se non è scaduto il time slice - da attesa a pronto: l operazione di I/O è terminata e il processo è inserito nella coda dei processi pronti per entrare in esecuzione I passaggi da uno stato all altro sono gestiti con interrupt sincroni o asincroni: Cioè i processi possono sospendersi a causa di un evento esterno non prevedibile (un interrupt hardware o un timer che scade) : interrupt asincrono Oppure sospendersi volontariamente, perché ad esempio, in attesa di una risorsa, tramite un interrupt sincrono (software), tipicamente realizzato con una chiamata al sistema operativo (Interrupt Sincrono o Supervisor Call (SVC) o System Call) TECNO 1 REL

74 Il nucleo Virtualizzazione CPU In ambiente multiprogrammato con CPU gestita in time sharing, è possibile vedere la CPU come un insieme di processori virtuali assegnati ai processi. I tempi di commutazione sono così veloci che sembra che ciascun processo abbia a disposizione un processore. In realtà questo è uno solo, ma corrisponde a tanti processori virtuali che fanno avanzare i processi. I moduli esterni potranno contare su una pluralità di processori, senza occuparsi dei problemi inerenti l assegnazione della CPU o delle interruzioni. Il nucleo (kernel) è la parte del SO più vicina alla macchina. L'accesso diretto all'hardware può essere anche molto complesso. Il Sistema Operativo e, in particolare il Kernel, nascondono le complessità dell hardware e rendono la macchina gradevole all utente. Pur nelle loro differenze c'è un elemento strutturale che accomuna ogni sistema operativo sia mobile sia desktop oggi in uso: il kernel ( nocciolo o fulcro in inglese). Naturalmente, ognuno dei sistemi operativi (Windows, Android, ios, Mac OS, ) ha un proprio kernel, realizzato in base alle necessità del sistema operativo stesso. Per funzionare, però, tutti hanno bisogno di questo componente. Utilizzando varie modalità di gestione tra le quali la comunicazione tra processi e le chiamate di sistema il kernel fa da ponte tra le componenti hardware di un computer come processore, RAM e hard disk e i programmi in esecuzione sul computer stesso. Data la sua rilevanza, è il primo programma ad essere caricato in memoria quando si accende un computer e l'ultimo ad essere chiuso in fase di spegnimento. (cfr. Wikipedia e altre fonti in rete) NOTA : Il kernel I kernel implementano uno o più tipi di astrazione dall'hardware, il cosiddetto: Hardware abstraction layer. Queste astrazioni servono a "nascondere" la complessità e a fornire un'interfaccia pulita ed uniforme all'hardware sottostante, in modo da semplificare il lavoro degli sviluppatori. I kernel si possono classificare - in base al grado di astrazione dell'hardware - in almeno tre categorie (vedi figura sottostante): Kernel monolitici, che implementano direttamente una completa astrazione dell'hardware sottostante. Microkernel, che forniscono un insieme ristretto e semplice di astrazione dell'hardware e usano software (chiamati device driver o server) per fornire maggiori funzionalità TECNO 1 REL

75 Kernel ibridi (o microkernel modificati), che si differenziano dai microkernel puri per l'implementazione di alcune funzioni aggiuntive al fine di incrementare le prestazioni. Compiti principali: avvio e terminazione dei processi assegnazione CPU ai processi sincronizzazione tra processi Tra le altre comprende le procedure per determinare a quale processo assegnare la CPU secondo determinate politiche di scheduling. Scheduler Algoritmi di scheduling Quando più di un processo è pronto per essere eseguito, il SO deve decidere a quale, tra i processi pronti, assegnare la CPU. La parte di SO che si occupa di questa decisione viene chiamata scheduler (schedulatore), e l algoritmo che usa è chiamato algoritmo di scheduling. 7 - TECNO 1 REL

76 Lo Scheduler della CPU ( a breve termine ): è quella parte del S.O. che seleziona dalla coda dei processi pronti il successivo processo al quale assegnare l uso della CPU. Lo scheduler è legato al tipo di politica adottato e non al meccanismo utilizzato per attuare tale politica. I criteri secondo i quali è valutata la bontà di uno scheduler possono essere classificati nel seguente modo: equità: assicurare che ciascun processo ottenga la CPU efficienza: sfruttamento ottimale della CPU livello di multiprogrammazione: numero di programmi in memoria Throughput: numero di lavori processati nell unità di tempo (throughput = numero processi eseguiti / TempoTotale oppure throughput = TempoUtente / TempoTotale ) I tempi: tempo di attesa : tempo per entrare in esecuzione tempo di completamento (turnround time): intervallo di tempo tra inizio di un processo e la sua fine overhead di sistema: tempo esecuzione del sistema operativo a scapito dei programmi utente. CPU burst: tempi in cui viene impiegata soltanto la CPU senza I/O (al contrario di I/O burst: fasi in cui il processo effettua input/output da/verso una risorsa(dispositivo) del sistema) I meccanismi di scheduling: preemptive se sospendono d autorità un dato processo non preemptive se consentono l esecuzione di un processo sino in fondo. Questi sono semplici e facili da implementare, ma non sono adatti ai sistemi multiutente. Esistono però sistemi dedicati, per esempio database, in cui è necessario fare iniziare un processo su una richiesta e non interromperlo finché non completa la sua esecuzione. Terminologia: Ogni processo alterna: CPU burst: fasi in cui viene impiegata soltanto la CPU senza I/O I/O burst: fasi in cui il processo effettua input/output da/verso una risorsa(dispositivo) del sistema (burst = raffica) Processi I/O bound: prevalenza di attivita` di I/O: molti CPU burst di breve durata, intervallati da I/O burst di lunga durata (bound=legato,confinato) Processi CPU bound: prevalenza di attivita` computazione: CPU burst di lunga durata, intervallati da pochi I/O Lo scheduler decide a quale processo assegnare la CPU. A seguito della decisione, viene attuato il cambio di contesto (context-switch). Dispatcher: è la parte del S.O. che realizza il cambio di contesto. First Come First Served (FCFS) Il primo processo che richiede la CPU è il primo ad essere servito Svantaggio: non distingue tra processi che hanno interattività e processi che invece non ne hanno. Il tempo di risposta non è dei migliori. Il tempo di completamento (turnround) è variabile TECNO 1 REL

77 Esempio 1 determinare il tempo medio di completamento : dati tre processi A;B;C, il tempo di esecuzione è Ta=30, Tb=, Tc=, se i processi vengono eseguiti nell ordine A B C: o il tempo medio di completamento risulta 68 ( )/3, se vengono eseguiti C;A;B allora o tempo medio di completamento è 43 (+3+90)/3 Esempio 2 determinare il tempo medio di attesa : Nota: Un diagramma di Gantt permette la rappresentazione grafica di un calendario di attività, utile al fine di pianificare, coordinare e tracciare specifiche dando una chiara illustrazione dello stato d'avanzamento delle attività rappresentate Round Robin (RR) A ciascun processo è assegnato un quanto di tempo, durante il quale il processo è posto in esecuzione. Se il processo non è ancora terminato prima della fine del quanto, gli viene tolta la CPU ed assegnata ad un altro processo. Se termina prima che il suo quanto scada, la commutazione della CPU avviene quando il processo termina. L implementazione di questa politica richiede allo scheduler di mantenere una lista di processi eseguibili (stato di pronto). Allo scadere del quanto di tempo, il P è posto nella coda dei processi pronti (coda di Ready). Particolare importanza assume il dimensionamento del quanto di tempo: se troppo breve => continua commutazione dei processi, abbassamento efficienza CPU, impegnata per lo più ad effettuare commutazioni di contesto tra i processi se troppo lungo => non adatto nel caso di richieste brevi; inoltre i P in attesa restano molto tempo fermi (non va bene nei sistemi interattivi) Compromesso: msec. P1 P2 P3 P1 P2 P1 P3 P1 P2 Fine time slice Tempo di riassegnamento Richiesta I/O Fine I/O P3 Fine I/O P2 Fine P3 Lo scheduler RR è molto usato in sistemi time-sharing per assegnare il processore ai processi in competizione. Il principio di funzionamento di questa tecnica è il seguente: un P entra nel sistema collegandosi a una coda gestita con politica FIFO detta coda di ready. Ogni volta che un processo raggiunge la testa della coda, questo viene eseguito per un intervallo di tempo predeterminato detto quanto. Se il processo non completa la sua esecuzione nel suo quanto, viene reinserito nella coda di ready. Vantaggi: di RR sono la sua semplicità e il basso carico di lavoro nel prendere la decisione. Svantaggi: se tutti i p sono CPU-bpound (un processo è detto CPU bound se compie principalmente computazioni e usa occasionalmente 77 - TECNO 1 REL

78 dispositivi di I/O), il sistema si comporta equamente con ogni P, ma se è costituito da P sia CPU bound, sia I/O bound, è preferibili comportarsi in maniera differente a seconda del tipo di processo, per evitare di privilegiarne uno a danno di altri. (VRR) Esempio : cosa capita al variare del quanto di tempo? Il tempo medio di completamento varia in funzione del quanto di tempo. Esempio con più processi: P1=6 unità temporali, P2=3, P3=1 e P4=7: quanto di tempo =2 -> T medio completamento = /4 = 11, quanto di tempo =3 -> T medio completamento = /4 = 10,7 quanto tempo di Tempo medio di completamento , 3 10,7 4 11, 12,2 6 10, 7 10, (cfr Sistemi Operativi - Silberschatz, Galvin, Gagne - Addison Wesley Longman Italia ) Shortest job first Consiste nell assegnare la CPU al job più corto. Questo permette di ottimizzare il tempo di turnround. Ad esempio siano A;B;C tre job con tempi di esecuzione 10,6,4 unità di tempo rispettivamente. Se venissero eseguiti nell ordine A;B;C il tempo di turnround sarebbe: 10 per A, 16 per B, 20 per C, per un tempo medio di 1 unità ca. Se vengono eseguiti nell ordine C,B,A, i tempi di t saranno 4,10,20 con una media di 11 unità. A B C 4 20= 46 /3 1 C 4 4+ B A 10 20= 34 / 3 11 Meccanismo di priorità 78 - TECNO 1 REL

79 codice pronto soccorso A ciascun processo è assegnata una priorità; la CPU è assegnata al Processo (P) pronto con più alta priorità. Per evitare che un Processo possa essere eseguito indefinitamente, lo scheduler può diminuire la priorità del P corrente ad ogni colpo di clock. In questo modo se il livello di priorità scende al di sotto di quello del P successivo a priorità più alta, avviene la commutazione. La priorità può essere definita in modo statico o dinamico. Il meccanismo di priorità può essere combinato con quello Round Robin; si raggruppano i processi in classi di priorità e si adotta lo schema delle priorità tra le varie classi, e la politica RR all interno di ciascuna classe Es Priorità 4 Priorità 3 Priorità 2 Priorità 1 Finché ci sono P eseguibili nella coda di priorità 4, ciascun P viene eseguito per il proprio quanto. Se la coda di pr 4 si svuota, allora vengono eseguiti i P della coda 3 RR, e così via. Se le pr non vengono modificate di volta in volta, le classi a priorità bassa possono non essere mai eseguite. Aging (invecchiamento): aumento graduale della priorità dei processi che si trovano in attesa nel sistema da lungo tempo. Un modo per realizzare l aging è Highest Response Ratio Next scheduling uno Scheduling senza prelazione a priorità variabile. La priorità è funzione di: Tempo di attesa e Tempo di burst P = 1 è la minima priorità T attesa: favorisce i processi che hanno già atteso molto T burst: favorisce i processi corti Thread Il concetto di processo è associato a quello di thread (abbreviazione di thread of execution, filo dell'esecuzione), con cui si intende l'unità granulare in cui un processo può essere suddiviso, e che può essere eseguito in parallelo ad altri thread. Il multithreading è, quindi, una tecnica che permette di avere più flussi di esecuzione contemporanei (thread) di uno stesso programma in esecuzione, su CPU differenti o sulla stessa. In altre parole, un thread è una parte del processo che viene eseguita in maniera concorrente ed indipendente internamente al processo stesso. Il termine inglese rende bene l'idea, in quanto si rifà visivamente al concetto di fune composta da vari fili attorcigliati: se la fune è il processo in esecuzione, allora i singoli fili che la compongono sono i thread. Un processo ha sempre almeno un thread (se stesso), ma in alcuni casi un processo può avere più thread che vengono eseguiti in parallelo TECNO 1 REL

80 Una prima differenza fra thread e processi modo con cui essi condividono le risorse: i processi sono di solito fra loro indipendenti, utilizzando diverse aree di memoria interagendo soltanto mediante appositi meccanismi di comunicazione messi a disposizione dal sistema i thread tipicamente condividono le medesime informazioni di stato, la memoria ed altre risorse di sistema. Il processo è l'oggetto del sistema operativo a cui sono assegnate tutte le risorse di sistema per l'esecuzione di un programma,tranne la CPU. Il thread è l'oggetto del sistema operativo o dell'applicazione a cui è assegnata la CPU per l'esecuzione. In un sistema che non supporta i thread, se si vuole eseguire contemporaneamente più volte lo stesso programma, è necessario creare più processi basati sullo stesso programma. Tale tecnica funziona, ma è dispendiosa di risorse, sia perché ogni processo deve allocare le proprie risorse, sia perché per comunicare tra i vari processi è necessario eseguire delle relativamente lente chiamate di sistema, sia perché la commutazione di contesto tra thread dello stesso processo è più veloce che tra thread di processi distinti. Avendo più thread nello stesso processo, si può ottenere lo stesso risultato allocando una sola volta le risorse necessarie, e scambiando i dati tra i thread tramite la memoria del processo, che è accessibile a tutti i suoi thread. Avendo più thread nello stesso processo, si può ottenere lo stesso risultato allocando una sola volta le risorse necessarie, e scambiando i dati tra i thread tramite la memoria del processo, che è accessibile a tutti i suoi thread. Elementi per ogni Thread Program counter Stack Insieme dei registri Thread figli stato Elementi per ogni Processo Spazio degli indirizzi Variabili globali File aperti Processi figli.. Il multithreading permette di suddividere il lavoro in modo efficiente, ma introduce una complessità legata alla sincronizzazione tra i vari thread. Un esempio di applicazione che può far uso di più thread è un browser Web, che usa un thread distinto per scaricare ogni immagine in una pagina Web che contiene più immagini. Un altro esempio è costituito dai processi server, spesso chiamati servizi o daemon, che possono rispondere contemporaneamente alle richieste provenienti da più utenti. L'architettura di una applicazione basata su un unico processo non funziona bene in un server di applicazioni Web. Se un utente con un Browser in Hawaii visita una pagina del tuo sito Web, il server inizia a processare la richiesta. Se poi arriva la richiesta di un altro utente dalla Nuova Zelanda, esso deve aspettare fino a quando la richiesta anteriore non si sia conclusa. Una possibile soluzione a questo problema è avere molteplici processi che rispondano a queste richieste in modo tale che siano soddisfatte in un modo più o meno simultaneo. Questo è ciò che fanno i CGI (ogni CGI crea un nuovo processo che a sua volta crea una pagina, dopodichè finisce). Tuttavia, ciò porta ad un uso eccessivo delle risorse ed è inefficiente. La priorità in Windows Windows 2000 (con i suoi successori) dispone di uno scheduling dei processi (piu precisamente dei thread) servendosi di un algoritmo preemptive e a priorità. La parte del nucleo che si occupa della schedulazione si chiama dispatcher. Vengono sempre eseguiti i thread a priorità piu alta. Essi vengono interrotti se terminano, esauriscono il loro quanto di tempo, richiedono un I/O, oppure deve essere mandato in esecuzione un thread a priorità piu alta: se un thread real-time entra nella coda dei processi pronti il processo a bassa priorità in esecuzione è soggetto a prelazione (preemptive). Tuttavia Wndows2000 non è un S.O. real time : infatti NON garantisce un tempo prefissato entro cui il processo ad alta priorità possa entrare in esecuzione TECNO 1 REL

81 Come mostrato in figura, il dispatcher impiega uno schema con diverse priorità, percorrendo l insieme delle code da quella a priorità maggiore alla minore, fino a trovare un thread pronto per l esecuzione. Se nessun thread è presente nelle code il dispatcher fa eseguire un thread speciale, di attesa, l idle thread. In Windows, ad ogni processo viene assegnata una delle seguenti quattro possibili classi di priorità : IDLE_PRIORITY_CLASS> o usata per le applicazioni che devono andare in esecuzione quando il sistema non ha nient altro da fare un esempio classico è lo screen saver NORMAL_PRIORITY_CLASS o è la classe di default usata nella maggior parte delle applicazioni utente HIGH_PRIORITY_CLASS o usata per quei processi che non possono essere interrotti durante la loro esecuzione e che svolgono la loro elaborazione in un tempo molto ridotto che non pregiudica l avanzamento dei processi a priorità inferiore usata dai processi di sistema REAL_TIME_PRIORITY_CLASS o serve generalmente quando degli eventi devono essere elaborati immediatamente non appena si verificano non è consigliabile usarla perché rallenta notevolmente i processi di sistema che gestiscono l input dal mouse e della tastiera disco usata nei sistemi real time La priorità in Linux Linux dispone di due tipi di algoritmi di scheduling: uno, equo, a partizione di tempo con diritto di prelazione; un altro, progettato per il tempo reale, in cui le priorità sono piu importanti dell equità. Linux permette la prelazione dei soli processi eseguiti in modo utente, mentre un processo del nucleo non è soggetto a prelazione anche se un processo ad alta priorità lo richiede. processi a partizione di tempo. In questa classe Linux adotta un algoritmo basato sui crediti: quando occorre assegnare la CPU viene scelto il processo col numero maggiore di crediti. Ad ogni time slice il processo perde un credito. Quando raggiunge lo zero, il processo viene sospeso e un altro subentra al suo posto. Se tutti i processi hanno zero crediti, il SO procede a una rassegnazione dei crediti che tiene conto della priorità del processo aggiungendone ad ogni processo nel sistema, e non solo a quelli eseguibili, i crediti secondo la formula: crediti_nuovi= crediti_precedenti/2 + priorità Processi in tempo reale (real time). La situazione è ancora piu semplice: esistono le due classi FCFS e RR. Ad ogni processo è assegnata una priorità. Viene mandato in esecuzione (secondo RR o FCFS) il processo a priorità maggiore e, a pari priorità, quello che attende da maggior tempo. Anche in Linux il real time è debole perché non c è alcuna garanzia sul tempo in cui un processo in pronto venga mandato in esecuzione. Tratto da : Introduzione ai sistemi real time Di GianLuca DeMichelis Il comando nice (nice [OPTION] [COMMAND [ARG]...]) consente di dare una maggiore o minore priorità di esecuzione: la priorità può essere modificata da nice nel range [-20, 19], -20 è la più alta priorità (massima precedenza di esecuzione), mentre 19 è la più bassa. Ad esempio : $ nice -n ~/bin/longtask Esempio: nice -n 1 nano 81 - TECNO 1 REL

82 Nota: I valori da asegnare sono limitati dal seguente intervallo 19 e -20 Utillizando un valore negativo si aumenta la priorità del processo Utilizzando un valore positivo si diminuisce la priorità del processo L'utente normale puo utilizzare soltanto i valori positivi in quanto non ha i permessi per poter utilizzare i valori negativi. Soltanto l'amministratore puo aumentare la priorità di un processo. Il comando nice può essere utilizzato soltanto per avviare il processo, nel caso il quale si desidera cambiare la priorità durante l'esecuzione si può utilizzare il comando renice TECNO 1 REL

83 Processi sequenziali e concorrenti Corse critiche, Interferenza e Cooperazione Spesso i processi non possono evolvere in modo del tutto indipendente, ma devono essere sincronizzati per garantire un perfetto funzionamento del sistema. In particolare, si dice che più processi interferiscono tra loro quando, da un punto di vista logico, potrebbero evolvere in modo indipendente se non dovessero usufruire della stessa risorsa. Si dice che due processi cooperano quando sono logicamente interconnessi, cioè quando, per evolvere, uno dei due deve usare una risorsa che viene prodotta dall altro. I programmi associati ai processi dovranno contenere apposite istruzioni (primitive) per la loro sincronizzazione e per la produzione e lo scambio di messaggi. Le Corse Critiche sono situazioni in cui due o più processi leggono o scrivono dati condivisi. In questo caso il risultato dell elaborazione dipende dall ordine di schedulazione dei processi. La sequenza delle operazioni che possono portare a corse critiche è detta sezione critica. Per evitare che si verifichi il problema i due processi non possono entrare contemporaneamente nella stessa Sezione Critica. Esempio spooler di stampa PA e PB condividono due variabili : in che punta al prox elemento libero, out che punta al primo elemento da stampare. Ci troviamo in questa situazione che rappresenta l occupazione di memoria. Simultaneamente PA e PB decidono di stampare: Caso sfortunato: PA legge in e trova che il prossimo elemento libero è 7, cosi assegna ad una var prox_libero_a :=7 Interrupt (ad esempio scade il time slice): SO toglie CPU a PA. SO assegna CPU a PB. PB legge in (non ancora modificata da PA) e assegna ad una var prox_libero_b :=7, Inserisce il nome del file da stampare nell item 7, in := prox_libero_b +1, prosegue nella sua esecuzione File PB 8 9 SO assegna CPU a PA. PA riprende da dove era stato interrotto. Inserisce il nome del file da stampare nell item 7 (prox_libero_a) in:= prox_libero_a +1, Prosegue 83 - TECNO 1 REL

84 File PB File PA 8 9 Formalmente non ci sono errori per quanto riguarda la gestione dei file da stampare, ma il file del processo B non sarà mai stampato! Un problema analogo è quello della prenotazione, da parte di due utenti, di un posto aereo con la richiesta fatta, in contemporanea, a due operatrici diverse che controllano i posti disponibili sull aereo e ne danno conferma al cliente. Sezioni critiche Mutua esclusione Studiamo un altro esempio riguarda il caso di due processi che possono allocare e deallocare dinamicamente aree di memoria centrale, di grandezza predefinita, mediante due primitive Alloc e Dealloc: ALLOC(ptr); ptr stack(top); top top-1; DEALLOC(ptr); top top+1; stack(top) ptr; Si noti che top è una locazione di sistema, condivisibile dai due processi. Si supponga ora che avvenga la seguente sequenza di due processi P1 e P2 che eseguono la primitiva ALLOC: P1 ptr stack(top); (la CPU è assegnata a P2 e P1 viene sospeso) top top-1; P2... ptr stack(top); top top-1; (la CPU è assegnata a P1) Le due ALLOC interfogliate causano due problemi: 1. P1 e P2 allocano la stessa area di memoria 2. Un area di memoria diventa inaccessibile a tutti i processi Quindi al fine di evitare i problemi mostrati occorre che una risorsa condivisa possa essere usata da UN SOLO PROCESSO ALLA VOLTA. In altre parole occorre attuare una mutua esclusione, cioè occorre impedire che più di un processo alla volta legga/scriva contemporaneamente dati condivisi. Se un processo sta usando una risorsa condivisa, bisogna impedire ad altri di poterlo fare. Ma non basta. Occorre che siano soddisfatte 4 condizioni: 1. due processi non devono mai trovarsi nelle loro sezioni critiche contemporaneamente 2. non si deve fare alcuna assunzione sulle velocità e sul numero delle CPU 3. nessun processo in esecuzione fuori dalla sua sezione critica può bloccare altri processi 4. nessun processo deve aspettare indefinitamente (troppo a lungo) per poter entrare in una sua sezione critica Per cercare di risolvere queste situazioni critiche si possono attuare una serie di soluzioni. Soluzioni Primitive di Lock/Unlock Una prima soluzione al problema potrebbe essere quella di associare a una risorsa critica una variabile (S) condivisa che assume due valori: rosso (0) nel caso il processo è dentro una sezione critica, verde (1) in caso contrario. Consideriamo le due primitive, LOCK (S) e UNLOCK(S). Un processo che vuole entrare in una sezione critica :.. LOCK(S) Regione critica UNLOCK(S) le Primitive saranno cosi implementate: 84 - TECNO 1 REL

85 LOCK(S) While (S==0); //se è rosso non fare niente S=0; //mettilo rosso! UNLOCK(S) S=1; //mettilo verde! Quando un processo vuole entrare nella sua regione critica, controlla S: se è rossa aspetta, altrimenti la mette a rossa, ed entra nella sezione critica. problema: un P1 legge S e prima che ne modifichi il valore, viene tolta la CPU e data ad un altro processo P2. P2 legge S, la trova verde ed entra nella sezione critica. P1 riprende, setta S rossa ed entra nella sezione critica. Viene meno il vincolo 1! Occorre quindi fare in modo che le primitive siano INDIVISIBILI: per fare ciò, un metodo, è quello di disabilitare le interruzioni appena si entra in una sezione critica. Problema: E se un processo utente disabilitasse le sue interruzioni, e non le riabilitasse più? E la fine!!! Se le CPU sono più di una, la disabilitazione riguarda una sola CPU, le altre potrebbero eseguire istruzioni che accedono alla memoria condivisa. (vincolo 2) Sebbene Lock e Unlock, con la disabilitazione delle interruzioni, garantiscano la correttezza, almeno in linea di massima, l efficienza NON è affatto garantita. Due sono i problemi che nascono. Attesa attiva (busy waiting) : quando un processo esegue una Lock continua a testare il valore di S finchè diventa verde; in tal modo essa occupa continuamente e inutilmente la CPU! Rinvio Infinito non esiste alcun ordine con cui vengono eseguiti i processi che eseguono una Lock. Cosi un processo potrebbe aspettare molto tempo prima di accedere a una sezione critica e, al limite, non entrarvi mai perché sempre anticipato da un altro processo che diventa attivo sempre prima di lui. I problemi esposti derivano dal fatto che, mediante Lock e Unlock, è il singolo processo che provvede a sincronizzarsi con gli altri. Tutto cio ci fa pensare che il controllo dei processi e delle sezioni critiche vada delegato a chi ha una visione complessiva dello stato del sistema : il NUCLEO! Ecco perché Lock e Unlock vengono sostituite da due nuove primitive chiamate P e V che agiscono su un semaforo. Semafori Da quanto detto emerge come processi logicamente corretti possono produrre errori se non correttamente sincronizzati. Inoltre, cio che è piu grave, compaiono errori dipendenti dal tempo cioè dalla velocità relativa di esecuzione dei processi: come nell esempio del Produttore-Consumatore: provate a trovare la sequenza corretta e quelle errate. E quindi INDISPENSABILE ricorrere a MECCANISMI ESPLICITI DI SINCRONIZZAZIONE. IL meccanismo base, messo a disposizione dal nucleo, è il SEMAFORO (Dijkstra, 196) che, nella versione base consiste in un intero non negativo che, a parte l inizializzazione, puo essere usato solo da due primitive : P per Wait (dall olandese Proberen: provare) e V per Signal (dall olandese verhogen: incrementare) 8 - TECNO 1 REL

86 SEMAFORO BINARIO Il semaforo Binario è una VARIABILE BINARIA (S) sulla quale possono essere eseguite due primitive indivisibili P e V cosi definite: (nota 0=rosso. 1=verde): P(S) o Wait(S) while S==0 ; //se è rosso non fare niente S=0; //mettilo rosso! V(S) o Signal(S) S=1; //mettilo verde Come Lock e Unlock sono indivisibili ma essendo implementate dal nucleo del S.O, esse consentono di evitare sia l attesa attiva che il rinvio infinito. Un semaforo può essere modificato da parte del codice utente solamente con tre chiamate di sistema: 1. init (s, 1) //per inizializzare il semaforo s a 1 2. wait (s) // richiesta risorsa 3. signal(s)// rilascio Intuitivamente, il significato delle operazioni per un semaforo binario, è il seguente: con l'inizializzazione, cioè l assegnazione del valore 1 al semaforo, si dichiara la disponibilità della risorsa Con l'operazione P, un task chiede di riservare un'unità della risorsa. Se la risorsa non è disponibile, il task viene messo in attesa, per essere risvegliato solo quando gli sarà assegnata l'unità richiesta. Con l'operazione V, un task rilascia l'unità di cui non ha più bisogno, e per la quale altri task potrebbero già essere in attesa. Mutua esclusione Un utilizzo molto semplice dei semafori si ha per garantire la mutua esclusione nell'accesso a una risorsa semplice: in tal caso basta usare un semaforo binario. Si chiama la P prima di iniziare a usare la risorsa, e si chiama la V dopo averla usata: Consideriamo due processi (p1 P2) che devono agire sulla stessa risorsa critica: Inizializzazione: mutex=1 (verde) P1.. P(mutex) Regione critica che opera sulla risorsa V(mutex).. P2.. P(mutex) Regione critica che opera sulla risorsa V(mutex).. Produttore / consumatore : 86 - TECNO 1 REL

87 consideriamo due processi (P1 P2) in cui P1 produce un messaggio e P2 lo utilizza, nell ipotesi che i messaggi vengano scritti su un buffer a cui possono accedere entrambi (nello stesso modo in cui un insegnante scrive su una lavagna e lo studente legge dalla lavagna). Ci serviremo di due semafori : Vuoto e Pieno Inizializzazione: vuoto=1(verde) : pieno=0 (rosso) P1.. ripeti produci messaggio P(vuoto) Scrivi messaggio nel buffer V(pieno) Continua... P2.. ripeti P(pieno) leggi messaggio dal buffer V(vuoto) Consuma messaggio continua TECNO 1 REL

88 SEMAFORO GENERALIZZATO Un semaforo S è una variabile intera (quindi che assume valori 0,1,2, n) alla quale si può accedere solo attraverso le seguenti operazioni atomiche: P e V P(S) V(S) while S <= 0; //non fare niente S= S-1; //decrementa il valore S=S+1; //incrementa il valore Le modifiche al valore intero del semaforo in P e V sono eseguite atomicamente: mentre un processo modifica il valore di un semaforo, nessun altro processo può simultaneamente modificare il valore di questo stesso semaforo. Se due processi tentano di eseguire contemporaneamente P(S) e V(S), queste operazioni saranno eseguite sequenzialmente in un ordine arbitrario. Intuitivamente, il significato delle operazioni per un semaforo generalizzato è il seguente: con l'inizializzazione, cioè l assegnazione di un valore intero al semaforo, si dichiarano quante unità di un tipo di risorsa sono disponibili. Con l'operazione P, un task chiede di riservare un'unità della risorsa. Se non sono disponibili unità, il task viene messo in attesa, per essere risvegliato solo quando gli sarà assegnata l'unità richiesta. Con l'operazione V, un task rilascia l'unità di cui non ha più bisogno, e per la quale altri task potrebbero già essere in attesa. Produttore / consumatore con buffer multiplo Consideriamo due processi (p1 P2) in cui P1 produce messaggi e P2 li utilizza, nell ipotesi che i messaggi vengano scritti su un buffer a cui possono accedere entrambi. Ci serviremo di due semafori : Vuoto e Pieno Inizializzazione: vuoto=n(verde, verde, verde,..) : pieno=0 (rosso) P1.. ripeti produci messaggio j=j+1 mod n P(vuoto) Scrivi messaggio nel buffer j-esimo V(pieno) Continua... P2.. ripeti k= k+1 mod n P(pieno) leggi messaggio dal k-esimo buffer V(vuoto) Consuma messaggio continua.. Note sull implementazione di P e V P(s) //wait(s), viene chiamata tramite SVC da un processo in EXEC che fa una P(s)) If (s>0 ) //verde S = s-1 Else //rosso <Salvataggio contesto di P (PCB <- Cima dello Stack (PC))> <Accodamento di P nella coda del semaforo S (in Attesa), cioè cambia lo stato da running a waiting>> <Selezione di P (dalla coda dei processi pronti)> <Ripristino contesto di P (Cima dello Stack (PC)<- PCB)> <P in exec > V(s) ( Signal(s), viene chiamata da SVC o interruzione asincrona) If (coda sul sem. s vuota) S = s+1 Else <Estrazione di P dalla coda di s > <Inserimento di P nella coda dei processi pronti > 88 - TECNO 1 REL

89 <Selezione eventuale, di P da mettere in exec, cioè cambio di stato da waiting a ready > Nota: - si ricorda che un semaforo viene implementato per mezzo di una variabile e un puntatore alla coda dei processi sospesi su quel semaforo (che cioè hanno eseguito una P trovando il semaforo rosso) - Se uno o più processi sono in attesa su S, consenti a uno dei processi in wait su S di proseguire. - Il numero contenuto nel semaforo rappresenta il numero di risorse di un certo tipo disponibili ai task. - Un caso particolare molto usato è il semaforo binario, in cui gli unici valori possibili sono 0 e 1. - Le primitive wait e signal vengono eseguite dal nucleo del S.O. e devono essere indivisibili. Problemi: 1. Drink dei filosofi - Bloody Mary di Zio Paolo è un cocktail analcolico a base di succo di limone, acqua tonica e succo di pomodoro - Zombie o Punch del bucaniere Paolo è un cocktail a base succo di mela, menta piperita e spremuta d arancia - Long Island Iced Tea di Zio Paolo è un cocktail a base di the verde, succo di ananas e cannella 2 Pranzo dei filosofi (dining philosophers) Platone Socrate Cartesio Pascal Kierkegaard E un esempio che illustra un comune problema di controllo della concorrenza. Si tratta di un classico problema di sincronizzazione fra processi paralleli. L'esempio fu descritto nel 196 da Edsger Dijkstra. Cinque filosofi siedono ad una tavola rotonda con un piatto di spaghetti davanti. I filosofi possono compiere 2 attività non contemporaneamente: pensare e mangiare. Sul tavolo ci sono bacchette (o forchette) : ogni filosofo per mangiare deve avere 2 bacchette in mano: può prendere solo quelle immediatamente alla propria destra e sinistra non può prendere una bacchetta se è in mano ad un altro filosofo 89 - TECNO 1 REL

90 risorse: bacchette b0...b4 processi: Filosofo() S1,2,3,4,=1 (verde) process Filosofo { while (true) { P(Si); P(Si+1); mod; mangia; V(Si); V(Si+1); mod; } } Problema la morte d'inedia (starvation) Semaforo Room=4 while (true) { P(Room); P(Si); P(Si+1); mod; mangia; V(Si); V(Si+1); mod; V(Room); } } Un torrente e attraversato da un ponte. Caso 1. Un piccolo fiume è attraversato da un ponte. Il ponte è lungo quanto una macchine, ma è largo come una macchina, per cui la circolazione avviene a senso unico alternato. Sul ponte passa una sola macchina alla volta. (difficoltà bassa) Caso 2. Una strada a senso unico attraversa, su di un ponte, un piccolo fiume. Il ponte è lungo quanto tre macchine, ma è largo come una macchina. (difficoltà media) Caso 3. Un piccolo fiume è attraversato da un ponte. Il ponte è lungo quanto tre macchine, ma è largo come una macchina, per cui la circolazione avviene a senso unico alternato. (difficoltà alta) Le regole di circolazione sono: 1. indipendentemente dalla riva da cui provengono, le macchine impegnano il ponte nell ordine di arrivo; 2. una macchina non puo impegnare il ponte finchè questo è occupato da una o più macchine provenienti dalla riva opposta; 3. una macchina non puo impegnare il ponte se questo è già occupato da tre macchine. Scrivere in pseudocodice i programmi corrispondenti a macchine provenienti dalla riva destra e dalla riva sinistra, utilizzando i semafori per la sincronizzazione. Soluzione Innanzitutto la capacità del ponte (requisito (3)) è gestibile con un solo semaforo, opportunamente inizializzato, che protegge la sola fase di transito. In secondo luogo, il requisito (1) richiede laprotezione (con mutua esclusione tramite semafori) del protocollo di accesso al ponte, in modo da forzare l ordinamento di tutte le macchine indipendentemente dalla riva di provenienza TECNO 1 REL

91 int m=0; sem mutexdx=1; /* per controllo di flusso e mutex */ sem mutexsx=1; /* per controllo di flusso e mutex */ sem portata=3; /* capacita del ponte */ sem accesso=1; /* forza l ordinamento delle macchine che arrivano */ Macchina_Destra() { wait(accesso); wait(mutexdx); /* per evitare scontri e per mutex */ m++; if (m==1) wait(mutexsx); /* prima macchina a dx, blocca macchine dall altra riva sx*/ signal(mutexdx); signal(accesso); wait(portata); attraversa_ponte(); signal(portata); wait(mutexdx); m--; if (m==0) signal(mutexsx); /*ultima macchina a dx, sblocca macchine dall altra riva sx */ signal(mutexdx); } Macchina_Sinistra(){ wait(accesso); wait(mutexsx); m++; if (m==1) wait(mutexdx); signal(mutexsx); signal(accesso); wait(portata); attraversa_ponte(); signal(portata); wait(mutexsx); m--; if (m==0) signal(mutexdx); signal(mutexsx); } Il conto corrente Un conto bancario è condiviso tra più persone. Ciascuna può depositare o prelevare soldi dal conto, ma il saldo non deve mai diventare negativo. Se una persona vuole prelevare e ci sono soldi a sufficienza, lo fa aggiornando il saldo, altrimenti resta in attesa che il saldo renda possibile il prelievo Un incrocio di due grandi viali (uno in direzione Nord-Sud, l altro in direzione Est-Ovest) è regolato da un vigile. Il barbiere addormentato Un negozio di barbiere ha un barbiere, una poltrona da barbiere e N sedie per i clienti in attesa Se non ci sono clienti, il barbiere si mette sulla sedia da barbiere e si addormenta Quando arriva un cliente, sveglia il barbiere addormentato e si fa tagliare i capelli sulla sedia da barbiere Se arriva un cliente mentre il barbiere sta tagliando i capelli a un altro cliente, il cliente si mette in attesa su una delle sedie Se tutte le sedie sono occupate, il cliente se ne va! Soluzione Possiamo vedere questo problema come un problema di produttore-consumatore: I produttori sono i clienti, che producono se stessi. Il consumatore è il barbiere, che consuma un cliente alla volta. Innanzitutto, dobbiamo descrivere la vita del barbiere e dei clienti: process Barbiere { process Cliente { 91 - TECNO 1 REL

92 while (true) { attendi cliente // taglia capelli libera poltrona } } verifica se c'è posto, altrimenti esci attendi turno // fatti tagliare i capelli } E questo è il programma: Semafori: Cliente: Rosso, Poltrona: Rosso, Sedia: Verde process Barbiere { while (true) { P(Cliente); // taglia capelli V(Poltrona); } } SedieLibere =N; process Cliente { P(Sedia); if (sedielibere==0){//non ci sono sedie libere V(Sedia); return; //se ne va } sedielibere--; V(Sedia); V(Cliente); P(Poltrona); P(Sedia); sedielibere++; V(Sedia); // Fatti tagliare i capelli e poi esci } Alcuni errori visti nelle soluzioni degli studenti: while(sedielibere==0) // Inserito all'inizio del codice cliente ; //non fa niente Questo è busy waiting e non rispetta le richieste del problema (se ne va indignato). Qui inrealtà attende, ma senza mettersi in coda sul semaforo. Utilizzo di un semaforo sedie inizializzato a N. Bisogna essere molti cauti nell'utilizzare unasoluzione del genere: se il cliente si sospende su sedie, i primi N clienti passano (senza in realtà aspettare), mentre i clienti in eccesso attendono (mentre dovrebbero andarsene) TECNO 1 REL

93 Deadlock In un ambiente multiprogrammato più processi possono competere per un numero finito di risorse. Un processo richiede risorse e se queste non sono disponibili in quel momento, il P entra in uno stato di waiting. Può accadere che un P in waiting non modifichi mai lo stato perché le risorse per cui è in attesa sono state assegnate ad un altro P in attesa. Nota: Es. di due processi in Blocco Critico (deadlock) s1=1, s2=1 Processo 1.. P(s1) Utilizza Risorsa (R1).. P(s2) Utilizza Risorsa (R2).. V(s1) V(s2) Rilascio R1, R2 Processo 2.. P(s2) Utilizza Risorsa (R12).. P(s1) Utilizza Risorsa (R1).. V(s2) V(s1) Rilascio R1, R2 N.B. sse la sequenza è: P1,P2,P1,P2 si ha il Blocco: P1 è bloccato su P2 e viceversa. Ad ex. due processi (A e B) devono leggere da un nastro e stampare. A ottiene l uso della stampante, B del nastro. Quindi A chiede l uso del nastro e aspetta, B chiede l uso della stampante e aspetta: BLOCCATI! Esempio : Supponiamo di dover attraversare un fiume su una fila di sassi che affiorano. Possiamo paragonare la persona che deve attraversare e quindi richiede le pietre, ad un processo che richiede risorse. Il deadlock si verifica quando due persone iniziano l attraversamento da parti opposte e si incontrano in mezzo. Il passaggio su una pietra può essere visto come la richiesta di una risorsa, mentre la rimozione del piede come il rilascio della risorsa. Il deadlock si verifica quando le due persone tentano di passare sullo stesso sasso. Può essere risolto solo se una persona si ritrae dalla parte del fiume da cui è partita. In termini del SO operativo questo ritirarsi è detto ROLLBACK Occorre notare che se più persone devono attraversare partendo dalla stessa parte, allora più di una persona deve tornare indietro per risolvere il deadlock. Il solo modo per assicurare che non si verifichi il dedlock è quello di richiedere ad ogni persona di attraversare il fiume, seguendo un protocollo concordato. Per esempio si potrebbe richiedere che chi ha intenzione di attraversare, si informi che nessun altro stia già attraversando in senso opposto. In questo caso occorre attendere che l altro termini l attraversamento. Per risolvere il problema occorre un meccanismo per determinare se qualcuno sta attraversando il fiume. Questo è possibile se in ogni momento può essere rilevato lo stato di tutte le pietre. Supponiamo che due persone vogliano attraversare partendo da lati opposti nello stesso istante. Se entrambi partono, si verificherà il deadlock. Se entrambi attendono che l altro inizi, si verificherà un altra forma di deadlock.. Una soluzione potrebbe essere quella di assegnare una priorità a ciascuna riva del fiume. Si osservi come sia possibile che uno o più processi possano attendere indefinitamente: STARVATION. (se una sequenza continua di persone deve attraversare sempre dalla parte ad alta priorità). Occorre quindi definire un algoritmo che ogni tanto alterni la direzione. In sintesi si può verificare una situazione di stallo se: MUTUA ESCLUSIONE: ogni risorsa è assegnata ad un solo P oppure è disponibile. Questa può essere imposta solo a risorse non condivisibili. HOLD AND WAIT: un P può aver richiesto e ottenuto una risorsa, ed essere in attesa di altre risorse in uso. Occorre assicurare che quando un P richiede r, non ne stia già usando un altra: imporre a P di fare tutte le richieste prima di iniziare l esecuzione. Per es. le system call per le risorse devono precedere tutte le altre.(può riservare per molto tempo una risorsa che in realtà sarà usata solo per breve tempo) Oppure Un P può richiedere r solo se non ne ha di assegnate. Prima di richiedere una risorsa, deve rilasciare tutte quelle in uso. Un P può richiedere tante risorse (cpu time, memory space, file, I/O device, ), quante ne occorrono per portare a termine il suo compito. In ogni caso il numero di risorse richieste non può superare il numero di risorse disponibili. solo una persona può passare su un sasso in un certo istante ogni persona passa su un sasso e attende di passare sull altro. non si può spostare una persona che è su un sasso una persona che parte da un lato è in attesa che l altra termini e viceversa. NO PREEMPTION: le risorse in uso non possono essere tolte forzatamente ad un P. Una risorsa può essere rilasciata solo 93 - TECNO 1 REL

94 volontariamente dal P che l ha in uso quando ha completato il task. CIRCULAR WAIT: deve esistere un insieme di P in waiting {P0,P1, Pn} per cui P0 è in attesa di una risorsa in uso a P1, P1 di una in uso a P2,.Pn attende una risorsa in uso a P0. Un insieme di P è in uno stato di deadlock quando tutti i P dell insieme sono in attesa di un evento che può essere causato solo da un P dell insieme. SOLUZIONI Protocollo per assicurare che il sistema non entri in uno stato di deadlock (prevenire) Permettere che si verifichi, e poi tentare di recuperare.(curare) Meglio prevenire, curare può essere costoso e difficile. tecniche anti-stallo Allocazione Globale delle risorse: se tutte le risorse sono disponibili assegnale al processo, altrimenti sospendilo (evita lo stallo, ma poco efficiente e antimodulare) Allocazione gerarchica : se le risorse sono ordinate in una gerarchia di livelli un processo che possiede una risorsa Rk (livelo k) non puo richiederne un altra di livello l<=k senza rilasciare prima Rk, richiedere e ottenere Rl, richiedere Rk ( evita lo stallo ma è pesante!!) Algoritmo del Banchiere: quando un processo richiede una o piu risorse, gli vengono assegnate solamente se rimane libero un numero sufficiente di risorse atto a soddisfare la richiesta massima di almeno uno dei processi che hanno già una risorsa associata. (Cosi almeno un processo alla volta potrà soddisfare la sua richiesta. E pesante, è basato sul caso pessimo, puo causare un Blocco Individuale di un processo) Preemption (svuotamento anticipato) : toglie d autorità una o piu risorse al processo se si verifica un blocco critico (Non previene lo stallo, ma prende provvedimenti se si verifica. Difficile: quanto tempo dura uno stallo????) Primitive di Comunicazione tra Processi Se per la mutua esclusione i Semafori sono sufficientemente potenti, per il produttore-consumtore diventano già macchinosi. Perché, allora, non costruire primitive piu potenti a partire dei mattoni -semafori, per lo scambio dati tra processi? INVIA-RICEVI S1=1, s2=0 Invia(buffer,areadati1) P(s1) Copia Areadati1-> Buffer V(s2) Ricevi(buffer,areadati2) P(s2) Copia Buffer -> Areadati2 V(s1) N.B. S1,S2 e Buffer sono aree comuni fornite dal S.O. mentre Areadati1,2 sono locali ai processi N.B. Svantaggi: Il Buffer è di lunghezza fissata (troppo?, poco?) ; doppie operazioni di scrittura/lettura Comunicazione indiretta I processi cooperanti non sono tenuti a conoscersi reciprocamente e si scambiano messaggi depositandoli/prelevandoli da una mailbox condivisa. La mailbox (o porta) è una risorsa astratta condivisibile da più processi che funge da contenitore dei messaggi. MAIL BOX (SEND-RECEIVE) MailBox = (Semaforo (s) + puntatore alla coda di messaggi (messaggio= area dati + puntatore al prossimo messaggio in coda) ) S=0 Send(Mail, messaggio) Inserisci messaggio nella coda di Mail V(s) Receive(Mail, messaggio) P(S) Estrai il primo mssaggio nella coda di Mail N.B. si possono accodare infiniti messaggi ma si possono limitare. Come? 94 - TECNO 1 REL

95 Osservazione : I semafori, le regioni critiche, i monitor sono stati concepiti basandosi sull ipotesi che tutti i processi possano comunicare e sincronizzarsi basandosi su una memoria comune. Se pero questo non risulta vero, come in rete, gli strumenti risultano inadeguati. Cio che viene richiesto pero un modello di Scambio Messaggi : i processi possono comunicare e/o sincronizzarsi SOLO attraverso l invio e la ricezione di MESSAGGI lungo CANALI DI COMUNICAZIONE (che costituiscono, in un certo senso, le uniche risorse condivise). I processi, quindi, possono interagire solo attraverso l INVIO e la RICEZIONE di MESSAGGI! Monitor Perché i monitor? ( ) L uso di semafori a livello di programma è ostico e rischioso: Il posizionamento improprio delle P può causare situazioni di blocco infinito (deadlock) o anche esecuzioni erronee di difficile verifica (race condition) È indesiderabile lasciare all utente il pieno controllo di strutture così delicate Linguaggi evoluti di alto livello (e.g.: Concurrent Pascal, Ada, Java) offrono strutture esplicite di controllo delle regioni critiche, originariamente dette monitor (Hoare, 74; Brinch-Hansen, 7) Il monitor definisce la regione critica Il compilatore (non il programmatore!) inserisce il codice necessario al controllo degli accessi Un monitor è un aggregato di sottoprogrammi, variabili e strutture dati Solo i sottoprogrammi del monitor possono accederne le variabili interne Solo un processo alla volta può essere attivo entro il monitor o Proprietà garantita dai meccanismi del supporto a tempo di esecuzione del linguaggio di programmazione concorrente Funzionalmente molto simile al kernel del sistema operativo o Il codice necessario è inserito dal compilatore direttamente nel programma eseguibile La garanzia di mutua esclusione da sola può non bastare per consentire sincronizzazione intelligente Due procedure operanti su variabili speciali (non contatori!) dette condition variables, consentono di modellare condizioni logiche specifiche del problema Wait(<cond>) // forza l attesa del chiamante Signal(<cond>) // risveglia il processo in attesa Il segnale di risveglio non ha memoria. Va perso se nessuno lo attende La primitiva Wait permette di bloccare il chiamante qualora le condizioni logiche della risorsa non consentano l esecuzione del servizio La primitiva Signal notifica il verificarsi della condizione attesa al (primo) processo bloccato, risvegliandolo Il processo risvegliato compete con il chiamante della Signal per il possesso della CPU Wait e Signal sono invocate in mutua esclusione Non si può verificare race condition Sincronizzazione di thread in Java Java offre un costrutto simile al monitor tramite classi con metodi synchronized Ma senza condition variable Le primitive wait() e notify() invocate all interno di metodi synchronized evitano il verificarsi di race condition 9 - TECNO 1 REL

96 In realtà il metodo wait() può venire interrotto, e l interruzione va trattata come eccezione! I thread in Java sono oggetti particolari ai quali si richiede un servizio (chiamato start()) corrispondente al lancio di una attività, di un thread, che procede in concorrenza a chi lo ha richiesto Java usa un meccanismo che è una forma di monitor: ogni istanza di qualsiasi oggetto ha associato un mutex. Quando un thread esegue un metodo che è stato dichiarato sincronizzato mediante l identificatore synchronized, entra in possesso del mutex associato all istanza e nessun altro metodo sincronizzato può essere eseguito su quell istanza fintanto che il thread non ha terminato l esecuzione del metodo. New Thread: Creato subito dopo l istruzione new Runnable: thread è in esecuzione, o in coda per ottenere l utilizzo della CPU Not Runnable: il thread entra in questo stato quando è in attesadi un operazione di I/O, o dopo l invocazione dei metodi suspend(),wait(),sleep() Dead: al termine naturale della sua esecuzione o dopo l invocazione del suo metodo stop()da parte diun altro thread Metodi per il controllo di thread start() fa partire l esecuzione di un thread. La macchina virtuale Java invoca il metodo run() del thread appena creato stop() forza la terminazione dell esecuzione di un thread. Tutte le risorse utilizzate dal thread vengono immediatamente liberate suspend() blocca l'esecuzione di un thread in attesa di una successiva operazione di resume. Non libera le risorse impegnate dal thread (possibilità di deadlock) resume() riprende l esecuzione di un thread precedentemente sospeso. (Se il thread riattivato ha una priorità maggiore di quello correntemente in esecuzione, avrà subito accesso alla CPU, altrimenti andrà in coda d'attesa sleep(long t) blocca per un tempo specificato (time) l'esecuzione di un thread. join() blocca il thread chiamante in attesa della terminazione del thread di cui si invoca il metodo. yield() sospende l'esecuzione del thread invocante, lasciando il controllo della CPU agli altri thread in coda d attesa /* Cosa fare: 1. interfaccia runnable (implements Runnable) 2. Implementazione metodo run() (void run()) 3. creare un istanza della classe tramite new (ProvaThread2 pt = new ProvaThread2()) 4. creare un istanza della classe Thread con un altra new, passando com parametro l istanza della classe che si è creata (Thread t =new Thread (pt)). invocare il metodo start()sul thread creato,producendo la chiamata al suo metodo run()(t.start(); */ public class ProvaThread2 implements Runnable { public static void main (String argv[] ) { ProvaThread2 pt = new ProvaThread2(); Thread t =new Thread (pt); t.start(); pt.m2(); } 96 - TECNO 1 REL

97 public void run() { m1(); } synchronized void m1() { for ( char c= A ; c < F ; c++) { System.out.println(c); try { Thread.sleep(1000); } catch (InterruptedException e) {} } } void m2 () { for ( char c= 1 ; c < 6 ; c++) { System.out.println(c); try { Thread.sleep(1000); } catch (InterruptedException e) {} } } } Nell esempio due metodi m1 e m2, vengono invocati da due thread su una stessa istanza pt. Uno dei due metodi è stato dichiarato synchronized mentre l altro, m2, no. Dunque il mutex associato a pt viene acquisito dal metodo m1, ma non blocca l esecuzione di m2 perché esso non tenta di acquisire il mutex. Il risultato prodotto è il seguente: 1 A 2 B 3 C 4 D E Se invece si dichiara synchronized anche il metodo m2, si hanno due thread che tentano di acquisire lo stesso mutex, per cui i due metodi vengono eseguiti in mutua esclusione prima uno e dopo l altro: A B C D E 97 - TECNO 1 REL

98 SO: due esempi Windows Windows Seven/8 è un sistema operativo della famiglia Windows NT, con architettura a kernel ibrido. È stato rilasciato in versioni a 32 bit per processori Intel e compatibili e a 64 bit (x64) per processori Intel e AMD. NOTA - Windows 7 /8 si basa dal punto di vista tecnico su Windows Vista SP1, senza stravolgerne l'architettura. Per questo la maggior parte dei driver costruiti per Windows Vista continua a funzionare su Windows7/8. A partire da questa base sono stati introdotti una serie di novità e di miglioramenti, sia dal punto di vista del Kernel del sistema operativo, che dal punto di vista delle funzionalità e dell'interfaccia utente. Ad esempio, il Kernel di Windows 7/8 è stato modificato per sfruttare al meglio i moderni sistemi multicore, per rendere più efficiente lo scheduling dei processi, per ottimizzare l'efficienza energetica. I kernel ibridi sono essenzialmente dei microkernel che hanno del codice "non essenziale" al livello di spazio del kernel in modo che questo codice possa girare più rapidamente che se fosse implementato ad alto livello. Questo fu un compromesso adottato da molti sviluppatori di sistemi operativi. "Ibrido" implica che il kernel in questione condivida concetti architetturali e meccanismi tipici sia dei kernel monolitici che dei microkernel. Infatti la definizione di microkernel prevede che solo i servizi essenziali debbano risiedere nel kernel, e tutti gli altri servizi del sistema operativo, inclusi la gestione della memoria e l'input/output, dovrebbero operare in user mode in spazi di memoria separati. Tuttavia per ragioni di prestazioni quasi nessun sistema operativo dispone di un microkernel puro (l'unica eccezione è Mach). In Windows NT/Vista/Seven molti servizi sono implementati in kernel mode, fra i quali il file system, la gestione della memoria e anche la gestione della grafica. A livello di prestazioni e di sicurezza questo equivale ai kernel monolitici (ad esempio UNIX e Linux), ma permette una flessibilità maggiore. Il kernel di Windows dispone di uno scheduler preemptive. Nei sistemi tradizionali la struttura a buccia di cipolla (gerarchica) presiede le funzionalità del sistema operativo: dal kernel alla shell i livelli si parlano tramite primitive e i processi applicativi intervengono sullo strato piu elevato che fornisce i servizi di sistema TECNO 1 REL

99 Nei sistemi basati sull approccio Client-Server è il sistema operativo stesso che viene suddiviso in piu processi, ciascuno dei quali realizza un unico insieme di servizi. Ad ex. server per la memoria, per la creazione dei processi, per la tempificazione dei processi etc. Ogni server gira in modo utente controllando se, per caso, un processo abbia richiesto i suoi servizi. Il Client, che può essere un altro componente del sistema, oppure un programma applicativo, chiede un servizio mandando un messaggio al server. Il Kernel, che gira in modo kernel, consegna il messaggio al server: il server esegue l operazione richiesta e risponde al client con un altro messaggio Consideriamo in particolare l interfaccia tra il microkernel e l hardware, l HAL che costituisce la tecnologia ed i drivers che permettono a Windows di comunicare con l'hardware. Hardware Abstraction Layer (HAL) o strato di astrazione dall'hardware, è un insieme di funzioni di I/O il più possibile generiche e semplici, il cui compito è di tenere conto di tutte le differenze fra dispositivi fisici diversi al posto del programma che lo userà, nascondendogli la vera identità e natura di essi: per esempio il programma, invece di aprire personalmente un file chiederà all'hal di farlo per lui e l'hal, appena esaudita la richiesta, gli passerà un riferimento al file per la lettura (o lo leggerà per lui). Dotando un programma di un HAL se ne migliora la portabilità su altri tipi di computer/sistemi operativi e la funzionalità con dispositivi diversi, perché eventuali modifiche e adattamenti vanno fatti solamente nell' HAL senza toccare il codice del programma stesso; inoltre è relativamente facile aggiungere, all'occorrenza, una sezione all'hal per gestire un dispositivo che non era stato inizialmente previsto. Quindi i programmi non accedono mai alla memoria della scheda grafica quando devono modificare l'immagine mostrata sullo schermo. I programmi comunicano al sistema operativo le operazioni da compiere e il sistema operativo provvede a effettuare le modifiche necessarie. Questo consente di modificare l'hardware deposto alla visualizzazione senza dover modificare tutti i programmi. Basta modificare lo strato che accede all'hardware, questo comunemente viene chiamato driver. La HAL può essere utilizzata per emulare componenti non presenti nel sistema operativo o nell'hardware. Per esempio le moderne schede grafiche non gestiscono nativamente le modalità CGA, EGA o VGA. Queste modalità vengono emulate dall'hal che provvede a tradurre le istruzioni che gestiscono queste modalità in comandi comprensibili dalla scheda grafica. L'emulazione utilizzando una HAL viene utilizzata in molti sistemi per consentire la retro compatibilità con applicazioni arcaiche. Molte banche utilizzano computer moderni con programmi arcaici tramite programmi di emulazione che interpongono una HAL tra 99 - TECNO 1 REL

100 l'hardware moderno e il software arcaico. (note tratte ) Processi e thread secondo Microsoft Secondo Microsoft, un servizio è "un processo o insieme di processi che aggiunge funzionalità a Windows fornendo supporto ad altri programmi". L'installazione standard di ogni versione di Windows comprende un nucleo di servizi adatto per la maggior parte delle necessità, ma offre agli utenti una certa flessibilità. Un utente con privilegi di amministratore può infatti attivare e disattivare i servizi e modificarne le proprietà. Così facendo può rendere Windows più efficiente, ma se commette un errore (disattivando un servizio necessario) può anche compromettere il funzionamento del sistema operativo e la sua capacità di riavviarsi. Continuando con le definizioni, un servizio può anche essere visto come un'applicazione eseguita in background (in sottofondo), indipendentemente da qualunque sessione di utente. Ci sono altre definizioni fornite da Microsoft, alcune poco espressive (come "un servizio è un oggetto eseguibile, installato in un registro e gestito dal Service Control Manager"). Il glossario di Windows XP definisce un servizio come "Applicazione, routine o processo che esegue una funzione di sistema specifica per supportare altre applicazioni, in modo particolare a basso livello, ovvero un livello prossimo all'hardware". Le applicazioni includono i programmi eseguiti dall'utente, non i componenti di Windows. I processi sono programmi eseguibili (come explorer.exe, ovvero Esplora risorse) oppure servizi (come l'utility di pianificazione, una delle tante funzioni del processo svchost.exe). Secondo Microsoft, un processo è "spazio degli indirizzi virtuale e informazioni di controllo necessari per l'esecuzione di un programma". In pratica un processo è un programma in esecuzione. La definizione completa sarebbe: un oggetto del sistema operativo che consiste di un programma eseguibile, di un insieme di indirizzi di memoria virtuale e di uno o più thread; un processo è creato quando un programma viene eseguito. Ogni processo puo essere composto da piu thread (almeno uno). Il Thread è la piu piccola unità di esecuzione che Win32 è in grado di schedulare. Il T. condivide lo spazio di indirizzamento e tutte le risorse del processo (comprese le priorità). Per risorse si intende file, semafori, memoria allocata dinamicamente. Quindi un thread è una parte di programma che può essere eseguita in modo indipendente, contemporaneamente ad altri thread, così da sfruttare al meglio le risorse hardware. Lo scheduler determina quale thread dovrà girare e quale no. Su sistemi multiprocessore lo scheduler puo far eseguire thread diversi su processori diversi in modo da bilanciare il carico della CPU. I thread sono indipendenti ma si possono sincronizzare con altri thread tramite semafori e altri metodi di interconnessione (si veda: Writing a Multithreaded Win32 Program). Ad esempio funzione CreateThread crea un thread oer essere eseguito all interno dello spazio di indirizzi del processo chiamante: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpthreadattributes, // pointer to security attributes DWORD dwstacksize, // initial thread stack size LPTHREAD_START_ROUTINE lpstartaddress, // pointer to thread function LPVOID lpparameter, // argument for new thread DWORD dwcreationflags, // creation flags LPDWORD lpthreadid // pointer to receive thread ID ); Molte grosse applicazioni, come Photoshop, sono multithreaded, cioè usano più thread per eseguire lavori simultanei su più CPU. Il T., possiede un contesto con ID, registri, stato, stack aree di memoria etc. Il kernel (multitask a sospensione (preemptive)) lancia i thread, gestendone le interruzioni. Il T. puo essere in piu stati: pronto, selezionato, in esecuzione, in attesa, in transizione o terminato. Tipicamente si possono disporre di 32 livelli di priorità variabile (da 16 a 32 è alta priorità). (http://msdn2.microsoft.com/it-it/library/ck8bcc6(vs.80).aspx) Alcune note sul funzionamento base di windows: Sebbene Windows ha moltissime funzioni che si possono richiamare, in realtà è Windows stesso che chiama il processo con la procedura WndProc. Queste chiamate passano dei messaggi: le applicazioni Windows non fanno altro che gestire questi messaggi tramite uno switch (Message)! Un programma Windows possiede inoltre un message loop che polla i messaggi (GetMessage) presenti in una coda di messaggi (esattamente come un normale programma in assembly puo pollare se un tasto è stato premuto!) e li rende disponibili alla procedura windows (DispatchMessage). I messaggi non sono come gli interrupt : quando se ne processa uno il programma non puo essere interrotto per processarne un altro: quando i messaggi vengono processati per via di una chiamata a DispatchMessage, DispatchMessage non ritorna finchè la procedura Windows ha processato il messaggio. Più precisamente, la funzione GetMessage recupera un messaggio dalla coda di messaggi del thread chiamante e lo inserisce nella struttura specificata. Questa funzione puo recuperare sia i messaggi associati a una finestra specificata, che quelli inviati dai thread tramite la funzione PostThreadMessage. La funzione recupera i messaggi che si trovano all'interno di un intervallo specificato di messaggi. La funzione TranslateMessage traduce messaggi codificati sottoforma di codici-chiave in messaggi di caratteri. I messaggi sono inviati alla coda di messaggi che il thread legge con GetMessage o PeekMessage. La funzione DispatchMessage viene utilizzata per inviare un messaggio scaricato dalla funzione GetMessage) a una applicazione. La struttura MSG contiene le informazioni del messaggio dalla coda di messaggi di un thread. typedef struct tagmsg { // msg HWND hwnd; // Handle to the window whose window procedure receives the message TECNO 1 REL

101 UINT message; // Specifies the message number. WPARAM wparam; // Specifies additional information about the message LPARAM lparam; // Specifies additional information about the message DWORD time; // Specifies the time at which the message was posted POINT pt; //Specifies the cursor position, in screen coordinates, when the message was posted } MSG; int APIENTRY WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { // TODO: Place code here. MSG msg; HACCEL hacceltable; // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, sztitle, MAX_LOADSTRING); LoadString(hInstance, IDC_MY000, szwindowclass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hinstance, ncmdshow)) { return FALSE; } hacceltable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MY000); // Main message loop: while (GetMessage(&msg, NULL, 0, 0)) // The GetMessage function retrieves a message { if (!TranslateAccelerator(msg.hwnd, hacceltable, &msg)) { TranslateMessage(&msg); //The TranslateMessage function translates virtual-key messages into character messages DispatchMessage(&msg); // The DispatchMessage function dispatches a message to a window procedure } } } return msg.wparam; MainWndProc( //chiamata da Windows per la creazione, distruzione, resize, timer e per ogni altro evento associato IN HWND WindowHandle, IN UINT Message, IN WPARAM WParam, IN LPARAM LParam) switch (Message) {... case WM_CREATE: // Create the client window. ClientCreate.hWindowMenu = MainMenuWindow;... case WM_COMMAND:. case WM_CLOSE:... Creare un'applicazione Visual Basic.NET con thread TECNO 1 REL

102 1. Avviare Microsoft Visual Studio.NET. 2. Creare una nuova Applicazione Windows di Visual Basic denominata ThreadWinApp. 3. Aggiungere al form un controllo Button. In base all'impostazione predefinita il pulsante verrà denominato Button1. 4. Aggiungere al form un componente ProgressBar. In base all'impostazione predefinita, il controllo verrà denominato ProgressBar1.. Fare clic con il pulsante destro del mouse sul form, quindi scegliere Visualizza codice Aggiungere l'istruzione seguente all'inizio del file: Imports System.Threading Aggiungere il seguente gestore eventi Click per Button1: Private Sub Button1_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click MessageBox.Show("This is the main thread") End Sub 8. Aggiungere la variabile seguente alla classe Form1: Private trd As Thread Aggiungere il metodo seguente alla classe Form1: Private Sub ThreadTask() Dim stp As Integer Dim newval As Integer Dim rnd As New Random() 9. Do stp = ProgressBar1.Step * rnd.next(-1, 2) newval = ProgressBar1.Value + stp If newval > ProgressBar1.Maximum Then newval = ProgressBar1.Maximum ElseIf newval < ProgressBar1.Minimum Then newval = ProgressBar1.Minimum End If ProgressBar1.Value = newval Thread.Sleep(100) Loop End Sub NOTA: di seguito è riportato il codice sottostante il thread. È un ciclo infinito che incrementa o decrementa casualmente il valore nel controllo ProgressBar1 e quindi attende 100 millisecondi prima di continuare. 10. Aggiungere il seguente gestore eventi Load per Form1. Questo codice crea un nuovo thread, lo rende un thread in background e quindi lo avvia. Private Sub Form1_Load( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load trd = New Thread(AddressOf ThreadTask) trd.isbackground = True trd.start() End Sub Verificare il funzionamento Compilare ed eseguire l'applicazione. Si noti che il valore dell'indicatore di stato cambia casualmente. Questo indica che il nuovo thread è in funzione. Per dimostrare che il thread principale è indipendente dal thread che modifica il valore ProgressBar, fare clic sul pulsante nel form. Verrà visualizzato il seguente messaggio: This is the main thread Attendere l'input. Si noti che il valore dell'indicatore di stato continua a cambiare TECNO 1 REL

103 Un secondo esempio (http://msdn2.microsoft.com/en-us/library/system.threading.thread(vs.71).aspx ) Imports System Imports System.Threading ' Simple threading scenario: Start a Shared method running ' on a second thread. Public Class ThreadExample ' The ThreadProc method is called when the thread starts. ' It loops ten times, writing to the console and yielding ' the rest of its time slice each time, and then ends. Public Shared Sub ThreadProc() Dim i As Integer For i = 0 To 9 Console.WriteLine("ThreadProc: {0}", i) ' Yield the rest of the time slice. Thread.Sleep(0) Next End Sub Public Shared Sub Main() Console.WriteLine("Main thread: Start a second thread.") ' The constructor for the Thread class requires a ThreadStart ' delegate. The Visual Basic AddressOf operator creates this ' delegate for you. Dim t As New Thread(AddressOf ThreadProc) ' Start ThreadProc. Note that on a uniprocessor, the new ' thread does not get any processor time until the main thread ' is preempted or yields. Uncomment the Thread.Sleep that ' follows t.start() to see the difference. t.start() 'Thread.Sleep(0) Dim i As Integer For i = 1 To 4 Console.WriteLine("Main thread: Do some work.") Thread.Sleep(0) Next Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends.") t.join() Console.WriteLine("Main thread: ThreadProc.Join has returned. Press Enter to end program.") Console.ReadLine() End Sub End Class Linux-Unix Linux (o GNU/Linux), è un sistema operativo libero di tipo Unix (o unix-like) costituito dall'integrazione del kernel Linux con elementi del sistema GNU e di altro software sviluppato e distribuito con licenza GNU GPL o con altre licenze libere. Linux può essere installato su una ampia gamma di computer, dai cellulari, tablet computer e console ai mainframe e i supercomputer. Linux è anche un sistema operativo per server e fa funzionare i dieci supercomputer più veloci nel mondo. Il kernel è il "cuore" di un sistema operativo (nucleo) e fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della memoria, delle risorse del sistema e delle periferiche, assegnandole di volta in volta ai processi in esecuzione. La controparte del kernel è la shell, ovvero l'interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate (system call) e non possono accedere direttamente all'hardware. Il kernel si occupa quindi di gestire il tempo processore, le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità (scheduling) realizzando così il multitasking. L'architettura scelta da Linux Torvalds (il creatore di Linux nel 1991) per il kernel (ovvero una struttura monolitica, considerata da alcuni obsoleta a differenza TECNO 1 REL

104 della più moderna architettura a microkernel) fu causa di un dibattito molto acceso con Andrew S. Tanenbaum (Wikipedia) TECNO 1 REL

105 La creazione di un nuovo processo si attua tramite la primitiva FORK: se il processo padre fa una fork genera un FIGLIO che è la copia del padre in tutto tranne che per il valore del PID (Process Identifier (parte da 0 (swapper per la gestione della memoria)) : i dati vengono duplicati e i files condivisi. Il Padre puo SOSPENDERSI in attesa che il figlio finisca, oppure puo PROSEGUIRE per conto suo. (N.B: la fork, in caso di successo, ritorna il valore 0 al proceso figlio, mentre il PID del figlio al processo padre, che cosi puo conoscere il figlio.in caso di insuccesso viene ritornato il valore -1 al padre e non viene generato il processo figlio. (Se il figlio termina e il padre non fa una wait il processo diventa Zombie (morto vivente) finchè il padre non procede alle esequie). Ex. processo padre (pippo) che genera un figlio (vi) Pippo() { int processo,stato; processo=fork(); if (processo <0){ return (-1); //errore } else if (processo==0) { execl( /bin/vi, vi, pippo,0); //istruzioni eseguite solo dal processo figlio exit(-1); //terminazione del processo figlio } else{ } } processo=wait (&stato); //il padre attende la terminazione del figlio return(stato); //istruzione/i eseguita solo dal processo padre!!! Lista comandi LINUX 10 - TECNO 1 REL

106 info Sistemi operativi basati su Kernel Linux Android E un sistema operativo open source per dispositivi mobili, basato sul kernel Linux. Fu inizialmente sviluppato da Android Inc., startup acquisita[3] nel 200 da Google. La piattaforma è basata sul kernel Linux, usa il database SQLite, supporta lo standard OpenGL ES 2.0 per la grafica tridimensionale. Le applicazioni vengono eseguite tramite la Dalvik virtual machine, una Java virtual machine adattata per l'uso su dispositivi mobili: Applicazione Android : compilazione : bytecode : DVM -> esecuzione reale dell'applicazione Android Android è fornito di una serie di applicazioni preinstallate: un browser, basato su WebKit, una rubrica e un calendario. architettura di android - ios Come Mac OS X, è una derivazione di UNIX (famiglia BSD) e usa un microkernel XNU Mach basato su Darwin OS. ios ha quattro livelli di astrazione: il Core OS layer, il Core Services layer, il Media layer e il Cocoa Touch layer. Il sistema operativo occupa meno di mezzo Gigabyte della memoria interna del dispositivo. Il sistema operativo non aveva un nome ufficiale fino al rilascio della prima beta dell'iphone SDK il 6 marzo 2008; prima di allora, il marketing Apple affermava che "iphone usa OS X". Molti fanno utilizzo del termine idevice per riferirsi ai dispositivi che usano ios. Ogni App del mondo Apple ha bisogno del sistema operativo ios per andare in esecuzione. Come molti kernel moderni Darwin segue un approccio ibrido, contenendo caratteristiche sia di un microkernel che di un kernel monolitico. Difatti segue un approccio da microkernel per quanto riguarda la gestione dei servizi ma integra nello stesso microkernel ampie porzioni del sistema operativo per ridurre i tempi morti dovuti al passaggio di contesto. Questo approccio misto consente di rendere il sistema operativo più reattivo e veloce ma nel contempo lo rende più sensibile ad errori di programmazione del kernel. La maggior parte del codice viene eseguito al di fuori del kernel in modo da rendere lo sviluppo rapido e veloce. I singoli componenti sono scritti e testati in modo indipendente, difatti risulta più semplice testare una piccola porzione di codice piuttosto che analizzare il funzionamento di un modulo immerso in centinaia di migliaia di righe di codice appartenenti ad altri moduli. Inoltre questo approccio rende il sistema operativo meno sensibile a fallimenti dei singoli driver TECNO 1 REL

107 Sistema Operativo ios è un sistema operativo Unix based pensato per girare su dispositivi mobili dotati di schermo multitouch ( iphone, ipod Touch e ipad). Da un punto di vista tecnico si basa su un kernel che è parente stretto del kernel Mach presente in OS X. Su di esso poggiano una serie di servizi ed api organizzati per livelli di astrazione. https://developer.apple.com/library/mac/documentation/macosx/conceptual/osx_technology_overview/systemtechnology/systemtechnology.html (http://www.appuntidigitali.it/9204/iphone-os-e-il-parente-povero-di-os-x/) Al livello più basso (Core OS ) troviamo lo stack di derivazione BSD, quindi funzioni per IO, threading, gestione processi, sqlite etc. Dal livello Core Services in poi troviamo tecnologie sviluppate da Apple, in particolare Core Foundation che, come indica il nome, è la base su cui sono sviluppate molte delle api di livello più alto. Media contiene principalmente api c (Core Audio, Quartz, OpenGL ES etc etc) con la notevole eccezione di Core Animation, un motore avanzato per la gestione di animazioni sviluppato in objective-c. Al livello più alto troviamo infine Cocoa Touch, api completamente objective-c composta a sua volta da Foundation e UIKit. Foundation contiene le classi legate alla gestione/manipolazione/storage dei dati, ed in genere tutto quello che non riguarda l interazione con l utente o la visualizzazione. Questi due aspetti sono di competenza di UIKit. Qui troviamo infatti le classi legate alla gestione del multitouch ed alla renderizzazione su schermo, oltre ad una serie di widget grafici. ios è o una versione ottimizzata di OS X. BlackBerry Tablet OS E usato sul BlackBerry Playbook ed è basato su QNX: Based on the proven QNX Neutrino RTOS, which powers mission-critical systems on the space station, government defense systems, life-saving medical devices and millions of in-car systems Reliable, high-performance kernel engineered for multi-core hardware Multi-threaded POSIX OS (Portable Operating System for Unix) for true multitasking Built from the ground up to run WebKit and Adobe Flash Built with the security, efficiency and seamless connectivity from the ground up you d expect from RIM. The QNX Neutrino RTOS is a full-featured and robust OS that scales down to meet the constrained resource requirements of realtime embedded systems. Its true microkernel design and its modular architecture enable customers to create highly optimized and reliable systems with low total cost of ownership. It offers the embedded industry s only field-proven, clean strategy for migrating TECNO 1 REL

108 from single-core to multi-core processing. QNX Neutrino RTOS architecture Because every driver, protocol stack, filesystem, and application runs in the safety of memory-protected user space, virtually any component can be automatically restarted if it fails. True microkernel OS The QNX Neutrino RTOS (realtime operating system) is so reliable because it is a true microkernel operating system. Under QNX Neutrino, every driver, protocol stack, filesystem and application runs in the safety of memory-protected user space, outside the kernel. Virtually any component can fail and be automatically restarted without affecting other components or the kernel. No other commercial RTOS offers this degree of protection. Multicore migration The QNX Neutrino RTOS has a field-proven strategy for migrating from single-processor to multi-processor embedded environments. Its unique bound multiprocessing (BMP) technology takes the risk out of migration by enabling developers to decide exactly where every process and thread will run TECNO 1 REL

109 Gestione della Memoria Indirizzi di memoria fisici e logici Normalmente un programma risiede su disco in formato binario eseguibile. Per essere eseguito deve essere portato in RAM e divenire processo. Durante la sua esecuzione, un processo accede a istruzioni e dati in memoria. Al suo termine, viene liberata la memoria che occupava. Il programma può essere trasferito in qualsiasi punto della RAM prima di essere eseguito. Generalmente, però, gli indirizzi del programma sorgente sono simbolici (es.: nomi di variabili). Gli indirizzamenti logici e fisici permettono di separare la parte software dalla parte hardware: Indirizzo logico (o virtuale/software): usato dal programma Indirizzo fisico (hardware): usato dall unità di memoria Traduzione di indirizzi logici in fisici Il collegamento tra indirizzi logici e fisici puo avvenire in tre fasi diverse: Compile time : la locazione di memoria che verrà usata è nota a priori (codice assoluto) Load time: Il programma deve essere scritto con codice rilocabile Execution time : Quando una istruzione viene eseguita viene fatta la sua traduzione Nel primo caso, ci vuole un compilatore che associa (bind) questi indirizzi simbolici a indirizzi rilocabili (es.: 14 byte dall inizio di questo modulo ). Il linker (o il caricatore/loader) fa corrispondere questi indirizzi rilocabili a indirizzi assoluti. Un indirizzo generato dalla CPU è indicato solitamente come logico, mentre un indirizzo visto dalla memoria è fisico (questo indirizzo viene caricato nel MAR memory address register): Memory-Management Unit (MMU) Device hardware di supporto alla traduzione di indirizzi virtuali in indirizzi fisici TECNO 1 REL

110 Si pone tra CPU e memoria. Fa si che, ad ogni indirizzo generato dalla CPU, prima di inoltrare la richiesta alla memoria, sia aggiunto al momento dell esecuzione e senza cambiare il codice il valore contenuto in un registro VLSI VI47 MMU "Apple HMMU" - Swapping Problema: Abbiamo una memoria finita e vogliamo eseguire molti processi. Posso tenere in memoria solo il processo che sto effettivamente eseguendo Soluzione: Un processo può essere temporaneamente spostato (swapped) dalla memoria centrale alla memoria di massa (backing store) e successivamente riportato in memoria per continuarne l esecuzione TECNO 1 REL

111 Allocazione della memoria Rimane il problema di studiare con quali strategie associare una zona di memoria ad un processo. In generale dividiamo la memoria in zone all interno delle quali andremo a caricare il codice binario di un programma In generale distinguiamo due casi: Allocazione contigua Allocazione non contigua Allocazione contigua La memoria centrale è, di norma, divisa in almeno due partizioni: una per il Sistema Operativo, l atra per i processi utente. Se vogliamo che piu processi utente risiedano in Memoria Centrale dobbiamo allocarli in memoria usando una sequenza di locazioni senza interruzioni. Dividiamo la memoria in partizioni e diamo ad ogni processo una sua partizione. Prima di tutto occorre però tener presente che la memoria che contiene il S. O. va protetta dai processi utente. A questo proposito, esiste un registro limite che contiene l indirizzo che un processo utente NON puo superare, Partizioni fisse Dividiamo la parte di memoria per i processi utente in partizioni di dimensione fissa Poco flessibile Pone dei limiti alla dimensione di un programma Grandi sprechi di memoria (frammentazione interna) causati dai processi piccoli Partizioni variabili Allochiamo delle partizioni di dimensione variabile per alloggiare i processi Buco (Hole) blocco di memoria disponibile; buchi di diverse dimensioni sono distribuiti nella memoria o Quando un processo viene creato, gli si assegnata una zona di memoria prendendola da un buco sufficientemente grande o Il S.O. deve mantenere informazioni su Partizioni allocate e Buchi Problema della Frammentazione Interna o Esterna o la memoria allocata è maggiore di quella richiesta e quindi internamente alla partizione esiste memoria inutilizzata Lo spazio di memoria totale per soddisfare la richiesta esiste, ma non è contiguo: si può ridurre compattando periodicamente la memoria,spostando i contenuti per mettere insieme i buchi. E possibile solo se prevista rilocazione dinamica eseguita a run-time TECNO 1 REL

112 Come soddisfare una richiesta di memoria di dimensione n avendo a disposizione una lista di partizioni libere e cercando di ridurre al minimo frammentazione esterna? Dobbiamo decidere in quale buco infilare (fit) la nuova richiesta (Allocazione dinamica delle partizioni): First-fit o o o Best-fit o o o Worst-fit o o Usiamo il primo buco sufficientemente grande Non devo guardare l intera lista Non è ottimale Usiamo il buco più piccolo che è sufficientemente grande Lascio liberi i buchi più grandi per soddisfare future richieste Performances ridotte Usiamo sempre il buco piu grande Non si creano buchi piccolissimi Allocazione non contigua Accettiamo che lo spazio utilizzato per allocare un processo possa essere sparpagliato all interno della memoria. Dividiamo la memoria in pagine ed assegniamo ad ogni processo un insieme di pagine Paginazione La memoria può non essere assegnata tutta in una volta ma man mano che diventa necessario e si rende disponibile: La memoria viene divisa in blocchi di dimensione fissata chiamati frame (o pagine fisiche) La memoria logica viene anche lei divisa in blocchi della stessa dimensione chiamati pagine (pagine virtuali) Il sistema deve tenere traccia di tutti i frame liberi Serve una tabella delle pagine (page table) per tradurre indirizzi logici in indirizzi fisici Si può creare frammentazione interna ma non esterna Schema di traduzione degli indirizzi. Gli indirizzi vengono scomposti in due parti: o Numero di pagina - E il numero di pagina virtuale (p - page) e viene usato come indice all interno della page table che contiene il numero di pagina fisica relativo (f frame) o Scostamento o offset (d) - Indica la posizione della locazione di memoria all interno della pagina TECNO 1 REL

113 segmentazione L idea di base consiste nel vedere il programma come una serie di segmenti, ciascuno disgiunto, che rappresentano, ad ex, codice, stack, dati etc. (cfr famiglia 80x86). La tabella dei segmenti contiene la coppia: base segmento, limite segmento. La base del segmento contiene l indirizzo fisico iniziale della memoria dove parte il segmento. Il limite del segmento contiene la lunghezza del segmento. Un indirizzo logico è formato da due parti: numero di segmento (s) e scostamento nel segmento (offset) Memoria Virtuale Abbiamo visto alcune tecniche per gestire la memoria centrale. Esse permettono la presenza contemporanea di più processi in memoria, ma un programma potrebbe risiedere in memoria solo parzialmente. La memoria virtuale è una tecnica che permette di eseguire processi che possono anche non essere completamente contenuti in RAM con una separazione netta della memoria logica da quella fisica: Lo spazio di indirizzamento logico può essere molto più grande della memoria fisicamente disponibile Alcune pagine potrebbero essere condivise tra più processi, ad es. il codice binario di un editor che tutti usano La memoria virtuale viene generalmente gestita a pagine ed implementata con dei meccanismi di Paginazione su richiesta (Demand Paging) TECNO 1 REL

114 Paginazione su richiesta (Demand Paging) Porto una pagina in memoria solo quando è necessario. Quando ho un riferimento ad una locazione di memoria, allora la pagina che la contiene diventa necessaria: Diminuiscono le operazioni di I/O Diminuisce la richiesta di memoria Diminuiscono i tempi di attesa Aumenta il livello di multiprogrammazione Bit di validità All interno della tabella delle pagine di ogni processo è associato ad ogni pagina un bit di validità: 1 in-memoria, 0 sul disco. Inizialmente il valore è 0 per tutte le pagine. Durante la traduzione dell indirizzo da virtuale a fisico, se il bit di validità è 0, genero un page fault (eccezione di pagina mancante) Page Fault La prima volta che una pagina è necessaria viene generato un Page Fault. Il sistema operativo cerca di capire se: È un riferimento illegale Bisogna recuperare la pagina TECNO 1 REL

115 Viene allocato un frame (pagina fisica) vuoto, la pagina viene trasferita dal disco al frame appena reso disponibile. Il bit di validità per quella pagina viene posto a 1. L esecuzione riprende dove era stata interrotta E se non ci sono frame liberi? Sostituzione di una pagina: si determina una pagina di memoria non attualmente utilizzata e la si sposta sul disco. Serve un algoritmo. L algoritmo deve essere tale per cui venga minimizzato il numero di Page Fault futuri. La stessa pagina potrebbe essere richiamata in memoria più di una volta. Di solito viene implementato nella routine di gestione del Page Fault per evitare affollamento in memoria. Si fa uso di un bit (dirty bit) per marcare le pagine modificate, in maniera tale da scrivere solo quelle sul disco Algoritmo di base Si individua la locazione sul disco della pagina richiesta Si individua un frame libero o Se esiste lo si usa o Se non esiste si usa un algoritmo di sostituzione delle pagine per selezionare un frame vittima e lo si trasferisce sul disco (liberando un posto) Si legge la pagina nel frame libero (o liberato) aggiornando le tabelle di sistema Viene fatto ripartire il processo Algoritmi per la sostituzione di pagine Cercano di minimizzare il numero di Page Fault Vengono valutati utilizzando una sequenza di riferimenti a pagine di memoria (stringa di riferimento) e contando il numero di Page Fault generati dal sistema Stringhe di riferimento Si tratta di sequenze di riferimenti a pagine. Una stringa di riferimento è una sequenza di eventi, non un diagramma temporale, ad ex: potrebbe significare 11 - TECNO 1 REL

116 1 accesso alla pagina 1, 2000 accessi alla pagina 2, 2 accessi alla pagina 3 Page Fault in funzione del numero di frame in memoria Algoritmo First-In-First-Out (FIFO) Teniamo traccia dell ordine in cui le pagina vengono allocate in memoria. La pagina vittima sarà quella in memoria da più tempo Gestione Memoria in Windows Usa la paginazione su richiesta per gruppi di pagine (demand paging with clustering), richiamando quindi non solo la pagina richiesta ma anche quelle a essa adiacenti. Alla sua creazione, un processo riceve i valori del minimo insieme di lavoro e del massimo insieme di lavoro. Il minimo insieme di lavoro (working set minimum) è il minimo numero di pagine caricate nella memoria di un processo che il sistema garantisce di assegnare. Se la memoria è sufficiente, il sistema potrebbe assegnare un numero di pagine pari al suo massimo insieme di lavoro (working set maximum). Viene mantenuta una lista delle pagine fisiche libere, con associato un valore soglia che indica se è disponibile una quantità sufficiente di memoria libera Se si ha un fault, e il processo è al suo massimo, si procede per sostituzione locale Nel caso in cui la quantità di memoria libera scenda sotto la soglia, il gestore della memoria virtuale usa un metodo noto come regolazione automatica dell insieme di lavoro (automatic working set trimming) per riportare il valore sopra la soglia. In pratica, se a un processo sono state assegnate più pagine del suo minimo insieme di lavoro, il gestore della memoria virtuale rimuove pagine fino a raggiungere quel valore TECNO 1 REL

117 File System Il concetto di file (basato su: Sistemi Operativi e Distribuiti - Bellettini Maggiorini - Università di Milano D.I.Co.) Un file ("archivio") è un insieme di informazioni codificate organizzate come una sequenza (di byte), immagazzinate come un singolo elemento su una memoria di massa, all'interno del File System esistente su quella particolare memoria di massa. (Wikipedia) Un file è quindi uno spazio logico continuo per la memorizzazione dei dati. Se dal punto di vista dell'utente un file è solitamente un singolo elemento, può succedere che, invece, fisicamente sia scritto su più zone diverse del supporto che lo ospita: questo fenomeno è molto comune se il supporto di memorizzazione è un disco, mentre è molto raro su nastri magnetici. Uno dei compiti del Sistema operativo è rendere trasparente alle applicazioni la reale suddivisione fisica del file e occuparsi di gestire la scrittura e il recupero delle informazioni dai vari blocchi fisici. Un file può memorizzare vari tipi di dati: Codice eseguibile Dati generici numeri caratteri dati binari I file sono risorse di memoria utilizzabili dai processi ma separate dai propri spazi di indirizzi. I processi possono usarli in toto o in parte, spostando le informazioni nelle proprie aree di indirizzi. Si potrebbe pensare che la gestione dei file possa essere fatta direttamente dai processi, ma cio comporterebbe una serie di problemi dovuti alla loro condivisione e protezione. Percio è il S.O. che si interessa della loro gestione File system Il File System è quella parte del S.O. che si occupa della gestione delle informazioni e fornisce la struttura delle cartelle che conserveranno il sistema operativo, le applicazioni, i file di configurazione e i dati dell'utente. Il File system: identifica e cataloga i file gestisce le operazioni sui file cioè fornisce primitive e utility per assegnare l uso dei file ai processi che ne fanno richiesta alloca su disco lo spazio per la creazione dei file In pratica il File System fa corrispondere a un modello logico dei file una struttura fisica sul supporto di memorizzazione, e stabilisce i metodi di memorizzazione e accesso. Il File system è usato in due accezioni: File System Logico (visione dell UTENTE): Come organizzo i file all interno del mio disco? File System Fisico (visione del DISPOSITIVO di archiviazione): Come scrivo fisicamente i dati sul disco? Il File System Logico Definisce le modalità di identificazione dei file, l organizzazione e le operazioni possibili (creazione, cancellazione, modifica). I file sono risorse che il processo TECNO 1 REL

118 chiede e rilascia con le operazioni di : apertura e chiusura. I file posseggono varie strutture, definite dal sistema operativo e dal programma utente: Nessuna struttura sequenze di byte o numeri Strutturato semplice Linee Record a lunghezza fissa Record a lunghezza variabile Strutturato complesso Documento formattato XML Doc File caricabile rilocabile I descrittori dei file aperti sono posti in una tabella apposita. I file sono identificati dalla posizione nella tabella. Ad ogni apertura viene assegnata al processo l indice della posizione del file nella tabella dei file aperti del processo (in Linux si chiama File Descriptor). Per ogni file aperto viene assegnato al processo un puntatore che definisce la posizione corrente all interno del file, cioè la posizione nel file per cui hanno valore le operazioni (lettura, scrittura..). Gli attributi di un file servono ad indentificarlo all interno del file system: Nome Tipo Posizione all interno della periferica che lo contiene Dimensione Data/ora di creazione Proprietario Diritti di accesso Operazioni sui file (dipende dal tipo di organizzazione): Creazione Scrittura Lettura Posizionamento seek Cancellazione Riduzione della dimensione truncate Modalità di accesso: Accesso sequenziale read next write next reset Accesso diretto read n write n Oppure position to n read next write next Organizzazione del file system per l efficienza nel trovare un file velocemente Nomi o Utenti diversi potrebbero chiamare con nomi uguali file distinti o Lo stesso file potrebbe essere raggiungibile con nomi diversi Raggruppamenti logici o Per proprietà o Per tipologia o Per contenuto Strutturazione a directory Tutti i file su disco sono descritti nella directory: un insieme di strutture incaricate di mantenere informazioni riguardo i file presenti su disco. La directory è essa stessa un file che contiene un record per ogni file, compresa la directory stessa. Il record può essere il descrittore del file o il puntatore a una tabella separata. Immaginando il file system come un armadietto di file, le directory di alto livello possono essere rappresentate come i cassetti, mentre le subdirectory possono essere rappresentate come schede di file dentro i cassetti. Queste strutture risiederanno sul disco insieme ai dati, tuttavia dobbiamo decidere Cosa memorizzare TECNO 1 REL

119 Come organizzarle Dove metterle sul disco Directory ad albero gerarchico: esistono più file directory e ogni descrittore può contenere il nome di un file o di un altra directory (sottodirectory) partendo da una directory principale (root/radice). Operazioni su una directory Cercare un file Creare un file Cancellare un file Vedere i file in essa contenuti Rinominare un file NB la cancellazione elimina dalla directory il descrittore del file, ma le informazioni vere e proprie rimangono su disco (e potrebbero essere recuperate)! Condivisione di dati Condividere i file tra utenti è spesso utile. La condivisione può essere ottenuta tramite un sistema di diritti di accesso. Se il sistema è distribuito, allora potremmo voler estendere la condivisione sulla rete. Network File System (NFS) è un modo abbastanza comune di condivisione di file via rete per macchine Unix. Diritti di accesso Il proprietario di un file dovrebbe essere in grado di stabilire quali operazioni possono essere fatte da chi Tipi di accessi o Read o Write o Execute o Append o Delete o List Ad esempio, Access Lists e gruppi (UNIX) Ogni file appartiene ad un utente ed ad un gruppo. Distinguo tre tipi di utenti: Il proprietario quelli facenti parte dello stesso gruppo del file tutti gli altri Per ognuno decido delle modalità di accesso Read Write Execute Ad esempio, Access Lists e gruppi (UNIX) # > chmod 761 file owner access group access public access RWX File system fisico MBR master boot record: il settore 0 del disco; contiene il programma che viene caricato dal BIOS all avvio Partition Table (su disco): contiene il punto di inizio e di fine di ogni partizione del disco TECNO 1 REL

120 Partizioni Boot (control) block: contiene le informazioni necessarie per l avviamento del SO da quella partizione (se presente) Partition Control Block (o Super Block): contiene le informazioni sulla partizioni quali numero e dimensione di blocchi, blocchi liberi, i-node i-node (descrittore di file): uno per file Metodi di assegnazione dello spazio su disco (immagini tratta da Sistemi Operativi Addison-wesley) FAT File Allocation Table Ogni disco ne ha una, e se il disco è utilizzato viene anche ricopiata in memoria centrale. Per ogni file la directory contiene l'indirizzo del primo blocco del file, ogni blocco del disco ha una entry nella FAT, che in generale contiene l'indirizzo del blocco successivo. Esempio: La directory corrente contiene tre file, A, B, C.. Supponiamo che A occupi nell'ordine i blocchi 6,8,4,2; B occupi,9,12; C occupi 10,3,13. La directory (FAT) sarà così organizzata (semplificando): Nome del Primo file blocco A 6 B TECNO 1 REL

121 C 10 Quanto occupa una FAT? Troppo?! Esempio: hard disk da 20 GB, blocchi di 1KB, 20M blocchi, indirizzi di blocco su non meno di 3 byte (o meglio, su 4 byte) è la FAT occupa 80MB. Per velocizzare gli accessi, la FAT deve stare in memoria, quindi servono 80 MB di RAM solo per la FAT!!! Il problema e' dovuto al fatto che si mantengono tutte assieme le informazioni di tutti i file. Un esempio di organizzazione gerarchica di una directory in DOS: ciascuna entry occupa 32 bytes ed è così organizzata: First Block No. è il puntatore alla FAT che individua il primo blocco del file La root directory ha dimensione fissa per ogni periferica. Le directory sotto root sono file di dimensione arbitraria e quindi possono contenere un numero qualsiasi di file Assegnazione indicizzata i-node (http://www.disi.unige.it/person/doderog/sistop/lu_fs.htm ) Si usa uno schema combinato per individuare i blocchi dati che compongono un file 10 blocchi sono indicizzati direttamente 1 indirizzamento indiretto singolo punta ad un blocco che invece di contenere dati contiene indirizzi di altri blocchi 1 indirizzamento indiretto doppio 1 indirizzamento indiretto triplo TECNO 1 REL

122 Quanto può essere grande un file con i-node? Consideriamo un blocco di 1 KB e un sistema di indirizzamento di 4 byte sia all interno del file che nel i file system ACCESSO DIRETTO: 10 blocchi = 10 KB ACCESSO INDIRETTO SINGOLO: 1 blocco può contenere 26 indirizzi o Quindi altri 26 KB di blocchi dati indirizzabili ACCESSO INDIRETTO DOPPIO: o 26 blocchi che contengono 26 indirizzi ognuno 26^2 = 6.36 KB (64 MB) ACCESSO INDIRETTO TRIPLO: 26^3 = KB (16 GB) o Ma con 4byte si indirizzano al massimo 4 GB!!! Quanti blocchi posso indirizzare? Consideriamo un blocco di 4 KB e un indirizzo di 8 byte sia all interno del file che nel i file system ACCESSO DIRETTO: 10 blocchi = 40 KB ACCESSO INDIRETTO SINGOLO: 1 blocco può contenere 12 indirizzi. o Quindi altri 2 MB di blocchi dati indirizzabili ACCESSO INDIRETTO DOPPIO: o 12 blocchi che contengono 12 indirizzi ognuno 12^2 = blocchi = 1 GB ACCESSO INDIRETTO TRIPLO: 12^3 = 12 GB o Anche se con 8 byte potrei indirizzare TeraBytes 13 GB + 2 MB + 40 KB Un esempio di organizzazione delle directory in Unix: organizzazione gerarchica, ciascuna directory è un file contenente un numero arbitrario di entry, ogni entry è così fatta: E' una organizzazione particolarmente semplice perchè tutte le informazioni sul file sono contenute nell'i-node. Si consideri il path usr/ast/mbox, si vuole individuare l'i-node di tale file (e quindi il suo contenuto) secondo il seguente percorso: Dalla directory /usr/ast si ricava che l'i-node di mbox e' il numero 60. NTFS Nel modello FAT i dati immagazzinati all interno di un file vengono registrati con l approccio di un unica unità. In contrasto con questa filosofia, NTFS usa diversi data stream per formare un file. Ciascun file in NTFS è rappresentato per mezzo di un record nella MFT (Master File Record). NTFS riserva i primi 16 record della tabella per informazioni speciali: - descrizione MFT - MFT mirror del precedente record per eventuale MFT record corrotto - Log usato per il file recovery - Il settimo record e i successive sono usati per file e directory (visto come file da NTFS) sul dico TECNO 1 REL

123 MTF alloca un certo numero di ammontare di spazio per ciascun file. Gli attributi del file sono descritti all interno del MFT. File piccoli (100 byte o inferiori) sono contenuti internamente al MFT: Nota: NTFS può supportare file più grandi e in maggior numero rispetto a FAT32 e fornisce caratteristiche di sicurezza più flessibili per documenti e cartelle. Le partizioni possono essere convertite da FAT32 a NTFS usando l'utility CONVERT.EXE. I tal modo si disporrà dei vantaggi aggiuntivi relativi alla sicurezza di NTFS. Per riportare una partizione NTFS al formato FAT32, bisogna riformattare la partizione, ripristinando il contenuto da un backup. Windows : estensioni dei file e attributi In Windows i documenti sono organizzati in una struttura di directory. Il livello radice della partizione Windows è normalmente etichettata come disco C:\. Successivamente c'è un insieme iniziale di directory predefinite, denominate cartelle, per il sistema operativo, le applicazioni, le informazioni sulla configurazione e i dati. Dopo l'installazione iniziale, gli utenti possono aggiungere applicazioni e dati in qualsiasi directory essi scelgano. FAT32 e NTFS di Windows hanno file e cartelle con nomi la cui lunghezza massima è pari a 2 caratteri non case-sensitive. L estensione del file puo essere da 1 a 4 caratteri(.doc.,.txt,.html,..). Gli attributi individuano le caratteristiche:le estensioni di nomi di file, più comunemente utilizzate sono:.doc - Microsoft Word.txt - solo testo ASCII.jpg - formato per immagini.ppt - Microsoft PowerPoint.zip - formato compresso L'organizzazione delle directory mantiene un insieme di attributi per ogni file che controlla come il file possa essere visualizzato o modificato. Questi sono gli attributi più comuni dei file (c\>attrib /?): R - Il file è di sola lettura. A - Il file sarà archiviato al successivo backup del disco. S - Il file è contrassegnato come file di sistema ed un messaggio di avviso viene mostrato in caso di tentativo di cancellazione o modifica del file. H - Il file è nascosto quando si visualizza il contenuto della cartella. I da indicizzare (Vista e 7) L'equivalente di Windows del comando ATTRIB si ottiene cliccando col tasto destro del mouse in Windows Explorer e scegliendo Proprietà. NOTA: Sono visualizzabili da cmd->attrib, oppure in Gestione Risorse (dopo aver dato Show Hidden Files). Per le cartelle è possibile condividerle e configurarne i permessi (tasto DX->Proprietà->Autorizzazioni Per vedere le proprietà di un file in Windows Explorer, bisogna prima attivare l'opzione "Visualizza cartelle e file nascosti" di Windows Explorer. A tal proposito, usare il seguente percorso: Tasto destro su Start > Esplora > Strumenti > Opzioni Cartella > Visualizzazione NTFS e FAT32 Il comando c:\>convert c:/fs:ntfs trasforma un disco FAT32 in NTFS. NOTA: Dopo aver istallato un PC campione si lancia il comando sysprep.exe e si fa una immagine del disco di sistema: l immagine serve a configurare altri PC clonando il il disco campione con programmi quali Ghost. E possibile mettere anche una copia del CD di istallazione in rete e usare RIS (remote Installation Service). I PC client devono essere avviati da rete con PXE-Pre-boot execution Environment o un disco di boot remoto TECNO 1 REL

124 Protezione e sicurezza Un aspetto sempre piu importante nella gestione dei sistemi operativi è quello relativo alla protezione e alla sicurezza, soprattutto in relazione all uso di un calcolatore facente parte di un sistema distribuito. Se un sistema di calcolo ha più utenti e consente che i processi siano eseguiti in modo concorrente, i diversi processi devono essere protetti dalle attività degli altri processi. Per tale ragione, CPU, memoria e altre risorse devono essere controllate. Protezione Ricordiamo che un Sistema di Calcolo è un insieme di processi e oggetti, cioè elementi hardware come CPU, memoria, stampanti, dischi ed oggetti logici come file, semafori e programmi. Questi oggetti devono essere protetti contro tutti gli abusi. Il ruolo della protezione è quello di fornire un meccanismo per imporre dei criteri che controllino l uso delle risorse. In altri termini, a un processo deve essere consentito l accesso alle sole risorse di cui ha l autorizzazione e deve usare solo le risorse di cui ha bisogno per svolgere il proprio compito. Un diritto di accesso è un permesso per eseguire una operazione su un oggetto. Il processo opera all interno di un Dominio di Protezione che specifica a quali risorse il processo può accedere. Un dominio è, perciò, un insieme di diritti di accesso ed è costituito dalla coppia ordinata: nome dell oggetto, insieme dei diritti di accesso, cioè quali operazioni possono essere compiute su quell oggetto. Un dominio si può realizzare in vari modi, ad esempio in Linux il dominio è associato all utente: in questo caso l insieme degli oggetti a cui si può accedere, e il modo, dipende dall identità dell utente. Spesso il modello di protezione è simile a una matrice di accesso simile a quella sottostante: file 1 file 2 file 3 stampante Dominio 1 read Dominio 2 execute print Dominio 3 read, write read, write Spesso i sistemi reali sono limitati e consentono limitazione solo per i file: Linux fornisce, per ogni file, le protezioni per lettura, scrittura ed esecuzione distinte per proprietario, gruppo o chiunque. La JVM di Java fornisce un controllo più selettivo e personalizzato dei processi, rispetto al sistema operativo. Sicurezza Le informazioni presenti in un sistema di calcolo (codici e dati), così come tutte le altre risorse, devono essere protette da accessi non autorizzati, distruzioni, alterazioni, modifiche accidentali. Si dice che un sistema è Sicuro se alle sue risorse si accede solo nei modi previsti. Le alterazioni alla sicurezza possono essere dolose o accidentali. Per proteggere il sistema occorre agire su alcuni fattori: - fisico: protezione fisica contro i furti - umano: porre attenzione a fornire accesso ad utenti che forniscono l accesso ad intrusi - rete: cercare di ridurre la possibilità di intercettazione dei dati che transitano in rete - sistema operativo: il sistema deve proteggere se stesso dalle violazioni accidentali o intenzionali Qui tratteremo le problematiche relative alla sicurezza del sistema operativo. Autenticazione (controllo dell accesso) degli utenti Per i S.O. il principale problema relativo alla sicurezza riguarda l autenticazione: si tratta di stabilire se un utente o un sistema siano effettivamente coloro che dichiarano di essere. Dati di sicurezza rubati o persi possono consentire più attacchi e necessitano di più schemi di autenticazione TECNO 1 REL

125 Nessuna tecnica offre completa sicurezza di autenticazione, neanche quelle Biometriche (impronte digitali, impronte vocali, mappatura della retina). Ci sono molti tipi di meccanismi di autenticazione, ma i più usati sono: conoscenza dell utente (cosa sai) : parola d ordine (password), ID, PIN oggetti posseduti (cosa hai): una chiave, una SmartCard attributo dell utente (cosa sei): : impronta digitale o di retina (tecniche biometriche), firma Riferiamoci al metodo piu diffuso: la password, che si possono considerare come casi particolari di chiavi. La password puo essere vulnerabile. Due modi consueti di individuare la parola d ordine si basano sulla conoscenza dell utente o sulla forza bruta, cioè provare tutte le possibili combinazioni di lettere, finchè si scopre la password. Il SO può anche cifrare le parole d ordine, ma poi non ha più il controllo. Si possono usare parole d ordine accoppiate o monouso. La login o la password sono considerate generalmente autenticazioni deboli. Forti autenticazioni si ottengono combinando tra loro due diversi tipi di autenticazione. L'effettivo livello di sicurezza dipende ovviamente dal contesto, perché un SmartCard può essere rubata, e le credenziali di login possono non essere difficili da individuare. Minacce ai programmi Si definisce malware un qualsiasi software creato con il solo scopo di causare danni più o meno gravi al computer su cui viene eseguito. Se un utente usa un programma scritto da un altro, si possono verificare vari tipi di abuso: cavalli i Troia: le funzionalità sono nascoste all'interno di un programma apparentemente utile; è dunque l'utente stesso che installando ed eseguendo un certo programma, inconsapevolmente, installa ed esegue anche il codice trojan nascosto. Virus: sono parti di codice che si diffondono copiandosi all'interno di altri programmi, o in una particolare sezione del disco fisso, in modo da essere eseguiti ogni volta che il file infetto viene aperto. Si trasmettono da un computer a un altro tramite lo spostamento di file infetti ad opera degli utenti. Worm (verme): sfruttano dei difetti (bug) di alcuni programmi per diffondersi automaticamente. Genera copie di se stesso logorando le risorse del sistema fino a farlo collassate. (cfr l internet worm di Robert Morris dotato di un rampino di arrembaggio e di un programma principale) Spyware: software che vengono usati per raccogliere informazioni dal sistema su cui sono installati e per trasmetterle ad un destinatario interessato. Le informazioni carpite possono andare dalle abitudini di navigazione fino alle password e alle chiavi crittografiche di un utente. Dialer: questi programmi si occupano di gestire la connessione ad Internet tramite la normale linea telefonica. Sono malware quando vengono utilizzati in modo truffaldino, modificando il numero telefonico chiamato dalla connessione predefinita con uno a tariffazione speciale, allo scopo di trarne illecito profitto all'insaputa dell'utente. Hijacker ( dirottare"): questi programmi si appropriano di applicazioni di navigazione in rete (soprattuto browser) e causano l'apertura automatica di pagine Web indesiderate. Phishing ("spillaggio (di dati sensibili)") è una attività illegale che sfrutta una tecnica di ingegneria sociale (ingegneria sociale (social engineering) si intende lo studio del comportamento individuale di una persona al fine di carpire informazioni.), ed è utilizzata per ottenere l'accesso a informazioni personali o riservate con la finalità del furto di identità mediante l'utilizzo delle comunicazioni elettroniche, soprattutto messaggi di posta elettronica fasulli o messaggi istantanei, ma anche contatti telefonici. Grazie a questi messaggi, l'utente è ingannato e portato a rivelare dati personali, come numero di conto corrente, numero di carta di credito, codici di identificazione, ecc TECNO 1 REL

126 Esercitazioni Ricerche su Laptop, Smart Phone, e PDA Questa attività prevede di utilizzare Internet, un giornale, o un negozio locale per raccogliere informazioni sulle specifiche di un laptop, uno smart phone e un PDA, e poi inserirle nel foglio della relazione. Qual'è il tipo di apparecchiatura cercato? Quali sono le caratteristiche significative? Ad esempio, si può cercare un laptop con disco rigido da 80 GB e DVD integrato o funzionalità wireless integrate. Si può cercare uno smart phone con accesso a Internet o un PDA in grado di fare foto. dispositivo Caratteristiche Costo laptop Smart phone PDA IL PC... in pratica Un personal computer, (PC) è un computer di uso generico le cui dimensioni, prestazioni e prezzo di acquisto lo rendano adatto alle esigenze del singolo individuo. (wikipedia) Nella vista interna del PC (http://it.wikipedia.org/wiki/personal_computer) si vede, in alto, l'alimentatore, al centro il dissipatore di calore della CPU con la ventola, i cavi interni, le schede aggiuntive e, ben visibile, la scheda madre che alloggia la maggior parte delle interfacce e schede. Analizziamo i vari componenti. Alimentatore e cavi di alimentazione l alimentatore (in figura, senza coperchio) è un convertitore AC-DC che fornisce energia elettrica al PC. I cavi di alimentazione sono utilizzati per fornire l energia dall alimentatore alla scheda madre e agli altri componenti del computer. Ce ne sono di vari tipi in funzione del loro uso: Collegamento di alimentazione per la scheda madre: o ATX (Advanced Technology Extended) è il connettore principale e può avere 20 o 24 pin o L alimentatore può avere anche un connettore ausiliario (AUX) dotato di 4 o 6 pin, da collegare alla scheda madre. Il connettore con 20 pin è compatibile con una scheda madre che ha una porta con 24 pin. I connettori di alimentazione per i cavi SATA posseggono 1 pin per collegare gli hard disk drive, le unità ottiche o qualsiasi dispositivo che abbia un connettore SATA. I Molex sono connettori di alimentazione usati dagli hard disk drive e dalle unità ottiche che non hanno le porte SATA. I Berg sono connettori di alimentazione a 4 pin specifici per i floppy drive TECNO 1 REL

127 Connettore SATA per alimentazione. A La scheda madre... (in inglese motherboard - mainboard-mb o M/B) o scheda di Sistema è una parte fondamentale di un personal computer: raccoglie in sé tutta la circuiteria elettronica di interfaccia fra i vari componenti principali e fra questi e i bus di espansione e le interfacce verso l'esterno. È responsabile della trasmissione e temporizzazione corretta di molte centinaia di segnali diversi, tutti ad alta frequenza e tutti sensibili ai disturbi: per questo la sua buona realizzazione è un fattore chiave per la qualità e l'affidabilità dell'intero computer. È composta di un circuito stampato e, ricavato da un sandwich di strati di vetronite e rame: generalmente una scheda madre può avere da quattro a sei strati di rame. In questi sono ricavate le piste che collegano i componenti, che devono essere calcolate con molta cura: alle frequenze normalmente adoperate dalle CPU e dalle memorie RAM in uso oggi, infatti, la trasmissione dei segnali elettrici non si può più considerare istantanea ma deve tenere conto dell'impedenza propria della pista di rame e delle impedenze di ingresso e di uscita dei componenti connessi. Su questo circuito stampato vengono saldati una serie di circuiti integrati, di zoccoli e di connettori; gli integrati più importanti sono il chipset che svolge la gran parte del lavoro di interfaccia fra i componenti principali e i Bus di espansione, la rom (o FLASH, PROM, EEPROM o simile) per il BIOS, il Socket per il processore e i connettori necessari per il montaggio degli altri componenti del PC e delle schede di espansione (wikipedia) TECNO 1 REL

128 I componenti di una scheda madre TECNO 1 REL

129 I componenti di una scheda madre possono variare molto a seconda di che tipo di computer si sta considerando: nel seguito di questa descrizione faremo riferimento a una generica scheda madre per personal computer. CPU Socket: è uno zoccolo ZIF (Zero Insertion Force) che accoglie la CPU. Dato il notevole calore sviluppato, tutte le CPU sono dotate di un dissipatore alettato in alluminio o rame, attraverso il quale viene fatto passare un flusso d'aria generato da una ventola, che ne asporta il calore trasferendolo lontano dal componente. La ROM BIOS (può essere PROM, EEPROM, flash o altro) che contiene il BIOS della scheda madre. Le sue funzioni sono essenzialmente tre: eseguire il controllo dell'hardware all'accensione (il POST, Power On Self Test), caricare il sistema operativo e mettere a disposizione di questi alcune primitive (routine software) per il controllo dell'hardware stesso. chipset North Bridge: è un circuito integrato che connette il processore con la memoria RAM e con i bus di espansione principali (PCI e AGP), le interfacce ATA e/o SATA per gli hard disk, che sono i componenti più critici per le prestazioni di un personal computer. E' l'elemento più importante del chipset e il suo buon funzionamento è cruciale per la stabilità e la velocità della macchina. South Bridge: è il secondo componente del chipset e il suo compito è quello di gestire tutte le interfacce a bassa velocità: è connesso al north bridge tramite il bus di espansione e gestisce le porte seriali e parallele, l'interfaccia per la tastiera e il mouse, l'interfaccia Ethernet, le porte USB e il bus SMB TECNO 1 REL

130 BUS Mbps bps (bit per second) generalmente usato per USB, FireWire, Wi-Fi e dispositivi di rete. MBps Bps (Bytes per second) generalmente usato per PCI bus, ATA, SATA e SCSI. AGP 2X AGP 8X PCI PCIe 1x PCIe 16x ATA ATA SATA esata Il bus di espansione consiste in un collegamento dati generico punto-multipunto, progettato per permettere di collegare alla scheda madre delle altre schede di espansione alloggiate su connettori (slot), che ne estendono le capacità. In linea di principio ad un bus può essere collegato hardware di ogni tipo: schede video aggiuntive, schede audio professionali, schede acquisizione dati, unità di calcolo specializzate, coprocessori: nella pratica si ricorre ad una scheda di espansione su slot interno solo per hardware che ha bisogno di una collaborazione estremamente stretta con la CPU o con la memoria RAM; per le espansioni hardware meno critiche si sfruttano le connessioni "lente" (USB, seriali ecc.). Le connessioni elettriche del bus possono essere realizzate direttamente su circuito stampato oppure tramite un apposito cavo. Nel primo caso, se il bus è di tipo parallelo, spesso è riconoscibile a vista perché si nota sul circuito un nutrito gruppo di piste compatte e disposte in parallelo che vanno a toccare i vari componenti della scheda. Sono di questo tipo i bus ISA, PCI e AGP. Un bus può usare anche la trasmissione seriale. Il progredire della tecnologia sembra preferire questa forma a quella parallela, che tra l'altro soffre di maggiori ingombri e spesso anche di maggiori costi. Esempi di bus seriali sono: SATA, PCI Express PCI Peripheral Component Interconnect è l'interfaccia sviluppata da Intel intorno agli anni Novanta per collegare al computer le più svariate periferiche. In un bus PCI tutti i trasferimenti di dati avvengono in modalità sincrona, cioè secondo un clock di sistema (CLK). PCI Express (PCIe) è una interfaccia piu veloce della precedente, che sfrutta l'esperienza acquisita con PCI con un protocollo seriale a livello fisico e connettori differenti. AGP Accelerated Graphics Port è stata sviluppata da Intel nel 1996 come soluzione per aumentare prestazioni e velocità delle schede grafiche connesse ai PC. I cavi per i dati fanno viaggiare i dati e le unità disco si collegano alla scheda madre attraverso i cavi di dati. Esistono vari tipi di cavi che si sono evoluti TECNO 1 REL

131 nel corso della storia dei computer: Il cavo PATA è largo e schiacciato e può avere 40 o 80 conduttori. Solitamente un cavo PATA ha tre connettori da 40 pin. Se ci sono più hard disk, il disco master è collegato ad una estremità del connettore. Il disco slave al connettore intermedio. Molte schede madri hanno due porte PATA, che permettono di collegare fino ad un massimo di quattro dispositivi PATA. Il cavo SATA (Advanced Technology Attachment), è un connettore interno per dischi fissi e ottici, ha un connettore con 7 pin per il trasporto dei dati. Ha una larghezza di 8mm e na velocità di trasmissione che va da 1, GB/s, 3 GB/s fino a 6 GB/s. Una estremità del cavo si collega alla scheda madre. L altra estremità si collega ad un qualsiasi dispositivo che abbia un connettore dati di tipo SATA. Inoltre, Serial ATA permette agli utenti la connessione e disconnessione hot (a caldo) delle unità a disco. Connettore del cavo dati Serial ATA Interafacce standard: seriali RS232, parallela Centronics, PS/2 per mouse e tastiera, USB per altri dispositivi sono solitamente tutte raggruppate sul lato posteriore alto della scheda madre. In molte schede madri, specie se compatte, possono essere incluse la scheda video, la scheda audio, interfacce di rete Ethernet e porte Firewire (nome con il quale è noto lo standard IEEE 1394, di proprietà della Apple Computer, è un'interfaccia standard per un bus seriale). Evoluzione delle interfacce La connettività si è evoluta dalla porta seriale e parallela fino al Light Peak segnando la storia del computer 1969/ Interfaccia Seriale (RS232 )che raggiungeva tipiche velocità di circa 19200bps e Parallela sono state per molti anni la porta di comunicazione dei PC Modem Analogico da 1200bps a 6Kbps 1990 Ethernet da 10Mbps a10gps del 2008 ai 100Gbps del 2011(cfr il chip presente sullo schema del Chipset: Intel GbE ( Gigabit Ethernet Controller) che integra il MAC Ethernet e il livello fisico) 199 Firewire 400Mbps 3,2Gbps USB1.0 1,Mbps USB2,8 480Mbps USB3.0 del 2010 con 4.8Gbps USB L'Universal Serial Bus è uno standard di comunicazione seriale che consente di collegare diverse periferiche ad un computer. È stato progettato per consentire a più periferiche di essere connesse usando una sola interfaccia standardizzata ed un solo tipo di connettore, e per migliorare la funzionalità plug-and-play consentendo di collegare/scollegare i dispositivi senza dover riavviare il computer (hot swap). Il sistema USB è asimmetrico, consiste in un singolo gestore e molte periferiche collegate da una struttura ad albero attraverso dei dispositivi chiamati hub (concentratori). Supporta fino ad un massimo di 127 periferiche per gestore. All'interno del computer, l'usb non ha rimpiazzato gli standard ATA o SCSI per via della sua lentezza. Il nuovo standard serial ATA per esempio consente trasferimenti dell'ordine di 10 Mbyte per secondo, una velocità molto più elevata dello standard USB, che nella versione 2.0 raggiunge un massimo di 60 Mbyte per secondo (480 Mbits/s) anche se è in arrivo USB 3.0 è in grado di trasferire dati dieci volte più velocemente di USB 2.0 con una velocità di trasferimento di 4,8 Gbit al secondo. Piedinatura del connettore USB: Pin Nome segnale Colore filo 1 VBUS ROSSO 2 D- BIANCO 3 D+ VERDE TECNO 1 REL

132 4 GND NERO 2003 HDMI 2010 Light Peak 10Gbps Mbps MBps USB USB USB 2.0 HS a (FW400) b (FW800) BaseT Base T BaseX Wi-Fi b Wi-Fi g Wi-Fi n Una scheda video è un componente del computer che ha lo scopo di generare un segnale elettrico (output) di quello che il sistema sta facendo perché possa essere mostrato a monitor (display). A seconda del tipo di computer questo dispositivo può essere più o meno potente: i primi modelli di scheda video potevano visualizzare solo testo; successivamente si sono diffuse anche schede video in grado di mostrare output grafici (immagini non testuali) e, recentemente, anche modelli tridimensionali texturizzati in movimento e in tempo reale. Questi ultimi tipi di scheda provvedono anche ad elaborare e modificare l'immagine nella propria memoria interna, mentre in passato con le vecchie schede 2D si potevano elaborare semplici immagini 3D con l'aiuto della CPU che doveva così eseguire una lunga e complessa serie di calcoli. Ora invece, una moderna scheda video integra al suo interno una GPU (Graphics processing unit), ossia un processore specializzato nel trattamento di immagini e formato da un certo numero di pipeline e vertex unit, e della memoria RAM Una Batteria al Litio in grado di alimentare per anni l'orologio di sistema e una piccola quantità di memoria RAM in tecnologia CMOS in cui il BIOS memorizza alcuni parametri di configurazione dell'hardware. (cfr ) BOOT: AVVIO DEL PC Costruttore / Tipo MB Tensione Famiglia Package Intel 28F001BXT 1 V Flash DIL MX28F1000PL/PC/PPC 1 V Flash DIL SST 29EE010 1 V EEPROM DIL ATMEL 29C010 1 V Flash DIL AMI - American Megatrends Inc. MR - Microid Research AWARD A partire dall'introduzione dei primi IBM PC XT e compatibili nell'agosto del 1981, è il BIOS che ha il compito di dare i primi comandi al sistema durante la fase di avvio, detta boot process. In questa fase, dopo i controlli preliminari sulla funzionalità dei componenti fondamentali (interrupt, RAM, tastiera, dischi, porte), il BIOS si interfaccia con la memoria CMOS, una memoria non volatile capace di mantenere anche a computer spento i parametri di configurazione che possono essere oggetto di modifica. In questa memoria, il BIOS è in grado di scrivere per memorizzare le necessarie modifiche alla configurazione e di leggere per stabilire dove si trova il sistema operativo da caricare per l'avvio. Il BIOS è IL PUNTO DI INTERFACCIA TRA HARDWARE E SISTEMA OPERATIVO. La ROM BIOS (puo essere una flash memory) è localizzata fra E0000h e FFFFFh, cioè alla fine della memoria indirizzabile in modalità reale TECNO 1 REL

133 F000:fff0 Istruzione di jmp far F000:fff Release rom-bios F000:fffe Codice tipo di computer Per bootstrap (letteralmente tirarsi-su-aggrappandosi-alle-stringhe-degli-stivali) di un PC si intendono le sequenze che portano all avvio del computer. Al reset (quando viene alimentata la motherboard) hardware la CPU è in Modalità Reale e la prima istruzione che esegue si trova sotto il limite superiore assoluto di memoria: FFFF0h (CS:IP ffff:0). Questa locazione contiene l'istruzione iniziale che fa saltare al BIOS (Basic Input/Output System) che contiene una serie di routines (prevalentemente servizi di interrupt) che consentono al PC di sapere chi è : è questa la fase di POST: il POST (Power-On Self Test) è la fase che serve per il controllo del sistema: legge nella CMOS-RAM (ind. di I/O 070h-07fh) la configurazione del sistema e dei suoi dispositivi. In particolare viene eseguito un test dei componenti hardware, della RAM, dischi, tastiera, ecc. per assicurarsi che il sistema funzionerà correttamente. Se il test ha esito negativo, il sistema si blocca e l'errore i viene indicato da un messaggio sul video e/o da un segnale acustico. Il set-up puo essere modificato, premendo nella fase di avvio un tasto o una combinazione (ad ex. DEL o CTRL-ALT-ESC a seconda della casa produttrice del BIOS (vedi tabella sottostante). Vengono installate le IST (interrupt service routine) dei servizi degli interrupt di base. A questo scopo viene inizializzata la Interrupt Vector Table( 00000h - 003FFh (1KByte=1024 byte)). Viene eseguita una scansione delle ROM BIOS: il BIOS cerca ed esegue tutti i BIOS estesi, che si possono trovare tra C0000h e DFFFFh. Il BIOS scansiona quest'area. Il BIOS cede il controllo al BIOS aggiuntivo trovato, eseguendo una 'CALL FAR'. Il BIOS aggiuntivo può eseguire nuove inizializzazioni hardware e installare nuove interrupt service routine Infine il BIOS cerca di caricare il programma di boot, per l avvio del sist. Operativo, da un dispositivo di boot (ricerca del boot sector). Il dispositivo di boot di solito è un disco (ad ex. A o C), ma può anche essere qualsiasi altro tipo supportato dal BIOS. Si provano in sequenza i dispositivi finchè non se ne trova uno funzionante. Se il BIOS non riesce a caricare un programma di boot, si blocca oppure chiama l'int 18h. Se il BIOS riesce a caricare un programma di boot, cede il controllo al sist. Operativo e il suo lavoro termina. Quando carica il programma di boot da un disco, il BIOS legge il boot sector: il primo settore del disco : se è corretto, il BIOS gli cede il controllo all'indirizzo 0000:7C00 A questo punto il controllo viene ceduto al programma di boot della partizione del disco, che a sua volta tenterà di caricare un sistema operativo (Windows, Linux..) da una posizione predefinita della partizione. (Ad ex. nel vecchio DOS venivano qui letti i files di autoexec.bat e config.sys). Il sistema è partito!!! MEMORIE DI MASSA Le memorie, si possono cosi classificare: MEMORIE Primarie (interne, a stato solido) Secondarie (di massa) Volatili NON Volatili Nastro Disco RAM ROM MAGNETICO, OTTICO SRAM EPROM DRAM EEPROM FLASH. E possible pensare alle memorie come a un imbuto rovesciato: La capacità (dimensione della memoria di massa) varia molto da dispositivo a dispositivo: da qualche mega-byte (10^6 byte) ai giga-byte (10^9 byte) o tera-byte (10^12 byte). Anche il tempo di accesso (che corrisponde all'intervallo di tempo tra la richiesta di lettura/scrittura e la disponibilità del dato) varia da dispositivo a dispositivo (comunque molto superiore a quella della memoria centrale) TECNO 1 REL

134 FLASH MEMORY CARD L uso della flash memory card negli ultimi anni ha assunto proporzioni enormi. Dai PC, alle fotocamere, ai lettori MP3, ai palmari, nulla sembra sfuggire a queste memorie. In effetti queste memorie associano a una capacità notevole una piccola dimensione, un costo ridotto e una buona robustezza. Le flash sono memorie a stato solido capaci di mantenere l informazione anche senza alimentazione. Esse possono essere viste come memorie di massa (senza parti in movimento e con velocità di accesso elevata o come memorie interne usate per la memorizzazione di dati in alternativa a EPROM (ad ex. per contenere il BIOS) o a EEPROM di cui sono, per cosi dire, un miglioramento. (La tecnologia EEPROM è stata quindi sviluppata sulla base della preesistente tecnologia EPROM, al fine di ovviare al problema della cancellazione dei dati. Nelle EPROM, infatti, la cancellazione viene effettuata attraverso l'esposizione a radiazione UV, con conseguenti difficoltà di natura logistica (necessità di rimozione del chip dalla scheda su cui è assemblato, perdita di tempo per l'esposizione/cancellazione stessa). Il loro funzionamento si basa su un array di transistor, ciascuno dei quali memorizza un bit, chiamati celle. Ogni cella è simile a un MOSFET ma con 2 gate. Uno dei due gate, il Floating Gate. è completamente isolato ed è capace di catturare gli elettroni e mantenerli conservando il bit di informazione. Per scrivere occorrerà fornire una alta tensione per poter fare in modo che il FG intrappli gli elettroni.proprio il campo elettrico elevato generato fa assumere a queste memorie il nome di Flash! Per leggere si utilizzerà l altro gate (Control Gate) che stabilirà o meno, tramite un passaggio di corrente, se FG possiede o meno elettroni e quindi puo stabilire il livello logico 1 o 0. Per cancellare la Flash occorre applicare una differente tensione a CG per influire su FG ed estrarre gli elettroini. La cancellazione avviene a blocchi e non singolarmente. Cio comporta che non si puo cancellare un singolo byte, ma è necessario intervenire su un intero blocco. E questa la ragione per la quale, per ora, non è ancora possibile sostituire la RAM dei PC con questo tipo di memoria che eviterebbe perdite di dati per cadute di tensione. Negli ultimi 10 anni queste memorie si sono evolute fino a diventare di dimensioni ridotte ma robuste e capienti. Attualmente esistonovarie tipologie di flash memory card: Compact flashnas, SmartMedia, MultimediaCard, Memory Stck, Secure Digital TECNO 1 REL

135 L HARD DISK L hard disk è costituito da una pila di dischi che ruotano attorno a un asse comune. Le facciate dei dischi sono ricoperte da materiale magnetizzabile che permette di registrare le informazioni. La quantità di informazioni memorizzabile è detta capacità e viene misurata in GB. Le informazioni sono memorizzate su ogni facciata lungo le tracce concentriche. Ogni traccia è divisa in settori, separati da una zona chiamata gap. Il numero di settori è lo stesso per ogni traccia (ma il numero di settori per traccia varia secondo la capacità del disco. Ogni settore contiene la stessa quantità di informazioni (di solito 12 byte)). La densità di registrazione è diversa. geometria di un hard disk superfici delle piastre del disco: o traccia = corona circolare o settore = spicchi in cui sono suddivise le tracce (typ 12byte) cilindro = tutte le tracce che presentano la stessa distanza dal centro del rispettivo piatto. volume = cilindri+settori Parametri del disco: tempo di accesso: tempo necessario per individuare il settore; si misura in millisecondi. E influenzato dalla velocità di rotazione del disco espressa in giri (7200 rpm = giri al minuto) velocità di trasferimento. (Data Tranfer Rate). Si misura in MByte al secondo. E da considerare la velocità di trasferimento media. I dischi migliori dispongono anche di una cache integrata per velocizzare gli accessi ai dati letti più di recente. Capacità. = #testine *#cilindri*# settori * A ogni operazione di lettura o scrittura viene letto o scritto un intero settore. Le operazioni sul disco vengono effettuate da una testina di lettura/scrittura; il settore da leggere/scrivere deve trovarsi sotto la testina. la testina si posiziona sulla traccia desiderata, con movimento radiale velocita' tra i 3600 ed i 7200 giri al minuto (revolutions per minute, RPM) ma puo arrivare anche a 1000 diametro piatto : da poco piu' di un pollice (circa 2, cm) fino ad oltre otto pollici (circa 20 cm). Su ciascuna superficie ci sono tipicamente da 1000 a 000 tracce ciascuna traccia puo' contenere da 64 a 200 settori la dimensione di un settore e' in genere di 12 byte, ma è grande 17 byte perché l area dati è preceduta da una intestazione che contiene dei 13 - TECNO 1 REL

136 dim.settore valori che indicano la posizione del settore, e seguita da un trailer che contiene un codice di controllo per l affidabilità del disco, in quanto permette di individuare i bit errati. Normalmente tutte le tracce contengono lo stesso numero di settori e quindi lo stesso numero di bit. Le testine di lettura e scrittura sono accoppiate ed ogni faccia presenta una coppia, quindi un piatto presenta due coppie di testine. il disco Formattazione fisica Suddivide il disco in tracce e settori, registrando settori privi di informazioni. Partizioni. L hd può essere diviso in partizioni, in modo che ogni partizione sembri un disco separato. In ogni ogni partizione deve essere effettuata la formattazione logica, in base al sistema operativo usato e al file system usato (FAT, NTFS). Registra i dati necessari per gestire la memorizzazione delle informazioni. La superficie di un disco in seguito alla formattazione viene divisa in tracce e settori. Le tracce sono delle corone circolari concentriche ed i settori sono spicchi nei quali vengono suddivise le tracce. Il settore è la più piccola quantità che il sistema è in grado di leggere, nel DOS questa è costituita da 12 byte. Quando l hard disk è costituito da più dischi rigidi imperniati su di un unico asse allora un gruppo di tracce equidistanti dall'asse di rotazione prende il nome di cilindro per esempio, se un hard disk è costituito da tre dischi, avremo che ogni cilindro sarà costituito da 6 tracce, una per ognuna delle due facce di ciascun disco. Ognuna delle tracce (6 nel nostro esempio) di un cilindro viene letta da una testina di lettura scrittura. Settori e tracce (o settori, cilindri e numero della testina di lettura scrittura) sono i parametri utilizzati dal computer per indirizzare le zone del disco. L'insieme di cilindri e settori formano il volume che è usualmente contrassegnato con una lettera, quasi sempre C ma non necessariamente. Un disco può anche essere diviso in zone che vengono gestite separatamente che prendono nome di partizioni. Ad ogni partizione è associato un volume ed i vari volumi vengono designati con lettere successive: C, D, E e via dicendo. Il numero di superfici (o testine, che è la stessa cosa), cilindri e settori variano molto: le specifiche sul numero di ciascuno di questi elementi vengono chiamate geometria di un hard disk. La geometria viene di solito memorizzata in una locazione della RAM CMOS, da cui il sistema operativo la può leggere durante l'avvio del computer o l inizializzazione dei driver. ( ) A ogni operazione di lettura o scrittura viene letto o scritto un intero settore. Le operazioni sul disco vengono effettuate da una testina di lettura/scrittura; il settore da leggere/scrivere deve trovarsi sotto la testina. Il tipo di accesso usato è diretto o semicasuale: si può accedere direttamente a un settore, ma il tempo di accesso dipende dalla posizione del settore. Ad ogni operazione la testina si posiziona sulla traccia desiderata, con movimento radiale. Poi aspetta che la rotazione del disco porti sotto alla testina il settore interessato (il disco gira continuamente mentre la testina resta ferma) Questi movimenti sono di tipo meccanico e quindi richiedono tempi notevoli Dopo l individuazione del settore avviene l operazione vera e propria, che richiede un certo tempo (indipendentemente dalla posizione del settore). Parametri che caratterizzano le prestazioni di un hd tempo di accesso: tempo necessario per individuare il settore; si misura in millisecondi e deve essere il più basso possibile. E influenzato dalla velocità di rotazione del disco espressa in giri (7200 rpm = giri al minuto) velocità di trasferimento. (Data Tranfer Rate). Si misura in MB al secondo. E da considerare la velocità di trasferimento media. I dischi migliori dispongono anche di una cache integrata per velocizzare gli accessi ai dati letti più di recente. Capacità. = #testine * #cilindri * # settori * dim.settore esempi: 1. se la geometria del mio HD e': #testine=239 #cilindri=1021 #settori=63 per traccia capacità = #testine * #cilindri * # settori * dim.settore = 239 * 1021 * 63 * 12 byte = byte La capacita' espressa in GB e': C = /(2^30) = 7.33 GB 2. Se un hard disk (volume) si compone di 2 dischi (o equivalentemente 4 piatti), cilindri (o equivalentemente tracce per piatto) e 16 settori di 4096 bytes per traccia, allora la capacità del disco sarà di 4x16384x16x4096 bytes, ovvero 4 Gb. 3. Il disco Seagate Barracuda GB [ ST A (JT1AVSY) ] Proprietà periferica ATA: ID modello ST A Numero di serie JT1AVSY Revisione 3.04 Parametri cilindri: 23281, testine: 16, settori per traccia: 63, byte per settore: 12 Settori LBA Buffer 2 MB Settori multipli 16 Byte ECC TECNO 1 REL

137 Modalità trasferimento UDMA (ATA-100) Capacità (non formattato) MB DVD 17 agosto 1982: il primo Compact Disc usciva dalla fabbrica della Philips di Langenhagen, vicino ad Hannover, in Germania. L invenzione del CD portò una rivoluzione tecnologica nel mondo della musica ed ha segnato l inizio del passaggio dalla tecnologia analogica a quella digitale. Non dimentichiamoci poi che il CD è stato anche la base per creare il Cd-Rom, il Dvd e il Blu-ray. Il primo CD ad essere prodotto fu The Visitors degli ABBA. I CD sono stati introdotti sul mercato nel novembre 1982, con un catalogo di circa 10 titoli, principalmente di musica classica. Circola una storia, a proposito. Dal 1982 ad oggi sono stati venduti più di 200 miliardi di Cd. DVD, acronimo di Digital Versatile Disc (in italiano Disco Versatile Digitale, originariamente Digital Video Disc, Disco Video Digitale) è un supporto di memorizzazione di tipo ottico. il formato DVD-R è lo standard ufficiale per i DVD Registrabili. Esso si suddivide nei formati "DVD-R for authoring" e "DVD-R for general use". I primi sono destinati alla creazione di copie di video protette da diritto d'autore, necessitano di uno speciale masterizzatore e sono in grado di implementare i sistemi di protezione dalla duplicazione. La differenza fondamentale tra i due formati risiede nella diversa lunghezza d onda del laser: 63 nm per il DVD-R(A) e 60 nm per il DVD-R(G). I secondi sono in grado di contenere qualunque tipo di materiale, ma non sono compatibili con i sistemi di protezione utilizzati nei DVD-Video. lo standard DVD-RW, che ricalca le caratteristiche dei DVD-R "for general use", ma con la possibilità di essere riutilizzato fino a mille volte (teoricamente). Negli anni necessari alla formalizzazione dello standard DVD-R, sono stati commercializzati altri 2 formati per la registrazione in formato DVD: il DVD+R (e DVD+RW) dal consorzio Sony-Philips, ed il formato DVD-RAM, supportato da Matsushita e JVC. Questi formati differiscono notevolmente dal formato DVD-R in termini tecnici, anche se i più moderni lettori e masterizzatori sono in grado di supportare DVD registrabili in qualunque formato (con qualche riserva per il DVD- RAM). Il DVD-R/-RW e il DVD+R/+RW usano una tecnica di registrazione elicoidale. Il DVD-RAM usa una tecnica di registrazione a cerchi concentrici, similare a un HardDisk, al quale è assimilabile nell'uso. Più recente è l'introduzione di standard per la masterizzazione di DVD a doppio strato Capacità: Le dimensioni dei DVD di produzione industriale sono di quattro tipi: DVD-: 4.7 GB Lato unico e singolo strato DVD-9: 8. GB Lato unico e doppio strato DVD-10: 9.4 GB Due lati e singolo strato DVD-18: 17 GB Due lati e doppio strato La memorizzazione delle informazioni avviene sullo "strato di incisione", tramite un laser, focalizzato su esso, che ne modifica la riflettività, riproducendo la sequenza 0, 1. Ogni strato è suddiviso in tracce circolari e concentriche di 0,74 micron. I bit sono incisi sul disco in un'unica traccia lunga oltre km sotto forma di zone più o meno riflettenti (pits e lands) la luce. In lettura la luce laser viene riflessa dallo strato di memorizzazione in modo diverso a seconda dell'indice di riflessione e conoscendo la velocità di rotazione del disco e la traccia su cui si sta leggendo, si può risalire alla sequenza 0,1. Su un compact disc il suono è memorizzato in formato digitale: l'andamento della pressione sonora è misurato (campionato) ad intervalli regolari e il valore è descritto da una sequenza di 16 bit. In conseguenza del teorema di Nyquist-Shannon, è necessario che la frequenza di campionamento sia almeno doppia rispetto alla frequenza massima del segnale da acquisire, ovvero almeno volte al secondo per la banda audio di 20 khz, per ciascun canale stereo TECNO 1 REL

138 Mantenere costante la velocità lineare del disco al di sotto della testina per avere un flusso costante di dati.questo comporta che la velocità angolare del disco non può essere costante, ma è maggiore quando la testina è vicina al centro e minore quando si trova alla periferia. La minima velocità di trasmissione dati da un DVD è nove volte maggiore di quella di un CD, cosicché un lettore DVD da 1x è quasi equivalente ad un lettore CD da 8x. Più precisamente, 1x per un lettore DVD equivale a 130 KBps, mentre 1x per un lettore CD equivale a 10KBps. Gli standard proposti per succedere al DVD sono il Blu-ray e il DVD ad alta definizione (HD DVD), tra loro incompatibili. Lo studio di possibile standard che permetterebbe il successivo salto di qualità è già allo studio avanzato: si tratta dell'holographic Versatile Disc (HVD), basato sulla tecnologia delle memorie olografiche, e permetterà di contenere tra i 300 e gli 800 Gigabyte su un disco. Evoluzione dei sistemi di memorizzazione IL TECNICO: ESERCITAZIONI Quando ci si prepara per diventare un tecnico di computer, bisogna essere in grado di sviluppare le seguenti abilità: Assemblare e aggiornare i computer Effettuare installazioni Installare, configurare e ottimizzare il software Effettuare manutenzione preventiva Effettuare troubleshooting e riparare computer Comunicare in maniera chiara con il cliente Documentare i feedback del cliente e le fasi coinvolte nella ricerca della soluzione del problema Nel lavoro con il computer esistono diversi tipi di tecnici, che lavorano in diversi ambienti.: Tecnico locale o Il tecnico locale, lavora per un'azienda e riparare solo i beni di proprietà di quella azienda. In alternativa, si potrebbe operare per una società che fornisce assistenza e manutenzione sui computer presso le sedi di aziende e clienti diversi. In entrambe le situazioni, bisogna avere competenze eccellenti di troubleshooting e di servizio al cliente, poiché si lavora regolarmente a contatto con quest'ultimo e su un'ampia varietà di hardware e di software. Tecnico per l assistenza remota o Nel caso di un tecnico di assistenza remota, bisogna lavorare presso un help desk rispondendo a chiamate o dei clienti che hanno problemi con il computer, È consigliabile creare ordini di lavoro e comunicare con il cliente per provare ad analizzare e risolvere il problema. Inoltre, è utile avere buone competenze di comunicazione, perché il cliente deve chiaramente comprendere le domande e le istruzioni che gli vengono rivolte. Alcuni help desk utilizzano software di controllo remoto per collegarsi direttamente al computer del cliente e risolvergli il problema. Come tecnico di assistenza remota, bisogna lavorare in un team di tecnici di help desk da un azienda o da casa. Tecnico di laboratorio o Come tecnico di laboratorio, generalmente non si lavorerà a contatto diretto con i clienti. Questi tipi di tecnici sono assunti spesso in un centro apposito per garantire il servizio di garanzia dei computer Esercitazione n. 1 Boot del PC : il PC verrà avviato (POST) e saranno esplorate le funzionalità del BIOS. Eseguire le attività proposte, provando sul proprio computer e realizzare una breve relazione che risponda ai punti seguenti: TECNO 1 REL

139 Passo 1 Collegare il cavo di alimentazione in una presa e accendere il computer. NOTA: Se il computer non si accende o emette un segnale acustico più di una volta, spiegarlo nella relazione Passo 2 Durante il POST, premere il tasto, o la combinazione di tasti, preposto alla configurazione del BIOS. A video verrà mostrata la schermata del programma di configurazione del BIOS. Qual è il tasto (o la combinazione di tasti) premuto per entrare nel programma di configurazione del BIOS? Chi è il produttore del BIOS? Qual è la versione del BIOS? Quali opzioni del menu sono disponibili? Passo 3 Navigare attraverso ogni schermata per trovare la sequenza d'ordine di avviamento. Qual è il primo dispositivo di avvio nella sequenza d'ordine di avviamento? Quanti altri dispositivi possono essere assegnati nella sequenza d'ordine di avviamento? Passo 4 Assicurarsi che il primo dispositivo di avviamento sia l'unità ottica. Assicurarsi che il secondo dispositivo di avviamento sia l'hard disk. Perché si cambia il primo dispositivo di avviamento selezionando l'unità ottica? Che cosa succede quando si avvia il computer e l'unità ottica non contiene supporti avviabili? Passo Quali configurazioni per la gestione dell'energia sono disponibili? Passo 6 Navigare in ogni schermata fino a trovare le configurazioni (Plug and Play) PnP. Quali configurazioni PnP sono disponibili? Passo 7 Uscire senza salvare le configurazioni del BIOS. Passo 8 Il computer sarà riavviato esercitazione completatata Esercitazione n. 2 Componenti Hardware Per l esercitazione si utilizzeranno informazioni sui componenti hardware prese da Internet, un giornale. Il computer del proprio cliente ha un modulo di RAM da 12MByte, un disco rigido da 60GB ed una scheda video AGP da 32MB di RAM. Il cliente vuole avere la possibilità di giocare con videogiochi avanzati. Confrontare i prezzi ed elencare nella tabella che segue la marca, il numero del modello, le caratteristiche e il costo di due differenti moduli di RAM da 1 GB. Marca e codice del modello Caratteristiche Costo o In base alla propria ricerca, quale modulo di RAM è stato selezionato? Prepararsi a discutere la scelta fatta. Confrontare i prezzi ed elencare nella tabella che segue la marca, il numero del modello, le caratteristiche e il costo di un disco rigido da 00GB e di uno da 1TB Marca e codice del modello Caratteristiche Costo esercitazione completatata Esercitazione n.3 Laptop/Desktop TECNO 1 REL

140 Completare: Le PC ExpressCard sono intercambiabili con le PC card? Dare la definizione di cosa è APM per il controllo di gestione dell'energia e dire se è equivalente ad utilizzare ACPI (dopo averne dato la definizione) Si può aggiornare la motherboard di un laptop con la RAM per desktop? Un processore per desktop utilizza più o meno energia e più o meno calore di un processore per portatili alla stessa frequenza di lavoro? esercitazione completatata TECNO 1 REL

141 Windows Funzionalità (nozioni tratte da Help di Windows.) Il desktop è l'area principale dello schermo che viene visualizzata quando si accende il computer e si accede a Windows. Analogamente al piano di una scrivania, funge da superficie di lavoro. Quando si avvia un programma o si apre una cartella, questi vengono visualizzati sul desktop. È inoltre possibile disporre liberamente sul desktop oggetti come file e cartelle. Per Windows8 cfr Anche la barra delle applicazioni e Windows Sidebar possono essere considerate come componenti del desktop. La barra delle applicazioni, che occupa la parte inferiore dello schermo, indica i programmi in esecuzione e consente di passare dall'uno all'altro. Contiene inoltre il pulsante Start, che consente di accedere a programmi, cartelle e impostazioni del computer. Tramite Sidebar, a lato dello schermo, è invece possibile accedere a piccoli programmi denominati gadget. Utilizzare le icone del desktop Le icone sono piccole immagini che rappresentano file, cartelle, programmi e altri elementi. Quando si avvia Windows per la prima volta, verrà visualizzata almeno un'icona sul desktop, ovvero il Cestino (seguiranno ulteriori informazioni). Il produttore del computer potrebbe aver aggiunto altre icone al desktop. Di seguito vengono illustrati alcuni esempi di icone del desktop. Esempi di icone del desktop Facendo doppio clic su un'icona del desktop viene aperto o avviato l'elemento corrispondente. Se ad esempio si fa doppio clic sull'icona di Internet Explorer, verrà avviato Internet Explorer TECNO 1 REL

142 Il menu start Rappresenta il principale punto di accesso ai programmi, le cartelle e le impostazioni del computer. Il nome "Start" lascia inoltre intuire che si tratta del punto da cui spesso vengono avviate le risorse. Windos vista Windows 8 Tramite il menu Start è possibile eseguire le attività seguenti: Avviare programmi Accedere alle cartelle più utilizzate Cercare file, cartelle e programmi Modificare le impostazioni del computer Ottenere supporto nell'utilizzo del sistema operativowindows Spegnere il computer Disconnettersi da Windows o passare a un account utente diverso Start (fai click per iniziare) I cinque accessi (Ricerca, Condivisione, Start, Dispositivi e Impostazioni) aiutano a svolgere più rapidamente le operazioni più comuni, come la ricerca nel Web e nel PC, la stampa di documenti e l'invio di foto e link tramite . Sono sempre disponibili sul lato destro dello schermo. Il menù include: La lista di tutti Programmi (e applicazioni) installati La lista dei documenti aperti di recente Funzioni di ricerca, aiuto e impostazioni con Pannello di controllo, importantissimo per la gestione delle risorse del PC L accesso al pannello di controllo TECNO 1 REL

143 L'accesso alle impostazioni consente di modificare rapidamente alcune impostazioni comuni (come luminosità e volume, rete, arresto del sistema), e accedere al pannello di controllo per modificare le impostazioni per il PC (come personalizzazione, account utente e dispositivi) Il pannello di controllo è un componente importante dell'interfaccia grafica di Windows che permette agli utenti di vedere e manipolare impostazioni di base del sistema, come aggiungere componenti hardware, installare/rimuovere software, controllare gli account degli utenti, cambiare le opzioni di accessibilità, ecc. In particolare è possibile ispezionare l hardware del PC per la gestione dei dispositivi: Gestione attività (task manager) Task Manager (ctrl-alt-canc). Con il task manager è possibile controllare l attività del PC TECNO 1 REL

144 Visualizza tutti i processi e le applicazioni in esecuzione Monitora le prestazioni della CPU e della memoria virtuale Visualizza informazioni sulle connessioni di rete Le applicazioni includono i programmi eseguiti dall'utente, non i componenti di Windows. Applicazioni elenca i programmi in esecuzione e il loro stato I servizi sono "processo o insieme di processi che aggiunge funzionalità a Windows fornendo supporto ad altri programmi. Un servizio può anche essere visto come un'applicazione eseguita in background (in sottofondo), indipendentemente da qualunque sessione di utente. Molti servizi operano a livello molto basso, per esempio interagendo direttamente con l'hardware TECNO 1 REL

145 Uso di services.msc per avviare/arrestare il servizio Apache su PC I Servizi sono visualizzabili ed eseguibili anche attraverso Start, Esegui, services.msc ) I file.msc Microsoft Management Console 3.0 (MMC 3.0) è un contenitore che riunisce e semplifica le attività quotidiane di gestione del sistema in Windows offrendo riquadri di spostamento, menu, barre degli strumenti e flussi di lavoro comuni a diversi strumenti.????????????????? Microsoft Management Console 3.0 (MMC 3.0) is a framework that unifies and simplifies day-to-day system management tasks on Windows by providing common navigation, menus, toolbars, and workflow across diverse tools. I processi Processi elenca i processi e il relativo utilizzo di risorse. Sono programmi in esecuzione (come explorer.exe, ovvero Esplora risorse) oppure servizi (come l'utility di pianificazione, una delle tante funzioni del processo svchost.exe). Un processo è "spazio degli indirizzi virtuale e informazioni di controllo necessari per l'esecuzione di un programma". In pratica un processo è un programma in esecuzione, un oggetto del sistema operativo che consiste di un programma eseguibile, di un insieme di indirizzi di memoria virtuale e di uno o più thread; un processo è creato quando un programma viene eseguito. Un thread è una parte di programma che può essere eseguita in modo indipendente, contemporaneamente ad altri thread, così da sfruttare al meglio le risorse hardware. Molte grosse applicazioni, come Photoshop, sono multithreaded, cioè usano più thread per eseguire lavori simultanei su più CPU. Dalla schermata processi è possibile controllare l occupazione di Cpu e Memoria per singolo processo. La colonna Nome immagine utente indica chi ha iniziato il processo. Nomi quali System, Servizio di rete, Servizio locale sono stati iniziati automaticamente. Ad un dato momento tanti processi sono sospesi, questo significa che sono in attesa di riprendere l attività. Si possono interrompere processi da questa schermata. Attenzione tanti processi sono critici per il sistema, arrestandoli la macchina non funziona più. Monitoraggio Risorse (Task Manager) (apribile anche da prompt dei comandi : perfmon /res ) 14 - TECNO 1 REL

146 Es errori hardware Errori hardware In questa categoria si tiene traccia degli errori del disco e della memoria. Tipo di dati Tipo componente Dispositivo Tipo errore Data Descrizione Indica il componente in cui si è verificato l'errore. Identifica il dispositivo che provoca errore. Indica il tipo di errore che si è verificato. Specifica la data dell'errore hardware. Sistema Numero totale di handle, thread e processi in esecuzione. Handle: consente ad un programma di usare le risorse di sistema, come le chiavi del registro, font e bitmap. Thread: una parte separata di un programma che esegue una singola attività indipendentemente dalle altre parti Il file di paging e la memoria fisica, o RAM, comprendono la memoria virtuale. In Windows i dati vengono spostati dal file di paging alla memoria in base alle necessità e, in modo analogo, i dati nella memoria fisica vengono spostati nel file di paging per lasciare spazio a nuovi dati. Il file di paging viene anche denominato file di swapping. Se si rileva che il computer sta utilizzando una quantità vicina al valore massimo, è possibile aumentare la dimensione del file di paging. Memoria fisica (MB) Memoria fisica totale, RAM, installata nel computer. Disponibile rappresenta la quantità di memoria disponibile per l'uso. Cache sistema indica la memoria fisica corrente utilizzata per memorizzare le pagine dei file aperti Memoria del kernel (KB) - Memoria utilizzata dal kernel del sistema operativo e dai driver di periferica Memoria assegnata ai programmi e al sistema operativo. A causa della quantità di memoria copiata nel file di paging, denominata memoria virtuale, è possibile che il valore elencato in Picco sia superiore alla quantità massima di memoria fisica (Oppure dal pannello di controllo strumenti di amministrazione prestazioni) Working Set- Working Set is the current size, in bytes, of the Working Set of this process. The Working Set is the set of memory pages touched recently by the threads in the process. If free memory in the computer is above a threshold, pages are left in the Working Set of a process even if they are not in use TECNO 1 REL

147 When free memory falls below a threshold, pages are trimmed from Working Sets. If they are needed they will then be soft-faulted back into the Working Set before leaving main memory. Virtual Bytes- Virtual Bytes is the current size, in bytes, of the virtual address space the process is using. Use of virtual address space does not necessarily imply corresponding use of either disk or main memory pages. Virtual space is finite, and the process can limit its ability to load libraries. Private Bytes- Private Bytes is the current size, in bytes, of memory that this process has allocated that cannot be shared with other processes. Gestione dei processi tasklist e netstat sono due comandi che è possibile lanciare dalla shell del prompt dei comandi). Il primo permette la visualizzazione dei processi attualmente caricati in memoria. Il secondo ci consente di visualizzare le connessioni di rete attive e, cosa più importante per la sicurezza, ci fornisce l'elenco delle porte locali aperte da un processo server. Cfr. Shell dei comandi La shell dei comandi è un programma software che consente di stabilire una comunicazione diretta tra l'utente e il sistema operativo. L'interfaccia utente non grafica della shell dei comandi rappresenta l'ambiente in cui eseguire applicazioni e utilità a caratteri. La shell dei comandi esegue programmi e ne visualizza l'output sullo schermo utilizzando singoli caratteri simili all'interprete dei comandi di MS-DOS, Command.com. La shell dei comandi del sistema operativo server Windows utilizza l'interprete dei comandi Cmd.exe, che carica le applicazioni e indirizza il flusso di informazioni tra di esse, per convertire l'input dell'utente in un formato comprensibile dal sistema operativo. tasklist svc Si possono notare il nome del processo, il suo PID cioè il suo identificatore numerico univoco all'interno del sistema e i servizi compresi in ciascun processo. E' evidente che alcuni di questi processi gestiscono molti servizi contemporaneamente e che svchost.exe è presente addirittura in quattro istanze diverse in modo da gestire quattro gruppi distinti di servizi netstat -ano ci consente di visualizzare le connessioni di rete attive e, cosa più importante per i nostri scopi, ci fornisce l'elenco delle porte locali aperte da un processo server. Dal punto di vista specifico della sicurezza e della vulnerabilità, la disabilitazione dei componenti non necessari contribuisce a limitare l'esposizione del sistema ad attacchi esterni e ad accessi non autorizzati. Altro aspetto da non sottovalutare è l'apertura di porte TCP e UDP da parte di alcuni servizi di rete. Limitare il numero di porte aperte, soprattutto sui sistemi in cui non è installato un firewall, è sempre una buona regola e arrestare i servizi di rete non utilizzati può risolvere il problema in modo efficace TECNO 1 REL

148 netstat -ano con il protocollo l indirizzo IP e il numero di porta Alcuni comandi utili (http://www.reviversoft.com/it/blog/2013/01/useful-command-line-instructions/) sfc / scannow Questo comando ha la funzione di scansione, riparazione, sostituzione e ripristino di qualsiasi file di sistema operativo danneggiato, mancante o alterata. L utilizzo di questo comando può aiutare nel recupero da un virus o qualche altra cosa che potrebbe essere la causa di problemi di prestazioni. ipconfig Questo comando consente di controllare i collegamenti. Relativamente semplice fare se pensi che ci sia qualche problema con le tue connessioni. ping Il ping è un modo semplice per controllare se si è connessi a internet, e anche un ottimo modo per vedere la qualità della connessione a un particolare sito web o server. Digitare ping reviversoft.com e vedere quali risultati si ottiene! msconfig Questo apre un menù di opzioni di boot compreso quello dei servizi avviati quando si accende il computer che può essere estremamente utile se siete afflitti con tempi di avvio lenti o lag generale durante l utilizzo del computer. cleanmgr.exe Questo verrà eseguito un programma Pulitura disco sul computer, in modo da liberare spazio nel vostro disco rigido e può anche migliorare le prestazioni. chkdsk Questo farà eseguire un Controllo disco, che risolverà tutti i problemi che potete avere con il vostro disco rigido. Attenzione: questo richiede un molto, molto tempo e sarà in ritardo il computer. E una buona cosa da fare di tanto in tanto, però. desk.cpl Si aprirà una schermata che consente di modificare la visualizzazione, l orientamento del display, e la risoluzione del display. avviare Conoscere il nome di un file di programma, ma non ho voglia di cercarlo? Basta digitare il nome del proprio eseguibile dopo l avvio, e sarete pronti per partire. Se si utilizza Google Chrome, un buon esempio potrebbe essere: avviare chrome.exe perfmon / res Si aprirà il vostro monitor di risorse e visualizzare le prestazioni del sistema attuale. Simile al Task Manager, il Resource Monitor è molto specifiche su ciò che i processi ei servizi attivi stanno facendo e quale effetto stanno avendo sulla tua performance trovare cosa sta rallentando voi giù utilizzando questo. dxdiag Ultimo ma non meno importante, quello che se si hanno problemi grafici durante la visione di un film o di un gioco? DirectX è il software che si occupa di come la tua carta schermi video cosa c è sul vostro monitor e digitare dxdiag opens up test di diagnostica utili che possono aiutare a ottenere il vostro problema risolto File System Esplora La voce Computer oppure Esplora (tasto di destra), permette la visualizzazione dell albero del File System di Windows TECNO 1 REL

Codifica dell informazione

Codifica dell informazione Codifica dell informazione Il calcolatore memorizza ed elabora vari tipi di informazioni Numeri, testi, immagini, suoni Occorre rappresentare tale informazione in formato facilmente manipolabile dall elaboratore

Dettagli

Sistemi di numerazione: generalità

Sistemi di numerazione: generalità Sistemi di numerazione: generalità Nel corso della storia sono stati introdotti diversi sistemi di numerazione, dettati di volta in volta dalle specifiche esigenze dei vari popoli. Poiché ogni numero maggiore

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

LA NUMERAZIONE BINARIA

LA NUMERAZIONE BINARIA LA NUMERAZIONE BINARIA 5 I SISTEMI DI NUMERAZIONE Fin dalla preistoria l uomo ha avuto la necessità di fare calcoli, utilizzando svariati tipi di dispositivi: manuali (mani, bastoncini, sassi, abaco),

Dettagli

Lezione 2: Codifica binaria dell informazione. Codifica binaria

Lezione 2: Codifica binaria dell informazione. Codifica binaria Lezione 2: Codifica binaria dell informazione Codifica binaria Elaborazione di dati binari Materiale didattico Lucidi delle lezioni, disponibili al sito: http://wwwinfo.deis.unical.it/~irina Oppure sul

Dettagli

CODIFICA BINARIA. ... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità.

CODIFICA BINARIA. ... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità. I METODI DI NUMERAZIONE I numeri naturali... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità. Il numero dei simboli usati per valutare la numerosità costituisce la base

Dettagli

Rappresentazione e Memorizzazione dei Dati

Rappresentazione e Memorizzazione dei Dati Rappresentazione e Memorizzazione dei Dati Giuseppe Nicosia CdL in Matematica (Laurea Triennale) Facoltà di Scienze MM.FF.NN. Università di Catania Bit e loro Memorizzazione Definizioni Algoritmo: una

Dettagli

Tecnologia dell'informazione e della Comunicazione (TIC) Modulo 2: Informazione, dati e codifica

Tecnologia dell'informazione e della Comunicazione (TIC) Modulo 2: Informazione, dati e codifica Tecnologia dell'informazione e della Comunicazione (TIC) Modulo 2: Informazione, dati e codifica Informazione: è lo scambio di conoscenza tra due o più persone nonché il significato che le persone coinvolte

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Corso di Laurea in Scienze dell'educazione, 2014-15 Lorenzo Bettini http://www.di.unito.it/~bettini Informazioni generali Ricevimento studenti su appuntamento Dipartimento di

Dettagli

Megabyte (MB) = 1024KB 1 milione di Byte (e.g. un immagine di 30MB) Gigabyte (GB) = 1024MB 1 miliardo di Byte (e.g. un hard disk da 80GB)

Megabyte (MB) = 1024KB 1 milione di Byte (e.g. un immagine di 30MB) Gigabyte (GB) = 1024MB 1 miliardo di Byte (e.g. un hard disk da 80GB) Unità di misura per l informatica Un bit (b) rappresenta una cifra binaria. E l unità minima di informazione. Un Byte (B) è costituito da 8 bit. Permette di codificare 256 entità di informazione distinte

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori Informazione e computer Si può rappresentare l informazione attraverso varie forme: Numeri Testi Suoni Immagini 0001010010100101010 Computer Cerchiamo di capire come tutte queste informazioni possano essere

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

Numerazione binaria e rappresentazione delle informazioni

Numerazione binaria e rappresentazione delle informazioni Numerazione binaria e rappresentazione delle informazioni Info Sito del corso: http://home.dei.polimi.it/amigoni/informaticab.html Nicola Basilico, nicola.basilico@gmail.com Problema Abbiamo informazioni

Dettagli

MODULO 1. 1.1 Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale

MODULO 1. 1.1 Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale MODULO 1 1.1 Il personal computer ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale 1.1 Il personal computer Il PC Hardware e software Classificazioni del software Relazione tra

Dettagli

Rappresentazione binaria dei numeri negativi

Rappresentazione binaria dei numeri negativi Introduzione all Informatica 1 Conversione decimale binario (continuazione) La conversione di un numero decimale (es. 112) in binario si effettua tramite l algoritmo della divisione, dividendo successivamente

Dettagli

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Dettagli

Indice. 1 Rappresentazione dei dati... 3

Indice. 1 Rappresentazione dei dati... 3 INSEGNAMENTO DI INFORMATICA DI BASE LEZIONE II CODIFICA DELL'INFORMAZIONE PROF. GIOVANNI ACAMPORA Indice 1 Rappresentazione dei dati... 3 1.1. Rappresentazione dei numeri... 3 1.1.1 Rappresentazione del

Dettagli

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica, Chimica, Elettrica e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011 Docente: Gian

Dettagli

L informatica comprende:

L informatica comprende: Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione

Dettagli

Codifica delle Informazioni

Codifica delle Informazioni Codifica delle Informazioni Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Panoramica Le informazioni gestite dai sistemi di elaborazione devono essere codificate

Dettagli

Rappresentazione dell informazione. Bogdan Maris (2014-2015)

Rappresentazione dell informazione. Bogdan Maris (2014-2015) Rappresentazione dell informazione 1 Rappresentare l informazione Per elaborare l informazione è necessario saperla rappresentare in una forma comprensibile per l esecutore Bisogna stabilire un codice

Dettagli

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi: Modulo 8 Elettronica Digitale Contenuti: Introduzione Sistemi di numerazione posizionali Sistema binario Porte logiche fondamentali Porte logiche universali Metodo della forma canonica della somma per

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio Rappresentazione dell Informazione

Dettagli

L'informazione e la sua codifica

L'informazione e la sua codifica L'informazione e la sua codifica Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Informatica e telecomunicazione Cos è l informatica informatica? lo studio sistematico degli

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 2 Rappresentazione delle informazioni: numeri e caratteri 1 Codice La relazione che associa ad ogni successione ben formata di simboli di

Dettagli

Rappresentazione di informazioni con un alfabeto finito

Rappresentazione di informazioni con un alfabeto finito Rappresentazione di informazioni con un alfabeto finito Sia A = { a 1,, a k } un insieme (alfabeto) di k simboli, detti anche lettere. Quante sono le sequenze composte da n simboli (anche ripetuti) di

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Codifica binaria dei numeri

Codifica binaria dei numeri Codifica binaria dei numeri Caso più semplice: in modo posizionale (spesso detto codifica binaria tout court) Esempio con numero naturale: con 8 bit 39 = Codifica in virgola fissa dei numeri float: si

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Appunti di Sistemi e Automazione

Appunti di Sistemi e Automazione Appunti di Sistemi e Automazione Il modello o macchina di Von Neumann rappresenta un computer con i suoi componenti principali e la sua organizzazione logico-funzionale. Tale progetto risale al 1945/1946.

Dettagli

Codifica dei numeri. Rappresentazione dell informazione

Codifica dei numeri. Rappresentazione dell informazione Rappresentazione dell informazione Rappresentazione informazione Elementi di aritmetica dei computer Organizzazione della memoria e codici correttori Salvatore Orlando Differenza tra simbolo e significato

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore Dispensa di Fondamenti di Informatica Architettura di un calcolatore Hardware e software La prima decomposizione di un calcolatore è relativa ai seguenti macro-componenti hardware la struttura fisica del

Dettagli

SISTEMI DI NUMERAZIONE

SISTEMI DI NUMERAZIONE Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Medica SISTEMI DI NUMERAZIONE Come nei calcolatori sono rappresentati i numeri Numeri I numeri rappresentano

Dettagli

IL COMPUTER APPUNTI PER LEZIONI NELLE 3 CLASSI LA MACCHINA DELLA 3 RIVOLUZIONE INDUSTRIALE. A CURA DEL Prof. Giuseppe Capuano

IL COMPUTER APPUNTI PER LEZIONI NELLE 3 CLASSI LA MACCHINA DELLA 3 RIVOLUZIONE INDUSTRIALE. A CURA DEL Prof. Giuseppe Capuano IL COMPUTER LA MACCHINA DELLA 3 RIVOLUZIONE INDUSTRIALE APPUNTI PER LEZIONI NELLE 3 CLASSI A CURA DEL Prof. Giuseppe Capuano LA TRASMISSIONE IN BINARIO I computer hanno un loro modo di rappresentare i

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

Corso di informatica di base

Corso di informatica di base Rel. 1.0 16.10.2010 Luigi Ferrari Indice 1. Modulo 1 - Concetti base dell'informatica...1 1.1. Dato e informazione...1 1.1.1. Misura dell'informazione...1 1.2. Sistema decimale e sistema binario, ma non

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione La Codifica dell informazione (parte 1) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente:

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI PROF. GIUSEPPE PORCARO PRO.SSA MARIA TERESA TATTOLI 1 SOMMARIO I SISTEMI DI ELABORAZIONE... 3 ARCHITETTURA DELL HARDWARE DI UN SISTEMA DI ELABORAZIONE... 4 La

Dettagli

Informatica 1. Riepilogo

Informatica 1. Riepilogo Informatica 1 Hardware e Software ing. Luigi Puzone 1 Riepilogo Nella lezione scorsa abbiamo visto i seguenti concetti di base Dati e informazioni e loro ciclo di elaborazione Hardware e Software Tipologie

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

MONIA MONTANARI. Appunti di Trattamento Testi. Capitolo 1 Il Computer

MONIA MONTANARI. Appunti di Trattamento Testi. Capitolo 1 Il Computer MONIA MONTANARI Appunti di Trattamento Testi Capitolo 1 Il Computer 1. Introduzione La parola informatica indica la scienza che rileva ed elabora l informazione, infatti : Informatica Informazione Automatica

Dettagli

CAD B condotto da Daniela Sidari 05.11.2012

CAD B condotto da Daniela Sidari 05.11.2012 CAD B condotto da Daniela Sidari 05.11.2012 COS È L INFORMATICA? Il termine informatica proviene dalla lingua francese, esattamente da INFORmation electronique ou automatique ; tale termine intende che

Dettagli

CONCETTI BASE dell'informatica Cose che non si possono non sapere!

CONCETTI BASE dell'informatica Cose che non si possono non sapere! CONCETTI BASE dell'informatica Cose che non si possono non sapere! Pablo Genova I. I. S. Angelo Omodeo Mortara A. S. 2015 2016 COS'E' UN COMPUTER? È una macchina elettronica programmabile costituita da

Dettagli

PROGRAMMA di INFORMATICA E LABORATORIO Classi prime Servizi Commerciali (Grafica)

PROGRAMMA di INFORMATICA E LABORATORIO Classi prime Servizi Commerciali (Grafica) Istituto Kandinsky Anno Scolastico 2011-2012 PROGRAMMA di INFORMATICA E LABORATORIO Classi prime Servizi Commerciali (Grafica) INFORMAZIONE, DATI E LORO CODIFICA o Definizione di Informatica o Differenza

Dettagli

Rappresentazione dell informazione Codifica Binaria

Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica - D. Talia - UNICAL 1 Rappresentazione dell informazione Tutta l'informazione in un calcolatore è

Dettagli

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. A partire da questa lezione, ci occuperemo di come si riescono a codificare con sequenze binarie, quindi con sequenze di 0 e 1,

Dettagli

Introduzione all Informatica

Introduzione all Informatica Introduzione all Informatica Lezione 4 Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila diruscio@di.univaq.it Nota Questi lucidi sono tratti dal materiale distribuito dalla

Dettagli

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE 7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE TIPO DI DATO Un tipo di dato è una entità caratterizzata dai seguenti elementi: un insieme X di valori che raprresenta il dominio del tipo di dato; un

Dettagli

Informatica Generale 02 - Rappresentazione numeri razionali

Informatica Generale 02 - Rappresentazione numeri razionali Informatica Generale 02 - Rappresentazione numeri razionali Cosa vedremo: Rappresentazione binaria dei numeri razionali Rappresentazione in virgola fissa Rappresentazione in virgola mobile La rappresentazione

Dettagli

Nel seguito verranno esaminati i diversi tipi di dato e il modo in cui essi sono rappresentati all interno del calcolatore.

Nel seguito verranno esaminati i diversi tipi di dato e il modo in cui essi sono rappresentati all interno del calcolatore. In una delle molteplici possibili definizioni di informazione, questa viene fatta corrispondere a qualunque elemento, in grado di essere rappresentato e comunicato, che consenta di fornire o aumentare

Dettagli

Nel seguito verranno esaminati i diversi tipi di dato e il modo in cui essi sono rappresentati all interno del calcolatore.

Nel seguito verranno esaminati i diversi tipi di dato e il modo in cui essi sono rappresentati all interno del calcolatore. In una delle molteplici possibili definizioni di informazione, questa viene fatta corrispondere a qualunque elemento, in grado di essere rappresentato e comunicato, che consenta di fornire o aumentare

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Corso basilare di programmazione

Corso basilare di programmazione Parte vi Corso basilare di programmazione Introduzione............................................ 947 Programma didattico.................................. 947 Strumenti per la compilazione..........................

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

I SISTEMI DI NUMERAZIONE

I SISTEMI DI NUMERAZIONE ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA I SISTEMI DI NUMERAZIONE Prof. G. Ciaschetti Fin dall antichità, l uomo ha avuto il bisogno di rappresentare le quantità in modo simbolico. Sono nati

Dettagli

La codifica dell informazione

La codifica dell informazione La codifica dell informazione Parte I Sui testi di approfondimento: leggere dal Cap. del testo C (Console, Ribaudo):.,. fino a pg.6 La codifica delle informazioni Un calcolatore memorizza ed elabora informazioni

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente

Dettagli

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti Un ripasso di aritmetica: Rappresentazione binaria - operazioni A queste rappresentazioni si possono applicare le operazioni aritmetiche: riporti 1 1 0 + 1 0 = 1 0 0 24 Un ripasso di aritmetica: Rappresentazione

Dettagli

Lez. 2 L elaborazione

Lez. 2 L elaborazione Lez. 2 L elaborazione Prof. Giovanni Mettivier 1 Dott. Giovanni Mettivier, PhD Dipartimento Scienze Fisiche Università di Napoli Federico II Compl. Univ. Monte S.Angelo Via Cintia, I-80126, Napoli mettivier@na.infn.it

Dettagli

Codifica binaria e algebra di Boole

Codifica binaria e algebra di Boole Codifica binaria e algebra di Boole Corso di Programmazione A.A. 2008/09 G. Cibinetto Contenuti della lezione Codifica binaria dell informazione Numeri naturali, interi, frazionari, in virgola mobile Base

Dettagli

Perché la traduzione in formato numerico è tanto importante? Come avviene la conversione? Perchè vogliamo convertire l'informazione?

Perché la traduzione in formato numerico è tanto importante? Come avviene la conversione? Perchè vogliamo convertire l'informazione? IL MONDO DIGITALE La rivoluzione digitale Sistema Le immagini diventano numeri Dal testo ai numeri e viceversa E i suoni? Anche il video diventa digitale La rivoluzione digitale Musica digitale, cinema

Dettagli

Rappresentazione binaria

Rappresentazione binaria Rappresentazione binaria DOTT. ING. LEONARDO RIGUTINI RICERCATORE ASSOCIATO DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Base generica: B A = {... }, con A = B, sequenze di n simboli (cifre) c n

Base generica: B A = {... }, con A = B, sequenze di n simboli (cifre) c n Rappresentare le informazioni con un insieme limitato di simboli (detto alfabeto A) in modo non ambiguo (algoritmi di traduzione tra codifiche) Esempio: numeri interi assoluti Codifica decimale (in base

Dettagli

MDRSystem di Rosario Medaglia Modulo 1

MDRSystem di Rosario Medaglia Modulo 1 IL COMPUTER Esistono principalmente due tipi di computer di uso comune: IL PC, PERSONAL COMPUTER è un computer che viene posato su un tavolo e che per la sua considerevole mole ed accessori a seguito,

Dettagli

Cosa è l informatica

Cosa è l informatica Cosa è l informatica Informazione + automatica Scienza del trattamento automatico delle informazioni Insieme dei processi e delle tecnologie che rendono possibile Elaborare (trasformare) l informazione

Dettagli

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE La base del sistema decimale è 10 I simboli del sistema decimale sono: 0 1 2 3 4 5 6 7 8 9 Il sistema di numerazione decimale è un sistema posizionale. L aggettivo

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 25 febbraio 2015. Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 25 febbraio 2015. Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 25 febbraio 2015 1 / 42 INFORMATICA Varie definizioni: Scienza degli elaboratori elettronici (Computer Science)

Dettagli

LIBRO DI TESTO: Il nuovo Dal bit al web AUTORI: Barbero-Vaschetto CASA EDITRICE: LINX

LIBRO DI TESTO: Il nuovo Dal bit al web AUTORI: Barbero-Vaschetto CASA EDITRICE: LINX PROGRAMMA EFFETTIVAMENTE SVOLTO Disciplina: INFORMATICA Docente: SALVATORE D URSO L. S. Scienze Applicate - Classe: PRIMA - Sezione: N - Anno Scolastico 2014/2015 LIBRO DI TESTO: Il nuovo Dal bit al web

Dettagli

Corso: Informatica+ Andrea Cremonini. Lezione del 20/10/2014

Corso: Informatica+ Andrea Cremonini. Lezione del 20/10/2014 Corso: Informatica+ Andrea Cremonini Lezione del 20/10/2014 1 Cosa è un computer? Un elaboratore di dati e immagini Uno smartphone Il decoder di Sky Una console di gioco siamo circondati! andrea.cremon

Dettagli

ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA

ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA L INFORMAZIONE L informazione è un concetto (legato, ma indipendente dal codice usato). Non riguarda solo interazioni umane. L informazione analizza il

Dettagli

Corso base per l uso del computer. Corso organizzato da:

Corso base per l uso del computer. Corso organizzato da: Corso base per l uso del computer Corso organizzato da: S Programma del Corso Ing. Roberto Aiello www.robertoaiello.net info@robertoaiello.net +39 334.95.75.404 S S Informatica S Cos è un Computer Il personal

Dettagli

Unione Europea Repubblica Italiana Regione Calabria Cooperativa sociale

Unione Europea Repubblica Italiana Regione Calabria Cooperativa sociale INFORMATICA Lezione 1 Docente Ferrante Francesco fracco2004@alice.it Sito web: http://luis7.altervista.org Obiettivi del corso Una parte generale sull'introduzione dei concetti di base dell'informatica

Dettagli

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI Scienza ed industria hanno oggi costituito legami molto forti di collaborazione che hanno portato innovazione tecnologica sia a livello organizzativo-amministrativo

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi a.a. 2010/2011 Francesco Fontanella Il Sistema Operativo Sistema Operativo 2 Il Sistema Operativo Il Sistema Operativo è uno strato

Dettagli

- Libro di Testo ECDL Open il manuale Syllabus 4.0 Ed. Apogeo. - Lucidi...riassuntivi! - Io ;) paolo.moschini@lugpiacenza.org

- Libro di Testo ECDL Open il manuale Syllabus 4.0 Ed. Apogeo. - Lucidi...riassuntivi! - Io ;) paolo.moschini@lugpiacenza.org ECDL Open Materiale e riferimenti - Libro di Testo ECDL Open il manuale Syllabus 4.0 Ed. Apogeo - Lucidi...riassuntivi! - Io ;) paolo.moschini@lugpiacenza.org ECDL-Modulo-1-Parte-1 Concetti di base della

Dettagli

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO NOME: COGNOME: LAUREA IN: ABILITAZIONI CONSEGUITE: ESPERIENZE DIDATTICHE

Dettagli

Informatica 1. 6 Sistemi operativi e software. ing. Luigi Puzone

Informatica 1. 6 Sistemi operativi e software. ing. Luigi Puzone Informatica 1 6 Sistemi operativi e software ing. Luigi Puzone Windows caratteristiche principali: Windows è un Sistema Operativo Con Interfaccia Grafica Multiutente Multitasking Multithreading Multiprocessing

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

IL COMPUTER. Nel 1500 Leonardo Da Vinci progettò una macchina sui pignoni dentati in grado di svolgere semplici calcoli. Nel 1642 Blase Pascal

IL COMPUTER. Nel 1500 Leonardo Da Vinci progettò una macchina sui pignoni dentati in grado di svolgere semplici calcoli. Nel 1642 Blase Pascal IL COMPUTER. Nel 1500 Leonardo Da Vinci progettò una macchina sui pignoni dentati in grado di svolgere semplici calcoli. Nel 1642 Blase Pascal realizzò la prima macchina da calcolo con un principio meccanico

Dettagli

Sistemi di numerazione: binario, ottale ed esadecimale

Sistemi di numerazione: binario, ottale ed esadecimale Sistemi di numerazione: binario, ottale ed esadecimale Codifica binaria dell Informazione Bit Byte Kilobyte Megabyte Gigabyte 0/1 (si/no) 00010010 (8 bit) 2 10 = 1024 byte 2 20 ~ 1.000.000 byte 2 30 ~

Dettagli

I Sistemi di numerazione e la rappresentazione dei dati

I Sistemi di numerazione e la rappresentazione dei dati I Sistemi di numerazione e la rappresentazione dei dati LA RAPPRESENTAZIONE DELLE INFORMAZIONI (1) Per utilizzare un computer è necessario rappresentare in qualche modo le informazioni da elaborare e il

Dettagli

INFORMATICA DI BASE CLASSE PRIMA Prof. Eandi Danilo www.da80ea.altervista.org INFORMATICA DI BASE

INFORMATICA DI BASE CLASSE PRIMA Prof. Eandi Danilo www.da80ea.altervista.org INFORMATICA DI BASE INFORMATICA DI BASE CHE COSA È UN COMPUTER Un computer è un elaboratore elettronico, cioè una macchina elettronica programmabile in grado di eseguire automaticamente operazioni logico-aritmetiche sui dati

Dettagli

APPUNTI CONCETTI DI BASE

APPUNTI CONCETTI DI BASE www.informarsi.net APPUNTI CONCETTI DI BASE Struttura di un elaboratore Un computer è paragonabile a una grande scatola in cui sono immessi dei dati, i quali, una volta immagazzinati, elaborati e processati,

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

Lezione 3 Prof. Angela Bonifati

Lezione 3 Prof. Angela Bonifati Lezione 3 Prof. Angela Bonifati Complemento a 2 Algebra booleana Le infrastrutture hardware Esercizi sulla codifica dei numeri Eseguire le seguenti conversioni: Da base 2 e 16 in base 10: 110 2 =???? 10

Dettagli

Corso basilare di programmazione «

Corso basilare di programmazione « Parte iv Corso basilare di programmazione Introduzione................................................................... 601 Programma didattico.......................................................

Dettagli

Quiz ecdl primo modulo. Riflettere prima di decidere la risposta ritenuta esatta

Quiz ecdl primo modulo. Riflettere prima di decidere la risposta ritenuta esatta Quiz ecdl primo modulo Riflettere prima di decidere la risposta ritenuta esatta 1 Che cosa è il Bit? British Information Target Binary Digit La misura dell'informazione DIA 2 DI 67 Che differenza c'è tra

Dettagli

Modulo 1 Esercitazione n 1

Modulo 1 Esercitazione n 1 Modulo 1 Esercitazione n 1 Apri il programma di elaborazione testi WordPad e ricopia il testo che segue (immagini escluse), rispettando la formattazione. Per allineare il testo in colonne occorre spostarsi

Dettagli

I sistemi di elaborazione

I sistemi di elaborazione 2 I sistemi di elaborazione 2.0 I sistemi di elaborazione c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 2.0 0 2 I sistemi di elaborazione Architettura

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16 Un ripasso di aritmetica: Conversione dalla base 1 alla base 16 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base sedici sarà del tipo: c m c m-1... c 1 c (le c i sono cifre

Dettagli

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Hardware, software e periferiche Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Riepilogo - Concetti di base dell informatica L'informatica è quel settore scientifico disciplinare

Dettagli

Nella prima lezione... Che cos è il Digitale. Prima parte: Che cos è il Digitale. Che cos è il Digitale. Che cos è il Digitale

Nella prima lezione... Che cos è il Digitale. Prima parte: Che cos è il Digitale. Che cos è il Digitale. Che cos è il Digitale !"$#%!" #% Nella prima lezione... Definizione di Informatica Cosa è una soluzione algoritmica Esempi di algoritmi cicalese@dia.unisa.it 2 Prima parte: Società dell informazione Ma cosa vuol dire società

Dettagli