Tecno 1
Tecnologie e Progettazione dei Sistemi Informatici e di Telecomunicazione
dai numeri binari ai Sistemi Operativi
Paolo Macchi
ISIS Cipriano Facchinetti Castellanza – 2013-15
1
- TECNO 1 REL. 15.12.14
5
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 http://www.focusjunior.it/W_la_scuola/Navigo_e_imparo/2010/novembre/miti-greci-prometeo-il-gigante-che-amava-l-umanita.aspx]
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 http://www.rai.tv/dl/RaiTV/programmi/media/ContentItem-e5014af6-490d-4fca-897e-940ffa36a773-radio1.html]
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. 15.12.14
5
Tecno 1
• Il digitale: ma di cosa stiamo parlando? 7
Il Sistema di Elaborazione
bit e byte
Hardware
Software
10
11
13
13
14
• Rappresentazione dell’ informazione numerica
Rappresentazione dei numeri naturali
Numerazione binaria
Conversione binario-decimale-binario
Reti
Numerazione esadecimale
Conversione decimale-esadecimale-decimale
Conversione binario-esadecimale-binario
Rappresentazione di numeri interi
Somma binaria
Somma in esadecimale
Modulo e segno
Complemento a 2
Sottrazione binaria in complemento a 2
Rappresentazione dei numeri reali
Rappresentazione in virgola fissa
Conversione Decimale->Binario di numeri frazionari in virgola fissa
Rappresentazione in virgola mobile (floating point- IEEE754)
Conversione decimale –> floating point
Operazioni con la rappresentazione floating point
Proprietà dell’aritmetica in virgola mobile
BCD
14
15
15
17
17
17
18
18
18
19
19
20
21
22
22
22
23
24
25
25
26
• Comunicazione e Codici 28
Informazione
Schema fondamentale della comunicazione.
L’interazione uomo-macchina
Codici per la rilevazione e la correzione degli errori
Codifica dei caratteri alfanumerici
ASCII a 7 bit (ISO 646)
ASCII (esteso) a 8 bit (ISO 8859)
Unicode
Codice QR
28
30
32
33
34
35
35
36
38
• codifica di immagini e suoni
39
Immagini
Grafica Digitale
Grafica Raster (bitmap)
Grafica vettoriale
Suoni
•
Esercizi riepilogativi
Compressione dati
Ottimizzazione dei messaggi
Tecniche non distruttive (senza perdita di informazione)
Tecniche distruttive (con perdita di informazione)
39
40
40
42
43
44
45
45
46
48
• Introduzione ai Sistemi Operativi
50
Cos’è un Sistema Operativo
Evoluzione
Prima generazione (1945-1955)
Seconda generazione (1955 – 1965)
Terza generazione (1965 – 1980)
Quarta generazione (1980 – 1990 –> ai giorni nostri)
Sensori e MEMS
Sensori
MEMS
50
52
53
53
55
57
60
60
60
• Struttura di un Sistema operativo
Il modello onion skin
65
64
•
I PROCESSI
67
Definizione di processo
Descrittore di processo (PCB)
Interazioni tra processi
Relazioni di precedenza
Sistemi multiprogrammati
Time sharing
Stati di un processo
67
68
69
70
71
72
73
3
- TECNO 1 REL. 15.12.14
5
Il nucleo
Virtualizzazione CPU
Scheduler – Algoritmi di scheduling
First Come First Served (FCFS)
Round Robin (RR)
Shortest job first
Meccanismo di priorità
Thread
La priorità in Windows
La priorità in Linux
75
75
76
77
78
79
79
80
81
82
84
• Processi sequenziali e concorrenti
Corse critiche, Interferenza e Cooperazione
Sezioni critiche – Mutua esclusione
Soluzioni
Semafori
SEMAFORO BINARIO
Mutua esclusione
Produttore / consumatore :
SEMAFORO GENERALIZZATO
Produttore / consumatore con buffer multiplo
Problemi:
Deadlock
Primitive di Comunicazione tra Processi
Monitor
Perché i monitor?
Un monitor è …
Sincronizzazione di thread in Java
I thread in Java
84
85
85
86
87
87
87
89
89
90
94
95
96
96
96
96
97
99
• SO: due esempi
Windows
Processi e thread secondo Microsoft
Creare un'applicazione Visual Basic .NET con thread
Linux-Unix http://www.linuxfoundation.org/
Lista comandi LINUX
http://www.di.unito.it/~vercelli/works/command-summary.html
Sistemi operativi basati su Kernel Linux
Android
iOS
BlackBerry Tablet OS http://us.blackberry.com/developers/tablet
99
101
102
104
106
107
107
107
107
108
• Gestione della Memoria
Indirizzi di memoria fisici e logici
Traduzione di indirizzi logici in fisici
Memory-Management Unit (MMU)
Swapping
Allocazione della memoria
Allocazione contigua
Allocazione non contigua
segmentazione
Memoria Virtuale
Paginazione su richiesta (Demand Paging)
Page Fault
110
110
110
111
112
112
113
114
114
115
115
110
• File System
118
Il concetto di file
File system
Il File System Logico
File system fisico
Metodi di assegnazione dello spazio su disco
FAT File Allocation Table
Assegnazione indicizzata
NTFS
118
118
118
120
121
121
122
123
• Protezione e sicurezza 125
Protezione
Sicurezza
Autenticazione (controllo dell’accesso) degli utenti
Minacce ai programmi
125
125
125
126
•
Esercitazioni
127
IL PC... in pratica
La scheda madre...
I componenti di una scheda madre
BOOT: avvio del PC
Memorie di massa
•
127
128
129
133
134
4
- TECNO 1 REL. 15.12.14
5
flash memory card
L’hard disk
DVD
IL TECNICO: ESERCITAZIONI
135
136
138
139
• Windows
142
Funzionalità
Il menu start
Il pannello di controllo
Gestione attività (task manager)
File System
Esplora
Estensioni dei file e attributi
Esempio
Il prompt dei comandi (cmd)
•
Esercizio guidato
•
ESERCIZI
Il file .bat
•
ESEMPI di file .bat:
OPERAZIONI con VARIABILI
Gruppi e Utenti
Gestione di MMC
Aggiungi snap-in
Il registro di sistema - Windows Registry
•
Installazione di Windows
Procedura Installazione Sistema Operativo (Windows XP)
Windows: avvio (basato su appunti Cisco System)
142
143
144
144
149
149
150
151
153
153
155
156
157
160
162
162
163
164
167
167
168
•
•
Capire i problemi di un dispositivo (troubleshooting)
Il documento WEB: HTML e CSS
Fogli di Stile (CSS)
Attributi di stile
Box model e Schemi di posizionamento
Strumenti di grafica
Paint.net
Finestra principale di Paint.NET
1. Barra del titolo
2. Barra dei menu
3. Barra degli strumenti
4. Elenco immagini
5. Immagine Canvas
6. Strumenti finestra
7. Finestra cronologia
8. Finestra livelli
9. Finestra colori
10. Barra di stato
Movie Maker
169
172
173
174
175
178
178
178
179
179
179
179
179
179
179
179
179
179
179
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: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it
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 www.isisfacchinetti.it , sezione download, per fini esclusivamente didattici e non commerciali. Il documento è
scaricabile liberamente da:
5
- TECNO 1 REL. 15.12.14
5
http://moodle.isisfacchinetti.it/moodle/mod/data/view.php?d=21&rid=517
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 [email protected] , oppure lasciando un
commento al momento del download se siete registrati.
(in copertina : Theodoor Rombouts (1597-1637) – Prometheus)
Convenzioni usate nel testo:
rappresenta una curiosità, un approfondimento
NOTA rappresenta una nota
rappresenta una esercitazione o esempio
http://qrcode.kaywa.com/ link di riferimento
Rappresenta un codice o dei risultati o una segnalazione storica
6
- TECNO 1 REL. 15.12.14
5
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.
http://phet.colorado.edu/en/simulation/sound
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 44100 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. 15.12.14
5
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. 15.12.14
5
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
On
On
Off
On
Off
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 http://www.rossashby.info/).
Nota: Si pensi che la terra era in uno stato gassoso circa 5x10^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 1079 - 1085 . http://unifiedtaoit.blogspot.com/2011/02/metodo-del-tao-inscatolato-nero.html
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. 15.12.14
5
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 (1879-1955)
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. 15.12.14
5
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 5V).
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 10000 litri
1 GB -> un lago 10 milioni di litri
multipli del bit e del Byte:
1
2
Nome
Abbreviazione
(binari) SI
Equivale a
Capacità
bit1
bit
Unità di misura dell’entropia
2ˆ0 bit =1 bit
byte
B
2ˆ3 bit = 8 bit
kilobyte
(KiB) kB
2^10 =1024 ≈ 10 byte
megabyte
(MiB) MB
gigabyte
(GiB) GB
terabyte
(TiB) TB
petabyte
(PiB) PB
exabyte
(EiB) EB
zettabyte
(ZiB) ZB
un carattere alfanumerico
circa 15 righe dattiloscritte
3
2^20 =1048576 ≈
106
2^30 =1073741824 ≈
2^40 ≈
1012
byte
2^50 ≈
1015
byte
2^60 ≈
1018
byte
2^70 ≈
1021
byte
byte
109
byte
un libro di circa 500 pagine.
circa 500'000 pagine.
un milione di libri di 500 pagine ciascuno.
180 volte la Biblioteca del Congresso2
180'000 volte la Biblioteca del Congresso
180 milioni di volte la Biblioteca del Congresso
la parola deriva dalla contrazione dell'espressione inglese binary unit.
Si trova a Washington D.C., negli Stati Uniti: con 28 milioni di volumi è la più grande biblioteca del mondo.
11
- TECNO 1 REL. 15.12.14
5
Nome
Abbreviazione
(binari) SI
yottabyte
(YiB) YB
Equivale a
2^80 ≈
1024
Capacità
byte
180 miliardi di volte la Biblioteca del Congresso
(cfr http://www.t1shopper.com/tools/calculate/ per IEC International Standard Conversioni http://www.unit-conversion.info/computer.html )
Ad esempio un file della dimensione di
1000byte corrisponde a:
•
8000 .......... bits
•
1000 .......... bytes (10^3 byte)
•
0.9765625 .. kilobytes (circa 1KB, cioè 8Kbit)
•
0.0009536743 megabytes (circa 10^-3 *10^6)
•
0.0000009313 gigabytes
•
0.0000000009 terabytes
100.000.000 Byte:
800 000 000 .......... bit
100 000 000 .......... byte (10^8byte)
97 656. 25 ....... kilobyte (circa 100 000 KB (10^5*10^3= 10^5 Kbyte ))
95.3674316406 megabyte (circa 100 MB (100*10^6 Byte))
0.0931322574 gigabyte ( 10^8 = 10^-1*10^9= .1 GB)
0.0000909494 terabyte (10^8 = 10^-4 *10^12)
0.0000000888 petabyte
Per comodità le conversioni in potenze di 2: http://www.maiuscolo.net/info/Convertitore%20Byte.htm
1.
2.
3.
4.
5.
6.
7.
Esercizi (http://www.di.unito.it/~sproston/Psicologia/0607/esercizio_teorico1_soluzioni.html):
un file musicale del tuo cantante preferito quanti byte occupa?
(Ex. “Years “ – Alesso – 4.24MB, http://www.youtube.com/watch?v=EGYaxYaxD_M)
Dati 6 bit per la codifica, quante informazioni distinte si possono rappresentare?
26=64 informazioni distinti
Dato un byte per la codifica, quante informazioni distinte si possono rappresentare?
Un byte = 8 bit, 28=256 informazioni distinti
Quanti bit si devono utilizzare per rappresentare 20 informazioni distinte?
Almeno 5 bit, perché 25=32 => 20 (4 bit non sono sufficiente, perché 24=16 < 20)
Un'immagine a 256 colori è formata da 400x400 pixel. Quanto spazio occupa?
Ogni pixel richiede un byte (=8 bit, perché 28=256, sufficiente per rappresentare 256 colori); l'immagine ha 400 x 400 = 160000 pixel; l'immagine
occupa 160000 byte (= 1280000 bit)
Problema: vuoi copiare i dati del tuo disco fisso su CD-ROM.
Nel disco fisso ci sono 5GB 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 Mbyte = 2.100 Mbyte hai in totale 2.100Mbyte a disposizione per il salvataggio. Convertendo i Mbyte in
Gbyte (2*10^3*10^6 = 2*10^9 = 2Gbyte) scopri che hai a disposizione poco più di 2Gbyte mentre te ne servono 5! Risultato: non ti bastano, hai
bisogno di altri CD-ROM!
Si desidera salvare su file un testo di 100 pagine, ognuna composta da 50 righe di 70 caratteri. Calcolare la dimensione del file espressa in KB e MB.
50*70=3.500 caratteri per pagina (= n. byte se ogni carattere è composto da 1 byte, cioè 8bit)
3.500*100=3.5 *10^5 = numero byte del testo pari a 350KB , pari a 0,35MB
12
- TECNO 1 REL. 15.12.14
5
8.
quanti diversi valori posso rappresentare con 5 bit?
Risposta: con 5 bit posso rappresentare 2^5 = 32 diversi valori.
9. quanti diversi valori posso rappresentare con 2 byte?
2 byte = 16 bit, quindi posso rappresentare 2^16 = 65536 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 = 10.
11. 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!
http://home.deib.polimi.it/amigoni/teaching/CodificaBinariaInformazione.pdf
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. 15.12.14
5
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 http://it.wikipedia.org/wiki/Rappresentazione_dei_numeri)
14
- TECNO 1 REL. 15.12.14
5
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. 1919 = 1 × 103 + 9 × 102 + 1 × 101 + 9 × 100
In generale: numero di n cifre in base b:
an−1×bn−1+. . .+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 (1815 –1864) è stato un matematico e logico britannico, ed è considerato il fondatore della logica
matematica.
Nel 1854 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 0 1 2 3 4 5 6 7 : 000, 001, 010, 011, 100, 101,
110, 111 e così via.
(approfondimento in http://home.deib.polimi.it/amigoni/teaching/CodificaBinariaInformazione.pdf)
Conversione binario-decimale-binario
Binario -> 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) + ... + d020 = N
Ad esempio
10012 = 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 910
15
- TECNO 1 REL. 15.12.14
5
Decimale-> 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 = 1
1
0 1
0
0
Quindi partendo da destra a sinistra otterremo: 3710 => 1001012
15: 2 = 7:2 = 3:2 = 1
1
1
1
1510 => 11112
16: 2 = 8:2 = 4:2 = 2:2 = 1
0
0
0
0
1610 => 100002
1310 = 11012
Infatti:
13 : 2 = 6 : 2 = 3 : 2 = 1
1
0
1
6310 = 1111112
Infatti:
63 : 2 = 31 : 2 =15 : 2 = 7 : 2 = 3 : 2 = 1
1
1
1
1
1
31:2....
32
63
64
128
gioco
didattico
di
CISCO,
http://forums.cisco.com/CertCom/g
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:
http://www.cisco.com/web/learning
/netacad/packetville/index.html )
Possono aiutare anche le carte
binarie http://www.cartebinarie.it/
Calcolatrice scientifica in Windows
Conversioni e calcolo binario
http://planetcalc.com/search/?tag=
1462
16
- TECNO 1 REL. 15.12.14
5
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.
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
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
A
1011
B
1100
C
1101
D
1110
E
1111
F
-----------------------------------10000
10
10001
11
……
dec
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Conversione 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:
17
- TECNO 1 REL. 15.12.14
5
18:16=1
2
18d -> 12H
160:16=10
0
160d -> A0H
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^0 + 10 *16^1 = 0+ 160 = 160
ABCH-> 2748 -> 101010111100
Conversione binario-esadecimale-binario
Binario-esadecimale. Prendiamo, ad esempio, il numero binario 10000000101 (corrispondente al decimale 1029). Essendo il sistema esadecimale basato sul
numero 16 (24) lo scriveremo raggruppando le cifre 4 a 4, partendo dalla posizione meno significativa, ovvero quella più a destra: 100 0000 0101
ogni raggruppamento corrisponde ad una cifra esadecimale secondo la tabella precedente.
Otterremo, quindi, trasformando i tre raggruppamenti, le tre cifre 4|0|5 corrispondenti al numero esadecimale 405H
Per la conversione esadecimale binario si procede esattamente al contrario:
consideriamo ancora il numero 405H e separiamolo in cifre come prima:
4|0|5 -> 100 0000 0101
Completare la seguente tabella
decimale
326
binario
esadecimale
11001101
127
129
128
111
111
111
10A
10000001
11111111
10000000
11111100
01000000
00010001
240
241
12B0C
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
18
- TECNO 1 REL. 15.12.14
5
1+1=0 con riporto di 1
Riporto:
111100
011100+
100111 =
----------1000011
Riporto: 1000011
1010011 +
1100011 =
----------10110110
1001+
0001 =
_________
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.
Per esempio: A3DH + CA5H . Sommiamo ciascuna coppia di cifre. Ad esempio D+5 = 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
1
0
1
0
A
3
D
C
A
5
---------------------------------------------1
6
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=15 ---> F+1= 15+1=16 ---> = 10H)
Il riporto viene sommato alle cifre della colonna immediatamente a sinistra.
Cioè A+2 +1. La somma di tale colonna origina come cifra somma D e nessun riporto. Il risultato alla fine sarà dunque 1D0H
18316 + 1216 =
154216 + BC116 =
ABC16 + F416 =
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, - 54 : 10110110
Per comprendere meglio, usiamo un comodo strumento: “l’orologio binario”. Consideriamo per comodità quattro bit:
19
- TECNO 1 REL. 15.12.14
5
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 (quando 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:
Ā = 2n – A
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:
– 2n-1 ÷ + (2 (n-1) – 1)
Ad esempio con n=8 (8bit) si avrà un range che va da -128 (10000000, pari a -28-1 ), fino a +127 (01111111, pari a +27-1)
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 (255). Il range va da -128 (10000000) a +127 (01111111)
•
Con 16 bit il numero 0 è 0000h , 1 è 0001h , 32767 è 7FFh , -32768 è 8000h, -1 è FFFFh (65535).
Il complemento del complemento restituisce il valore originale.
20
- TECNO 1 REL. 15.12.14
5
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 :
1101+
0001=
-------------1110 => -2
Per fare un altro esempio -12 (su 5 bit) si ottiene così:
− 1210 = − 011002 = 10100CA2
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 0111. Al contrario, su 5 bit, avremo 01001->
10111 che è effettivamente -9.
Con 8 bit 11110111 e così via.
Dobbiamo anche tener presente che la somma di due numeri positivi potrebbe dare un numero negativo (ad esempio 5+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.
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 + (bn – A ) – bn = B + Ā - bn
=>
B – A = B + Ā poiché su n bit bn = 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 5-3 = 5+ (-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:
53=
----2
=>
0101 0011=
=>
0101 +
1101 =
---------0010
5 - 8 (su 5bit) => 5 + (-8) = 001012 - 010002 = 001012 - 11000 CA2= 11101= − 3 (infatti 11101CA2 =>0011)
5 − 12 (su 5bit) => 5+ (− 12) = 001012 − 011002 = 00101+ 10100CA2 = 1001CA2= − 7
5 -10 (su 5bit) = 5+ (-10) => 00101 – 01010 = 00101+ (10101 +1 = 10110) => 00101 + 10110 = 1011= - 5
9 – 1 (su 4bit) = 9 + (-1) => 1001 – 0001 = 1001 + 1111 = 1000 (con riporto 1 che , se su 4 bit , ignoro)
Eseguire le seguenti operazioni (su 8 bit)
000111102 – 000000102 = 00011110 – 00000010 = 00011110 + (11111101 + 1) = 00011110 + 11111110= 11111100 = 2810
111100102 + 000001102 =
001001112 + 000110102 =
111011102 + 000011012=
001110112 – 000001112 =
000100102 – 000001012 =
21
- TECNO 1 REL. 15.12.14
5
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 5 bit per la parte intera e 4 per la parte frazionaria si ottiene:
10101.11012 che rappresenta:
1*2 ^4 + 1*2 ^2 + 1*2^ 0 + 1*2^ -1 + 1*2^ -2 + 1*2 ^-4 = 21.8125
Aiutiamoci con questa tabella di conversione:
n
2^n
2^-n
0
1
1.0
1
2
0.5
2
4
0.25
3
8
0.125
4
16
0.625
5
…
..
Parte frazionaria binaria
0
1
01
001
0001
..
Ad esempio, consideriamo il numero 011011.11. 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 01101111 rappresenta il numero frazionario binario: 011011.11 = 27.75.
Il numero binario frazionario 0.11 viene rappresentato in virgola fissa con 00000011 (=0.75)
Calcolare a quale numero decimale corrispondono i seguenti numeri binari frazionari:
• 0.1101001 [R. 0.8203125]
• 1011.0101 [R. 11.3125]
• 11.10011 [R. 3.59375]
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.
2.
3.
si considerano separatamente parte intera e parte frazionaria;
la parte intera viene convertita in un numero binario a m bit;
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
22
- TECNO 1 REL. 15.12.14
5
37,125= 100101.001 infatti:
•
separo 37 da 0.125;
•
la parte intera la rappresento come 100101
•
per quanto riguarda la parte frazionaria eseguo iterative moltiplicazioni per 2:
0,125x2 =>0,25 (primo bit dopo la virgola),
0,25x2 =>0,5
0.5x2
=>1,0
0
termino perché la parte dopo la virgola è 0.
la parte frazionaria la rappresento come
001
Consideriamo ora il numero decimale 0,3= 01001
0.3 x 2 = 0.6 => bit 0
0.6 x 2 = 1.2 => bit 1
0.2 x 2 = 0.4 => bit 0
0.4 x 2 = 0.8 => bit 0
0.8 x 2 = 1.6 => bit 1
0.6 x 2 = 1.2 => bit 1
0.2 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 0.01
0.3 x 2 = 0.6 => bit 0 [peso 0.5]
0.6 x 2 = 1.2 => bit 1 [peso 0.25]
0.2 x 2 = 0.4 => bit 0 [peso 0.125]
0.4 x 2 = 0.8 => bit 0 [peso 0.0625]
0.8 x 2 = 1.6 => bit 1 [peso 0.03125]
0.6 x 2 = 1.2 => bit 1 [peso 0.015625]
0.2 x 2 = 0.4 => bit 0 [peso 0.0078125] < 0.01: ho raggiunto la precisione desiderata.
(http://www.itisvoltafr.it/~virgilio/materiali/mate3/Rappres1_4.pdf
)
6.25= 110.01
Convertire in binario il numero
separo 6 da 0.25;
la parte intera la rappresento come 110
per quanto riguarda la parte frazionaria eseguo iterative moltiplicazioni per 2->
0.25 2 = 0.5x 2
0.5x 2 = 1.0 FINE!
Convertire in binario i seguenti numeri:
• 0.625 [R. 0.101] 0.625x2=1.25x2=0,5x2= 1,0
• 0.03125 [R. 0.00001]
• 0.828125 [R. 0.110101]
Rappresentazione in virgola mobile (floating point- IEEE754)
Lo standard IEEE754 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 00...002 rappresenta il valore 0; la rappresentazione degli altri numeri usa il
seguente formato:
(-1)s × (1 + MANTISSA) × 2e
Precisione singola
4 byte-> 1 bit per il segno, 8 bit per l’esponente, 23 bit per la mantissa
23
- TECNO 1 REL. 15.12.14
5
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 23 bit interamente dedicati alla mantissa (6,7 cifre decimali):
•
•
•
•
•
•
per primo c’è il segno per vedere se si tratta di numeri positivi o negativi
l’esponente è indicato prima della mantissa (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 = 2n/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.
Se n=8 bit si avrà bias= (2^8/2) – 1 = (256/2) -1 = 127
Questa notazione è adatta per le operazioni di confronto tra numeri.
Nell’esempio che segue si ha: 0 10000111 10110000000000000000000
segno=0 => numero positivo (1 rappresenta un numero negativo)
10000111 => 135
esponente eccesso 127 => 135-127=8 =>2^8
mantissa => 10110.. è da intendersi sempre come 1.10110..
In definitiva il numero binario rappresenta: 1.1011 x 2^8 = 11011 x 2^4= 11011 x 16 = 27x16= 432
0 10000101 00110100000000000000000
segno=0 => numero positivo
esponente eccesso 127 => 133-127=6 =>2^6
mantissa => 0011010..
In definitiva: 1.001101 x 2^6 =77
Precisione doppia
•
8 byte: 1 bit per il segno, 11 bit per l’esponente, 52 per la mantissa
La cifra 1 prima della virgola è sottintesa e quindi si hanno 53 bit interamente dedicati alla mantissa (15,16 cifre decimali).
0 10000001 010010 … 0
1 10001101 01110 … 0
0 01111101 01010 … 0
[R. 5.125]
[R. –23552.0]
[R. 0.328125]
Conversione decimale –> floating point
http://mguarnera.altervista.org/documents/esercizi2.pdf
13.25
- il numero è positivo, per cui il segno è 0
- in binario: 1101.01
- spostando il punto decimale di 3 posizioni a sinistra, il numero si normalizza in 1.10101 x 2^3
- l'esponente (eccesso 127 ): 127 + 3 = 130 = 10000010
Quindi in Floating Point, singola precisione:
0
10000010
10101000000000000000000
segno positivo
esponente eccesso 127
mantissa
-109,78125 = 1 10000101 10110111010000000000000
infatti:
109 = 1101101
24
- TECNO 1 REL. 15.12.14
5
1101101,11001 che in notazione normalizzata corrisponde a: 1,1011011001x2^6.
All’esponente va aggiunto 127 + 6 =133 (10000101) .
Quindi in Floating Point, singola precisione:
1
10000101
10110110010000000000000
segno negativo
esponente eccesso 127
mantissa
5.0 [R. 0 10000001 0100 … 0]
-9.25 [R. 1 10000010 0010100 … 0]
12.8125 [R. 0 10000010 100110100 … 0]
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 754.
Singola precisione
Doppia precisione
Entità rappresentata
Parte frazionaria
Parte frazionaria
Esponente (o mantissa)
Esponente (o mantissa)
0
0
0
0
0
0
≠0
0
≠0
Numero denormalizzato
da 1 a 254 valore qualsiasi da 1 a 2046 valore qualsiasi Numero in virgola mobile
255
0
2047
0
∞
255
≠0
2047
≠0
NaN (Not a Number)
Tipi di dati in C
Il tipo di un dato è l’astrazione della sua rappresentazione.
Tipo
Dimensione
Intervallo di valori
Char
1 byte
0 / 255
Int (short int)
2 byte
- 32768 / 32767
Long
4 byte
- 2147483648 / 2147483647
Unsigned int
2 byte
0 / 65535
Unsigned long
4 byte
0 / 4294967295
Float
4 byte
Notazione IEEE standard
double
8 byte
Notazione IEEE standard
http://www.di.unito.it/~baldoni/didattica/aa0304/Arch/LucidiB/CodificheVirgolaMobile.pdf (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,
25
- TECNO 1 REL. 15.12.14
5
.
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 + (10100 + -10100) dà come risultato 1,0, mentre (1,0 + 10100) + -10100 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
0
1
2
3
4
5
6
7
8
9
Codice BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
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 6.
•
•
0001 1000 0111 +
0101 0011 1001 =
_________________
0110 1100 0000 +
0110 0110
_________________
0111 0010 0110
Esercizi di riepilogo:
1 Rappresentare i seguenti numeri in complemento a 2 su 8 bit:
127 -127 -128 128 0 1 -1 256 -256
2 Rappresentare i seguenti numeri in complemento a 2 su 8 bit:
44 -44
127 -127
-128 128
0 1 -1 256 -256 -53 -75
26
- TECNO 1 REL. 15.12.14
5
3 Data la rappresentazione in complemento a 2 (su 8 bit), quali numeri sono rappresentati?
11010100
11100101
01111111
10000000
3 Dare la rappresentazione come numeri interi a 16 bit dei numeri 68 e 20 ed eseguire 68-20 con il metodo del complemento a 2.
4 Eseguire le seguenti sottrazioni usando il complemento a 2 su 8 bit
31-32
32-33
64-68
64-4
4.1 Eseguire le seguenti sottrazioni usando il complemento a 2 su 16 bit
123-43
32-54
45-67
176-24
5 Rappresentare con il codice BCD i numeri 2706 187
6 Eseguire la somma dei seguenti codici BCD e dire a quali numeri corrispondono operandi e risultato 00101001 + 00011000 =
7 Rappresentare 35,24 secondo lo standard IEEE754
8 Data la seguente rappresentazione (IEEE754), 01000010011010000000000000000000
9 Dare le rappresentazione di 327 come numero intero a 16 bit, con il codice BCD, come numero reale secondo lo standard IEEE754
10 rappresentare 62,15
0,125
45,25
67 secondo IEEE754
27
- TECNO 1 REL. 15.12.14
5
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 (1) , OFF (0).
A un 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).
NB attenzione all’esponente di 2 che è corrisponde al valore dell’informazione!
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,929372
28
- TECNO 1 REL. 15.12.14
5
Il valore così ottenuto rappresenta l'informazione necessaria per individuare una delle quattro
destinazioni al primo livello.
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.58]
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
BDFG 4
CRST 7
PUV
4
LMN
6
HQZ
2
29
- TECNO 1 REL. 15.12.14
5
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 1948-49 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. 15.12.14
5
•
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.
http://www.mediamente.rai.it/mediamentetv/learning/ed_multimediale/lezioni/01/
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. 15.12.14
5
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 elevateNel 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.
32
- TECNO 1 REL. 15.12.14
5
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
01000011
1
I
01001001
1
A
01000001
0
O
01001111
1
-> Bit di controllo per un carattere
___________________________
LCR (BCC)
00000100
1
Si può notare come un controllo di “parità pari” corrisponda a un’operazione di OR esclusivo (XOR, Exclusive OR,
nella realizzazione di programmi software.
), tra i bit, una tecnica molto sfruttata
Controllo a somma aritmetica (checksum)
Consiste nel sommare il valore binario, corrispondente alla codifica ASCII dei caratteri, modulo 256.
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.
33
- TECNO 1 REL. 15.12.14
5
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 = 1011100101 -> x9 + x7 + x6 + x5 + x2 + 1
Polinomio Generatore = 1011
-> 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 = 1011100101000
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:
1011100101000
1011
1011
1000101010
0001
0000
0010
0000
0100
0000
1001
1011
0100
0000
1001
1011
0100
0000
1000
1011
0110
0 0 0 0 = 110 Resto
Messaggio inviato al ricevitore = 1011100101110
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: 1100000001011
CRC16 = x16 + x15 + x2 + 1 (17bit)
che tradotto in bit risulta: 11000000000000101
CRCCCITT = x16 + x12 + x5 + 1 (17bit)
che tradotto in bit risulta: 10001000000100001
Esiste anche un CRC-32 e CRC-64, rispettivamente a 33bit e 65bit.
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. 15.12.14
5
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
http://n.ethz.ch/~isidorim/images/ascii_table.jpg
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 (00110000)
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 8859)
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 256 combinazioni)
In ASCII a 8 bit, tutti i codici sono compatibili con l’ ASCII A 7 bit (i primi 128 caratteri sono uguali).
35
- TECNO 1 REL. 15.12.14
5
un esempio di ASCII Art - http://www.smartfeeling.org/codemonkeys/ascii-table-and-ascii-extended-in-html-code/
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 (65536 caratteri).
36
- TECNO 1 REL. 15.12.14
5
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 256 all’ISO 8859-1. (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 256 all’ISO 8859-1. (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 10646 e la relativa codifica UCS-4. Vengono usati 4 byte, con il primo bit a 0, cioè 31 bit effettivi. Il 10646 è
il set di caratteri indicato nella specifica del linguaggio HTML 4.0.
Esempio di Unicode per caratteri cuneiformi
Esercizio 1 http://security.polito.it/~lioy/12bhd/e_non_num_ris.pdf
Si desidera salvare su file in formato ASCII (ISO-8859-1) un testo di 100 pagine, ognuna composta
da 50 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.
[ 341.9 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: [50 ·(69+1)] +1 = 3501 Byte.
Moltiplicando per il numero di pagine ed applicando il fattore di scala per i KByte, si ottiene la dimensione del file:
Dimensione file = 3501 · 100= 341.9 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. [ 20404 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 +32 · 1 B+8 · 0.5 B+6 · 1 B = 74 Byte/studente
1.44 · MB / 74 =20,404.7 studenti = 20,404 studenti
37
- TECNO 1 REL. 15.12.14
5
Esercizio 3
Si desidera salvare su file in formato Unicode con codifica UTF-8 un testo in lingua Italiana composto da 20000 caratteri. Sapendo che in Italiano la frequenza
media delle lettere accentate e il 5%, stimare la dimensione del file espressa in kB. [ 20.5 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.
(5% => 1000 * 2= 2000 byte accentati)
19000 + 2000 = 21000 21000/1024=20.5Kbyte
Codice QR
testo “Tecno 1”: http://www.qrstuff.com/
“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 7.089 caratteri numerici e 4.296 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:
http://www.denso-wave.com/qrcode/aboutqr-e.html http://www.terredelvino.net/sites/default/files/Tesi%20Laurea%20Qr-code_G.BOTTAZZI.pdf
38
- TECNO 1 REL. 15.12.14
5
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.
Spesso in questi casi si parla di applicazioni di tipo multimediale.
(Per un approfondimento si veda: http://www.mediamente.rai.it/mediamentetv/learning/ed_multimediale/lezioni/01/ )
_
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 = 256, 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 256 fino a sedici milioni di
colori. Per distinguere 256 colori sono necessari otto bit per la codifica di ciascun pixel: la codifica di un'immagine formata da 640X480 pixel richiederà
2.457.600 bit (307.200 byte). Esistono delle tecniche di compressione delle informazione che consentono di ridurre drasticamente lo spazio occupato dalle
immagini.
39
- TECNO 1 REL. 15.12.14
5
Le immagini in movimento vengono memorizzazione mediante sequenze di fotogrammi (sono necessarie delle tecniche per ottimizzare tale
memorizzazione).
Grafica Digitale
http://www.graphicconnectionkc.com/raster-vector-graphics.htm
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)
http://it.wikipedia.org/wiki/Grafica_bitmap
40
- TECNO 1 REL. 15.12.14
5
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 256) 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,54 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/~a009395/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: 72-100 dpi
Stampante: 2400-4800 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.56 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. 15.12.14
5
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 256 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 256 colori si ottiene una compressione lossy poiché vengono eliminate la maggior parte delle sfumature di colore)
Grafica vettoriale
http://it.wikipedia.org/wiki/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.
L'elemento base della grafica vettoriale sono gli elementi geometrici:
•
linee
•
curve
•
aree
Quali elementi siano disponibili per il disegno, e quali siano le loro proprietà specifiche, è definito da un linguaggio – ne esistono molti.
Un disegno in grafica vettoriale può essere visto come un insieme di istruzioni (immagine) rivolte a un disegnatore (motore di rendering) ed espresse in un
dato linguaggio (formato).
Di ciascun elemento è data una rappresentazione matematica astratta (equazioni). Le varie parti che compongono l'immagine sono separabili .
Esempio:
•
varie curve chiuse
•
aree interne colorate
•
linee di confine (bordi) visibili o meno
Il caso più semplice è quello in cui la “curva” è in realtà formata da una sequenza di segmenti di retta. Tuttavia, questa approssimazione è troppo grossolana
se la curva viene ingrandita o manipolata. Analogamente avviene per l'approssimazione di un cerchio con un poligono con un numero elevato di lati:
42
- TECNO 1 REL. 15.12.14
5
Si usano quindi delle reali curve (in senso matematico): funzioni parametriche di tipo analitico; le funzioni parametriche hanno un valore che varia al variare
di un parametro t ; al momento del disegno, il motore di rendering calcola le equazioni e disegna la curva corrispondente.
Il caso più semplice è quello della retta. Il segmento di retta fra due punti P0 e P1 è definito dall'equazione nella figura sotto. Va notato che P0 e P1 sono
due vettori, ovvero coppie [x y] – t è invece un numero reale; la moltiplicazione si effettua con entrambe le componenti
http://circe.di.unipi.it/~gervasi/EdE09/Lezione%207.pdf
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
43
- TECNO 1 REL. 15.12.14
5
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
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 120x150 pixel con 1024 colori.
Quanti byte occupa il messaggio?
Testo: 300 byte. Immagine: ogni pixel richiede 10 bit (perché 210=1024); l'immagine ha 120 x 150 = 18000 pixel; l'immagine occupa 10 x 18000 =
180000 bit = 22500 byte. Testo + immagine: 300 + 22500 = 22800 byte
2.
3.
Un'immagine di 300x400 pixel occupa 15000 byte. L'immagine è a colori oppure in bianco e nero?
L'immagine ha 300 x 400 = 120000 pixel, ed occupa 15000 x 8 = 120000 bit. Cioè ad ogni pixel corresponde a un bit, e l'immagine è in bianco e
nero
Quanto spazio occupa un'immagine animata di 100x100 pixel a 128 colori, formata da 6 frame?
Ogni frame ha 100 x 100 = 10000 pixel; ogni pixel richiede 7 bit (perché 27=128); ogni frame occupa 10000 x 7 = 70000 bit; l'immagine animata
occupa 70000 x 6 = 420000 bit (= 52500 byte)
Codifica dei caratteri
•
Quanti byte occupa i testi seguenti scritti in Extended ASCII?
o cervello
8
o dipartimento di psicologia
26
o [email protected]
20
Codifica dei suoni
1.
2.
Quanti byte occupa un suono della durata di 5 secondi campionato a 30 Hz (30 campioni per secondo), in cui ogni campione occupa 6 byte?
5 x 30 x 6 = 900 byte
Un secondo di suono campionato a 512 Hz occupa 1 KB. Quanti valori distinti possono avere i campioni?
1 KB = 1024 byte; numero di campioni = 1 x 512 = 512; ogni campione contiene 1024/512 = 2 byte; 2 byte = 16 bit; 216 valori distinti
Codifica delle immagini
1.
2.
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 = 160000 pixel; l'immagine occupa 160000 bit; 160000
bit = 20000 byte
Un'immagine a 256 colori è formata da 400x400 pixel. Quanti byte occupa l'immagine?
Ogni pixel richiede un byte (=8 bit, perché 28=256, sufficiente per rappresentare 256 colori); l'immagine ha 400 x 400 = 160000 pixel; l'immagine
occupa 160000 byte
44
- TECNO 1 REL. 15.12.14
5
3.
4.
Un'immagine a 16777216 colori è formata da 100x100 pixel. Quanti byte occupa l'immagine?
Ogni pixel richiede 3 byte (perché 224=16777216, sufficiente per rappresentare 16777216 colori); l'immagine ha 100 x 100 = 10000 pixel;
l'immagine occupa 30000 byte
Hai ricevuto un messaggio di posta elettronica da un amico. Il messaggio contiene:
o un testo di 300 caratteri scritto in Extended ASCII,
o un'immagine di 120x150 pixel con 1024 colori.
Quanti byte occupa il messaggio?
Testo: 300 byte. Immagine: ogni pixel richiede 10 bit (perché 210=1024); l'immagine ha 120 x 150 = 18000 pixel; l'immagine occupa 10 x 18000 =
180000 bit = 22500 byte. Testo + immagine: 300 + 22500 = 22800 byte
5.
6.
7.
Un'immagine di 300x400 pixel occupa 15000 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 = 120000 pixel, ed occupa 15000 x 8 = 120000 bit. Cioè ad ogni pixel corresponde a un bit, e l'immagine è in bianco e
nero
Un'immagine di 500x500 pixel occupa 250000 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 500 x 500 = 250000 pixel, ed occupa 250000 x 8 = 2000000 bit. Cioè ad ogni pixel corresponde a 2000000/250000 = 8 bit, e
l'immagine ha 28=256 colori (la prima soluzione dato su questa pagina era erratta)
Un'immagine di 100x200 pixel occupa 10000 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 = 20000 pixel, ed occupa 10000 x 8 = 80000 bit. Cioè ad ogni pixel corresponde a 80000/20000 = 4 bit, e l'immagine ha
24=16 colori
Compressione dati
Ottimizzazione dei messaggi
(tratto da Marcello Guidotti, 1999-2003)
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).
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
tab. I
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
45
- TECNO 1 REL. 15.12.14
5
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.
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: A001122233. 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 1952 dal matematico D.A. Huffman ed è un metodo di compressione particolarmente ingegnoso.
46
- TECNO 1 REL. 15.12.14
5
David A. Huffman (9 agosto 1925 – 7 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 1953. (wikipedia)
Funziona in questo modo:
•
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 15 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.25.Tale
nodo viene poi unito al simbolo meno frequente tra i rimasti (K2) generando un nuovo nodo a frequenza 0.4375, 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
0
10
0
111
10
110 10
0
Messaggio
decodificato
K1
K2
K1
K4
K2
K3
K1
K2
Consideriamo un altro esempio: la frase: TRENTATRE TRENTINI ANDARONO A TRENTO
E=4
E=4
2) ASSOCIAZIONI
N=6
N=6
A=4
N=6
1) OCCORRENZE
A=4
R_ = 9
AE = 8
N=6
A=4
AE = 8
N=6
O=3
AET = 15
R=5
D=1
AET = 15
R_ = 9
R=5
AET = 15
R_ = 9
E=4
O=3
T=7
DI = 3
R=5
I=2
DIO = 3
T=7
_=4
DIO = 3
T=7
N=6
DIO = 3
R=5
DIO = 3
T=7
DION = 12
_=4
DIONR_ = 21
T=7
_=4
47
- TECNO 1 REL. 15.12.14
5
_=4
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 256, 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
48
- TECNO 1 REL. 15.12.14
5
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.
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.
( http://www.mediamente.rai.it/mediamentetv/learning/corsi/0001c3_2.asp#8)
A
B
(a) Lo spettro sonoro (realizzato con Audacity http://audacity.sourceforge.net/?lang=it ) 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 5KHz.
(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 .
-
49
- TECNO 1 REL. 15.12.14
5
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
50
- TECNO 1 REL. 15.12.14
5
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 500 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.”
http://www.youtube.com/watch?feature=player_embedded&v=5ocq6_3-nEw
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
51
- TECNO 1 REL. 15.12.14
5
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 2008.
Evoluzione
52
- TECNO 1 REL. 15.12.14
5
Prima generazione (1945-1955)
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 (1791–1871), che cercò anche di realizzarlo praticamente.
In realtà la storia dei calcolatori moderni viene fatta risalire alla metà del secolo scorso. Verso il 1945, 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!
http://www.computerhistory.org/revolution/
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 20000 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 http://www.computerhistory.org/
Seconda generazione (1955 – 1965)
53
- TECNO 1 REL. 15.12.14
5
Transistor e sistemi batch
L’evoluzione della tecnologia elettronica e l’avvento dei transistor durante la metà degli anni 50 del ‘900, cambiò radicalmente la situazione
(http://www.computerhope.com/history/194060.htm ).
Nel 1950 venne realizzata la prima unità a nastro magnetico e nel 1954 la Texas Instruments iniziò a produrre in serie i transistor, mentre il primo computer
totalmente transistorizzato fu del 1956. Sempre nel 1956 venne creato il primo hard disk.
Negli anni ‘50 fanno la loro comparsa anche i lettori di schede perforate per l’inserimento dei dati in memoria.
Sempre nel 1956 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
Sviluppo di programmi di sistema per la traduzione in linguaggio macchina
54
- TECNO 1 REL. 15.12.14
5
•
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) http://www.federica.unina.it/smfn/sistemi-operativi-2/storia-ed-evoluzione-dei-sistemi-operativi/
. IBM 305 RAMAC (1956) è il primo computer con hard disk. Nel 1957 IBM rilascia il primo computer a transistor
Terza generazione (1965 – 1980)
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.
55
- TECNO 1 REL. 15.12.14
5
VT52 - 1975
• 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.
http://techpubs.sgi.com/library/dynaweb_docs/0650/SGI_Admin/books/IA_Periphrls/sgi_html/figures/print.queues.gif
Spooling http://www.federica.unina.it/smfn/sistemi-operativi-2/storia-ed-evoluzione-dei-sistemi-operativi/
•
•
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
56
- TECNO 1 REL. 15.12.14
5
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 360.
360 fu il primo a usare tecnologia con circuiti integrati con vantaggi in termini di prezzo e prestazioni.
Quarta generazione (1980 – 1990 –> 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 5150). 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 50 unità. Di questo modello furono in realtà realizzati solo 200 esemplari e oggi ne esisterebbero solo sei.
http://www.corriere.it/tecnologia/12_novembre_25/primo-pc-apple-cifra-record_f1462518-3715-11e2-8dd3-0837590598e8.shtml
Sistemi Desktop
o
o
o
o
o
Personal computer (PC) sistema di calcolo dedicato ad un singolo utente
Periferiche di I/O evolute tastiere, mouse, schermi
Facilità d’uso e performance elevate
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
Possono eseguire diversi tipi di sistema operativo(Windows, MacOS, UNIX)
57
- TECNO 1 REL. 15.12.14
5
Sistemi laptop
o
Uno dei primi laptop è stato il GRiD Compass 1101, utilizzato nelle missioni spaziali nei primi anni ottanta. Il suo peso era 5 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 e-mail 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
58
- TECNO 1 REL. 15.12.14
5
o
o
o
o
o
http://tidesandcurrents.noaa.gov/images/ports.png
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
Vantaggi:
Maggiore throughput (capacità dielaborazione)
Risparmio economico (si fa per dire)
Maggiore affidabilità
Sistemi a cluster.
o
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
o
i processori condividono la memoria ed il clock
la comunicazione avviene solitamente attraversomemoria condivisa
Sistemi distribuiti loosely coupled (lascamente connessi o debolmente integrati). Reti
o
o
o
Ogni processore ha la sua memoria locale
I processori comunicano tra loro attraverso varie linee di comunicazione, come bus ad alta velocità o linee telefoniche
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).
59
- TECNO 1 REL. 15.12.14
5
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
http://www.elettronicanews.it/sensori-e-mems-le-opportunita-del-futuro/
http://www.semi.org/eu/sites/semi.org/files/docs/STM.pdf
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.
60
- TECNO 1 REL. 15.12.14
5
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 http://www.semi.org/eu/sites/semi.org/files/docs/STM.pdf )
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.
61
- TECNO 1 REL. 15.12.14
5
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 e-mail, 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
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…
i-phone
• 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.
62
- TECNO 1 REL. 15.12.14
5
http://www.arm.com/products/processors/cortex-a/cortex-a7.php
The A7 processor
“L'architettura ARM (precedentemente Advanced RISC Machine, prima ancora Acorn RISC Machine) indica una famiglia di microprocessoriRISC a 32bit 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 75% 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. “
http://it.wikipedia.org/wiki/Architettura_ARM
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
63
- TECNO 1 REL. 15.12.14
5
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,…)
64
- TECNO 1 REL. 15.12.14
5
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.
http://it.wikipedia.org/wiki/La_principessa_sul_pisello
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)
http://www1.popolis.it/capirola/sito/progetti/area%20progetto%205c/sistoper/SO_01.htm
http://www0.cs.ucl.ac.uk/staff/s.wilbur/1b11/1b11-1.pdf
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)
65
- TECNO 1 REL. 15.12.14
5
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.
66
- TECNO 1 REL. 15.12.14
5
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
Sincronizzazione e comunicazione
o
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
67
- TECNO 1 REL. 15.12.14
5
•
processo in caso di sistemi time-sharing
http://www.xelon.it/appunti/sistemi-operativi/gestione-processi.php
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.
68
- TECNO 1 REL. 15.12.14
5
Process control block – in-kernel data structure containing per-process state
http://www.cs.utexas.edu/~dahlin/Classes/UGOS/lectures/lec4.pdf
(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
carne
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 (*)
5. continuare a mescolare la salsa ogni
minuto finchè la carne è cotta (**)
1. far soffriggere la carne tritata
6. continuare a mescolare il ragu’
finchè il tutto è ben amalgamato,
quindi togliere dal fuoco e servire
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)
69
- TECNO 1 REL. 15.12.14
5
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
http://www.lia.deis.unibo.it/Courses/SistOpLS0304/materiale/ProcessiNonSequenziali.pdf
• 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…
70
- TECNO 1 REL. 15.12.14
5
Esercizio: scomporre in processi (paralleli) la formula di risoluzione di una equazione di secondo grado implementazione di un processo (sequenziale)
http://www.uniroma2.it/didattica/FondInf/deposito/So.pdf
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 .
71
- TECNO 1 REL. 15.12.14
5
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).
72
- TECNO 1 REL. 15.12.14
5
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:
73
- TECNO 1 REL. 15.12.14
5
- 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).
74
- TECNO 1 REL. 15.12.14
5
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à.
75
- TECNO 1 REL. 15.12.14
5
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.
76
- TECNO 1 REL. 15.12.14
5
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.
http://lia.deis.unibo.it/Courses/SOA0405/lucidi/6.schedulingCPU4.pdf
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.
77
- TECNO 1 REL. 15.12.14
5
Esempio 1 determinare il tempo medio di completamento :
dati tre processi A;B;C, il tempo di esecuzione è Ta=30, Tb=55, Tc=5,
•
•
se i processi vengono eseguiti nell’ordine A B C:
o
il tempo medio di completamento risulta 68 (30+85+90)/3,
se vengono eseguiti C;A;B allora
o
tempo medio di completamento è 43 (5+35+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: 10-100 msec.
P1
P2
P3
P1
P2
P1
P1
P3
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
78
- TECNO 1 REL. 15.12.14
5
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 = 14+10+15+17/4 = 11,5
quanto di tempo =3 -> T medio completamento = 13+6+7+17/4 = 10,75
quanto
tempo
di
Tempo medio di
completamento
1
11
2
11,5
3
10,75
4
11,5
5
12,25
6
10,5
7
10,5
(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 15 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_____________________10
10+
B____________6 16+
C________4 20= 46 /3 ≈ 15
C________4 4+
B____________6 10+
A_____________________10 20= 34 / 3 ≈ 11
Meccanismo di priorità
79
- TECNO 1 REL. 15.12.14
5
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.
80
- TECNO 1 REL. 15.12.14
5
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
Elementi per ogni Processo
•Program counter
•Stack
•Insieme dei registri
•Thread figli
•stato
•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.
81
- TECNO 1 REL. 15.12.14
5
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 5 ~/bin/longtask
Esempio:
nice -n 15 nano
82
- TECNO 1 REL. 15.12.14
5
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
http://vision.unipv.it/corsi/SistemiOperativi/lucidi/SO-05.pdf
83
- TECNO 1 REL. 15.12.14
5
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:
0
•
1
•
2
•
3
•
4
•
5
•
6
•
7
8
9
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
0
•
1
•
2
•
3
•
4
•
5
•
6
•
7
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
84
- TECNO 1 REL. 15.12.14
5
0
1
2
3
4
5
6
7
8
9
•
•
•
•
•
•
•
File PB
0
1
2
3
4
5
6
7
8
9
•
•
•
•
•
•
•
File PA
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:
85
- TECNO 1 REL. 15.12.14
5
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 , 1965) 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)
http://homes.di.unimi.it/~boccignone/GiuseppeBoccignone_webpage/Sistemi_Operativi_2010_files/SOLez15_MPSynch2x4.pdf
86
- TECNO 1 REL. 15.12.14
5
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)
V(S) o Signal(S)
while S==0 ; //se è rosso non fare niente
S=0;
//mettilo rosso!
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 :
87
- TECNO 1 REL. 15.12.14
5
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
..
88
- TECNO 1 REL. 15.12.14
5
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)
while S <= 0; //non fare niente
S= S-1; //decrementa il valore
V(S)
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 >
89
- TECNO 1 REL. 15.12.14
5
<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 1965 da Edsger Dijkstra.
Cinque filosofi siedono ad una tavola rotonda con un piatto di spaghetti davanti.
http://www.federica.unina.it/smfn/sistemi-operativi-2/esercitazione-4-sincronizzazione-dei-processi/
http://www.xelon.it/appunti/sistemi-operativi/sincronizzazione-processi.php
I 5 filosofi possono compiere 2 attività non contemporaneamente: pensare e mangiare.
Sul tavolo ci sono 5 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
90
- TECNO 1 REL. 15.12.14
5
risorse: bacchette b0...b4
processi: Filosofo()
S1,2,3,4,5=1 (verde)
process Filosofo {
while (true) {
P(Si);
P(Si+1); |mod5;
mangia;
V(Si);
V(Si+1); |mod5;
}
}
Problema la morte d'inedia (starvation)
Semaforo Room=4
while (true) {
P(Room);
P(Si);
P(Si+1); |mod5;
mangia;
V(Si);
V(Si+1); |mod5;
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.
91
- TECNO 1 REL. 15.12.14
5
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 {
92
- TECNO 1 REL. 15.12.14
5
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).
93
- TECNO 1 REL. 15.12.14
5
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
94 - TECNO 1
REL.
. 15. .11.11
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?
95 - TECNO 1
REL.
. 15. .11.11
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?
( http://www.math.unipd.it/~cpalazzi/files/CS01%20-%20Sincronizzazione.pdf )
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, ’75)
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
96 - TECNO 1
REL.
. 15. .11.11
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
http://www-lia.deis.unibo.it/Courses/CalcEle2/Threads.pdf
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))
5. 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();
}
97 - TECNO 1
REL.
. 15. .11.11
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
5
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:
1
2
3
4
5
A
B
C
D
E
98 - TECNO 1
REL.
. 15. .11.11
SO: due esempi
Windows
http://technet.microsoft.com/en-us/magazine/cc162494.aspx
http://www.xelon.it/appunti/sistemi-operativi/thread.php
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.“ http://it.wikipedia.org/wiki/Windows_7#Kernel
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.
99 - TECNO 1
REL.
. 15. .11.11
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
http://en.wikipedia.org/wiki/Hybrid_kernel
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
100 - TECNO 1
REL.
. 15. .11.11
l'hardware moderno e il software arcaico.” (note tratte http://it.wikipedia.org/wiki/Hardware_abstraction_layer )
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/ck8bc5c6(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.
101 - TECNO 1
REL.
. 15. .11.11
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
102 - TECNO 1
REL.
. 15. .11.11
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.
5.
Fare clic con il pulsante destro del mouse sul form, quindi scegliere Visualizza codice.
6.
Aggiungere l'istruzione seguente all'inizio del file:
Imports System.Threading
7.
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
1.
Compilare ed eseguire l'applicazione. Si noti che il valore dell'indicatore di stato cambia casualmente. Questo indica che il nuovo
thread è in funzione.
2.
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.
103 - TECNO 1
REL.
. 15. .11.11
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
http://www.linuxfoundation.org/
“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
104 - TECNO 1
REL.
. 15. .11.11
della più moderna architettura a microkernel) fu causa di un dibattito molto acceso con Andrew S. Tanenbaum “ (Wikipedia)
http://www.cyberciti.biz/tips/understanding-the-linux-kernel.html
http://www.disi.unige.it/person/DelzannoG/SO1/AA0506/LibroSGG/linux.pdf http://www.ibm.com/developerworks/linux/library/l-linux-kernel/
http://www.federica.unina.it/ingegneria/sistemi-operativi/gestione-dei-processi-nei-sistemi-operativi-unixlinux-e-windows/
105 - TECNO 1
REL.
. 15. .11.11
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
106 - TECNO 1
REL.
. 15. .11.11
http://www.di.unito.it/~vercelli/works/command-summary.html
info http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1400&Itemid=229
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 2005 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 - http://venturebeat.com/2008/09/17/android-roundup-googles-web-wide-plan-ericsson-to-join-oha-and-more/
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.
http://it.wikipedia.org/wiki/IOS_(Apple)
http://it.wikipedia.org/wiki/Apple_Darwin
107 - TECNO 1
REL.
. 15. .11.11
http://x86mac.altervista.org/mac-osx/
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
http://us.blackberry.com/developers/tablet
E’usato sul BlackBerry Playbook http://video.corriere.it/blackberry-playbook-prova-anteprima/6e9ccd02-7a3c-11e0-a5b9-91021abd11c5 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®
http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html 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
108 - TECNO 1
REL.
. 15. .11.11
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.
109 - TECNO 1
REL.
. 15. .11.11
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.
http://sbrinz.di.unipi.it/MaterialeCorsi/CorsoSistemiOperativi/lezione9-GestioneDellaMemoria.pdf
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
110 - TECNO 1
REL.
. 15. .11.11
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
http://sbrinz.di.unipi.it/MaterialeCorsi/CorsoSistemiOperativi/lezione9-GestioneDellaMemoria.pdf
VLSI VI475 MMU "Apple HMMU" - http://en.wikipedia.org/wiki/Memory_management_unit
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
111 - TECNO 1
REL.
. 15. .11.11
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
la memoria allocata è maggiore di quella richiesta e quindi internamente alla partizione esiste memoria inutilizzata
o
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
Esterna
112 - TECNO 1
REL.
. 15. .11.11
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
Usiamo il primo buco sufficientemente grande
Non devo guardare l’intera lista
Non è ottimale
Best-fit
o
o
o
Worst-fit
o
o
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
113 - TECNO 1
REL.
. 15. .11.11
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)
114 - TECNO 1
REL.
. 15. .11.11
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
115 - TECNO 1
REL.
. 15. .11.11
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:
“1 2 3” potrebbe significare
116 - TECNO 1
REL.
. 15. .11.11
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
http://sbrinz.di.unipi.it/MaterialeCorsi/CorsoSistemiOperativi/lezione10-MemoriaVirtuale.pdf
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.
117 - TECNO 1
REL.
. 15. .11.11
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
118 - TECNO 1
REL.
. 15. .11.11
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
119 - TECNO 1
REL.
. 15. .11.11
•
•
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
RWX
owner access
group access
public access
7
6
1
111
110
001
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
120 - TECNO 1
REL.
. 15. .11.11
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 5,9,12; C occupi 10,3,13. La directory (FAT) sarà
così organizzata (semplificando):
Nome del
file
A
B
Primo
blocco
6
5
121 - TECNO 1
REL.
. 15. .11.11
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
122 - TECNO 1
REL.
. 15. .11.11
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 256 indirizzi
o
Quindi altri 256 KB di blocchi dati indirizzabili
•
ACCESSO INDIRETTO DOPPIO:
o
256 blocchi che contengono 256 indirizzi ognuno…256^2 = 65.536 KB (64 MB)
•
ACCESSO INDIRETTO TRIPLO: 256^3 = 16.777.216 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 512 indirizzi.
o
Quindi altri 2 MB di blocchi dati indirizzabili
•
ACCESSO INDIRETTO DOPPIO:
o
512 blocchi che contengono 512 indirizzi ognuno… 512^2 = 262144 blocchi = 1 GB
•
ACCESSO INDIRETTO TRIPLO: 512^3 = 512 GB
o
Anche se con 8 byte potrei indirizzare TeraBytes…513 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.
123 - TECNO 1
REL.
. 15. .11.11
MTF alloca un certo numero di ammontare di spazio per ciascun file. Gli attributi del file sono descritti all’interno del MFT.
File piccoli (1500 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 255 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.
124 - TECNO 1
REL.
. 15. .11.11
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.
125 - TECNO 1
REL.
. 15. .11.11
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.
126 - TECNO 1
REL.
. 15. .11.11
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
laptop
Smart phone
PDA
Caratteristiche
Costo
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 15 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.
127 - TECNO 1
REL.
. 15. .11.11
Connettore SATA per alimentazione.
http://it.wikipedia.org/wiki/Serial_AT
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.
http://www.pcopen.it/01NET/HP/0,1254,4s5009_ART_69482,00.html http://www.pcsilenzioso.it/forum/showthread.php?t=9888
È 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).
http://www.myfastpc.com/motherboard.html
128 - TECNO 1
REL.
. 15. .11.11
I componenti di una scheda madre
http://sonic840.deviantart.com/art/Computer-hardware-poster-1-7-111402099
129 - TECNO 1
REL.
. 15. .11.11
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.
http://www.geekstogo.com/forum/topic/208831-how-to-build-your-own-computer/
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.
130 - TECNO 1
REL.
. 15. .11.11
http://img.tomshardware.com/us/2003/04/14/all_aboard/875_scheme.gif
BUS
AGP 2X
Mbps
bps (bit per second) generalmente usato
per USB, FireWire, Wi-Fi e dispositivi di
rete.
4264
MBps
Bps (Bytes per second) generalmente
usato per PCI bus, ATA, SATA e SCSI.
533
AGP 8X
17064
2133
133
PCI
1064
PCIe 1x
2000
250
PCIe 16x
32000
4000
ATA66
528
66
ATA133
1064
133
SATA150
1200
150
eSATA
2400
300
http://investech.wordpress.com/tag/bps/
bus di espansione
Il
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
131 - TECNO 1
REL.
. 15. .11.11
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,5 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/70- 2000 Interfaccia Seriale (RS232 )che raggiungeva tipiche velocità di circa 19200bps e Parallela sono state per molti anni la “porta” di
comunicazione dei PC
•
•
1980-2002 Modem Analogico da 1200bps a 56Kbps
•
•
•
1995 Firewire 400Mbps 3,2Gbps 2009
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)
1998 USB1.0 1,5Mbps – 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 150 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
1
VBUS
Colore filo
ROSSO
2
D-
BIANCO
3
D+
VERDE
132 - TECNO 1
REL.
. 15. .11.11
4
•
•
GND
NERO
2003 HDMI
2010 Light Peak 10Gbps
Mbps
MBps
USB 1.0
2
0.25
USB 1.1
12
1.5
USB 2.0 HS
480
60
1394a (FW400)
400
50
1394b (FW800)
800
100
10 BaseT
10
1.25
100Base T
100
12.5
1000BaseX
1000
125
Wi-Fi 802.11b
11
1.375
Wi-Fi 802.11g
54
6.75
Wi-Fi 802.11n
540
67.5
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 http://thestarman.pcministry.com/ )
BOOT: AVVIO DEL PC
Costruttore / Tipo
Intel 28F001BXT
MX28F1000PL/PC/PPC
SST 29EE010
ATMEL 29C010
AMI - American Megatrends Inc.
MR - Microid Research
AWARD
MB
1
1
1
1
Tensione
5V
5V
5V
5V
Famiglia
Flash
Flash
EEPROM
Flash
Package
DIL
DIL
DIL
DIL
http://www.ami.com
http://www.mrbios.com
http://www.award.com
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.
133 - TECNO 1
REL.
. 15. .11.11
F000:fff0
Istruzione di jmp far
F000:fff5
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:
DRAM
……
MEMORIE
|
---------------------------------------------------------|
|
Primarie (interne, a stato solido)
Secondarie (di massa)
|
|
----------------------------------|
|
|
|
Volatili
NON Volatili
Nastro
Disco
|
|
|
|
RAM
ROM
MAGNETICO, OTTICO
SRAM
EPROM
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).
134 - TECNO 1
REL.
. 15. .11.11
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
135 - TECNO 1
REL.
. 15. .11.11
L’HARD DISK
http://www.eden-tech.it/it/Edendesign/Memoria.htm
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 512 byte)). La densità di registrazione è diversa.
http://www.pluto.it/files/ildp/guide/GuidaSysadm/x776.html
geometria di un hard disk
•
superfici delle piastre del disco:
o
traccia = corona circolare
o
settore = spicchi in cui sono suddivise le tracce
(typ 512byte)
•
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 15000
diametro piatto : da poco piu' di un pollice (circa
2,5 cm) fino ad oltre otto pollici (circa 20 cm).
Su ciascuna superficie ci sono tipicamente da
1000 a 5000 tracce
ciascuna traccia puo' contenere da 64 a 200
settori
la dimensione di un settore e' in genere di 512
byte, ma è grande 517 byte perché l’area dati è
preceduta da una intestazione che contiene dei
136 - TECNO 1
REL.
. 15. .11.11
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.
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.
il disco
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 512 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.
( http://www.med.unifi.it/didonline/anno-I/informatica/Sistemi_operativi.html )
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 * 512 byte = 7871076864 byte
La capacita' espressa in GB e': C = 7871076864/(2^30) = 7.33 GB
2. Se un hard disk (volume) si compone di 2 dischi (o equivalentemente 4 piatti), 16384 cilindri (o equivalentemente 16384 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 7200.7 120 GB [ ST3120022A (5JT1AVSY) ]
Proprietà periferica ATA:
ID modello ST3120022A
Numero di serie 5JT1AVSY
Revisione 3.04
Parametri cilindri: 232581, testine: 16, settori per traccia: 63, byte per settore: 512
Settori LBA 234441648
Buffer 2 MB
Settori multipli 16
Byte ECC 4
137 - TECNO 1
REL.
. 15. .11.11
Modalità trasferimento UDMA 5 (ATA-100)
Capacità (non formattato) 114473 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 150 titoli, principalmente di musica classica. Circola una storia, a proposito. “
http://www.soundsblog.it/post/14845/il-cd-compie-25-anni
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: 635 nm per il DVD-R(A) e 650 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 DVDRAM). 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-5: 4.7 GB Lato unico e singolo strato
DVD-9: 8.5 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
http://www.rpadistribution.co.uk/mmRIVER2/Images/dvd-pit-size.jpg
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 5 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 40.000 volte al secondo per la banda audio di 20 kHz, per ciascun canale stereo.
138 - TECNO 1 REL. . 15. .11.11
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 1350 KBps, mentre 1x per un lettore CD equivale a 150KBps.
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.
http://www.rpadistribution.co.uk/mmRIVER2/Images/dvd-pit-size.jpg
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 e-mail 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:
139 - TECNO 1
REL.
. 15. .11.11
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 5
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 512MByte, 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
o
•
Caratteristiche
Costo
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 500GB e di uno da 1TB
Marca e codice del modello
Caratteristiche
Costo
------ esercitazione completatata---------------------------------------------------
Esercitazione n.3
Laptop/Desktop
140 - TECNO 1
REL.
. 15. .11.11
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---------------------------------------------------
141 - TECNO 1
REL.
. 15. .11.11
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.
http://windows.microsoft.com/it-it/windows-8/meet
Per Windows8 cfr
http://windows.microsoft.com/it-it/windows-8/start-screen-tutorial
http://windows8.myblog.it/
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.
142 - TECNO 1
REL.
. 15. .11.11
http://windows.microsoft.com/it-it/windows/how-to
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 email.
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
143 - TECNO 1
REL.
. 15. .11.11
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.
144 - TECNO 1
REL.
. 15. .11.11
•
•
•
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.
145 - TECNO 1
REL.
. 15. .11.11
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
http://www.microsoft.com/en-us/download/details.aspx?id=20525
“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 )
146 - TECNO 1
REL.
. 15. .11.11
Es errori hardware
Errori hardware
In questa categoria si tiene traccia degli errori del disco e della memoria.
Tipo di dati
Descrizione
Tipo componente
Indica il componente in cui si è verificato l'errore.
Dispositivo
Identifica il dispositivo che provoca errore.
Tipo errore
Indica il tipo di errore che si è verificato.
Data
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.
147 - TECNO 1
REL.
. 15. .11.11
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.
http://stackoverflow.com/questions/1984186/what-is-private-bytes-virtual-bytes-working-set
http://www.loriotpro.com/ServiceAndSupport/How_to/How_to_control_Memory_usage.php
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. http://www.parlandosparlando.com/view.php/id_173/lingua_0
Shell dei comandi http://technet.microsoft.com/it-it/library/cc737438(v=ws.10).aspx
“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
148 - TECNO 1
REL.
. 15. .11.11
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
149 - TECNO 1
REL.
. 15. .11.11
SPAZIO su DISCO
Con il destro del mouse sull’unità e poi proprietà permette la visualizzazione dei processi attualmente caricati in memoria. L’applet system information lanciato
questa volta con accessori utilità di sistema m. system information Su Risorse del computer con il destro del mouse e quindi Gestione.
Esercizio: Avvio applicazioni
•
•
•
•
•
•
•
•
Clic sull’applicazione dal menù Start
Doppio clic sul collegamento dell’applicazione dal Desktop
Doppio clic sul file eseguibile da Risorse del Computer
Avviare applicazioni
Avviare l’applicazione con la finestra Esegui del menu del menù Start o da linea di comando
Connettere o disconnettere una unità di rete
Clic destro su Proprietà per configurare connessioni di rete esistenti, connessioni LAN con cavo o wireless (senza fili)
Proprietà schermo : cambiare la risoluzione e la profondità di colore, lo sfondo, il salvaschermo, alimentazione
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 255 caratteri non case-sensitive.
L’estensione del file può essere da 1 a 4 caratteri(.doc.,.txt,.html,..). 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.
150 - TECNO 1
REL.
. 15. .11.11
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à.
attributi
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.
Esercizio
Basandosi
sui
siti
che
elencano
i
comandi
DOS
(
http://technet.microsoft.com/it-it/library/cc778084(v=ws.10).aspx
http://www.brescianet.com/appunti/infobase/dos_support/helpCreato.htm )
1.esercitarsi con i seguenti comandi : DIR, CD, MD, RD, DELTREE, COPY, XCOPY, MEM, TYPE, >, Color , …
2. Eseguire:
Creare una nuova cartella di nome omero sotto la root
Creare la sottocartella greci
Usare il comando Edit per creare un nuovo file di nome aa.txt contenete i nomi degli eroi greci (achille, ulisse …)
Rinominare aa.txt in eroigreci.txt
Creare la sottocartella ppp e rinominarla in troiani e creare il file eroitroiani.txt
Concatenare i due file creando il file iliade.txt e metterlo nella cartella omero
Visualizzare il file iliade.txt e cambiarne l’estensione in .exe
Provare ad eseguire iliade.exe. Cosa succede?................................................
Cambiare gli attributi di eoritroiani.txt in modo che il file sia in sola lettura
Editare questo file e salvarlo . Cosa succede?.................................................
Fare in modo che i colri della finestra di lavoro risultino invertiti (nero su bianco)
Esempio
Per poter aprire il prompt di DOS in una cartella semplicemente cliccando su di essa con il destro
HKEY_CLASSES_ROOT, poi su Directory, poi su shell, creare una nuova chiave di nome command e inserire nel valore predefinito all'interno di essa la
stringa Apri finestra DOS o quello che volete far apparire nel menu contestuale.
Successivamente create un'altra chiave all'interno di command e chiamatela ancora command, modificate il valore predefinito in
cmd /k title Prompt dei comandi && cd %L
151 - TECNO 1
REL.
. 15. .11.11
Ripetere la stessa operazione per la chiave Drive se si vuole utilizzare la funzione anche per le varie unità.
(Per i trucchi http://www.winguides.com/registry/)
Backup
Start --> Esegui scrivere msinfo32 e cliccare OK.
Nel system information, posizionarsi su strumenti --> ripristino configurazione di sistema e cliccare.
152 - TECNO 1
REL.
. 15. .11.11
Il prompt dei comandi (cmd)
Il Prompt (pronto, immediato) dei comandi (cmd) (Tasto Windows + X in Windows 8) è una funzionalità di Windows che rappresenta il punto di ingresso per la
digitazione dei comandi MS-DOS (Microsoft Disk Operating System) e di altri comandi per il computer. È importante sapere che la digitazione dei comandi
consente di eseguire attività nel computer senza utilizzare l'interfaccia grafica di Windows.
Quando si utilizza Prompt dei comandi, il termine prompt dei comandi è riferito anche alla parentesi angolare chiusa (>) che indica che l'interfaccia della riga di
comando è pronta per accettare comandi. Al prompt dei comandi è possibile specificare anche altre informazioni importanti, ad esempio la directory di lavoro
corrente, ovvero il percorso, in cui verrà eseguito il comando. Ad esempio, se all'apertura della finestra del prompt dei comandi viene visualizzato il prompt dei
comandi C:\> con un cursore lampeggiante alla destra della parentesi uncinata chiusa (>), il comando immesso verrà eseguito sull'intera unità C del computer.
(http://windows.microsoft.com/it-it/windows/command-prompt-faq#1TC=windows-7)
Per aprire una finestra del prompt dei comandi, fare clic sul pulsante Start, scegliere Esegui, digitare cmd e quindi fare clic su OK. Per visualizzare la Guida
della riga di comando, al prompt dei comandi digitare: NomeComando /?, oppure help (vedi figura sotto)
Il propmt dei comandi I comandi utilizzabili sono tutti quelli disponibili per il prompt di sistema e si dividono in due categorie:
•
comandi interni,
o
•
come cd per cambiare la cartella di lavoro o dir per elencarne il contenuto, del, erase , type, copy…
comandi esterni,
o
come format, chkdsk , deltree.exe , move.exe , sort.exe , xcopy.exe
Per un approfondimento : http://windows.microsoft.com/it-it/windows/command-prompt-faq#1TC=windows-vista
Lista sintetica dei comandi: http://it.wikipedia.org/wiki/Lista_di_comandi_di_MS-DOS
Esercizio guidato
NB. Le slide qui mostrate sono estratte da: http://webusers.fis.uniroma3.it/meneghini/LPC/Eserc_Ib_2009_small.pdf
153 - TECNO 1
REL.
. 15. .11.11
154 - TECNO 1
REL.
. 15. .11.11
ESERCIZI
155 - TECNO 1
REL.
. 15. .11.11
-
Cosa fa il comando “tree”?
Andate su 'Pannello di Controllo', cliccate su 'Operazioni Pianificate' ed infine su 'Aggiungi...'
Copiare dei file da un disco ad un altro, solo per quei file che sono stati modificati.
Utilizzo il comando xcopy
XCOPY source [destinazione] [/A | /M] [/D[:data]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
[/EXCLUDE:file1[+file2][+file3]...]
source
Specifica i file da copiare.
destinazione Specifica posizione e/o nome dei nuovi file
Essendo due righe di comando scrivo un file batch
Xcopy e:\*.* g:\dirx /y/s/d
Xcopy f:\*.*
g:\diry
/y/s/d
Il file .bat
( http://www.pierotofy.it/pages/guide/Guida_Batch/Istruzione_Echo/ guida batch
http://it.wikipedia.org/wiki/File_batch
http://comandi-dos-e-altro.jimdo.com/i-comandi-dos/il-file-batch/
http://www.scriptcode.com/batchfilecommands/choice.html)
È possibile utilizzare la shell dei comandi per creare e modificare file batch, denominati anche script, con cui rendere automatiche le attività più comuni. Ad
esempio, è possibile utilizzare script per automatizzare la gestione degli account utente o l'esecuzione dei backup notturni.
Nella terminologia di DOS e Windows, un file batch è un file di testo che contiene una sequenza di comandi per l'interprete di comandi del sistema. Il file batch
viene eseguito dall'interprete dei comandi mandando in esecuzione i comandi elencati nel file uno dopo l'altro, nello stesso ordine in cui compaiono nel file. Il
concetto di file batch è analogo a quello di shell script per i sistemi Unix e infatti può essere considerato un rudimentale linguaggio di scripting, anche se i
costrutti di controllo di flusso a disposizione sono veramente pochi: if, for e goto.
I comandi batch di MS-DOS devono avere estensione .bat.
156 - TECNO 1
REL.
. 15. .11.11
I comandi utilizzabili sono tutti quelli disponibili per il prompt di sistema.
L'utilizzo di file batch consente di eseguire operazioni in modo più efficiente rispetto a quanto possibile con l'interfaccia utente. I file batch infatti accettano tutti
i comandi disponibili per la riga di comando.
Nota È inoltre possibile utilizzare la versione per riga di comando del programma Windows Script Host, CScript, per eseguire script più complessi nella shell
dei comandi. Per ulteriori informazioni, vedere Eseguire Windows Script Host.
ESEMPIO Nella finestra cmd digitare edit e, dopo aver inserito i comandi mostrati in figura, salvare il file come prova. bat . Quindi eseguirlo.
Che effetto ha?
ESEMPI di file .bat:
Nota: Alcuni comandi significativi con esempi http://www.computerhope.com/batch.htm
:: prova00.bat
::
:: vai in una cartella e mostra la lista dei file presenti
::
@ECHO OFF
CD c:\a
DIR
PAUSE
CD..
CLS
DIR
ECHO.
:: prova0.bat
::
:: vai in una cartella e mostra la lista dei file presenti
::
@ECHO OFF
::"%1" nome directory digitato dalla riga comandi.
DIR %1
::Aggiungi riga vuota
ECHO.
PAUSE
CD c:\a
DIR
PAUSE
::spostati in Parent Directory
CD..
::CLS
DIR
CD a
DIR
ECHO.
Per chiamarlo:
157 - TECNO 1
REL.
. 15. .11.11
Un esempio pratico di controllo rete
ECHO OFF
::cleaner
ECHO network admin
IPCONFIG /ALL
PAUSE
PING www.google.com
ECHO fatto
PAUSE
Un esempio completo, in cui il comando set /p chiede l’input e lo mette nella variabile Scelta (nelle versioni di Windows da Vista in poi si puo’ usare il comando
CHOICE)
@echo off
title menu di scelta: la squadra preferita
cls
color 9E
:RICHIESTA
echo.
echo Qual è la tua squadra preferita?
158 - TECNO 1
REL.
. 15. .11.11
echo 1. Juventus
echo 2. Milan
echo 3. Inter
echo 4. ESCI
echo
set /p "Scelta=Scegli un'opzione e premi il tasto Invio: "
cls
IF "%Scelta%"=="1" GOTO UNO
IF "%Scelta%"=="2" GOTO DUE
IF "%Scelta%"=="3" GOTO TRE
IF "%Scelta%"=="4" GOTO ESCI
color CF
echo.
echo Scelta non valida: premi un tasto compreso tra 1 e 4.
echo.
echo Premi un tasto per continuare...
pause > nul
cls
color 9E
goto RICHIESTA
:UNO
echo .
echo Barovo Juventino! Premi un tasto per aprire il sito ufficiale...
pause > nul
cls
echo.
echo Apertura in corso...
start http://www.juventus.com/juve/it/home
cls
goto ESCI
:DUE
echo .
echo Bravo Milanista! Premi un tasto per aprire il sito ufficiale...
pause > nul
cls
echo.
echo Apertura in corso...
start http://www.acmilan.com/it
cls
goto ESCI
:TRE
echo .
echo Bravo Interista! Premi un tasto per aprire il sito ufficiale...
pause > nul
cls
echo.
echo Apertura in corso...
start http://www.inter.it/
cls
goto ESCI
:ESCI
echo.
echo Ciao.
echo.
echo Premi un tasto per uscire...
pause > nul
exit /b
http://en.wikipedia.org/wiki/Batch_file:
@echo off
color 0A
title Conditional Shutdown.
:start
echo Welcome, %USERNAME%
echo What would you like to do?
159 - TECNO 1
REL.
. 15. .11.11
echo.
echo 1. Shutdown in specified time
echo 2. Shutdown at a specified time
echo 3. Shutdown now
echo 4. Restart now
echo 5. Log off now
echo 6. Hibernate now
echo.
echo 0. Quit
echo.
set /p choice="Enter your choice: "
if "%choice%"=="1" goto shutdown
if "%choice%"=="2" goto shutdown-clock
if "%choice%"=="3" shutdown.exe -s -f
if "%choice%"=="4" shutdown.exe -r -f
if "%choice%"=="5" shutdown.exe -l -f
if "%choice%"=="6" shutdown.exe -h -f
if "%choice%"=="0" exit
echo Invalid choice: %choice%
echo.
pause
cls
goto start
:shutdown
cls
set /p min="Minutes until shutdown: "
set /a sec=60*%min%
shutdown.exe -s -f -t %sec%
echo Shutdown initiated at %time%
echo.
goto cancel
:shutdown-clock
echo.
echo the time format is HH:MM:SS (24 hour time)
echo example: 14:30:00 for 2:30 PM
echo.
set /p tmg=enter the time that you wish the computer to shutdown on:
schtasks.exe /create /sc ONCE /tn shutdown /st %tmg% /tr "shutdown.exe -s -t 00"
echo shutdown initiated at %tmg%
echo.
:cancel
set /p cancel="Type cancel to stop shutdown: "
if not "%cancel%"=="cancel" exit
shutdown.exe -a
cls
schtasks.exe /end /tn shutdown
cls
schtasks.exe /delete /tn shutdown
cls
echo Shutdown is cancelled.
echo.
pause
exit
OPERAZIONI con VARIABILI
Una volta inizializzata una variabile con
set /p "n=Inserisci il numero:"
è possibile effettuare delle operazioni sulle variabili usando set /a :
160 - TECNO 1
REL.
. 15. .11.11
set /a ris = %n% + %n%
In questo modo viene creata la variabile ris, che conterrà la somma n+n.
La variabile ris viene indicata senza %, mentre gli operandi sono tra %.
Sono supportate le 4 operazioni di base +, -, * e / con numeri interi positivi e negativi.
Nel file calcolatrice.bat è presente un esempio di uso delle 4 operazioni.
@echo off
:menu
cls
echo Calcolatrice base - operaz tra num interi pos e neg:
echo 1 per la somma
echo 2 per la sottrazione
echo 3 per la moltiplicazione
echo 4 per la divisione
echo 0 per uscire
echo.
set /p "Scelta=Scegli l'opzione(0-4):"
if "%Scelta%"=="0" goto esci
if "%Scelta%"=="1" goto somma
if "%Scelta%"=="2" goto sottrazione
if "%Scelta%"=="3" goto prodotto
if "%Scelta%"=="4" goto divisione
goto menu
:somma
set /p n1="Inserisci il primo operando:"
set /p n2="Inserisci il secondo operando:"
set /a ris= %n1% + %n2%
goto stampa
:sottrazione
set /p n1="Inserisci il primo operando:"
set /p n2="Inserisci il secondo operando:"
set /a ris= %n1% - %n2%
goto stampa
:prodotto
set /p n1="Inserisci il primo operando:"
set /p n2="Inserisci il secondo operando:"
set /a ris= %n1% * %n2%
goto stampa
:divisione
set /p n1="Inserisci il primo operando:"
set /p n2="Inserisci il secondo operando:"
set /a ris= %n1% / %n2%
goto stampa
:stampa
echo.
echo.Il risultato e' %ris%
echo.
pause
goto menu
:esci
NOTA Windows PowerShell
Windows PowerShell è una shell caratterizzata dall'interfaccia a riga di comando (CLI) e da un linguaggio di scripting, sviluppata da Microsoft. È basato sulla
programmazione a oggetti e sul framework Microsoft .NET. Windows PowerShell 1.0 ( http://support.microsoft.com/kb/926139 )
161 - TECNO 1
REL.
. 15. .11.11
Gruppi e Utenti
Le autorizzazioni di accesso alle risorse possono essere concesse a livello di singolo utente e a livello di gruppo. Tutti gli utenti appartenenti ad uno stesso gruppo
ereditano automaticamente da questo gli stessi diritti.
Ogni utente deve sempre far parte di almeno un gruppo.
Nel caso un utente appartenga a più gruppi aventi diritti diversi vengono imposte le autorizzazioni più restrittive
Nuovo utente Selezionando la voce Account Utente presente nel Pannello di controllo è possibile creare una nuova utenza usufruendo di una semplice
procedura guidata Per una migliore gestione di gruppi e utenti è possibile accedere alla voce Gestione computer presente tra gli Strumenti di amministrazione
del Pannello di controllo.
Espandendo la voce Utenti e gruppi locali troveremo due cartelle, una contenente tutti gli utenti definiti sul sistema e l'altra contenente tutti i gruppi
Gruppi
Administrators Users Power Users Creazione di un nuovo utente Appartenenza al gruppo
La protezione del filesystem
In un sistema operativo multi utente è importante che solo alcuni account possano accedere a determinati file e cartelle. Questo tipo di controllo è
realizzato tramite le autorizzazioni.Per poter accedere alle impostazioni di protezione è necessario abilitarne la visualizzazione dato che Windows XP
normalmente le nasconde:
si apra Risorse del computer e dal menu Strumenti si scelga Opzioni cartella. Nella scheda Visualizzazione si disabiliti la voce Utilizza condivisione file
semplice. Consenti nega
Controllo completo,
Modifica,
Lettura (per i file)/Esecuzione (per i programmi),
Visualizza contenuto cartella (solo per le cartelle),
Lettura e Scrittura.
Condividere una cartella
Fare clic con il pulsante destro del mouse sulla cartella o sull'unità, quindi scegliere Condivisione di rete e protezione.
Nella scheda Condivisione fare clic su Condividi la cartella.
Per modificare il nome della cartella o dell'unità condivisa, digitare un nuovo nome nella casella Nome condivisione. Il
nuovo nome assegnato sarà quello visualizzato da altri utenti quando viene effettuata la connessione alla cartella o
all'unità condivisa. Il nome vero e proprio della cartella o dell'unità non viene in realtà modificato.
Gestione di MMC
Microsoft Management Console (MMC) include gli strumenti di amministrazione utilizzabili per gestire utenti, cartelle, reti, computer, servizi e altri componenti
di sistema. Microsoft Management Console funziona da contenitore per diversi moduli amministrativi denominati snap-in. La maggior parte degli snap-in previsti
direttamente da Microsoft si richiamano dal Pannello di controllo, anche se in teoria possono essere richiamati da qualsiasi altro punto del sistema operativo.
Tra gli snap-in più comuni ricordiamo:
•
•
•
•
•
•
•
•
Gestione periferiche
Utilità di deframmentazione dischi
Internet Information Services
Gestione disco
Visualizzatore eventi
Cartelle Condivise
Servizi
Criteri di gruppo
162 - TECNO 1
REL.
. 15. .11.11
Aggiungi snap-in
Gestione disco
Creare un account utente locale, un nuovo gruppo e associa l’utente al nuovo gruppo
Per impostare singole autorizzazioni per un utente o gruppo, tramite una riga di comando, digitare cacls o icacls:
cacls /G <utente:autorizzazione>
Ad esempio, per specificare le autorizzazioni di scrittura per l'utente Monica su un file denominato 002.jpg, digitare:
cacls 002.jpg /G Monica:w
Per revocare l'accesso alla cartella condivisa, digitare:
cacls /R <utente>
163 - TECNO 1
REL.
. 15. .11.11
Ad esempio, per revocare l'accesso alla cartella condivisa per un utente con nome utente Monica, digitare:
Cacls /R Monica
Per condividere una cartella o un'unità tramite una riga di comando
Digitare net share <nomecondivisione=unità:percorso>
Ad esempio, per condividere una cartella denominata “aaa” situata nell'unità C:
net share aaa=C:\
Il registro di sistema - Windows Registry
Per registro di sistema o registry ci si riferisce all’ archivio di informazioni sulla configurazione di un computer, cioè al database in cui sono custodite le opzioni e
impostazioni di Microsoft Windows e di tutte le applicazioni installate. Il registro di sistema è, quindi, un database di Windows che contiene informazioni
importanti relative all'hardware del sistema, ai programmi installati e alle impostazioni, nonché ai profili di ogni account utente creato nel computer. Windows
fa continuamente riferimento alle istruzioni presenti nel Registro di sistema.
È consigliabile non apportare modifiche manuali al Registro di sistema, poiché in genere tutte le modifiche necessarie vengono apportate automaticamente dai
programmi e dalle applicazioni. L'applicazione di una modifica non corretta al Registro di sistema, potrebbe rendere il computer inutilizzabile. Tuttavia, se nel
Registro di sistema è indicato un file corrotto, potrebbe essere necessario apportare modifiche.Prima di modificare il Registro di sistema, è consigliabile eseguire
una copia di backup e modificare solo i valori nel Registro di sistema con cui si ha familiarità o la cui modifica è stata indicata da persone fidate.
Ogni impostazione di Windows - dallo sfondo del desktop, ai colori dei pulsanti, alle licenze delle applicazioni - è memorizzata nel Registro. Quando un utente
effettua dei cambiamenti nel Pannello di Controllo, nelle Associazioni dei file, nelle impostazioni del sistema o nel software installato, questi cambiamenti sono
memorizzati nel Registro.
Ogni utente ha una sezione univoca nel Registro.
Il processo di login di Windows recupera le impostazioni di sistema dal Registro per riconfigurare il sistema allo stato in cui si trovava l’ultima volta in cui l'utente
lo ha avviato.
Le informazioni contenute all'interno del registro di sistema possono essere visualizzate ed eventualmente modificate, mediante l'utilizzo di un programma
chiamato Registry Editor.
Il registro è organizzato in una gerarchia originata da alcune sezioni principali; ogni nodo della gerarchia è detto chiave (key), ed ogni nodo può contenere uno o
più elementi di dati, detti valori (values), di cui uno anonimo (retaggio di compatibilità).
Le chiavi di primo livello (chiavi radice, root keys) hanno il nome interamente in maiuscolo con "HKEY" come prefisso, dall'abbreviazione di handle to a key (che
ha origine dalla API di Windows), (mal) traducibile come maniglia di una chiave; i loro nomi sono solitamente abbreviati in una sigla di tre o quattro lettere, con
prefisso "HK".
Ad esempio:
In HKEY_CLASSES_ROOT (abbreviato in HKCR) sono memorizzate informazioni circa le applicazioni registrate, come le associazioni dei tipi di file e le classi OLE.
In HKEY_CURRENT_USER (abbreviato in HKCU) sono memorizzati tutti i dati del registro relativi al profilo dell'utente attivo.
Regedit
L'utilizzo dell'Editor del registro di configurazione (Regedit , Registry Editor) non è documentato poiché trattasi di un programma che va utilizzato con estrema
cautela e solo da parte degli utenti più evoluti.. Ogni modifica, poi, che applicherete al registro di sistema va apportata con attenzione assicurandosi più e più
volte di ciò che si sta facendo.
L'Editor del registro di sistema può essere avviato cliccando il pulsante Avvio/Start, quindi sulla voce Esegui... ed, infine, digitando REGEDIT.
Avviato il Registry Editor, sulla sinistra si possono notare una serie di cartelle il cui nome inizia con il prefisso HKEY
Facendo doppio clic con il mouse su una delle cartelle visualizzate, ne viene immediatamente mostrato il contenuto : un insieme di informazioni nel Registro di
sistema di Windows costituiscono una Chiave (key) del Registro di sistema. Le informazioni contenute nella chiave consentono di controllare l'aspetto e il
funzionamento di specifiche parti di Windows.
Le varie sottoramificazioni si chiamano chiavi (keys in inglese) e sono contrassegnate con un'icona molto simile a quella che Windows utilizza per
indicare le cartelle memorizzate all'interno del disco fisso. L'insieme delle chiavi presenti all'interno del registro di sistema forma una struttura ad
albero fortemente ramificata dato che ciascuna chiave può contenere un numero enorme di sottochiavi
164 - TECNO 1
REL.
. 15. .11.11
All'interno di ogni chiave sono memorizzate, sotto forma di valori (values), le informazioni vere e proprie utilizzate da Windows e dalle applicazioni
con cui lavoriamo quotidianamente.
I valori memorizzati nella chiave selezionata sono elencati nel pannello di destra del Registry Editor: essi possono essere essenzialmente di tre tipi:
String, Binary o DWord, a seconda del tipo di dati che essi contengono.
Il registro di sistema contiene cinque chiavi principali - importantissime - dalle quali si dipartono tutte le varie sottochiavi. Tali chiavi sono elencate
nel pannello di sinistra del Registry Editor ed è attribuito loro un nome che comincia per HKEY.
La peculiarità principale del registro di sistema è quindi quella di possedere una struttura gerarchica che, nonostante possa sembrare molto
complessa, somiglia alla struttura delle cartelle contenute nel disco fisso.
Chiave HKEY_CLASSES_ROOT
In HKEY_CLASSES_ROOT (abbreviato in HKCR) sono memorizzate informazioni circa le applicazioni registrate, i tipi di file utilizzati nonché informazioni
su componenti OLE e le applicazioni che li utilizzano nonchè le definizione di classe degli oggetti software utilizzati dai programmi. Contiene
riferimenti alla sezione HKEY_LOCAL_MACHINE
Chiave HKEY_CURRENT_USER
Abbreviato HKCU, HKEY_CURRENT_USER è dove sono memorizzati tutti i dati del registro relativi al profilo dell'utente attivo. Questa chiave racchiude
informazioni sull'utente che sta attualmente utilizzando Windows. In questa sezione si fa riferimento alle impostazioni contenute in HKEY_USERS.
Tra le sottochiavi troviamo:
AppEvents Contiene quali suoni devono essere eseguiti al verificarsi dei vari eventi di sistema
Control Panel Racchiude le informazioni sul Pannello di controllo
InstallLocationsMRU Elenco delle cartelle tra cui l'utente può scegliere quando Windows richiede l'inserimento di un percorso per
l'installazione di nuovi driver o di componenti aggiuntive del sistema.
Keyboard layout Contiene informazioni sulla tastiera
Network Informazioni sulle connessioni di rete.
165 - TECNO 1
REL.
. 15. .11.11
Remote Access Racchiude informazioni sulle connessioni di accesso remoto, ad esempio i parametri dei vari account Internet.
Software Ospita informazioni sulla configurazione dei vari programmi installati
Local Questa chiave contiene informazioni sull'hardware e sulle impostazioni software del S.O. che interessano tutti gli utenti del
computer (per esempio il tipo e il numero dei dischi fissi nonché il percorso dei file di sistema sono uguali per tutti gli utenti di una stessa
macchina).
User Informazioni su ciascun utente che utilizza il PC. Quando un utente inserisce il proprio nome all'avvio di Windows, il sistema provvede immediatamente a
scegliere la configurazione associata a quell'utente (aspetto del desktop, impostazioni delle varie applicazioni e così via).
Chiave HKEY_LOCAL_MACHINE, abbreviato HKLM, contiene impostazioni comuni a tutti gli utenti del sistema.
Chiave HKEY_USERS (abbreviato HKU), sono presenti le chiavi HKEY_CURRENT_USER di tutti gli utenti connessi al sistema.
Chiave HKEY_CURRENT_CONFIG , abbreviato HKCC, è dove sono raccolte informazioni volatili sulla sessione.
Ovviamente si possono modificare i valori delle chiavi ma…
Prima di apportare modifiche a una chiave del Registro di sistema o a una sottochiave, è consigliabile esportare o eseguire una copia di backup della chiave o
della sottochiave. È possibile salvare la copia di backup in un percorso specificato, ad esempio in una cartella nel disco rigido oppure in un dispositivo di
archiviazione rimovibile. Nel caso si desideri annullare le modifiche apportate, sarà possibile importare la copia di backup.
•
•
•
•
Individuare e fare clic sulla chiave o la sottochiave di cui si desidera eseguire il backup.
Scegliere Esporta dal menu File.
Nella casella Salva in selezionare il percorso in cui si desidera salvare la copia di backup e quindi digitare un nome per il file di backup nella casella
Nome file.
Fare clic su Salva
Esegui…in Windows
Moltissimi sono i programmi chiamabili direttamente da Start->Esegui (http://www.googlisti.com/2006/10/01/117-comandi-esegui-in-windows-xp.html ). Ad
esempio una piccola vetrina:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Msconfig : per scegliere cosa avviare all’inizio
Regedit : per modificare il registry
Msinfo32 : sommario del PC
Dxdiag : diagnostica dei componenti DirectX
Cmd : command prompt, lancia la shell DOS
Calculator – calc,
Clipboard Viewer – clipbrd,
Disk Cleanup Utility – cleanmgr,
Disk Defragment – dfrg.msc,
Dr. Watson System Troubleshooting Utility – drwtsn32,
Firefox – firefox,
Hearts Card, Game – mshearts,
HyperTerminal – hypertrm,
Internet Explorer – iexplore,
Malicious Software Removal Tool – mrt,
Netmeeting – conf,
Notepad- notepad,
Windows Media Player – wmplayer,
Windows Messenger – msmsgs,
Windows XP Tour Wizard – tourstart,
Msconfig (Avvio), per scegliere cosa avviare all’inizio:
166 - TECNO 1
REL.
. 15. .11.11
Installazione di Windows
Installazione del sistema operativo.
Supponiamo di istallare il sistema operativo Windows (7) che, tipicamente, usa il File System NTFS (New Technology File System) che può supportare, in teoria,
partizioni di dimensioni fino a 16 exabyte, (ed è piu’ sicuro del vecchio File Allocation Tabl, 32-bit (FAT32), File system che non può supportare partizioni di
dimensioni superiori a 2 TB (2048 GB)).
Durante l’istallazione vengono richieste informazioni circa le lingue usate, il Codice del prodotto, il Nome del computer, le Informazioni sul Gruppo di Lavoro o
sul Dominio e la Creazione degli account con le password e, infine, gli aggiornamenti automatici (Start > Tutti i Programmi > Accessori > Utilità di Sistema >
Aggiornamenti Automatici ). La verifica dell’hardware installato correttamente puo’ essere fatta dal Pannello di Controllo con la Gestione dei dispositivi.
(Spesso risulta comodo poter istallare lo stesso S.O. su piu’ macchine utilizzando la clonazione del disco. E’ possibile utilizzare lo strumento Microsoft Sysprep
(System Preparation), che consente di installare e configurare lo stesso sistema operativo su molti computer.)
Procedura Installazione Sistema Operativo (Windows XP)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
tasto di Reset
Avvio Boot da CD/DVD/. . . (premendo un tasto)
Avvio caricamento driver di base del sistema operativo
Scelta : Installazione (o console di ripristino)
Accettazione Licenza
Scelta : (Ripristino o) Partizione
Gestione Partizione
Formattazione NTFS (rapida o normale)
Riavvio e Installazione guidata S.O
a.
Scelta lingua
b. Personalizzazione : nome, organizzazione
c.
Product KEY
d. Account
e. data & ora
f.
Configurazione NIC : dominio o gruppo
Completamento installazione & Riavvio automatico
Guida Rapida
Attivazione Licenza
Creazione Utenti
167 - TECNO 1
REL.
. 15. .11.11
14. PROCESSO TERMINATO
Aggiornamento del Sistema Operativo
Questa attività prevede di utilizzare il proprio computer, Internet o un negozio locale per raccogliere informazioni sull’aggiornamento del Sistema Operativo.
Prepararsi a discutere la propria ricerca con la classe.
1. Quale Sistema Operativo (OS) è installato sul proprio computer?
2. Elencare le opzioni di configurazione disponibili per aggiornare il Sistema Operativo.
3. Quale opzione di configurazione sarebbe preferibile per aggiornare il Sistema Operativo? Spiegare i motivi della scelta di una particolare opzione.
4. Iniziare il processo d'aggiornamento per il Sistema Operativo. Elencare tutti gli aggiornamenti di sicurezza disponibili.
Windows: avvio (basato su appunti Cisco System)
•
•
•
•
•
•
•
•
Il processo di avvio, chiamato "avvio a freddo" (cold boot), avviene quando si accende il computer
Il computer effettua il POST (Power-On Self Test). Un eventuale errore verrà segnalato con una sequenza di codici sonori.
Dopo il POST, il BIOS localizza e legge le impostazioni di configurazione che sono memorizzate nella memoria CMOS, individuando la prima unità disco
che contiene il sistema operativo e il record di avvio principale (MBR-Master Boot Record) che punta al “boot loader” denominato NT Loader
(NTLDR).
Se sul PC sono caricati più sistemi operativi, il boot loader trova nel file BOOT.INI i vari sistemi operativi e permette all'utente la possibilità di scegliere
quale caricare
Inoltre lancia NTDETECT.COM per ricavare informazioni sull'hardware installato.
Localizza, sempre usando Boot.ini, la partizione da cui caricare il kernel di XP: NTOSKRNL.EXE e HAL.DLL.
NTLDR legge il registro (Registry) e carica i driver delle periferiche associate al profilo trovato (in HKEY_Local_Machine si trovano le informazione
hardware e software del computer (http://support.microsoft.com/kb/256986 )
A questo punto il kernel, il cuore del sistema operativo, lancia il file di login denominato WINLOGON.EXE che mostra la schermata di benvenuto
(login) di XP.
Dopo che si è installato Windows XP, si potrebbe voler gestire il sistema e apportare modifiche alla configurazione (da Esegui…):
•
Msconfig - consente di impostare i programmi che verranno eseguiti alla partenza e di modificare i file di configurazione. Inoltre offre un controllo
semplificato sui servizi Windows
•
Regedit.exe - Questa applicazione consente di modificare il registro
•
Msinfo32 – mostra un completo sommario dell’hardware e software presente suo PC
•
Dxdiag diagnostica per i driver e componenti DirectX
•
Cmd – lancia la Shell DOS, cioè la finestra del DOS con il prompt dei comandi (C:\directory>)
Modalità di Avvio
Windows può essere avviato in diverse modalità. Premendo il tasto F8 durante il processo di avvio si apre il Menù Opzioni Avanzate di Windows che consente di
scegliere come avviare Windows:
•
Modalità Provvisoria - Avvia Windows ma carica solo i driver per i componenti di base, quali la tastiera e il video.
•
Modalità Provvisoria con Rete - Avvia Windows in maniera identica alla modalità provvisoria, ma carica anche i driver per i componenti di rete.
•
Modalità Provvisoria con Prompt dei comandi - Avvia Windows e carica il prompt dei comandi invece dell'interfaccia grafica utente (GUI).
•
Ultima Configurazione Sicuramente Funzionante - Permette all'utente di caricare le impostazioni di configurazione di Windows usate l'ultima volta
che Windows è stato eseguito con successo. Questo è possibile accedendo ad una copia del registro che è stata creata per questo scopo.
Per provare a istallare un nuovo sistema operativo, senza creare nuove partizioni, è possibile usare : Oracle virtual box http://www.virtualbox.org/
http://www.virtualbox.org/wiki/VirtualBoxTV#VirtualBoxLiveShow
168 - TECNO 1
REL.
. 15. .11.11
Capire i problemi di un dispositivo
(troubleshooting)
Troubleshooting = come capire i problemi di un dispositivo
I problemi dei computer e delle periferiche possono derivare da diversi fattori che, spesso, sono legati fra loro e determinano una difficile comprensione. Spesso
i problemi derivano da una combinazione di fattori hardware, software e di rete. Esistono però delle tecniche per capire e risolvere un problema. Il processo che
analizza il problema e determina la causa viene chiamato troubleshooting che si sviluppa in una serie di passi da effettuare:
Raccolta informazioni dal cliente : al cliente vengono poste una serie di domande chiuse e aperte:
•
quale problema si è verificato sul computer o in rete?
•
Cosa si stava facendo quando è successo?
•
È stato istallato di recente un nuovo software o una nuova versione?
•
Quali messaggi di errore si sono verificati?
•
E’ stata cambiata la password?
•
Chi ha usato il computer?
•
Si riesce ad accedere a periferiche in rete?
•
Si accede ancora a Internet?
•
Verfica problemi: dopo aver parlato con il cliente, non bisogna trascurare le situazioni piu’ ovvie:
•
C’è il blocca maiuscole attivo?
•
C’è una chiavetta non avviabile inserita?
•
Le impostazioni delle unità disco e la sequenza di boot sono correttamente configurate nel BIOS?
•
È possibile accedere con un altro account utente?
•
Il computer è stato spento senza rispettare la corretta procedura di spegnimento?
•
La password è stata cambiata?
•
Il monitor è alimentato correttamente e le impostazioni del monitor sono corrette?
Soluzioni rapide
•
Esaminare Gestione Periferiche per eventuali conflitti di periferica
•
Eseguire cleanmgr per eliminare i file temporanei
•
Eseguire chkdsk/f per risolvere problemi sui dischi rigidi
•
Eseguire defrag per velocizzare il disco rigido
•
Riavviare il computer
•
Accedere con un diverso utente
Eventualmente:
•
Utilizzare l’Ultima Configurazione Funzionante (Menù F8)
•
Avviare in Modalità Provvisoria per risolvere i problemi video
•
Disinstallare un’applicazione aggiunta di recente
•
Tornare ad una precedente configurazione con i Punti di Ripristino
Raccolta informazioni dal dispositivo: se con tali soluzioni non si riesce a correggere il problema, si raccolgono informazioni dal dispositivo connesso in rete:
•
Esaminare i file di sistema e i file di configurazione
•
Utilizzare software di diagnostica
•
Consultare il manuale della scheda madre o il sito del
•
Esaminare il Visualizzatore Eventi per determinare la causa del problema del computer
Valutazione problema e implementazione della soluzione: a questo punto, si hanno sufficienti informazioni per valutare il problema e attuare le possibili
soluzioni utilizzando:
•
Esperienza propria o di colleghi
•
Siti Internet professionali e/o del produttore
•
Forum on line, FAQ
•
Manuali
Conclusione: Risolto il problema si passa alla fase conclusiva con il cliente, fornendo:
•
Dimostrazione del buon funzionamento del sistema
•
Spiegazione della soluzione attuata
•
Eventuale dimostrazione di schede o cavi cambiati
•
Documentazione del tempo usato
•
Documentazione globale del lavoro prodotto
169 - TECNO 1
REL.
. 15. .11.11
Attività
In questa attività,si effettuerà il troubleshooting di un computer che non si avvia correttamente e poi si procederà alla sua riparazione.
• Apparecchiatura: computer con Windows
•Bracciale antistatico
•Kit di utensili
Scenario
Il computer non si avvia. Emette costantemente segnali sonori (beep).
Passo 1
Scollegare il cavo di alimentazione dal computer. Controllare gli altri cavi esterni.
Assicurarsi che tutti gli altri cavi esterni siano posizionati e fissati correttamente.
Assicurarsi che ogni interruttore di alimentazione sia impostato su “off” o su “0”.
Passo 2
Aprire il case e controllare tutti i cavi dati e i cavi di alimentazione interni. Controllare che le schede di espansione e i moduli di RAM siano inseriti
correttamente.
Passo 3
Rimuovere il bracciale antistatico. Se esiste un interruttore sull'alimentatore, impostarlo su “on” o su “1”. Accendere il computer.
Quali operazioni sono state eseguite per risolvere il problema del computer?
SchedaTecnica
(Risoluzione di un Problema di Avvio)
In questa attività, si raccoglieranno informazioni dal cliente e lo si istruirà su come riparare un
computer che non si avvia. Documentare il problema del cliente in “Scheda Lavoro”.
In questa scheda, si utilizzeranno i dati del contatto e la descrizione del problema indicata dal cliente di seguito per riportare. Le informazioni saranno poi
riportate in un “Ordine di lavoro” a un tecnico di secondo livello.
Scheda Cliente
ID Intervento # 2345
Tecnico: Piero Alighieri
Cod. 3547
Data…12/12/12
Dati Cliente
Azienda: PM Viaggi s.r.l.
Contatto: Giulio Barba
Indirizzo: 20933 Castelrotto (VT)
Telefono: 08989995
Cell. : 3448967556
email: [email protected]
Descrizione del Problema citata dal cliente
Lavoro continuamente con le automobili e so come si comportano, ma non so come funziona il mio computer. Stamattina era abbastanza lento perché,
immaginavo, molti utenti stavano accedendo a quei siti Internet di viaggi. Così, dopo il caffè mattutino, ho deciso di capire cosa accadesse al mio computer di
lavoro. Ho aperto il case e cominciato a guardare i diversi componenti interni.
Quando ho spinto in dentro tutti i connettori, mi sembravano tutti ben fissati e non ho visto nessuna parte che si muovesse. Adesso ha smesso di funzionare
completamente. Ed emette continuamente dei beep sonori.
Soluzione del Problema:
Inoltrato ticket n. 3456A al tecnico di secondo livello COD. 7787
Dopo aver riportato al tecnico di secondo livello la descrizione del problema, fornire le Informazioni Aggiuntive per rispondere a ogni ulteriore domanda che il
tecnico può porre.
Ordine di lavoro
Generazione Ticket n. 3456A
Da (tecnico inoltrante): Piero Alighieri – Cod. 3547
A (tecnico destinatario):Gianna Agnelli – Cod. 7787
ID Intervento # 2345
Data…12/12/12
170 - TECNO 1
REL.
. 15. .11.11
Azienda: PM Viaggi s.r.l.
Contatto: Giulio Barba
Indirizzo: 20933 Ripafratta (TT)
Telefono: 08989995
Cell. : 34456576896690
email: [email protected]
Categoria: Hardware
Codice: Chiusura
Stato : Aperto
Tipo: X In lavorazione O In Sospeso O In Sospeso fino alla Data……………………………..
Impatto su Attività Aziendale? X Sì O No
---------------------------------------------------------------------------------Riepilogo
Il computer non si avvia. Emette costantemente segnali sonori (beep).
Tipo di Connessione: …………………………………………
Priorità 2
Ambiente/Piattaforma Utente: Windows Seven
Descrizione del Problema:
Il computer non si avvia. Il cliente non conosce il produttore del BIOS. Il cliente non è in grado di risalire al tipo di errore dalla sequenza di beep. Il cliente non
sente alcun altro suono strano dal computer. Il cliente non sente odore di fumo o di bruciato sulle parti elettroniche.
Informazioni Aggiuntive (a cura del tecnico di primo livello):
•
SO “Windows Seven”
•
Al computer non è stato aggiunto nuovo hardware
•
Il computer non è stato spostato di recente
•
Ad eccezione dei beep, non si sente alcun altro suono particolare
•
Non si sente odore di fumo o di parti elettroniche bruciate
•
Sembra che rispetto a ieri non ci sia nulla di diverso nel computer
Soluzione del Problema(a cura del tecnico di secondo livello):
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
171 - TECNO 1
REL.
. 15. .11.11
Il documento WEB: HTML e CSS
HTML e CSS
Le applicazioni web costituiscono sistemi complessi e si basano su una varietà di componenti hardware e software, di protocolli, linguaggi, interfacce e standard.
Gli ingredienti base, almeno per ciò che riguarda il software, comprendono il protocollo http, per il trasferimento in rete delle risorse, il linguaggio HTML, per la
scrittura degli ipertesti, gli scritpt lato Client, per una interattività maggiore della pagina web, i fogli di stile (CSS) usati per dare maggior potere espressivo alle
pagine e per separare il contenuto dalla presentazione, il linguaggio XML, per la descrizione strutturata di documenti.
La gestione delle pagine dinamiche passa, poi, attraverso una serie di tecnologie di supporto e script lato Server: CGI, servlet Java, ASP, PHP, Java Server Page e
infine, attraverso le architetture complesse a tre strati Model View Control (MVC), con Java 2 Entrprise Edition e Microsoft.NET.
Inoltre, sempre maggior attenzione, viene data alla possibilità di pubblicazioni di contenuti per dispositivi mobili.
In questo capitolo focalizzeremo l’attenzione esclusivamente al lato Client e , in particolare, a HTML e CSS per la realizzazioni di semplici pagine Web.
HTML (.htm, .html) è un linguaggio di markup, cioè fornisce un insieme di regole di formattazione di documenti, con capacità di collegamenti ipertestuali, basate
su speciali marcatori, TAG, che definiscono gli elementi. L'HTML fornisce le regole di impaginazione, formattazione e visualizzazione (layout) del contenuto di
una pagina web.
Tutti i siti web usano il formato HTML, il cui codice, richiesto e ottenuto da un web server, viene interpretato dal browser, che mostra la pagina letta sul
computer (http://www.w3schools.com/html/default.asp ).
Tutti i siti web usano il formato HTML, il cui codice, richiesto e ottenuto da un web server, viene interpretato dal browser, che mostra la pagina letta sul
computer (http://www.w3schools.com/html/default.asp ):
<html>
<body>
<h1>La mia prima intestazione</h1>
<p>Il mio primo paragrafo </p>
<a href="http://www.isisfacchinetti.it">
link</a>
</body>
</html>
Consideriamo la seguente tabella:
<table>
<thead>
<tr>
<td>Nome</td>
</tr>
</thead>
<tbody>
<tr>
<td> Pinco</td>
<td> Pincone</td>
</tr>
<tr>
<td> Pollo</td>
<td> Pollone</td>
</tr>
<td>Cognome</td>
</tbody>
</table>
Ogni TAG ha una serie di proprietà che definiscono lo stile del TAG (colore, larghezza…). Queste proprietà sono gli attributi del TAG, per cui volendo cambiare il
colore di sfondo potremo scrivere
<td bgcolor=#9ACD32>Nome</td>
<td bgcolor=#9ACD32>Cognome</td>
Un attributo definisce una proprietà dell’elemento ed è contenuto all’interno del tag iniziale. La forma è:
nome_attributo = “valore”
Ogni elemento ha decine di attributi. Ad es TABLE puo’ avere: align, bgcolor, border,etc. Cosi’, con questa sintassi:
<table width="75%" border="2" cellpadding="8" cellspacing="0">
si imposta una tabella con bordo di 2 pixel, senza spazio tra le celle e con il contenuto che viene distanziato dai bordi della cella di 8 pixel.
172 - TECNO 1
REL.
. 15. .11.11
Fogli di Stile (CSS)
L’affollamento di attributi all’interno della pagina web può avere effetti nefasti, generando confusione e ridondanze. I fogli di stile (CSS, Cascading Style Sheets)
cercano di mitigare questi effetti
I fogli di stile sono composti da regole che descrivono come presentare gli elementi di una pagina HTML per strutturarla in modo opportuno nello stesso modo in
cui una tovaglia riveste un tavolo per renderlo presentabile!
Ogni regola ha due parti fondamentali: il selettore e il blocco della dichiarazione.
Il selettore descrive quale è la parte di documento a cui va applicata la regola, il blocco delle dichiarazioni, racchiuso tra paretesi graffe, contiene una o più
dichiarazioni , separate da punto e virgola, costituite, a loro volta, da proprietà e, separato con i due punti dal valore.
I CSS, si applicano all’elemento, alla classe e all’ identificatore (ID):
Nome elemento
p
{
text-align:center; /*questo è un commento*/
color:red;
font-family:arial;
}
Nome della Classe, cioè del gruppo di regole
<html>
<head>
<style type="text/css">
.center{text-align:center;}
</style>
</head>
<body>
<h1 class="center">Center-aligned heading</h1>
<p class="center">Center-aligned paragraph.</p>
</body> </html>
ID dell’elemento
<html>
<head>
<style type="text/css">
#pippo
{
text-align:center;
color:red;
}
</style>
</head>
<body>
<p id="pippo">Hello World!</p>
<p>questo paragrafo non è soggetto a variazioni perchè non ha l’id “pippo”.</p>
</body> </html>
Le regole CSS possono:
essere scritte direttamente nel Tag in modalità inline (meglio non usare!):
<table style=”background-color:#9ACD32”>
incorporate (internal) nel file html con il TAG <style>:
<style type="text/css" media="all">
body {
font-family: georgia,sans-serif;
}
h1 {
.....
</style>
inserite, in un file esterno (external) che viene, poi, collegato , in html:
<link href="stile.css" rel="stylesheet" type="text/css">
173 - TECNO 1
REL.
. 15. .11.11
La modalità inline ha maggiore priorità, seguita dalla internal e dalla external.
I CSS sfruttano l’ ereditarietà: le proprietà impostate per un elemento sono automaticamente ereditate dai suoi discendenti.
http://www.w3schools.com/css/css_id_class.asp)
(cfr.
Attributi di stile
Gli attributi di stile si possono riferire a vari elementi, tra cui:
Stili di background
body {background-color:#b0c4de;}
div {background-color:#b0c4de;}
body {background-image:url('paper.gif');}
Stili di testo, font, link, list, table :
body {color:blue;}
h1 {color:#00ff00;}
p{font-family:"Times New Roman", Times, serif;}
h1 {font-size:2.5em;}
p {font-size:14px;}
a:link {color:#FF0000;}
ul.a {list-style-type: circle;}
table
{
width:100%;
}
L’esempio sottostante mostra il modo di usare il CSS, definendo un’immagine come sfondo e colori diversi per
intestazioni e paragrafi
<html>
<head>
<title>zero</title>
<style type="text/css">
body {background-image:url('paper.jpg');}
h1 {color:red;}
h2 {color:blue;}
p {color:green;}
</style>
</head>
<body>
<h1>All header 1 elements will be red</h1>
<h2>All header 2 elements will be blue</h2>
<p>All text in paragraphs will be green.</p>
<h2>Santa Sofia</h2>
<img border="0" src="/images/santasofia.jpg" alt="Pulpit rock" width="304" height="228" />
</body>
</html>
Lo stesso esempio ma con CSS esterno presente nel file style01 con l’aggiunta di una immagine presa da Internet e
dalla cartella sottostante
<html>
<head>
<title>zero1</title>
<link rel="stylesheet" type="text/css" href="style01.css" />
</head>
<body>
<h1>All header 1 elements will be red</h1>
174 - TECNO 1
REL.
. 15. .11.11
<h2>All header 2 elements will be blue</h2>
<p>All text in paragraphs will be green.</p>
<h2>Santa Sofia</h2>
<img width="325" height="312" src="http://farm7.static.flickr.com/6063/6073084457_b967ee1c4a.jpg" style="padding-right: 8px; padding-top: 8px;
padding-bottom: 8px;"></body>
<img border="0" src="images/santasofia.png" alt="Santa Sofia" width="304" height="228" />
</body>
</body>
</html>
Style01:
body
{
font-size:75%;
font-family:verdana,arial,'sans serif';
background-color:#FFFFF0;
background-image:url('paper.jpg');
color:#000080;
margin:10px;
}
h1 {font-size:200%;}
h2 {font-size:140%;}
h3 {font-size:110%;}
th {background-color:#ADD8E6;}
ul {list-style:circle;}
ol {list-style:upper-roman;}
a:link {color:#000080;}
a:hover {color:red;}
Box model e Schemi di posizionamento
Box Model
Un elemento HTML puo’ essere considerato un box. Il termine box model viene usato nei CSS per indicare la disposizione (layout) dell’elemento. Il box model
permette di disporre l’elemento con o senza bordi e margini. Un box comprende quattro aree: un’area destinata ai contenuti e tre aree opzionali (il padding, il
border e il margin).
http://www.w3schools.com/css/css_boxmodel.asp
Nota - Se il padding è impostato a zero, il perimetro del padding è uguale a quello del contenuto; se il border è impostato a zero (o a none) il perimetro del
border coincide con quello del pudding.
Quasi tutti gli elementi che vengono utilizzati in ambito html (e xhtml) possono essere suddivisi tra elementi block ed elementi inline.
Un elemento a livello block presenta alcune caratteristiche:
inizia sempre con una nuova riga;
l’altezza, l’interlinea e i margini dell’elemento possono essere gestiti;
se non viene specificata, la larghezza di default dell’elemento è il 100%.
Elementi di questo tipo sono: div, p, (form), ul, li, h1, h2, h3…)
Gli elementi inline invece:
iniziano sulla stessa riga;
l’altezza e i margini superiore ed inferiore non possono essere impostati;
la larghezza corrisponde a quella del testo o dell’immagine contenuta e non può essere manipolata.
175 - TECNO 1
REL.
. 15. .11.11
Elementi di questo tipo sono: span, a, label, input, img, strong ed em
Display
E’ possibile anche applicare uno stile a un selettore interno a un altro selettore o nacondere un elemento:
p
{
color:blue;
}
.c1
{
background-color:blue;
}
.c1 p
{
color:white;
}
h1.hidden {display:none;}
Pseudo classi
Le pseuo-classi sono usate per fornire particolari effetti ad alcuni selettori:
selector:pseudo-class {property:value;}
a:visited {color:#0C0F00;} /* link visitato*/
selector.class:pseudo-class {property:value;}
a.green:visited {color:#00FF00;}
Cme le pseudo-classi anche i pseuo-elementi sono usati per fornire particolari effetti ad alcuni selettori, ad ex.:
selector:pseudo-element {property:value;}
p:first-letter { font-size:xx-large;}
E’ inoltre possibile agire sulla barra di navigazione (<li>), sulle immagini e sugli attributi:
[title=telemacone]
{
border:10px solid red;
}
Posizionamento
Una importante funzione è quella del posizionamento degli elementi all’interno della pagina web usando i CSS (virual formattig model) e di decidere quale
elemento sia posizionato davanti a un altro.
Sebbene il posizionamento possa essere effettuato con tabelle, l’uso dei div rende il posizionamento dei box piu’ accessibile e manipolabile. In particolare vi
sono quattro schemi di posizionamento:
statico o normale: è la posizione normale che per default la pagina assegna a ogni elemento; i box vengono disposti uno dopo l’altro in modo verticale, gli
elementi inline sono disposti orizzontalmente uno dopo l’altro
fisso: l’elemento è posizionato in modo fisso rispetto alla pagina del browser e non si muoverà da li’ anche se la pagina è scrollata!
p.posiz_fixed
{
position:fixed;
top:20px;
right:10px; // bottom, left
}
relativo: specifica un offset rispetto alla posizione normale, con distanze relative rispetto al punto in cui sarebbe collocato l’elemento
h1.posiz_left
{
position:relative;
left:-30px;
}
assoluto: l’elemento è posizionato rispetoo all’elemento precedente che non ha una posizione statica. Se non ce ne sono è posizionato rispetto al contenotore
<html>
h1
{
position:absolute;
left:10px;
top:20px;
}
Esiste, inoltre, la possibilità di rendere l’elemento float. Cio’serve a posizionare il box che viene , prima, posizionato secondo la condizione normale e poi shiftato
a destra o a sinistra all’interno del blocco contenitore.
176 - TECNO 1
REL.
. 15. .11.11
img
{
float:right; //right, none
}
Se, ad esempio l’immagine è all’interno di u <p>, l’immagine si posizionerà a destra del blocco paragrafo.
Nota - Ordine di posizionamento: se due o piu’ elementi sono collocati sullo stesso posto , l’elemento citato per primo compare sopra (l’attributo z-index, puo’
modificare l’ordine)
Un semplice esempio (cfr http://www.constile.org/template/nuovo_layout_a_tre_colonne/):
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link rel="stylesheet" type="text/css" href="styler.css" />
<title>telemacone piccolo</title>
</head>
<body>
<!-- testa -->
<div id="testa"><h1>il telemacone</h1></div>
<!-- /testa -->
<hr />
<!-- corpo -->
<div id="corpo">
<div id="corpo-colonna1">[il]</div>
<div id="corpo-colonna2">[tele]</div>
<div id="corpo-colonna3">[macone]</div>
</div>
<!-- /corpo -->
<hr />
<!-- pie' di pagina -->
<div id="piedipagina"><p>pié di pagina</p></div>
<!-- pie' di pagina -->
</body>
-----------------------e il relativo css ("styler.css"):
BODY
{
TEXT-ALIGN: center
}
#testa
{MARGIN: 1em auto; WIDTH: 760px; COLOR: white; BACKGROUND-COLOR: brown; TEXT-ALIGN: left}
#corpo
{
MARGIN: 1em auto;
WIDTH: 760px;
BACKGROUND-COLOR: mintcream;
TEXT-ALIGN: left
}
#piedipagina
{
MARGIN: 1em auto;
WIDTH: 760px;
BACKGROUND-COLOR: paleturquoise;
TEXT-ALIGN: left
}
#corpo-colonna1, #corpo-colonna3{
BACKGROUND-COLOR: yellow;
}
#corpo-colonna2 {
}
(Si noti l’uso di doctype che consente di usare i posizionamenti nello stesso moso anche per il browser IE.). L’output su browser mostra le tre righe nel corpo:
177 - TECNO 1
REL.
. 15. .11.11
Cambiamo Variando solo il css, senza alterare il file html:
#corpo-colonna1, #corpo-colonna3{
float: left;
width: 20%;
BACKGROUND-COLOR: yellow;
}
#corpo-colonna2 {
float: left;
width: 60%;
}
Si passa da tre righe a tre colonne nel corpo (!):
si potevano anche usare posizionamenti fissi come in questo esempio:
#colonna0-spazio{float: left; width: 124px; height:100px; margin-top:20px; margin-bottom:40px; background-color:#cccccc;}
#colonna0-sx{float: left; width: 196px;border-right:3px solid red;height:100px; margin-top:20px; margin-bottom:40px; background-color:#cccccc;}
#colonna0-ct{float: left; width: 200px;border-right:3px solid red;height:100px; margin-top:20px; margin-bottom:40px; background-color:#cccccc;}
#colonna0-dx{float: left; width: 159px; height:100px; margin-top:20px; margin-bottom:40px; margin-r
Strumenti di grafica
Paint.net
http://www.getpaint.net/doc/latest/index.html
http://www.getpaint.net/doc/latest/MainWindow.html
L'interfaccia utente di Paint.NET è suddiviso in 10 aree principali:
Finestra principale di Paint.NET
178 - TECNO 1
REL.
. 15. .11.11
1. Barra del titolo
Questo spiega il nome dell'immagine che si sta lavorando, così come il livello di zoom corrente e la versione di Paint.NET si utilizza.
2. Barra dei menu
Questo è dove è possibile accedere a varie voci di menu. Molto spesso, comandi accessibili da questa posizione verranno fatto riferimento utilizzando la notazione
di comando → Menu. Ad esempio, File → uscita significa fare clic sul menu File e quindi scegliere il comando Exit.
3. Barra degli strumenti
Immediatamente sotto il menu è la barra degli strumenti. Esso contiene diversi pulsanti e controlli per l'esecuzione dei vari comandi e regolando i parametri per lo
strumento attivo.
4. Elenco immagini
Ogni immagine che è stata aperta ha una miniatura visualizzata nell'elenco delle immagini. Questo funziona molto simile a un browser a schede: basta cliccare su
un'immagine per passare ad esso.
5. Immagine Canvas
Questo è dove l'immagine è mostrata ed è la zona dove si può disegnare ed eseguire altre azioni.
6. Strumenti finestra
Questo dove lo strumento attivo è evidenziato, e dove può scegliere tra altri strumenti.
7. Finestra cronologia
Tutto quello che hai fatto, a un'immagine, poiché è stato aperto è elencato in questa finestra. Può passo avanti o indietro nella finestra cronologia facendo clic su
una voce.
8. Finestra livelli
Ogni immagine contiene almeno un layer, e questa finestra è la tua area primaria per gestirli.
9. Finestra colori
Questa è la principale area per selezionare i colori per disegnare con. Esso è costituito da una ruota dei colori e un dispositivo di scorrimento Luminosità. Se si
hanno ampliato la finestra con il pulsante "Altro" allora esso conterrà anche diversi controlli per la regolazione fine e specificando esattamente i valori di colore.
10. Barra di stato
Questa zona è diviso in diverse sezioni. A sinistra, Visualizza informazioni aiuto e stato veloce. A destra, visualizza progresso di rendering (se pertinente),
dimensione immagine e la posizione del cursore all'interno dell'immagine.
Paint.net tutorial http://www.youtube.com/watch?v=tmHzXzvfa1Q&list=TL7VbcwG84kzYTl1Dfngmvr2j3R8M8wuL4
Movie Maker
179 - TECNO 1
REL.
. 15. .11.11
“Con Movie Maker, puoi creare filmati partendo dalle tue foto e dai tuoi video, sia che si trovino già nel computer o ancora sulla fotocamera o videocamera.
Con Movie Maker, puoi aggiungere effetti speciali e temi per creare filmati. Vuoi eseguire un po' di editing sui tuoi filmati? Facilissimo! Non devi fare altro che
selezionare le scene, le foto e le transizioni desiderate e trascinarle nella posizione in cui vuoi inserirle. Grazie a Filmato automatico sarà Movie Maker a creare il
filmato per te.”
http://windows.microsoft.com/it-it/windows7/products/features/movie-maker
http://windows.microsoft.com/it-it/windows/get-movie-maker-download
https://www.youtube.com/watch?v=JZXK68NS7gU tutorial
180 - TECNO 1
REL.
. 15. .11.11
Scarica

Tecno 1 - ISIS Facchinetti