Insegnamento di Abilità Informatiche Lezione2 - · PDF fileFino a 100:8=12 resto 4 e...

Post on 10-Mar-2018

213 views 1 download

Transcript of Insegnamento di Abilità Informatiche Lezione2 - · PDF fileFino a 100:8=12 resto 4 e...

Insegnamento di AbilitàInformatiche

A.A. 2007/8

Lezione2Prof.ssa Raffaella Folgieri

folgieri@dico.unimi.itfolgieri@mtcube.com

Link addestrativo interattivo: http://www.caspur.it/formazione/mais/

BASI E NUMERI• In un elaboratore ogni comando, parola, lettera

o cifra sono composti da una stringa(sequenza) di 0 e 1 (ovvero un bit = BinaryDigit)

• Siamo abituati ad usare il sistema decimale perché impariamo a contare usando le nostre 10 dita, ma il sistema binario è più semplice e piùveloce: ho solo due simboli da imparare e da usare!

• Anche se il sistema decimale ci sembra ovvio, non si è contato sempre così!

Curiosità

• Babilonesi, Cinesi e Maya già furono capaci di rappresentarequalsiasi numero con una limitata quantità di cifre di base

• Non si è contato sempre allo stesso modo, il sistemanotazionale o di calcolo che abbiamo è il risultato di una lungaevoluzione.

• Ancora oggi ci sono popoli che non contano come noi, ovveronon concepiscono numeri astratti e sono perplessi di fronte ad operazioni del tipo 2+2=4.I Boscimani non vanno oltre il cinque.I Pigmei in Africa, i Botocudos in Brasile, gli Aranda in Australia computano 1, 2, massimo 3 e oltre il 3 parlano in termini di "molti" ("tanti quanto i capelli in testa"). Nell'apprendimento i bimbi di queste tribù hanno comunque un'evoluzione la cui rapidità è simile a quella dei nostri bambini.

• Per approfondimenti: http://it.wikipedia.org/wiki/Sistema_numerico

1 centinaio 1 decina

1 unità

• Il sistema decimale adotta una notazione posizionale: i numeri hanno un “peso” diverso a seconda della posizione che occupano

• Es. 111, ovvero 111

• Il numero di cifre usate da un sistema numerico si dice BASE. Nel nostro caso usiamo 10 cifre (da 0 a 9), per cui la base è 10.

• Ogni cifra, a seconda della sua posizione, indica quanti multipli della base dobbiamo utilizzare (si usano le potenze):

Es. 111 = 1x102+1x101+1x100 = 1x100 + 1x10 + 1x1Es. 215 = 2x102+1x101+5x100 = 2x100 + 1x10 + 5x1

• La posizione è data dall’esponente. La più bassa (la posizione zero) è quella più a destra.

• RICORDATE: qualunque numero, elevato a zero, vale 1!!

IL SISTEMA DECIMALE

“1” ha un diverso valore a seconda della posizione che occupa!

IL SISTEMA BINARIOe la conversione binario decimale

• Abbiamo detto che l’elaboratore usa gruppi (stringhe) di bit8 bit = 1 byte

• Per quanto riguarda i numeri, ogni posizione rappresenta una potenza di 2, a partire da quelle più basse, poste a destra:

27 26 25 24 23 22 21 20 (ricordate che qualunque numero0 0 0 1 0 1 0 1 elevato a 0 ha come risultato 1)

• Per calcolare il valore decimale del numero binario scritto sopra, si procede così (partendo da destra):

1x20 + 0x21 + 1x22 + 0x23 + 1x24 + 0x25 + 0x26 + 0x27 =1x1 + 0x2 + 1x4 + 0x8 + 1x16 + 0x32 + 0x64 + 0x128 =

ovvero 21 in base decimale

IL SISTEMA BINARIOe la conversione decimale binario

• Un modo semplice per ricavare il corrispondente numero binario a partire dal decimale è quello detto “per divisioni successive”. Consideriamo il numero 21

• Si effettuano divisioni successive per 2 ed ogni volta il resto della divisione fornisce il numero binario (0 o 1) da porre nella cifra binaria, partendo da destra:21:2=10 resto 1 110:2=5 resto 0 015:2=2 resto 1 1012:2=1 resto 0 01011:2=0 resto 1 10101

• Ora si “riempie” di zeri a sinistra, per completare gli 8 bit.• Otteniamo così 00010101 che è il numero 21 in binario• Se si desidera, si indica la base in basso a destra• Es. 000101012 e 2110

ALTRE NOTAZIONI• Altre notazioni utilizzate in Informatica sono la notazione

ottale (cifre da 0 a 8) e quella esadecimale (da 0 a 9, piùle lettere da A a F).

• Esiste una regola generale per effettuare un cambiamento di base:– Scelta una base B, ogni numero è rappresentato da una sequenza

di simboli di valore compreso fra 0 e B-1– A ogni posizione corrisponde una potenza della base, crescente da

ds a sin– Valore del numero = somma dei prodotti di ogni cifra per la potenza

associata alla sua posizione

Es. aN-1aN-2...a1a0=aN-1*BN-1+aN-2*BN-2+...+a1*B1+a0*B0

CONVERSIONE binario ottale• Consideriamo un numero binario. Per ottenere la codifica

ottale si procede così:– Si considerano gruppi di 3 bit (a partire dalla cifra meno

significativa, cioé quella più a destra, di posizione 0).– Si sostituisce al valore rappresentato da questi bit la

cifra ottale equivalente• Es. 1100011001011011

1/100/011/001/011/011 = 1 4 3 1 3 3Ovvero, partndo da ds, si ha:011:8=1 resto 3.... Fino a 100:8=12 resto 4 e 1:8=0 resto 1. Come vedete, i resti forniscono il numero ottale, secondo la regola generale vista nella slide precedente

CONVERSIONE binario esadecimale• Analogamente, se consideriamo un numero binario, la codifica in

esadecimale segue lo stesso procedimento, ma stavolta divideremole cifre in gruppi di 4, prima di procedere a dividere per 16:

• Es. 11000110010110111100/0110/0101/1011 = C 6 5 B

Ovvero, partendo da ds, si ha:1011:16=63 resto 3, che corrisponde alla B (abbiamo 1 nella cifra piùsignificativa del gruppo di 4, quindi utilizziamo le lettere)....In pratica, la lettera «A» nelle unità corrisponde al numero 10 e la lettera «F» nelle unità corrisponde al numero 15 Fino a 1100:16=68 resto 12 che corrisponde alla lettera C. Come vedete, i resti forniscono il numero ottale, secondo la regola generale vista nella slide precedente

Perché?• Perché per la conversione binario ottale e

binario esadecimale, suddividiamo i bit in gruppi, rispettivamente, di 3 e di 4?

• Vale la regola: con k bit posso rappresentare 2k caratteri distinti, dunque:

• Con 3 bit posso rappresentare 23=8 caratteri distinti

• Con 4 bit posso rappresentare 24=16 caratteri distinti

• Guarda caso, proprio i valori delle due basi!

Conversione decimale ottale

• Es. 12710 =1778

Infatti: 127:8 = 15 resto 715:8 = 1 resto 71:8 = 0 resto 1

• Se facciamo la verifica:7*80 + 7*81 + 1*82 = 7 + 56 + 64 = 127

Conversione decimaleesadecimale

• Es. 12710 =7E16

Infatti: 127:16 = 7 resto 157:16 = 0 resto 7

• Se facciamo la verifica:15*160 + 7*161 = 15 + 112 = 127(ricordiamo che E vale 15)

Riassumendo...• Ci interessa comprendere cosa significa

“trattare l’informazione” e il perché della rapidità di risposta di un elaboratore

• ...e capire lo schema generale di rappresentazione dell’informazione e i modi di “ragionamento” di un elaboratore

• Dobbiamo dunque avere dimestichezza con:• Differenza tra digitale e analogico• Conversioni tra basi (decimale, binaria,

ottale, esadecimale)

OPERAZIONI BINARIE

• Vedremo l’addizione e la sottrazione (riflettete sul fatto che tutte le operazioni di base si riconducono alla somma algebrica)

• Basta ricordare che:0 + 0 = 0 con riporto 00 + 1 = 1 con riporto 01 + 0 = 1 con riporto 01 + 1 = 0 con riporto 1

LA SOMMA

Secondo le regole di riportoEs. 00010101 + verifica:

00001101 = 00010101 = 21---------------- 00001101 = 13 00100010 00100010 = 34

infatti 21 + 13 = 34

0 + 0 = 0 con riporto 00 + 1 = 1 con riporto 01 + 0 = 1 con riporto 01 + 1 = 0 con riporto 1

LA SOTTRAZIONE

Secondo le regole di fiancoEs. 00010101 - verifica:

00001101 = 00010101 = 21---------------- 00001101 = 13 00001000 00001000 = 8

infatti 21 - 13 = 8

0 - 0 = 0 0 - 1 = 1 con prestito1 - 0 = 11 - 1 = 0

Valgono le regole seguentiMOLTIPLICAZIONE:

DIVISIONE: segue le stesse regole della divisione decimaleEs. 1100 10

10 110=1010== 0

Provate da soli ad eseguire:000101000 * 00000010000101000 / 00000010 e verificate il risultato, convertendo in sistema binario

MOLTIPLICAZIONE E DIVISIONE

0 * 0 = 0 0 * 1 = 01 * 0 = 01 * 1 = 1

RAPPRESENTAZIONE DEI TESTI

• Si utilizzano 52 lettere alfabetiche (maiuscole e minuscole)

• 10 cifre (0..9)• Segni di interpunzione (,.;:!”?’^\ /…)• Operatori matematici + - + [ -+ / > < ecc…• Caratteri tipici (à è ì ò ù …• Altri simboli @ # | £ $ % &• In totale sono circa 220 caratteri. Abbiamo visto

che per i numeri si utilizzano 8 bit. Lo stesso vale per gli altri simboli.

I SIMBOLI ALFABETICI

• Sono anch’essi codificati da un codice binario (8 bit)

• Vi sono codifiche standard. Le più famose:– ASCII (American Standard Code for Information Interchange)

8 bit per carattere. Codifica 256 caratteri

– ANSI (American National Standard Institute)

– UNICODE 16 bit per ogni carattere, rappresenta ASCII e caratteri di qualsiasi lingua (può rappresentare 34168 caratteri)

• Altre codifiche proprietarie:

• MSWindows 16 bit per carattere (simile a unicode)

TAVOLA ASCII

ESEMPIO DI CODIFICA ASCII

01110000 01101111 01101100

• Dividendo la stringa in gruppi di byte si risale alla parola (con riferimento alla tavola):

01110000 01101111 01101100P O I

ALGEBRA DI BOOLE• Abbiamo detto che un elaboratore opera confronti semplici.

Introduciamo l’algebra booleana.

• Si deve a Boole (matematico inglese, XIX sec.)

• Si basa su 2 stati:– ON – acceso

– OFF – spento

• Le variabili booleane possono assumere solo 2 valori:

0 e 1

• Con le variabili booleane si costruiscono funzioni booleane che possono assumere solo 2 stati:

TRUE e FALSE

TABELLE DI VERITA’ E OPERATORI

• Gli operatori logici che esprimono le relazioni tra le variabili sono:

• NOT, AND, OR, XOR• Esistono poi NAND e NOR (operatori

universali) che permettono di esprimere qualsiasi altra delle precedenti espressioni, utilizzando un solo tipo di operatori

• Ogni funzione booleana ha una sua tabella della verità

Tabelle di verità: NOT

Tabelle di verità: AND

Tabelle di verità: OR

Tabelle di verità: XOR

Tabelle di verità: NAND

Tabelle di verità: NOR

Algebra booleana ed elaboratore

• Abbiamo detto che l’elaboratore rappresenta l’informazione in modo digitale (intervalli finiti)…

• … e che traduce molte informazioni in binario(informazioni analogiche, numeri, lettere, comandi…)

• Inoltre svolge operazioni utilizzando l’aritmetica binaria

• L’elaboratore “ragiona” mediante confronti semplici, poiché quel che comprende con facilità è la differenza tra 0 e 1 (vero-falso, “passa corrente” – “non passa corrente” nei circuiti)

• Dunque i confronti vengono effettuati grazie all’algebra booleana

Archittettura di un elaboratoreIl modello di Von Neumann - 1

• 1946 – John Von Neumann• Modello teorico ancora valido e molto

utilizzato (eccezione macchine ad elaborazione parallela)

• Schematizza in modo omogeneo situazioni diverse

Il modello di Von Neumann - 2

Concettualmente si identificano i componenti:• Memoria (per procedura, dati iniziali, risultati

intermedi e finali)• Funzione aritmetica (operazioni, non solo

aritmetiche, sui dati)• Ingresso/Uscita (dispositivi per

ricevere/inviare dati)• Controllo (per eseguire passi procedure

coordinando flusso dati tra i preceenticomponenti)È la filosofia alla base dei calcolatori digitali

Il modello di Von Neumann - 3Si suole schematizzare così l’architettura di Von Neumann:• Quattro blocchi comunicanti tra loro mediante il bus• Bus: canale di scambio informazioni (e segnali di

controllo)

CPU Memoriaprincipale

Memoriasecondaria

DispositiviINPUT

OUTPUT

BUS

Il modello di Von Neumann - 4Corrispondentemente ai concetti visti, si ha:• CPU (Central Processing Unit)• Memorie• Dispositivi I/O• Bus: nel modello di Von Neumann è costituito da

3 bus distinti:– Bus dei dati: i dati viaggiano da e verso la

CPU– Bus degli indirizzi: dati solo da CPU– Bus dei segnali di controllo: dati solo da

CPU

Il bus• Scambio informazioni• Fisicamente: conduttori elettrici (linee)• Tre gruppi:

– Linee dati– Linee indirizzi (identificano unità da usare durante

trasferimento)– Linee di controllo (segnali temporizzazione,

read/write, tipo dati)

• Si possono avere conflitti• Dispositivi attivi: master (padroni)• Dispositivi passivi: slave (schiavi)

Ricordiamo: FASI DI SVILUPPO DI UN SOFTWARE

• Analisi (si raccolgono le esigenze cui deve rispondere il programma)

• Rappresentazione simbolica (di quanto evidenziato in fase di analisi)

• Programmazione (traduzione in linguaggio).• Test (si verificano tutte le funzionalità• Messa in esercizio (il programma va all’utente

finale)

Programma• Insieme di istruzioni che il computer

deve eseguire, connesse ad un compito specifico

• Tipologia programmi:• Interattivo: intervento operatore

(necessario o voluto). Es. browser• Batch: nessun intervento

Algoritmi• Nascita espressione simbolica di un problema (Al

Waritzsmi, matematico arabo)• Flusso risolutivo = algoritmo• Varie rappresentazioni simboliche:• Schema a blocchi (diagramma di flusso)• Top-down, down-top• UML• Def algoritmo: sequenza finita, non ambigua, di

passi eseguibili e ripetibili un numero finito di volte per portare a soluzione un dato problema (generale)

Proprietà di un algoritmo• finitezza: istruzioni in numero finito eseguite un

numero finito di volte• non ambiguità: ogni istruzione deterministica e

univocamente interpretabile• realizzabilità: istruzione deve essere realmente

eseguibile da parte del processore• Gli algoritmi si distinguono in:• Numerici (problemi di tipo matematico)• Non numerici (tutti gli altri algoritmi)

Flusso esecuzione istruzioniPuò procedere in tre modi diversi:• Sequenziale, istruzioni eseguite una dopo l’altra• Iterativo (ciclico), una sequenza di istruzioni è

ripetuta un certo numero di volte• Condizionale, istruzione o gruppo di istruzioni

eseguite solo se si verifica condizione

• La sequenza di istruzioni eseguibili su un elaboratore è detta modulo eseguibile oapplicativo

Evoluzione programmazione

• GOTO: istruzioni di salto (spaghetti code)

• GOSUB: programmazione sequenziale strutturata, da cui:

• Funzioni e procedure• Programmazione ad eventi• Programmazione ad oggetti

(modularità e riusabilità)

I processi

• Il termine processo fa riferimento all’esecuzione di un programma

• Il processo è un oggetto dinamico che evolve nel tempo; il programma èstatico

• Def. Processo: insieme di tutti i valori contenuti nella memoria centrale e neri registri della CPU durante l’esecuzione di un programma

Terminazione e stati di un processo3 motivi:• Termina il quanto a sua disposizione• Gli occorre una risorsa già in uso• Termina regolarmenteGestore dei processi (nucleo): responsabile dell’esecuzione

dei programmi (quasi contemporanea) da parte dell’unità di elaborazione.

Stati di un processo:• Attivato: appena stato creato• Pronto: ha tutte le risorse per procedere, è nella ready list• Esecuzione: è assegnato al processore (avviato)• Attesa (blocco): risorsa che chiede già impegnata• Terminato: è concluso e rilascia risorse

SchedulingLo scheduling (schedulatore) decide quale tra i processi

presenti nella ready list mandare in esecuzione.3 tipi di processo schedulatore:• Scheduling di basso livello (dispatcher): metodo

con cui il nucleo fa passare un processo (in ready list) da pronto a esecuzione

• Scheduling di livello intermedio: si inoltrano al nucleo solo quelli che assicurano il miglior utilizzo di tutte le risorse (con analisi statistiche)

• Scheduling di alto livello (scheduler): ordina ed estrae dalla lista i processi tenendo presente le prioritàe le caratteristiche statistiche

Lo stalloSi ha stallo quando un processo è nella situazione di

attesa perché non è possibile assegnargli risorse.Condizioni che si verificano quando c’è stallo:• Le risorse sono ad accesso esclusivo• Esiste la condizione di attesa• Non utilizzato prerilascio (togliere una risorsa ad un

processo dal momento in cui comincia ad utilizzarla)• Vi è lista circolare di processi in attesa di risorse in

uso ad altri• Def. Risorsa: qualsiasi elemento sw o hw condiviso

dai processi, necessario alla loro creazione ed al loro avanzamento.

Prevenzione e soluzione stalloUn metodo per evitare stallo è prevenirlo (es.

numerazione risorse e accesso in ordine crescente).

Riconoscere possibilità di stallo prima di assegnare le risorse: si perde molto tempo

• Si usa round robin:• Basata sul time sharing (suddivisione di tempo)• A ogni processo è assegnato quanto di tempo

(time slice), al termine del quale:– Processo passa da esecuzione a pronto– Viene messo in fondo alla lista e rilasciate risorse– Viene preso primo processo della lista

Schema round robin

Evoluzione round robinRound robin semplice da elementare e garantisce che

ogni processo prima o poi avrà processore assegnato• Svantaggio: tutti i processi hanno uguale priorità: si

può assegnare più tempo a processi con maggior priorità.

• Round robin penalizza processi che richiedono piùrisorse (appena ne ricevono una vengono messi in coda in attesa di un’altra)

Evoluzione due liste a priorità diversa:• Una per processi che terminano perché finito il quanto

di tempo• Una per quelli in attesa di risorse

Schema evoluzione round robin

• Si possono avere anche più liste.• Effetto globale: far terminare prima i processi che

richiedono minor tempo di esecuzione.

Gestore di risorseSvolge due compiti fondamentali:• Verifica dell’accesso alle risorse• Schedula richieste da inoltrare al controllore

che fisicamente manipola la risorsa (spesso su essa stessa)

Il gestore delle risorse comunica con il controllore della risorsa richiamando specifici driver.

Driver• E’ un programma o una raccolta di

sottoprogrammi, scritto in linguaggio di basso livello, che accede direttamente ai registri del controllore della risorsa

• A volte i driver sono inclusi nelle operazioni svolte dai gestori delle risorse.

La tecnica del buffer

• Primo problema di gestione I/O: notevole differenza di velocità delle varie risorse

• Spesso utilizzato metodo del buffer: interporre tra il processo che la utilizza e la risorsa un’area di memoria (buffer) della stessa tecnologia della CPU, nella quale il processore effettua le sue operazioni

Lo spooling• Evoluzione del buffer che risolve il problema

dell’occupazione di memoria (del buffer)• Simultaneous Peripherical Operation On Line• Il buffer in memoria centrale è sostituito da un file in

memoria secondaria. Es. stampa:• Il gestore scrive l’insieme dei caratteri da stampare, poi un

processo interno (spooler), se il file è completo, preleva ordinatamente i file (con politica Short Job First) e ne esegue la stampa. Al termine il file viene cancellato

• Scrittura su memoria massa più lenta, ma consente maggiore disponibilità di memoria e possibilità di ripetere stampa se cade il sistema.

• Tecnica adottata per tutte le periferiche molto lente