SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Appunti di Elaborazione automatica dei dati:
            Il Computer ed il Matlab (cenni)



Si ricorda che:
• l'uso degli appunti qui presenti è consentito per solo uso personale e di studio;
• la consultazione è gratuita ed ogni forma atta a ricavarne lucro è vietata!
• gli appunti sono fatti da studenti che non possono assumersi nessuna responsabilità
    in merito;
• il materiale qui presente non è sostitutivo ma complementare ai libri di testo:
       - devi (e ti consiglio) di consultare e comprare i libri di testo;
• il materiale qui presente è distribuito con licenza Creative Commons




Spero che ciò che hai scaricato ti possa essere utile.


Profman

Il file è stato scaricato in forma gratuita da:

http://profland.altervista.org


oppure da qualche mirror, come:

www.profland.cjb.net www.profland.135.it

o dalla pagina dedicata su slideshare.net:
www.slideshare.net/profman
Appunti d’esame
Il computer                                                              www.profland.135.it


                                 Il Computer
                                    (autore: jiji)
FASI DI RISOLUZIONE DI UN PROBLEMA
1. Formulazione del problema: Fase di definizione e stesura del problema.
Determinare gli obiettivi appropriati, determinare i vincoli da imporre, esaminare le
   alternative a disposizione, limitare il periodo temporale di riferimento.
2. Costruzione di un modello: Il problema deve essere misurabile e quindi
   quantizzabile ad es. modelli matematici o modelli fisici. Deve quindi essere
   possibile costruire un modello rappresentativo del problema. I modelli potranno
   essere concreti che sono oggetti fisici con cui rappresento il mio problema (es.
   modelli di veicoli usati per esperimenti nelle gallerie del vento) o astratti che sono
   un insieme di relazioni che descrivono il fenomeno in esame, tali relazioni sono di
   tipo matematico cioè delle funzioni.
3. Ricerca di un procedimento risolutivo(algoritmo): Il problema deve essere
   risolto secondo un procedimento prestabilito e logico. Algoritmo: costruzione della
   sequenza di passi logici che se eseguiti portano alla risoluzione del problema
   descritto dal modello. Esso è il nostro pensiero.
4. Implementazione dell'algoritmo in un contesto reale (programma). Programma:
   traduzione dell'algoritmo in un linguaggio compreso dall'esecutore.
5. Calcolo della soluzione: tale calcolo viene effettuato dall'esecutore

Verifica della soluzione: Non possiamo attuare un procedimento di calcolo inverso
poiché non è vero che ogni funzione ammette inversa non è detto che la funzione sia
iniettiva cioè che ad ogni x corrisponda un unica y e per x diverse corrispondano y
diverse. Inoltre anche se esiste la funzione inversa l'uomo potrebbe non essere capace
di scriverla. Le funzioni complesse infatti associano insiemi di numeri ad insiemi di
numeri. In tal caso si procede quindi a studiare la funzione effettuando dei tentativi
mirati, cioè calcolo la funzione in punti prestabiliti nei quali immagino cosa possa
succedere e verifico quello che succede. La verifica del modello deve avvenire
usando il modello stesso.
Una volta stimate le grandezze del modello queste dovranno essere confrontate con
una soluzione nota (calcolate su batterie di dati).


IL COMPUTER
Il Computer è detto anche elaboratore ma non cervello elettronico poiché non è in
grado di prendere decisioni, non è cioè dotato di capacità decisionale. Conseguenza
di ciò è che noi dobbiamo pianificare tutto evitando situazioni impreviste altrimenti il
computer non può andare avanti. Talvolta si può verificare un errore che non era stato
previsto poiché riguardava una eventualità che non era stata presa in considerazione.
L'elaboratore è un dispositivo capace di effettuare relazioni ad altissima velocità e di
gestire una quantità molto elevata di informazioni.
                                           2
Appunti d’esame
Il computer                                                              www.profland.135.it

Es. Problema: Somma di 5 numeri
I Dati del problema sono: 5, 7 , 10 , -2 , -1.
Innanzitutto occorre stabilire le capacità dell'esecutore.
Le istruzioni verranno date in relazione a ciò che il computer è in grado di fare.
Ipotizziamo che l'elaboratore sia capace di eseguire solo un'operazione alla volta.
Costruiamo l'algoritmo facendo un ciclo ripetitivo inizializzando una grandezza a
zero e sommandovi un numero alla volta.

                  Numero                                   Totale
                     5                                       5
                     7                                      12
                    10                                      22
                    -2                                      20
                    -1                                      19

Tutto questo ha senso solo in presenza di un esecutore che sia capace di fare ciò.
Nell'utilizzare il linguaggio per la costruzione dell'algoritmo dovrò evitare l'ambiguità
che è originata dal fatto che una stessa parola può avere più significati, o che diverse
parole possono avere lo stesso significato. Un linguaggio è scarsamente
interpretabile. La riduzione della ambiguità si realizza attraverso la riduzione dei
vocaboli a disposizione in modo che ad ogni situazione corrisponda un unico
specifico vocabolo, la presenza di quel vocabolo diventa quindi inequivocabile; e
attraverso l'irrigidimento della forma (scrivere le frasi secondo uno schema fisso
molto rigido.
Se faccio questo sono in grado di esprimere l'algoritmo.
L'algoritmo può essere espresso mediante una flow chart in cui i singoli passi sono
scritti in un grafico. I dati sono messi in blocchi in funzione di un ordine indicato
graficamente da una freccia.

Questo metodo presenta poche ambiguità la figura geometrica del rettangolo sta ad
indicare che si tratta di un'azione. L'ellisse indica un acquisizione di input. La stampa
riguarda una fase di output. L'azione decisionale è rappresentata da un rombo.
       Il difetto principale di questo modello è che si tratta di un modello di difficile
rappresentazione, vi sono cioè delle difficoltà di natura grafica. Possiamo rendere
l'algoritmo più efficiente eliminando la parte grafica sostituendola con delle parole
chiave. Inoltre altro difetto della flow chart sono le numerose frecce, sarà opportuno
eliminare tali frecce inventandoci un ordine obbligato con cui scriviamo le cose,
dovrò inoltre avere una forma diversa per indicare i vari salti.


Definizione di algoritmo
è un procedimento per la risoluzione di una classe di problemi, realmente eseguibile e
quindi costituito da un numero finito di comandi non ambigui che specificano una
sequenza finita di operazioni da eseguire su un numero finito di dati.
                                           3
Appunti d’esame
Il computer                                                              www.profland.135.it

       Un algoritmo definisce non solo il flusso delle operazioni da compiere ma
anche i dati su cui tali operazioni vanno eseguite. Non si deve progettare solo il "da
farsi" del problema ma anche il "da farsi" sui dati di cui disponiamo.
Un oggetto astratto in grado di risolvere o di eseguire algoritmi (il computer) deve
avere delle capacità:
• essere in grado di memorizzare l'algoritmo che e costituito dai dati e dalle
   istruzioni.
• essere capace di effettuare delle operazioni aritmetiche e logiche (esiste o non
   esiste un numero) sui dati.
essere capace di gestire il flusso delle operazioni.

Anche l'uomo è in grado di eseguire un algoritmo ciò vuol dire che l'uomo ha in se
queste capacità.
Vi è un input, leggere delle informazioni ed un output, produce un risultato. Gestisce
queste cose attraverso la memoria che svolge il ruolo di memorizzazione e di
controllo ed utilizza eventualmente una calcolatrice per fare i calcoli. (vedi schema).
Nello schema macchina ci saranno esattamente gli stessi schemi che sono presenti
nell'esecutore umano di algoritmi: La macchina secondo Von Neumann avrà
necessariamente un input (Dati) ed un output (risultato) avrà necessità di una zona di
controllo e una zona di memoria ed una zona di calcolo (unità logico aritmetica).
L'unità di input legge dei dati che vanno in memoria, la memoria interagisce con il
controllo e con il calcolo e produce degli output. Il controllo fa da supervisore a tutte
le altre unità.


Componenti di un elaboratore

• La Memoria
è il supporto fisico che permette di immagazzinare informazioni che sono costituite
da dati e istruzioni.
• Unità di controllo
serve a gestire i vari flussi di dati e istruzioni
• Unità logico aritmetica
consente di effettuare operazioni di natura aritmetica e di natura logica
• Unità di input ed output
   introducono dati ed emettono risultati

La MEMORIA è organizzata secondo una lista di cellette che chiameremo locazioni
di memoria.
      Nelle locazioni si scriveranno dei caratteri che rappresentano il messaggio che
noi vogliamo comunicare. Il linguaggio utilizzato dalle macchine è il linguaggio
binario che è costituito da due caratteri I e O.
Una locazione si presenterà come segue

                                           4
Appunti d’esame
Il computer                                                                 www.profland.135.it

                              1   1   0    1       1   0   1   0

       In ciascuna locazione no segneremo una sequenza di zeri e di uno. Ogni
locazione è a sua volta una sequenza di componenti elementari che contengono
esclusivamente i caratteri rappresentativi della memoria O ed I questi componenti
elementari si chiamano bit.
La memoria è insieme di celle ognuna delle quali contiene una stringa di bit.
La stringa di 8 bit forma un byte che sono diventate l'unità di misura della memoria.
Ogni locazione deve essere distinta dall'altra per cui ognuna di esse è associata ad un
numero che la identifica, ognuno di questi numeri lo chiameremo l'indirizzo della
locazione.
locazione        indirizzo
10110001            0010
11011110            0011

Nel sistema posizionale decimale le singole cifre giocano un ruolo diverso a seconda
di dove stanno: 13 significa 1 x 10 + 3 x 1 perché è un sistema posizionale basato sul
10.

La macchina usa invece un sistema posizionale basato sul 2
quindi i numeri sono moltiplicati per le potenze del due

                            0 x 23 + 0 x 22 + 1 x 21+ 0 x 1= 2.

L'insieme di locazioni raggruppate prende il nome di parola.
Il numero di locazioni che può contenere una parola dipende da quanto sono lunghe
le istruzioni della singola macchina.
La locazione è la minima unità indirizzabile, la parola è quell'insieme di locazioni
sufficienti per poter scrivere un istruzione o un dato.
La locazione tipica è costituita da 8 bit, la parola tipica è fatta da 4 locazioni (32 bit).

Operazioni sulla memoria
• leggere: vedere che ci sta in una certa locazione.
• scrivere: inserire caratteri nelle locazioni.
I parametri secondo i quali si valutano le prestazioni della memoria sono:
• la velocità con cui posso andare a leggere e a scrivere,
• la grandezza capacità della memoria cioè il numero di locazioni che essa è in grado
   di contenere.
Per misurare la grandezza di una memoria utilizziamo dei multipli del byte dove il
byte identifica una locazione.
I multipli del byte sono:
K byte 1024 = 29
M (mega) byte  G (giga)byte  T (tera)byte

                                               5
Appunti d’esame
Il computer                                                               www.profland.135.it

      Nella memoria vi è la parola cioè quante locazioni vengono messe insieme per
essere fisicamente usate contemporaneamente. Quindi anche la lunghezza della
parola che la memoria può contenere ha una sua importanza. Sarà migliore una
memoria che può contenere parole più lunghe cioè che possono contenere più
locazioni.
W= ampiezza della voce misurata in bit 16, 32, 64 bit
L'ordine di grandezza della velocità è il nano-secondo un miliardesimo di secondo.

Unità di controllo
       Serve ad istruire e guidare le altri componenti del sistema nell'esecuzione della
loro attività, supervede a tutte le funzioni del sistema.
E' un'unità meccanica che non ha capacità decisionale.
Si tratta di una unità che è in grado di leggere nella memoria in una parte in cui sono
scritte istruzioni, è in grado di capirle e di eseguirle. Tutto ciò che conta è quello che
noi abbiamo messo in memoria.
       Il meccanismo dell'unità di controllo è sequenziale dal punto di vista spaziale,
ma anche dal punto di vista temporale cioè vi è una temporizzazione. Si tratta di un
meccanismo che temporizza tutte le azioni del computer. Passato un certo tempo
ricomincia il ciclo tornando nuovamente a leggere nella memoria l'istruzione
successiva (che non è necessariamente quella che segue, ma quella che l'istruzione
precedente ha indicato). L'istruzione precedente "determina" la successiva.
I processi non sono tutti sequenziali.
Random: accedere dove si vuole.
Tale ciclo è detto ciclo Fetch.
Ciò che differenzia un'unità dall'altra è la velocità con cui svolge questo ciclo.

Unità logico aritmetica (ALU)
       È l'unità che svolge operazioni aritmetiche (moltiplicazione, divisione,
addizione, sottrazione) e operazioni logiche (il confronto: se due locazioni hanno lo
stesso contenuto o no). Questa è un'unità che opera sui dati.
       La CPU deve prelevare i dati su cui devono essere effettuate queste operazioni
e portarli nella ALU. La ALU svolge il suo lavoro e poi il risultato deve essere
riportato dalla memoria. I dati che sono portati nell'ALU devono essere messi da
qualche parte ciò vuol dire che la ALU deve avere anch'essa una sua memoria
(registri).
I dati (due dati) vengono caricati nei due registri si fa l'operazione che gli compete il
risultato si trasferisce in un registro e quest'ultimo poi ritorna alla memoria.
Oggi la CU è spesso integrata con la ALU. Insieme costituiscono la CPU.
             UNITÀ DI CONTROLLO + UNITÀ LOGICO ARITMETICA
                                              =
                        CPU o processore (central processing unit)

Il parametro di misurazione della CPU è la velocità ossia il tempo con cui viene
eseguita un istruzione.
                                            6
Appunti d’esame
Il computer                                                                       www.profland.135.it

       Per sincronizzare le attività del sistema si utilizza un circuito elementare
(clock) che emette degli impulsi a precisi intervalli di tempo. L'intervallo tra due
impulsi consecutivi è chiamato tempo di ciclo di clock.
Il ciclo di clock varia più o meno tra 10 e 1 nano secondo.
In genere si determina quanti clock vengono fatti in un'unità di tempo (1 sec).
Quindi preferiamo misurare la frequenza, cioè quante volte si ha un clock nel
secondo. La frequenza va tra i 10 e i 1000 MHz. 1MHz = 106 H.
La frequenza limite attuale è 2 GHz.

Misure della velocità operativa
La velocità operativa è un concetto intimamente legato alla frequenza.
Se l'unità di controllo esegue il ciclo Fetch esattamente nell'ambito di un ciclo, ma il
ciclo di Fetch potrebbe avvenire anche in più cicli. Una cosa è il ciclo temporale di
sincronizzazione una cosa è il ciclo in cui viene eseguita una istruzione (Fetch).
       L'indicatore che non comporta nessun equivoco è quello che da la conoscenza
a priori di quante istruzioni vengono fatte al secondo. Questo parametro è il MIPS
milioni di istruzioni per secondo tipicamente coincide con li numero di cicli.
Un altro parametro molto importante è quello che consente di misurare quante
operazioni aritmetiche possono essere fatte in un secondo. Il MFLOPS (Milioni di
operazioni FLOating Point al Secondo) rappresenta quante operazioni vengono fatte
al secondo. Quando necessitano più cicli per eseguire un'istruzione i MIPS di questa
macchina sono inferiori alla frequenza.

Unità di input output
Permettono al computer di interfacciare con il mondo esterno:
Video, Tastiera, Stampante, Mouse, Plotter, Scanner.

Classificazione dei Computer
Ogni macchina si distingue per una differente tecnologia.
    personal computer        workstation               mainframe             super computer
   Frequenza            Hanno un tecnologia      Sono oggetti molto      Hanno         incredibili
   1000 - 2000 MHz      differente dal PC Sono   più grandi ed hanno     velocità rispetto ad
   Capacità             più robusti poiché non   capacità estremamente   altri tipi di computer.
   64 - 256 Mbyte       si spengono mai          superiori.              Hanno più di un
                                                                         processore            in
                                                                         parallelo.
   Scopo:               Scopo:                   Scopo:                  Scopo:
   piccoli archivi      Ricerche                 Data processing         Calcolo scientifico di
   scrittura            CAD                      (banche dati)           altissimo livello
   internet             Calcolo
   giochi               internet

Velocità di operazioni al secondo
PC e Workstation 5 - 50 milioni di operazioni al secondo (MFLOPS) un super
computer è nell'ordine dei GFLOPS di miliardi di operazioni sono cioè 1000 volte
più veloci.
                                                 7
Appunti d’esame
Il computer                                                             www.profland.135.it



Costo Computer
PC = 2 - 10 mil di lire
WS = 10 - 10 mil di lire
MF = 200mil - 2mld
SC = 2 - 60 mld


       Le istruzioni si rappresentano in memoria tali istruzioni vengono scritte
utilizzando solo due caratteri O e I. Essendo solo due caratteri nello scrivere avrò
bisogno di più caratteri. Si farà corrispondere ad ogni carattere una frase scritta
secondo il codice binario.
Ad ogni carattere del mio alfabeto farò corrispondere una successione di caratteri
dell'altro alfabeto.
Esempio
      caratteri         codice DCD          codice DIC          codice ascii
          0                001010            11110000            01010000
          1                000001            11110001            11001000
          2                000010            11110010            11000100

se utilizzo solo due caratteri avrò solo 4 combinazioni, 00 01 10 11 se ne considero 3
le combinazioni saranno 8. All'aumentare delle combinazioni il tentativo di
enumerarle diventa sempre più difficile enumerarle quindi dovrà essere elaborata una
strategia. Utilizziamo dei modelli che sono basati su dei criteri, in questi modelli si
avrà una deduzione logica che se falsa fallisce anche la strategia ma se è vera la
strategia non può fallire. Questo è il pensiero matematico
       Nel nostro problema la prima combinazione è 2 la seconda è 2 2 la terza 23 forse
la quarta secondo la logica sarà 24.
Ragioniamo quindi in termini matematici
Nel sistema posizionale decimale ogni numero assume un significato in relazione al
posto che occupa e alla base di numerazione che nel nostro caso è il 10
Quindi 123 significa 1 x 102 + 2 x 101 + 3 x 10. Al simbolo 123 siamo dunque in
grado di dare un significato.
Le stringhe di codici di sui sopra sono esattamente la stessa cosa con la differenza che
queste stringhe sono basate su due caratteri e sono quindi in base 2.Se è scritto 01 io
leggo 0 x 21 + 1 x 20 = 1; 0 x 21 + 0 x 20
       Quindi alla domanda quanti sono i caratteri minimi necessari rispondo andando
a vedere quanti sono i numeri che io posso rappresentare con un certo numero
prefissato di cifre. Es con 1 cifra decimale posso rappresentare 10 numeri, con 2 cifre
posso rappresentare i numeri che vanno da 0 a 99 che sono 100, con tre cifre decimali
posso rappresentare 1000 numeri cioè da 0 a 999.
       Quindi con tot cifre quanti numeri posso esprimere? potrò esprimere totn, con
tot cifre binarie io esprimo 2tot e quindi ho trovato quanti bit dovrò avere minimo per
esprimere i dati. Con una casella 2 bit, con due caselle 4, con tre 8, con quattro 16,
                                           8
Appunti d’esame
Il computer                                                            www.profland.135.it

con cinque 32, con sei caselle 64. Quindi 6 caselle è il numero minimo con cui io
posso rappresentare i circa 64 caratteri della lingua italiana.
Dal punto di vista dell'efficienza sarebbe più logico operare con gruppi di 6 ma dal
punto di vista della tecnologia sarebbe, invece più opportuno operare con gruppi di 8
poiché sono potenze di due e sui computer tutto è basato sul 2 o sulle potenze di due.
Oggi si usano codici a 8 bit in particolare il codice ascii è il più usato.
Es per scrivere Dado ad ogni lettera corrisponderà una stringa di caratteri binari. Ci
chiediamo se il modo di esprimere i dati sia soltanto questo.
Esprimendo i numeri il metodo suddetto è efficiente?
Es 123 lo rappresento 010100000 01010010 01010011 sono necessarie ben 24 cifre
binarie. Con una stringhetta da 8 bit posso enumerare 256 oggetti diversi. Se invece
ho dei numeri posso usare soltanto 8 bit per rappresentare i numeri che vanno da 1 a
256.
         Utilizzare questo meccanismo quando opero solo con i numeri questo
meccanismo sarebbe solo uno spreco di spazio. Quindi mi converrà utilizzare un
processo di conversione del numero decimale nella base 2. Una volta che ho
effettuato questa conversione poiché so che con 8 bit si possono rappresentare i
numeri da 1 a 256 si possono rappresentare io userò non 24 ma solo 8 bit. Le
informazioni nel computer non vengono codificate allo stesso modo ma dipende dal
tipo di informazione.
I caratteri li rappresenterò convertendo carattere per carattere, i numeri sarà più
conveniente convertirli in numeri binari.

I tipi di dati
- Caratteri (alfanumerici)
- Numeri
- Informazioni logiche (confronto fra due entità il cui risultato è V o F)
Il dato logico si esprime semplicemente con un bit es 0 falso, 1 vero.
I dati vengono rappresentati tramite locazioni ma le locazioni spesso non sono
sufficienti e quindi dobbiamo utilizzare la parola. La locazione è minimamente 8 bit.
La parola può essere formata da più locazioni quindi se la parola è a 32 bit sarà
costituita da 4 locazioni.

Caratteri
Su stringhe di caratteri posso fare le seguenti operazioni:
lettura, ordine quindi il computer è in grado di fare dei confronti, trasferimenti e
concatenazioni.

Numeri
Possono essere interi o decimali. Il procedimento di rappresentazione esposto prima
lo posso utilizzare solo sui numeri interi.
                                  Numeri interi
      Prendiamo un numero intero e lo trasformiamo in binario, es. 123 diventa un
certo numero binario utilizzando un certo numero di bit che mettiamo in memoria.
                                          9
Appunti d’esame
Il computer                                                              www.profland.135.it

utilizzerò tante locazioni quante sono necessarie per scrivere tutti questi numeri. Si
decide una volta per tutte quanti bit al massimo utilizzare per rappresentare i numeri,
normalmente si utilizzano tutti i bit contenuti nella parola. I numeri interi considerati
sono solo quelli che possono essere rappresentati nel computer cioè quelli che
rimangono al di sotto dei bit prefissati per essere utilizzati. Quindi quando parliamo
di tipi interi indichiamo la sottoclasse di numeri interi che noi effettivamente siamo in
grado di rappresentare. Es 2 corrisponderà ad un certo numero binario.
        In presenza di un numero negativo dovrò sacrificare un bit per li segno meno.
Se ho a disposizione 8 bit io convertirò i numeri interi che riempiono soltanto 7 bit
perché l'ottavo è per il segno. Se ho a disposizione 7 bit il massimo numero
rappresentabile è 127, cioè 27 = 128 ma uno è lo zero quindi 127 (01111111). Esiste
quindi un massimo intero rappresentabile. Con questo tipo di rappresentazione
avremmo due modi per poter rappresentare lo zero 0+,0- ciò potrebbe creare errori.
Quindi il numero 10000000 viene interpretato come un ulteriore numero attribuito o
ai positivi 128 o ai negativi -128.
Sul tipo intero, cioè sull'insieme dei numeri interi rappresentabili, sono definite le
seguenti operazioni: addizione, sottrazione, moltiplicazione, divisione. Nelle
operazioni dei tipi interi possono sorgere dei problemi legati al fatto che i numeri non
sono tutti rappresentabili e quindi il risultato potrebbe non esserlo:
Es ipotizziamo una macchina che possa al massimo scrivere i numeri fino a 100
posso scrivere 60, posso scrivere 50 ma non posso fare la somma di 60 + 50 in tal
caso si ha una situazione di non rappresentabilità del risultato.
Situazione eccezionale │ x │ > max dato non rappresentabile
│ x # y│ > max risultato non rappresentabile (# indica una qualsiasi operazione).

       Tale situazione è in generale detta di overflow. In questo caso la macchina darà
errore. La somma di 1 in binario si realizza mediante uno spostamento degli uno fino
ad arrivare al massimo numero rappresentabile 11111111 se ci sommo 1 = 2 , 0 e 1 di
riporto .... fino a diventare un numero negativo si invade quindi il campo dei numeri
negativi -128 dal punto di vista software potrei creare un programma che permetta di
segnalare l'errore prima di effettuare il calcolo.
Quindi questo rischio ci fa capire che dobbiamo usare molto poco i numeri interi.
A cosa servono i numeri interi? Servono solo a contare. I numeri decimali vengono
utilizzati per i calcoli, essi possono però avere anche la parte decimale nulla. I numeri
usati per i calcoli sono solo apparentemente interi ma in realtà hanno i decimali nulli.
Se su una calcolatrice faccio l'operazione 1/2 il risultato è 0.5 se invece faccio un
operazione di divisione 1/2 (numeri interi) fa 0 col resto di 2.
Esistono numeri interi e numeri reali, le operazioni dell'uno non sono le operazioni
dell'altro. Dovrò quindi indicare al computer di trattare i numeri come decimali. I
software in genere operano sui numeri reali.
I numeri reali vengono trattati in modo completamente differente dai numeri interi.

Di Tipo reale


                                           10
Appunti d’esame
Il computer                                                             www.profland.135.it

       Cos'è un numero? Es. 2 è la rappresentazione in valore di un numero che
ottengo contando uno due. I valori sono simboli concatenati tra di loro che esprimono
un valore. I simboli identificano delle proprietà dei numeri 1/2 identifica un simbolo
che moltiplicato per due darà 1, il suo valore nel mondo dei numeri interi non esiste
perché non esiste nessun numero intero che moltiplicato per due da 1.
  2 è un simbolo che rappresenta un numero il cui quadrato è esattamente uguale a 2
il, suo valore non è rappresentabile. In conclusione i tipo reale comprende i numeri
interi in cui il simbolo corrisponde al valore del numero, i numeri razionali che sono
espressi da simboli a volte sono rappresentabili ma altre no, i numeri irrazionali non
sono mai rappresentabili. Il tipo reale non considera quindi tutti i numeri reali ma
soltanto una parte cioè quella rappresentabile.
Per rappresentare un numero considero una locazione Suddividendola in due parti
separandole ideologicamente con un punto a sinistra scrivo la parte inter del numero a
destra quella decimale 11110.00111 avrò un certo numero di bit da dedicare all'intero
ed un certo numero di bit da dedicare al decimale. Questa idea di rappresentazione è
un idea molto poco efficiente perché limita moltissimo la rappresentatività occorre
quindi cambiare la strategia con cui noi siamo tipicamente abituati a rappresentare i
numeri sorge un problema di spazio. Ci chiediamo se esiste un metodo matematico
per rappresentare meglio questi numeri posso esprimere numero es. 30 milioni come
prodotto tra un numero e una potenza.


I tipi reali sono una sottoclasse dei numeri razionali. Abbiamo detto che il modo con
cui noi rappresentiamo i numeri è un modo poco efficiente. Si ricorre ad una
rappresentazione più efficiente scrivendo una parte principale del numero e indicando
l'esponete del 10 che completa quel numero per allinearlo in posizione corretta. Es
1mld = 1 x 109 ; 1/1mld = 1 x 10-9. Questo tipo di rappresentazione è la
rappresentazione floating point (pag 98). In generale qualunque numero può essere
rappresentato in questo modo: X = f x e dove: f è la mantissa, è la base di
numerazione 10 per l'uomo 2 per la macchina, e è l'esponente.
In alcuni casi la mantissa è rappresentabile in altri no. La rappresentazione Floating
Point non è unica. Ma è invece opportuno che il tipo di rappresentazione sia univoco
in modo da evitare ambiguità. Si sceglie quindi un sola tra quelle possibili
(scientifica, ingegneristica). L'ingegneristica prende il numero ne guarda le cifre e le
trasforma tutte in intero, quella scientifica fa l'operazione esattamente opposta il
numero lo interpreta come un numero decimale es 0.35 potrei scrivere anche 0.035
sarebbe ancora decimale e allora mettiamo un'ulteriore limitazione: la prima cifra
deve essere obbligatoriamente diversa da zero in questo modo la rappresentazione
diventa unica. Questa è la rappresentazione scientifica Floating Point. La mantissa
sarà quindi un numero sicuramente più piccolo di 1 e poi la prima cifra deve essere
necessariamente diversa da zero ciò significa che nel caso di base 10 la mantissa
dovrà essere maggiore di 1/10 in generale 1/ f 1.
Per rappresentare il numero io devo conoscere la mantissa e l'esponente. Il
calcolatore deve rappresentare due numeri interi trasformandoli in base binaria. (pag
                                          11
Appunti d’esame
Il computer                                                            www.profland.135.it

104). Sia la mantissa sia l'esponente possono avere un proprio segno un bit verrà
usato per il segno della mantissa un bit per li segno dell'esponente.
Quali problemi possono nascere da questo tipo di rappresentazione?
non posso rappresentare il numero:
-se la mantissa ha più cifre di quante io ne possa scrivere, (precisione del numero)
-se l'esponete ha più cifre di quante ne posso rappresentare (ordine di grandezza)
La parte di numeri che posso rappresentare è ovviamente finita. L'insieme infinito dei
numeri viene rappresentato con un numero finito di oggetti quindi vi è una
approssimazione. I numeri che noi usiamo li chiameremo numeri macchina e sono
una sottoparte finita dei numeri. La precisione dipende dal numero di bit che io ho a
disposizione.

L'approssimazione
Il problema della precisione può essere risolto attraverso l'approssimazione. Anche se
qui rappresentiamo comunque un intero a tale intero noi attribuiamo un significato
diverso Es se il numero intero è 1236 ed io posso rappresentare soltanto 3 cifre siamo
in una situazione di overflow. Ora invece abbiamo un numero decimale che è solo
rappresentato come intero quindi al posto di scrivere 0.1236 posso scrivere 0.123.
Le approssimazioni sono due:
Troncamento: Non scrivere le cifre che vanno da t in poi.
Arrotondamento: scrivere le cifre fino a t lasciando l'ultima inalterata se quelle che
taglio sono inferiori a 0.5 arrotondare alla superiore se invece è maggiore.
Tra le due tecniche la più precisa è l'arrotondamento il cui errore varia da 0 a 5.
La seconda limitazione consiste in un range limitato, vi è cioè un numero finito di
cifre con cui posso rappresentare l'esponente E min < e < Emax. Non posso rappresentare
numeri al di fuori di un certo intevallo
Es =10 t=3 Emin = -9 Emax = 9 allora:
rmax = 0.999 x 109 massimo numero rappresentabile
rmin = 0.100 x 10-9 minimo numero rappresentabile

Situazioni Eccezionali
Cosa accade quando andiamo al di sopra o al di sotto del range possibile?
Es devo rappresentare 10100 al massimo posso rappresentare 1099
Se e > Emax si dice che si è verificato un overflow.
Se e < Emin si dice che si è verificato un underflow.
(pag 120) con i reali il calcolatore si ferma. Nelle situazioni di underflow il
calcolatore sostituisce il più piccolo numero di tutti lo zero altri calcolatori si
fermano. I numeri che mettiamo nel computer sono sia numeri positivi che negativi e
vanno tra un minimo valore rappresentabile e un massimo valore rappresentabile un
esponente minimo e un esponente massimo sia dalla parte positiva che dalla parte
negativa. Poi c'è una fascia compresa tra il minimo e lo zero di non rappresentabilità.
Le situazioni di overflow non possono essere risolte le situazioni di underflow spesso
vengono approssimate con lo zero.


                                          12
Appunti d’esame
Il computer                                                              www.profland.135.it

I parametri che caratterizzano il sistema aritmetico floating - point a precisione finita
sono: (pag 112)
 = base di numerazione
t = precisione
Emin = minimo esponente
Emax = massimo esponente
Tali parametri variano da macchina a macchina ma i parametri secondo il sistema
aritmetico standard IEEE sono:
=2       t = 23    Emin = -127 Emax =128
tutto questo è scritto in una voce 32 bit di cui 23 sono per la mantissa, 7 per
l'esponente due per il segno. In termini decimali si possono rappresentare dalle 6 alle
7 cifre decimali (da 2-127 a 2128) in decimali da 10-38 a 1039 è dunque di fficile che si
verifichi una situazione di overflow. Tipicamente l'overflow sarà causato da
situazioni di errore (es la divisione per zero).

La precisione t invece è molto limitata 23 cifre binarie sono circa 6 - 7 cifre decimali
tale precisione è detta precisione singola.
Quando ne abbiamo bisogno noi possiamo ottenere una maggiore precisione
aumentando il numero delle cifre che abbiamo a disposizione i computer sono quindi
abilitati a mettere il numero in due voci si raddoppia così il numero di bit a
disposizione:
Doppia Precisione:
=2       t = 52    Emin = -1023 Emax =1024
i tempi di calcolo sono più elevati quindi userò la semplice o la doppia a seconda
delle esigenze.

Di Tipo Logico
Vero e Falso. Un dato logico si rappresenterà con un bit (es 0 = vero; 1 = falso ).
Sorge un problema di indirizzamento nella loro rappresentazione per cui un intera
locazione deve essere sciupata pur avendo bisogno soltanto di un bit (es pag 136)
Sul tipo logico si fanno le operazioni dell'algebra di Boule:

• Negazione         (not,)
• Congiunzione      (and,)
• Disgiunzione      (or,)

Negazione
Se ho un valore logico che è vero il suo opposto sarà falso.
p: 12 > 2 (vero)
not p: 12 < 2 (falso)

Congiunzione


                                           13
Appunti d’esame
Il computer                                                                www.profland.135.it

entrano due input ed esce un solo output si tratta infatti di un'operazione e in
matematica un'operazione comporta l'ingresso di due input e di un solo output.
p: 2 < 3 (vero)
q: 5 < 3 (falso)
p and q: 2 < 3 e 5 < 3 (falso).
La congiunzione lega i due input costituendo un'unica frase logica.

Disgiunzione
Anche in questo caso si hanno due input ed un output.
p: 2 < 3 (vero)
q: 5 < 3 (falso)
p or q: 2 < 3 o 5 < 3 (vero)

Tavole di verità
     negazione            congiunzione e disgiunzione
   p       not p         p        q      p and q p or q
  V          F           V        V         V         V
   F         V           V        F         F         V
                         F        V         F         V
                         F        F         F         F

Esercizio 1
Costuire una funzione logica con queste proprietà:
a b
v v     F
 f v V
v f     V
 f f    F

La funzione corrispondente è (not a e b) or (a e not b)

Esercizio 2
Data una funzione calcolarla a seconda dei valori di a, b, c. Si costruisca la tavola di
verità della seguente
 funzione: (a e b) or c

Devo quindi elencare tutte le possibilità e ad ogni possibilità scrivere la risposta.
a b c
v v v       V
v v f       V
v f v       V
v f f       F
f v v       V
f v f       F
                                            14
Appunti d’esame
Il computer                                                                www.profland.135.it

f f v             V
f f f             F


La rappresentazione delle istruzioni
Nel computer scriverò dei comandi che verranno interpretati dalla unità di controllo.
L'istruzione è la sequenza di bit scritta in linguaggio binario 0 e 1
solo la cpu è capace di interpretare. Questo linguaggio direttamente comprensibile
all'elaboratore è detto linguaggio macchina.
Questo linguaggio cambia da calcolatore a calcolatore perché dipende dall'unità di
controllo.
Es calcolo 2 x 3 + 7 le operazioni sono due, un istruzione elementare per il prodotto e
un'istruzione elementare per la somma. Il comando fai una moltiplicazione può
tradursi in una serie di comandi intermedi che noi non vediamo neanche. Ogni
comando viene svolto in un ciclo di Clock, ma il tempo dell'operazione non
corrisponde esattamente ad un solo ciclo di Clock. Parlando di MIPS abbiamo visto
quante operazioni "ciclo" si fanno al secondo.
Come sarà organizzato un programma che fa fare questo calcolo?
Innanzitutto dovranno essere inseriti i dati: 2, 3, e 7 in forma binaria.
                                         D Bin
                                         0      0
                                         1      1
                                         2 10
                                         3 11
                                         4 100
                                         5 101
                                         6 110
                                         7 111

Le cifre binarie sono allineate a destra nelle locazioni di memoria (pag. 153).
Dopo i dati dobbiamo prevedere delle altre locazioni in cui andare a scrivere i
risultati. L'operazione può comportare anche due o più risultati parziali che
comunque dovranno essere messi in memoria.
Il calcoli sono svolti dall'unità logico aritmetica che dotata di sue memorie proprie
dette registri.
Il processo di esecuzione del calcolo sarà il seguente:
Il dato 2 viene preso e portato nel registro; il dato 3 viene preso e portato nel registro,
nel registro viene eseguita materialmente l'operazione di prodotto il risultato viene
scritto nel registro dei risultati infine questo risultato viene riportato in memoria nel
posto in cui avevamo previsto doveva andarsi a scaricare il risultato. La seconda fase
del processo è simile alla precedente si somma il parziale a 7. Prendo 7 lo porto nel
registro, prendo il risultato parziale e lo porto nel registro faccio le somme il risultato
viene messo nel registro dell'operatore di somma, il risultato viene scaricato in
memoria (pag. 155). Le istruzioni saranno costituite da stringhe di bit alcuni dei quali
                                            15
Appunti d’esame
Il computer                                                               www.profland.135.it

saranno interpretati come codice dell'operazione da fare, altri come gli indirizzi delle
locazioni in cui ci sono i dati su cui effettuare l'operazione e di quelle in cui andare a
mettere il risultato.
Fondamentalmente una stringa di bit è divisa in 4 settori un primo settore contiene un
certo numero di bit che sono interpretati come comando, e poi avremo gli indirizzi
degli operandi tipicamente due di input ed uno di output. Questa stringa sarà scritta
nella memoria. Se il calcolatore opera su 16 bit la stringa sarà di 16 bit 4,4,4,4. Se
opera su 32 bit la stringa sarà composta da 8,8,8 e 8. (pag. 157).
Le limitazioni:
Con 4 bit posso il numero massimo rappresentabile è 15 perché va da 0 a 15 cioè la
potenza 24 e quindi con 4 bit posso definire 16 diverse operazioni. Avendo a
disposizione 16 bit e devo dare 3 indirizzi posso dare 4 bit a indirizzo significa che io
posso localizzare solo 16 locazioni di memoria. Quindi questo tipo di istruzione ha un
enorme limitazione dal punto di vista dell'indirizzamento. Una soluzione potrebbe
essere quella di aumentare i bit dedicati all'istruzione aumenta la numerosità delle
operazioni elementari e aumenta la capacità di indirizzamento. Un'altra soluzione è
quella di ridurre il numero di indirizzi da dare. Es un istruzione che invece di avere 3
indirizzi 2 operandi e un risultato, potrei dire di scrivere il risultato sempre in una
parte prefissata in questo caso non ho bisogno di dargli l'indirizzo. Il risultato lo
scriviamo in uno dei due posti che contengono i dati ad esempio lo scriviamo nel
posto in cui c'é il primo dato: 2 x 3 ognuno avrà un suo indirizzo, viene fatto il
prodotto che poi viene scritto nell'indirizzo di 2 cioè 1000. L'operazione 6 + 7
coinvolgerà l'indirizzo 1000 che contiene il risultato dell'operazione precedente, e il
7. Il risultato totale comparirà nella locazione del primo operando all'indirizzo 1000.
Lo svantaggio di quest'ultimo metodo è che i dati strada facendo si perdono. Se
avessi bisogno dei dati in seguito dovrò effettuare dei salvataggi. Oggi potendo avere
istruzioni a 32 o 64 bit non sorgono problemi di indirizzamento. L'istruzione sarà
sempre costituita da un codice e gli indirizzi degli operandi. Dei due dati uno è libero
e io dico l'indirizzo l'altro dato deve risiedere in una locazione predefinita. Per fare
una somma o un prodotto ora dovrò fare due operazioni una di salvataggio del dato e
poi l'operazione effettiva di calcolo.
Allora nell'esecuzione di un programma indicheremo prima di tutto di copiare la
locazione che contiene ad es. il dato 2 in un altra locazione chiamata registro poi
facciamo la moltiplicazione del contenuto della locazione 1001 che è 3 quest'ultimo
sarà moltiplicato con quello che sta nel registro quindi con 2. Il risultato di questo
prodotto finirà nel registro che quindi non conterrà più 2 ma 6. L'utima operazione
consiste nel sommare il contenuto del registro con 7. Vi sarà un'istruzione in cui si
preleva il dato dal registro e si scrive nella memoria il risultato della locazione. (pag.
161).

I limiti della programmazione in linguaggio macchina
• scarsa interpretabilità poiché devo associare codici numerici a determinate
   operazioni


                                           16
Appunti d’esame
Il computer                                                                 www.profland.135.it

• le istruzioni utilizzano indirizzi, le formule sono invece espresse con dei simboli
   non con degli indirizzi numerici
• numero di operazioni elementari molto elevato (scarsa potenza del linguaggio)
• riferimento a tipi di dati differenti (es interi o Floating Point)
Dati questi limiti si attuano dei correttivi tra cui il più immediato è quello di sostituire
i caratteri binari con dei caratteri a noi più familiari (es posso chiamare un casella a
senza necessità di ricordare il suo indirizzo.
L'istruzione sarà del tipo MPY moltiplica il contenuto di una locazione ideale che io
chiamo A ed il contenuto di una locazione ideale che io chiamo B. (es. pag.165).
Ancora potrò dare l'istruzione di moltiplicare A e B e di mettere il risultato in A,
quindi dico somma A e C. (istruzione a 2 indirizzi)
Potrò inoltre dare un istruzione ad 1 indirizzo del tipo: carica nel registro il dato A
moltiplicalo con B, sommagli C e quindi salvalo in S.
Si ha in questo caso un modo più semplice di scrivere un'istruzione: un nome
mnemonico al posto del codice operativo, un nome simbolico al posto dell'indirizzo
dell'operando.
Quando facciamo questo abbiamo costruito un linguaggio che chiameremo:

Linguaggio assembler
Tale linguaggio ovviamente non è compreso dalla macchina occorrerà quindi un
programma che traduca l'assembler in linguaggio binario e poi sarà necessario gestire
gli indirizzi. Io invento le lettere A, B, C, e lui assegnerà a queste lettere degli
indirizzi. Dobbiamo disporre quindi di una programma che sia capace di prendere in
input il linguaggio assembler e di tradurlo in binario.
L'elaboratore sarà sempre affiancato da un programma di base che mi permette di
utilizzarlo in maniera più efficiente. Elaboratore e programmi assemblatori
costituiscono quella che chiamiamo la macchina virtuale. (pag .168).


                                 MACCHINA FISICA
  calcolatore che mette a disposizione solo le potenzialità del suo hardware e del suo
                                 linguaggio macchina
                              MACCHINA VIRTUALE
                                    macchina fisica
                                           +
 insieme di programmi (software) che sfruttano le potenzialità della macchina fisica.

Il programma Assembler è formato da tante righe quante sono le istruzioni in
linguaggio macchina. Quindi noi chiediamo di poter esprimere un messaggio umano
che comunichi un contenuto che si traduce più ampio. Posso dunque intervenire sulla
capacità di comprensione chiedendo se è possibile di avere delle istruzioni umane più
potenti.



                                            17
Appunti d’esame
Il computer                                                                www.profland.135.it

Ho sostituito i caratteri binari in caratteri alfanumerici a me facilmente comprensibili,
ma ho bisogno inoltre di avere delle istruzioni umane più potenti in cui con un solo
comando io gli faccio fare più cose. Il secondo passo evolutivo è quello di costruire:

Linguaggio di programmazione ad alto livello
• più potente del linguaggio macchina (dietro un istruzione vi sarà un numero
   elevato di istruzioni in linguaggio macchina).
• più vicino al linguaggio naturale
• formalmente definito
Esistono numerosi linguaggi ad alto livello ognuno dei quali è specializzato in varie
cose. Inizialmente c'erano quelli di tipo calcolo scientifico e quelli di tipo gestione dei
dati commerciale poi le periferiche di input output del Computer si sono fortemente
arricchite, le capacità di interazione sono aumentate e i linguaggi si sono via via
evoluti e specializzati. L'errore che talvolta viene commesso è quello di cercare di
usare un linguaggio non appropriato per risolvere un problema che una altro
linguaggio farebbe meglio.
I linguaggi più diffusi sono: Fortran, C, C++, Pascal, Basic, Orcle, Progress, Matlab,
Java.
Il passaggio tra un linguaggio ad alto livello e il linguaggio macchina è reso possibile
mediante l'uso di Programmi Traduttori. Il programma traduttore è molto più
complesso di un programma assemblatore. Esistono due tipi di traduttori: Interpreti e
compilatori.

L'interprete
• Prende in input contemporaneamente un'istruzione di un programma a.l. ed i dati
  ad essa relativi. Capisce le istruzioni le traduce in linguaggio macchina acquisisce i
  dati e le risolve.

• Fornisce in output direttamente il risultato dell'esecuzione dell'istruzione

Il concetto compilativo presenta invece due fasi
FASE 1

Il Compilatore
• prende in input un programma in linguaggio a.l.
• Fornisce in output un programma in linguaggio macchina.

FASE 2
Il programma in linguaggio macchina, a cui sono forniti in input i dati, viene esguito
e fornisce in output i risultati.
                              VANTAGGI E SVANTAGGI
Compilatore



                                            18
Appunti d’esame
Il computer                                                              www.profland.135.it

le fasi di compilazione ed esecuzione sono logicamente e temporalmente distinte. Il
compilatore è più efficiente perché richiede un tempo minore per la risoluzione del
problema.

Utilizzerò il compilatore quando ho un prodotto consolidato, la strategia è sicura
faccio la traduzione e poi naturalmente userò soltanto il prodotto

Traduce globalmente assemblando macro istruzioni e poi lo rilegge nella sua
globalità e lo ottimizza cosa che l'interprete non può fare.
(il Fortran è il compilatore scientifico più utilizzato).

L’interprete
Se io sto facendo un programma e questo programma contiene un errore io lo devo
rifare ritradurlo e poi rilanciarlo cosa che per l'interprete avviene automaticamente.
Il programma in linguaggio a.l. è costantemente sotto il controllo dell'interprete (più
flessibile).
Viene solitamente utilizzato l'interprete nelle fasi in cui devo fare parecchi interventi
quindi tipicamente nelle fasi progettuali. Sono interpretativi la maggior parte dei
linguaggi di sperimentazione. L'interprete traduce frase per frase.
Tutti i linguaggi di programmazione devono avere delle definizioni rigorose e
precise, devono essere scritti esclusivamente utilizzando alcune parole, alcuni
simboli.


I sistemi operativi
Sono programmi per il funzionamento minimale di una macchina. Inzialmente i PC
utilizzavano le valvole, successivamente si passò ai transistor enormemente più
piccoli mantenendo le stesse capacità o anche aumentandole e poi si è passati al
circuito integrato che contiene un certo numero di transitor. Lo schema dei calcolatori
attuali rispecchia quello della macchina di Von Neumann (pag. 418).
Le capacità di memoria di un computer sono vincolate dalla presenza di un campo
elettrico che se è assente il computer non contiene niente, senza dati in memoria il
computer non può funzionare.
Vediamo di ripercorrere i passi logici per poter risolvere un probelma, esso deve
essere analizzato, si costruisce un linguaggio e si prepara il problema utilizzando
questo linguaggio.

Anni 40
I passi erano:
1. preparare il programma in linguaggio macchina
2. memorizzare istruzioni e dati
3. fare eseguire il programma
4. estrarre il risultato dalla memoria


                                           19
Appunti d’esame
Il computer                                                             www.profland.135.it

        Il programma veniva scritto su un supporto esterno al computer che poi il
computer potesse leggere. Uno dei primi strumenti che hanno permesso di immettere
dati ne computer sono le schede perforate. I buchi che venivano fatti in verticale
corrispondevano alla presenza di zeri e uno. Ogni stringhetta rappresentava un
carattere. Si aveva la necessità di memorizzare questi dati cosa che può avvenire solo
dando istruzioni al computer. Devo dare istruzione al computer di caricare le schede e
necessario disporre di un programma che sia già in memoria che insegni al computer
come caricare le schede (loader). Il risultato veniva scritto su altre schede.
Come si fa a caricare il loader?
        Un computer per essere acceso necessita di un processo di inizializzazione. In
passato il loader veniva caricato a mano scrivendo a mano una serie di zeri e uno
utilizzando una serie di interruttori all'esterno del PC.
Lo schema era costituito dal nostro programma, dai dati del nostro programma, il
loader. Vi era un comando di start up che faceva leggere il loader che poi permetteva
la lettura degli altri programmi.
Già all'epoca si era sviluppata l'idea di programmi di utlità generale che servissero a
tutte le persone: il software di base di un computer il loader e in un certo senso il
precursore dell'attuale sistema operativo.
Fine anni 50
Furono poi introdotti i linguaggi ad alto livello e si avvertì la necessità di programmi
traduttori che si trovano su schede. Quando lancio il programma scritto su schede
dell'utente ad alto livello precedentemente dovrò caricare nella macchina un
programma su schede che traduce il primo. (pag. 429) I risultati erano costituiti dal
programma tradotto in linguaggio macchina che veniva scaricato su schede. Questo
programma in linguaggio macchina veniva rimesso in memoria con i dati che
servivano. La logica che veniva usata era di tipo compilativo davo un pacchetto in
linguaggio ad alto livello ricevevo in cambio un pacchetto in linguaggio macchina. In
caso di errore si doveva correggere la scheda in linguaggio ad alto livello che noi
ritenevamo sbagliata rilanciare li processo ed ottenere un altro pacchetto in
linguaggio macchina.
Il sistema operativo è dunque costituito da un caricatore e da un programma
traduttore (pag 430) essi rappresentano l'hardware.
Inzialmente vi erano solo le schede perforate come unità di input/output poi fu
introdotta la stampante solo successivamente il monitor e la tastiera.

       Ora sorge un problema la macchina ha una sua velocità interna di natura
elettronica, quando interagisce con l'esterno opera con stampanti e tastiere che sono
unità di tipo elettro-meccaniche che sono molto più lente delle precedenti. Il
probelma è la differenza di velocità operativa tra due oggetti, vi sono operazioni che
sono incredibilmente più lente rispetto alle altre, quando vengono eseguite il
computer perde tempo.
       Noi vogliamo che la macchina lavori al massimo delle sue prestazioni cioè
vogliamo che il processore svolga sempre qualche cosa.


                                          20
Appunti d’esame
Il computer                                                               www.profland.135.it

Mentre viene eseguita l'istruzione di stampa la CPU resta inattiva (pag. 431). Tale
processo non è efficiente. Se io lancio solo il comando di stampa alla quale ci pensa
poi la stampante e la CPU nel frattempo può riprendere le sue funzioni il processo
diventa più efficiente.
       L'idea è stata quindi quella di introdurre qualcosa che potesse gestire le unità di
input/output senza l'intervento diretto dell'unità di controllo. Questo dipositivo
aggiuntivo per controllare esclusivamente le operazioni di I/O prende il nome di
CANALE di I/O.
Il canale può essere visto come un calcolatore indipendente dalla CPU che provvede
a gestire il programma utente. Esso si occuperà dell'eventuale conversione di codici,
del controllo sulla quantità dei dati da memorizzare, dell'indirizzamento delle varie
unità di I/O.
Il canale gestisce di solito più unità di I/O due sono i tipi di gestione:
• mediante bus (un'ulteriore interfaccia tra il canale e le unità di I/O (pag. 436)
• mediante gestione a stella, il canale parla direttamente con l'unità.

I PC operano in genere con la logica del bus. La gestione a stella è più efficiente
rispetto a quella bus perchè il canale parla direttamente con le singole unità di I/O. Se
la comunicazione è diretta significa che io avrò un certo numero di uscite
specializzate che non posso aumentare, la soluzione è quindi molto rigida.
Invece nell'altro tipo di gestione l'unità si attacca per il tramite di un bus che è
un'interfaccia con una tecnologia molto più bassa che mi consente di avere un
numero molto elevato di unità di collegamento.
        Quindi la tecnologia a stella è più efficiente perché il canale parla direttamente
con le unità di I/O ma è più limitativa, la tecnologia di bus è meno efficiente ma
molto più flessibile. In una macchina in cui vi possono potenzialmente essere più
unità di I/O la filosofia più razionale è quella del bus, in una macchina specializzata
che ha un unico output userò la tecnologia a stella.
Il sistema operativo risulta quindi costituito da:
• programma caricatore
• programma traduttore
• programma per la gestione dell'I/O
• programma per la sincronizzazione tra CPU e canale

ANNI '60
L'idea del canale è stata una buona idea ma non risolve il problema di esecuzione
contemporanea di più programmi. Se la CPU resta momentaneamente inattiva poichè
sul prog. 1 sta intervenendo un'altra unità, essa potrà intanto operare su un altro
programma, si ha così un uso efficiente della CPU. Nasce dunque la
multiprogrammazione (pag. 438) cioè la capacità del sistema operativo di far
condividere a più programmi l'uso della CPU. quando un programma effettua una
operazione di I/O, l'uso della CPU passa ad un altro programma, i programmi in coda


                                           21
Appunti d’esame
Il computer                                                           www.profland.135.it

attendono lunghi periodi di tempo nell'attesa dell'istuzione di I/O del programma che
sta utilizzando la CPU.

Time Sharing
        Il processo mediante il quale passiamo da un programma a un'altro richiede
una strategia dunque ci dovrà essere nel calcolatore un programma che gestisce
questa filosofia con un certo criterio.
Nasce la filosofia di gestire il tempo con cui i programmi stanno in memoria ad ogni
programma viene assegnato un tempo massimo di utlizzo della CPU (time slice) la
filosofia attuale è quella del Time Sharing.
Ogni programma può utilizzare la CPU finché non si verifica una delle seguenti
condizioni:
1. il programma finisce
2. il programma va in errore (divisione per zero, overflow...)
3. è richiesta una operazione di I/O
4. è terminato il tempo assegnato

Casi 1 e 2: il programma è eliminato dalla memoria
Casi 3 e 4: il programma è sospeso (viene mantenuto nella memoria)
Il mantenimento di un programma in memoria potrebbe essere costoso se questo è di
elevate dimensioni conviene quindi scaricarlo da qualche altra parte in attesa che
venga ripreso.

Lo Scheduler
Per decidere quale programma passare in memoria quando diversi programmi sono in
attesa, bisogna stabilire un ordine di accesso alla CPU. Si dovrà dunque disporre di
un programma che stabilisca quest'ordine, cioè lo scheduler.
Lo Scheduler per decidere la priorità si basa su diversi fattori:
• memoria richesta dai programmi
• tempo di CPU richiesto dai programmi
• tipo del programma (di utente o di sistema)
• tipo di utente (qualunque o gestore del sistema)
• uso recente della CPU

Lo scheduler assegna ad ogni programma un numero che determina il criterio di
precedenza nell'utilizzo della CPU.
Hanno priorità più alta i programmi che richiedono poca memoria e poco tempo di
CPU. I programmi di sistema hanno priorità più alta rispetto a quelli di utente.

Un SISTEMA OPERATIVO è l'insieme dei programmi che consentono il controllo e
la gestione di tutte le risorse del calcolatore
Hardware + sistema operativo (software) = macchina virtuale.



                                         22
Appunti d’esame
Il computer                                                            www.profland.135.it

Evoluzione della memoria (pag. 454)
Buona parte della memoria centrale è occupata da un certo numero di programmi del
sistema operativo. L'evoluzione dei sitemi operativi comporta l'uso di memorie che
sono sempre più ampie.
       La memoria del computer ha uno spazio fortemente limitato rispetto a quelle
che sono le nostre necessità. La memoria centrale è quella che contiene
effettivamente il programma, solo se è contenuto in essa quest'ultimo può essere
eseguito. Esistono altre memorie aggintive abilitate a contenere dati storici.
I programmi che non posso essere memorizzati in memoria centrale vengono
memorizzati nella memoria di massa o ausiliaria.
Le memorie di massa hanno un minor costo rispetto alla centrale, maggiore capacità
ma più lento tempo di accesso, e sono stabili. Sono costituite da dischi e nastri
magnetici. La CPU non può manipolare informazioni direttamente dalla memoria di
amssa. Queste devono essere prima trasferite in memoria centrale; si ha quindi la
necessità programma che consenta il trasferimento dei dati dalla memoria di massa
alla memoria centrale.
Poché l'hard disk ha delle capacità molto elevate potrebbe anche contenere
programmi che non entrano in memoria centrale in tal caso quel programma non può
essere eseguito. Non ho bisogno di caricare tutto il programma affinché esso possa
essere eseguito ma lo posso suddividere in blocchi (pagine) per tenere in memoria
solo l'istruzione in esecuzione. (pag. 458) I programmi entrano ed escono
continuamente dalla memoria, si ha dunque la necessità di programmi per la gestione
automatica dello scambio di informazioni tra memoria centrale e memoria ausiliaria
(memoria virtuale)
Il termine memoria virtuale sta ad indicare che i computer possono andare oltre le
loro capacità intrinseche di memoria. Vi deve essere un legame tra la memoria
virtuale e quella reale. Se la memoria reale è piccola questo meccanismo di passaggio
(paging) deve essere molto frequente ciò rallenta le funzioni del sistema. Le
prestazioni di una macchina dipendono da quanta memoria centrale poiché in
relazione alle sue dimensioni il paging sarà più o meno frequente. Anche il disco è in
grado di influenzare il paging, se il disco è lento lo sarà anche il paging.

       Il software del computer risiede in una struttura esterna che abbiamo
genericamente chiamato memoria di massa. Ogni sistema operativo organizza il
proprio archivio in un certo modo creando il file sistem. Col termine file noi
indichiamo un insieme di informazioni del computer. Ciò che distingue i file è l'end
of file cioè un segnale di fine. Ad ogni file noi daremo un nome che ci permetterà di
identificarlo. Ma non basta assegnare dei nomi soltanto occorre fissare delle regole di
organizzazione.
       L'organizzazione è articolata in gruppi, se il gruppo è molto numeroso potrei
suddividerlo in sottogruppi, si ha dunque una struttura gerarchica o ad albero. I nomi
devono essere assegnati anche ai sottogruppi. I sottogruppi vengono chiamati
cartelle.


                                          23
Appunti d’esame
Il computer                                                             www.profland.135.it

        Una cartella può contenere oggetti o eventualmente altre cartelle. Nel file
sistem la nomenclatura segue la logica posizionale, il nome vale per dove sta. Si
associa al nome l'intera percorrenza dalla radice sino al file. Ad esempio se ho due
file chiamati entrambe B, ma il secondo è contenuto nella 1, quest'ultimo è
denominato 1B.
I file oltre ad avere un nome, avranno anche un titolo ciò permette di codificarli.
Il titolo si può attribuire in due modi:
• I nomi per i file non sono liberi (i file Fortran saranno preceduti da una F, gli
   assembler da una A) tale metodo è complicato e poco flessibile.
• I nomi sono liberi, ma ad essi verrà affiancato un titolo (estensione).

I programmi possono essere a seconda del tipo essere suddivisi in due parti:
• una parte residente in memoria centrale contenete i programmi che devono essere
   utilizzati da tutti i programmi in esecuzione.
• una parte residente in memoria di massa che contiene i programmi che non devono
   essere mandati immediatamente in esecuzione dopo l'accensione.

Questa parte principale prende il nome di Kernel.
Il kernel del sistema operativo è l'insieme dei programmi che risiedono
permanentemente in memoria centrale (cioé vengono caricati al momento
dell'accenzione oltre ai gestori della memoria e della CPU) appartengono
generalemete al Kernel i programmi per la gestione di:
• I/O
• situazioni speciali (accensione, spegnimento, accesso via rete, malfunzionamenti)
• scambio di informazioni tra memoria centrale e memorie ausiliarie.

La memoria centrale deve contenere almeno il programma che consenta di far partire
la macchina. Negli anni quaranta questo programma veniva caricato a mano.
Attualmente tali comandi vengono scritti in una terza memoria classificabile come
memoria centrale poiché deve essere di tipo operativo, la quale deve avere la
caratteristica teconolgica di non cancellarsi. Si tratta di istruzioni che permettono di
innescare il processo di caricamento del Kernel.

La memoria centrale è dunque divisa in due parti di cui una necessariamente non
volatile nella quale vengono scritte le informazioni di partenza.

ROM = read only memory
memoria di sola lettura che contiene informazioni inserite al momento della
costruzione ed il cui contenuto non si perde se si spegne il computer (memoria non
volatile)




                                          24
Appunti d’esame
Il computer                                                              www.profland.135.it

RAM = random access memory significa memoria di accesso diretto nel senso che
ogni locazione di memoria può essere raggiunta indipendente mente dagl'altri. Quindi
la memoria dal punto di vista logico non è di tipo sequenziale.

inoltre fanno parte della memoria centrale particolari memorie di capacità ridotta ma
ad accesso molto rapido: i registri che fanno parte dell'unità logico aritmentica che
oggi è parte della CPU.

La CPU ha una sua memoria che conterrà i dati che sono in esecuzione.

Inoltre poiché le strutture operative hanno velocità diverse è inevitabile che si venga a
creare una sturuttura intermedia che attenui le differenze di velocità si hanno così le
memorie cache che si collocano tra la Ram e la CPU e sono caratterizzate da una
maggiore velocità.




                                           25

Weitere ähnliche Inhalte

Was ist angesagt?

Cosa sono gli algoritmi?
Cosa sono gli algoritmi?Cosa sono gli algoritmi?
Cosa sono gli algoritmi?mattuzzi
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturatiMajong DevJfu
 
Modulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictModulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictAndreina Concas
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a MatlabMarco Suma
 
Laboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniLaboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniMajong DevJfu
 
Corso Introduttivo alle Reti Neurali
Corso Introduttivo alle Reti NeuraliCorso Introduttivo alle Reti Neurali
Corso Introduttivo alle Reti NeuraliValerio Capozio
 
07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioniMajong DevJfu
 

Was ist angesagt? (14)

Cosa sono gli algoritmi?
Cosa sono gli algoritmi?Cosa sono gli algoritmi?
Cosa sono gli algoritmi?
 
Flow chart
Flow chartFlow chart
Flow chart
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati
 
Modulo 1 - Dispensa
Modulo 1 - DispensaModulo 1 - Dispensa
Modulo 1 - Dispensa
 
Modulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictModulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ict
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a Matlab
 
Laboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniLaboratorio Programmazione: Funzioni
Laboratorio Programmazione: Funzioni
 
Presentazione,
Presentazione,Presentazione,
Presentazione,
 
Programmazione
ProgrammazioneProgrammazione
Programmazione
 
Corso Introduttivo alle Reti Neurali
Corso Introduttivo alle Reti NeuraliCorso Introduttivo alle Reti Neurali
Corso Introduttivo alle Reti Neurali
 
07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni
 
Calcolo Parallelo
Calcolo ParalleloCalcolo Parallelo
Calcolo Parallelo
 
Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 
Le reti neurali
Le reti neuraliLe reti neurali
Le reti neurali
 

Andere mochten auch

Как путешествовать и зарабатывать
Как путешествовать и зарабатыватьКак путешествовать и зарабатывать
Как путешествовать и зарабатыватьinvesttravel24
 
InnovatED: An Approach to Blended PD
InnovatED: An Approach to Blended PDInnovatED: An Approach to Blended PD
InnovatED: An Approach to Blended PDjdyra
 
Appunti di Elaborazione automatica dei dati: opzioni
Appunti di Elaborazione automatica dei dati: opzioniAppunti di Elaborazione automatica dei dati: opzioni
Appunti di Elaborazione automatica dei dati: opzioniprofman
 
Trabajo profe luis alberto farfan
Trabajo profe luis alberto farfanTrabajo profe luis alberto farfan
Trabajo profe luis alberto farfanPaula Cortes O
 
Hallway Poster: Sales
Hallway Poster: SalesHallway Poster: Sales
Hallway Poster: SalesCory Grassell
 
Print Scans: SyNet We Miss You Direct Mail
Print Scans: SyNet We Miss You Direct MailPrint Scans: SyNet We Miss You Direct Mail
Print Scans: SyNet We Miss You Direct MailCory Grassell
 
Hallway Poster: Super Powers
Hallway Poster: Super PowersHallway Poster: Super Powers
Hallway Poster: Super PowersCory Grassell
 
стратегия входа
стратегия входастратегия входа
стратегия входаinvesttravel24
 
Где брать людей
Где брать людейГде брать людей
Где брать людейinvesttravel24
 
Eidos: Guida Google Analytics
Eidos: Guida Google AnalyticsEidos: Guida Google Analytics
Eidos: Guida Google AnalyticsEidos Srl
 

Andere mochten auch (15)

Как путешествовать и зарабатывать
Как путешествовать и зарабатыватьКак путешествовать и зарабатывать
Как путешествовать и зарабатывать
 
FEC-1
FEC-1FEC-1
FEC-1
 
แสงนีออน**
แสงนีออน**แสงนีออน**
แสงนีออน**
 
InnovatED: An Approach to Blended PD
InnovatED: An Approach to Blended PDInnovatED: An Approach to Blended PD
InnovatED: An Approach to Blended PD
 
Appunti di Elaborazione automatica dei dati: opzioni
Appunti di Elaborazione automatica dei dati: opzioniAppunti di Elaborazione automatica dei dati: opzioni
Appunti di Elaborazione automatica dei dati: opzioni
 
Trabajo profe luis alberto farfan
Trabajo profe luis alberto farfanTrabajo profe luis alberto farfan
Trabajo profe luis alberto farfan
 
ana grabiel :)
ana grabiel :)ana grabiel :)
ana grabiel :)
 
Hallway Poster: Sales
Hallway Poster: SalesHallway Poster: Sales
Hallway Poster: Sales
 
Print Scans: SyNet We Miss You Direct Mail
Print Scans: SyNet We Miss You Direct MailPrint Scans: SyNet We Miss You Direct Mail
Print Scans: SyNet We Miss You Direct Mail
 
Hallway Poster: Super Powers
Hallway Poster: Super PowersHallway Poster: Super Powers
Hallway Poster: Super Powers
 
стратегия входа
стратегия входастратегия входа
стратегия входа
 
Swarup cv 3 (1)
Swarup cv 3 (1)Swarup cv 3 (1)
Swarup cv 3 (1)
 
Где брать людей
Где брать людейГде брать людей
Где брать людей
 
Eidos: Guida Google Analytics
Eidos: Guida Google AnalyticsEidos: Guida Google Analytics
Eidos: Guida Google Analytics
 
CES201701-Clase 4
CES201701-Clase 4CES201701-Clase 4
CES201701-Clase 4
 

Ähnlich wie Elaborazione automatica dei dati: computer e matlab

A static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsA static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsLino Possamai
 
Digital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETDigital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETMarco Zamana
 
Attacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowAttacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowGiacomo Antonino Fazio
 
Blockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanzaBlockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanzaAlessandro Greppi
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiAngela Cristina
 
Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)STELITANO
 
Code Week Come introdurre il pensiero computazionale nella didattica
Code Week Come introdurre il pensiero computazionale nella didatticaCode Week Come introdurre il pensiero computazionale nella didattica
Code Week Come introdurre il pensiero computazionale nella didatticaAntonella Carrozzini
 
Algoritmi e complessità computazionale
Algoritmi e complessità computazionaleAlgoritmi e complessità computazionale
Algoritmi e complessità computazionaleMarco Liverani
 
Never Mind the Bollocks: here's the Domain Driven Design
Never Mind the Bollocks: here's the Domain Driven DesignNever Mind the Bollocks: here's the Domain Driven Design
Never Mind the Bollocks: here's the Domain Driven DesignAndrea Saltarello
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleAlessandri Giuseppe
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmicoAlumni Mathematica
 
Matematica, un approccio algoritmico
Matematica, un approccio algoritmicoMatematica, un approccio algoritmico
Matematica, un approccio algoritmicoStefano Franco
 
Java Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine LeariningJava Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine LeariningAndrea Ciccotta
 
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...MichaelFuser
 

Ähnlich wie Elaborazione automatica dei dati: computer e matlab (20)

A static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsA static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming Errors
 
Digital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETDigital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NET
 
Presentazione
PresentazionePresentazione
Presentazione
 
02 algo programmi
02 algo programmi02 algo programmi
02 algo programmi
 
Attacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowAttacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflow
 
Blockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanzaBlockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanza
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
Algoritmi
AlgoritmiAlgoritmi
Algoritmi
 
Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)
 
Code Week Come introdurre il pensiero computazionale nella didattica
Code Week Come introdurre il pensiero computazionale nella didatticaCode Week Come introdurre il pensiero computazionale nella didattica
Code Week Come introdurre il pensiero computazionale nella didattica
 
Algoritmi e complessità computazionale
Algoritmi e complessità computazionaleAlgoritmi e complessità computazionale
Algoritmi e complessità computazionale
 
Never Mind the Bollocks: here's the Domain Driven Design
Never Mind the Bollocks: here's the Domain Driven DesignNever Mind the Bollocks: here's the Domain Driven Design
Never Mind the Bollocks: here's the Domain Driven Design
 
Unit testing 101
Unit testing 101Unit testing 101
Unit testing 101
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionale
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
 
Matematica, un approccio algoritmico
Matematica, un approccio algoritmicoMatematica, un approccio algoritmico
Matematica, un approccio algoritmico
 
Java Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine LeariningJava Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine Learining
 
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
 

Mehr von profman

Belle piume
Belle piumeBelle piume
Belle piumeprofman
 
Greetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'AntarctiqueGreetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'Antarctiqueprofman
 
Street Creativity
Street CreativityStreet Creativity
Street Creativityprofman
 
Foto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’sFoto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’sprofman
 
Principi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e AmministrativoPrincipi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e Amministrativoprofman
 
Foto rare - Rare Photos
Foto rare - Rare PhotosFoto rare - Rare Photos
Foto rare - Rare Photosprofman
 
Appunti di Scienza delle finanze
Appunti di Scienza delle finanzeAppunti di Scienza delle finanze
Appunti di Scienza delle finanzeprofman
 
Non disperare
Non disperareNon disperare
Non disperareprofman
 
Vacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky HolidaysVacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky Holidaysprofman
 
Appunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: eserciziAppunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: eserciziprofman
 
Appunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidiAppunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidiprofman
 
Appunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzottoAppunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzottoprofman
 
Appunti di Strategia aziendale
Appunti di Strategia aziendaleAppunti di Strategia aziendale
Appunti di Strategia aziendaleprofman
 
Appunti di Storia economica: seminari
Appunti di Storia economica: seminariAppunti di Storia economica: seminari
Appunti di Storia economica: seminariprofman
 
Appunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industrialeAppunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industrialeprofman
 
Appunti di Storia economica: economia italiana
Appunti di Storia economica: economia italianaAppunti di Storia economica: economia italiana
Appunti di Storia economica: economia italianaprofman
 
Appunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondialeAppunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondialeprofman
 
Appunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilisticoAppunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilisticoprofman
 
Appunti di Ragioneria
Appunti di RagioneriaAppunti di Ragioneria
Appunti di Ragioneriaprofman
 
Appunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domandeAppunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domandeprofman
 

Mehr von profman (20)

Belle piume
Belle piumeBelle piume
Belle piume
 
Greetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'AntarctiqueGreetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'Antarctique
 
Street Creativity
Street CreativityStreet Creativity
Street Creativity
 
Foto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’sFoto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’s
 
Principi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e AmministrativoPrincipi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e Amministrativo
 
Foto rare - Rare Photos
Foto rare - Rare PhotosFoto rare - Rare Photos
Foto rare - Rare Photos
 
Appunti di Scienza delle finanze
Appunti di Scienza delle finanzeAppunti di Scienza delle finanze
Appunti di Scienza delle finanze
 
Non disperare
Non disperareNon disperare
Non disperare
 
Vacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky HolidaysVacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky Holidays
 
Appunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: eserciziAppunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: esercizi
 
Appunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidiAppunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidi
 
Appunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzottoAppunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzotto
 
Appunti di Strategia aziendale
Appunti di Strategia aziendaleAppunti di Strategia aziendale
Appunti di Strategia aziendale
 
Appunti di Storia economica: seminari
Appunti di Storia economica: seminariAppunti di Storia economica: seminari
Appunti di Storia economica: seminari
 
Appunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industrialeAppunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industriale
 
Appunti di Storia economica: economia italiana
Appunti di Storia economica: economia italianaAppunti di Storia economica: economia italiana
Appunti di Storia economica: economia italiana
 
Appunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondialeAppunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondiale
 
Appunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilisticoAppunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilistico
 
Appunti di Ragioneria
Appunti di RagioneriaAppunti di Ragioneria
Appunti di Ragioneria
 
Appunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domandeAppunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domande
 

Kürzlich hochgeladen

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataGianluigi Cogo
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxfedericodellacosta2
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 

Kürzlich hochgeladen (8)

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open Data
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptx
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 

Elaborazione automatica dei dati: computer e matlab

  • 1. Appunti di Elaborazione automatica dei dati: Il Computer ed il Matlab (cenni) Si ricorda che: • l'uso degli appunti qui presenti è consentito per solo uso personale e di studio; • la consultazione è gratuita ed ogni forma atta a ricavarne lucro è vietata! • gli appunti sono fatti da studenti che non possono assumersi nessuna responsabilità in merito; • il materiale qui presente non è sostitutivo ma complementare ai libri di testo: - devi (e ti consiglio) di consultare e comprare i libri di testo; • il materiale qui presente è distribuito con licenza Creative Commons Spero che ciò che hai scaricato ti possa essere utile. Profman Il file è stato scaricato in forma gratuita da: http://profland.altervista.org oppure da qualche mirror, come: www.profland.cjb.net www.profland.135.it o dalla pagina dedicata su slideshare.net: www.slideshare.net/profman
  • 2. Appunti d’esame Il computer www.profland.135.it Il Computer (autore: jiji) FASI DI RISOLUZIONE DI UN PROBLEMA 1. Formulazione del problema: Fase di definizione e stesura del problema. Determinare gli obiettivi appropriati, determinare i vincoli da imporre, esaminare le alternative a disposizione, limitare il periodo temporale di riferimento. 2. Costruzione di un modello: Il problema deve essere misurabile e quindi quantizzabile ad es. modelli matematici o modelli fisici. Deve quindi essere possibile costruire un modello rappresentativo del problema. I modelli potranno essere concreti che sono oggetti fisici con cui rappresento il mio problema (es. modelli di veicoli usati per esperimenti nelle gallerie del vento) o astratti che sono un insieme di relazioni che descrivono il fenomeno in esame, tali relazioni sono di tipo matematico cioè delle funzioni. 3. Ricerca di un procedimento risolutivo(algoritmo): Il problema deve essere risolto secondo un procedimento prestabilito e logico. Algoritmo: costruzione della sequenza di passi logici che se eseguiti portano alla risoluzione del problema descritto dal modello. Esso è il nostro pensiero. 4. Implementazione dell'algoritmo in un contesto reale (programma). Programma: traduzione dell'algoritmo in un linguaggio compreso dall'esecutore. 5. Calcolo della soluzione: tale calcolo viene effettuato dall'esecutore Verifica della soluzione: Non possiamo attuare un procedimento di calcolo inverso poiché non è vero che ogni funzione ammette inversa non è detto che la funzione sia iniettiva cioè che ad ogni x corrisponda un unica y e per x diverse corrispondano y diverse. Inoltre anche se esiste la funzione inversa l'uomo potrebbe non essere capace di scriverla. Le funzioni complesse infatti associano insiemi di numeri ad insiemi di numeri. In tal caso si procede quindi a studiare la funzione effettuando dei tentativi mirati, cioè calcolo la funzione in punti prestabiliti nei quali immagino cosa possa succedere e verifico quello che succede. La verifica del modello deve avvenire usando il modello stesso. Una volta stimate le grandezze del modello queste dovranno essere confrontate con una soluzione nota (calcolate su batterie di dati). IL COMPUTER Il Computer è detto anche elaboratore ma non cervello elettronico poiché non è in grado di prendere decisioni, non è cioè dotato di capacità decisionale. Conseguenza di ciò è che noi dobbiamo pianificare tutto evitando situazioni impreviste altrimenti il computer non può andare avanti. Talvolta si può verificare un errore che non era stato previsto poiché riguardava una eventualità che non era stata presa in considerazione. L'elaboratore è un dispositivo capace di effettuare relazioni ad altissima velocità e di gestire una quantità molto elevata di informazioni. 2
  • 3. Appunti d’esame Il computer www.profland.135.it Es. Problema: Somma di 5 numeri I Dati del problema sono: 5, 7 , 10 , -2 , -1. Innanzitutto occorre stabilire le capacità dell'esecutore. Le istruzioni verranno date in relazione a ciò che il computer è in grado di fare. Ipotizziamo che l'elaboratore sia capace di eseguire solo un'operazione alla volta. Costruiamo l'algoritmo facendo un ciclo ripetitivo inizializzando una grandezza a zero e sommandovi un numero alla volta. Numero Totale 5 5 7 12 10 22 -2 20 -1 19 Tutto questo ha senso solo in presenza di un esecutore che sia capace di fare ciò. Nell'utilizzare il linguaggio per la costruzione dell'algoritmo dovrò evitare l'ambiguità che è originata dal fatto che una stessa parola può avere più significati, o che diverse parole possono avere lo stesso significato. Un linguaggio è scarsamente interpretabile. La riduzione della ambiguità si realizza attraverso la riduzione dei vocaboli a disposizione in modo che ad ogni situazione corrisponda un unico specifico vocabolo, la presenza di quel vocabolo diventa quindi inequivocabile; e attraverso l'irrigidimento della forma (scrivere le frasi secondo uno schema fisso molto rigido. Se faccio questo sono in grado di esprimere l'algoritmo. L'algoritmo può essere espresso mediante una flow chart in cui i singoli passi sono scritti in un grafico. I dati sono messi in blocchi in funzione di un ordine indicato graficamente da una freccia. Questo metodo presenta poche ambiguità la figura geometrica del rettangolo sta ad indicare che si tratta di un'azione. L'ellisse indica un acquisizione di input. La stampa riguarda una fase di output. L'azione decisionale è rappresentata da un rombo. Il difetto principale di questo modello è che si tratta di un modello di difficile rappresentazione, vi sono cioè delle difficoltà di natura grafica. Possiamo rendere l'algoritmo più efficiente eliminando la parte grafica sostituendola con delle parole chiave. Inoltre altro difetto della flow chart sono le numerose frecce, sarà opportuno eliminare tali frecce inventandoci un ordine obbligato con cui scriviamo le cose, dovrò inoltre avere una forma diversa per indicare i vari salti. Definizione di algoritmo è un procedimento per la risoluzione di una classe di problemi, realmente eseguibile e quindi costituito da un numero finito di comandi non ambigui che specificano una sequenza finita di operazioni da eseguire su un numero finito di dati. 3
  • 4. Appunti d’esame Il computer www.profland.135.it Un algoritmo definisce non solo il flusso delle operazioni da compiere ma anche i dati su cui tali operazioni vanno eseguite. Non si deve progettare solo il "da farsi" del problema ma anche il "da farsi" sui dati di cui disponiamo. Un oggetto astratto in grado di risolvere o di eseguire algoritmi (il computer) deve avere delle capacità: • essere in grado di memorizzare l'algoritmo che e costituito dai dati e dalle istruzioni. • essere capace di effettuare delle operazioni aritmetiche e logiche (esiste o non esiste un numero) sui dati. essere capace di gestire il flusso delle operazioni. Anche l'uomo è in grado di eseguire un algoritmo ciò vuol dire che l'uomo ha in se queste capacità. Vi è un input, leggere delle informazioni ed un output, produce un risultato. Gestisce queste cose attraverso la memoria che svolge il ruolo di memorizzazione e di controllo ed utilizza eventualmente una calcolatrice per fare i calcoli. (vedi schema). Nello schema macchina ci saranno esattamente gli stessi schemi che sono presenti nell'esecutore umano di algoritmi: La macchina secondo Von Neumann avrà necessariamente un input (Dati) ed un output (risultato) avrà necessità di una zona di controllo e una zona di memoria ed una zona di calcolo (unità logico aritmetica). L'unità di input legge dei dati che vanno in memoria, la memoria interagisce con il controllo e con il calcolo e produce degli output. Il controllo fa da supervisore a tutte le altre unità. Componenti di un elaboratore • La Memoria è il supporto fisico che permette di immagazzinare informazioni che sono costituite da dati e istruzioni. • Unità di controllo serve a gestire i vari flussi di dati e istruzioni • Unità logico aritmetica consente di effettuare operazioni di natura aritmetica e di natura logica • Unità di input ed output introducono dati ed emettono risultati La MEMORIA è organizzata secondo una lista di cellette che chiameremo locazioni di memoria. Nelle locazioni si scriveranno dei caratteri che rappresentano il messaggio che noi vogliamo comunicare. Il linguaggio utilizzato dalle macchine è il linguaggio binario che è costituito da due caratteri I e O. Una locazione si presenterà come segue 4
  • 5. Appunti d’esame Il computer www.profland.135.it 1 1 0 1 1 0 1 0 In ciascuna locazione no segneremo una sequenza di zeri e di uno. Ogni locazione è a sua volta una sequenza di componenti elementari che contengono esclusivamente i caratteri rappresentativi della memoria O ed I questi componenti elementari si chiamano bit. La memoria è insieme di celle ognuna delle quali contiene una stringa di bit. La stringa di 8 bit forma un byte che sono diventate l'unità di misura della memoria. Ogni locazione deve essere distinta dall'altra per cui ognuna di esse è associata ad un numero che la identifica, ognuno di questi numeri lo chiameremo l'indirizzo della locazione. locazione indirizzo 10110001 0010 11011110 0011 Nel sistema posizionale decimale le singole cifre giocano un ruolo diverso a seconda di dove stanno: 13 significa 1 x 10 + 3 x 1 perché è un sistema posizionale basato sul 10. La macchina usa invece un sistema posizionale basato sul 2 quindi i numeri sono moltiplicati per le potenze del due 0 x 23 + 0 x 22 + 1 x 21+ 0 x 1= 2. L'insieme di locazioni raggruppate prende il nome di parola. Il numero di locazioni che può contenere una parola dipende da quanto sono lunghe le istruzioni della singola macchina. La locazione è la minima unità indirizzabile, la parola è quell'insieme di locazioni sufficienti per poter scrivere un istruzione o un dato. La locazione tipica è costituita da 8 bit, la parola tipica è fatta da 4 locazioni (32 bit). Operazioni sulla memoria • leggere: vedere che ci sta in una certa locazione. • scrivere: inserire caratteri nelle locazioni. I parametri secondo i quali si valutano le prestazioni della memoria sono: • la velocità con cui posso andare a leggere e a scrivere, • la grandezza capacità della memoria cioè il numero di locazioni che essa è in grado di contenere. Per misurare la grandezza di una memoria utilizziamo dei multipli del byte dove il byte identifica una locazione. I multipli del byte sono: K byte 1024 = 29 M (mega) byte  G (giga)byte  T (tera)byte 5
  • 6. Appunti d’esame Il computer www.profland.135.it Nella memoria vi è la parola cioè quante locazioni vengono messe insieme per essere fisicamente usate contemporaneamente. Quindi anche la lunghezza della parola che la memoria può contenere ha una sua importanza. Sarà migliore una memoria che può contenere parole più lunghe cioè che possono contenere più locazioni. W= ampiezza della voce misurata in bit 16, 32, 64 bit L'ordine di grandezza della velocità è il nano-secondo un miliardesimo di secondo. Unità di controllo Serve ad istruire e guidare le altri componenti del sistema nell'esecuzione della loro attività, supervede a tutte le funzioni del sistema. E' un'unità meccanica che non ha capacità decisionale. Si tratta di una unità che è in grado di leggere nella memoria in una parte in cui sono scritte istruzioni, è in grado di capirle e di eseguirle. Tutto ciò che conta è quello che noi abbiamo messo in memoria. Il meccanismo dell'unità di controllo è sequenziale dal punto di vista spaziale, ma anche dal punto di vista temporale cioè vi è una temporizzazione. Si tratta di un meccanismo che temporizza tutte le azioni del computer. Passato un certo tempo ricomincia il ciclo tornando nuovamente a leggere nella memoria l'istruzione successiva (che non è necessariamente quella che segue, ma quella che l'istruzione precedente ha indicato). L'istruzione precedente "determina" la successiva. I processi non sono tutti sequenziali. Random: accedere dove si vuole. Tale ciclo è detto ciclo Fetch. Ciò che differenzia un'unità dall'altra è la velocità con cui svolge questo ciclo. Unità logico aritmetica (ALU) È l'unità che svolge operazioni aritmetiche (moltiplicazione, divisione, addizione, sottrazione) e operazioni logiche (il confronto: se due locazioni hanno lo stesso contenuto o no). Questa è un'unità che opera sui dati. La CPU deve prelevare i dati su cui devono essere effettuate queste operazioni e portarli nella ALU. La ALU svolge il suo lavoro e poi il risultato deve essere riportato dalla memoria. I dati che sono portati nell'ALU devono essere messi da qualche parte ciò vuol dire che la ALU deve avere anch'essa una sua memoria (registri). I dati (due dati) vengono caricati nei due registri si fa l'operazione che gli compete il risultato si trasferisce in un registro e quest'ultimo poi ritorna alla memoria. Oggi la CU è spesso integrata con la ALU. Insieme costituiscono la CPU. UNITÀ DI CONTROLLO + UNITÀ LOGICO ARITMETICA = CPU o processore (central processing unit) Il parametro di misurazione della CPU è la velocità ossia il tempo con cui viene eseguita un istruzione. 6
  • 7. Appunti d’esame Il computer www.profland.135.it Per sincronizzare le attività del sistema si utilizza un circuito elementare (clock) che emette degli impulsi a precisi intervalli di tempo. L'intervallo tra due impulsi consecutivi è chiamato tempo di ciclo di clock. Il ciclo di clock varia più o meno tra 10 e 1 nano secondo. In genere si determina quanti clock vengono fatti in un'unità di tempo (1 sec). Quindi preferiamo misurare la frequenza, cioè quante volte si ha un clock nel secondo. La frequenza va tra i 10 e i 1000 MHz. 1MHz = 106 H. La frequenza limite attuale è 2 GHz. Misure della velocità operativa La velocità operativa è un concetto intimamente legato alla frequenza. Se l'unità di controllo esegue il ciclo Fetch esattamente nell'ambito di un ciclo, ma il ciclo di Fetch potrebbe avvenire anche in più cicli. Una cosa è il ciclo temporale di sincronizzazione una cosa è il ciclo in cui viene eseguita una istruzione (Fetch). L'indicatore che non comporta nessun equivoco è quello che da la conoscenza a priori di quante istruzioni vengono fatte al secondo. Questo parametro è il MIPS milioni di istruzioni per secondo tipicamente coincide con li numero di cicli. Un altro parametro molto importante è quello che consente di misurare quante operazioni aritmetiche possono essere fatte in un secondo. Il MFLOPS (Milioni di operazioni FLOating Point al Secondo) rappresenta quante operazioni vengono fatte al secondo. Quando necessitano più cicli per eseguire un'istruzione i MIPS di questa macchina sono inferiori alla frequenza. Unità di input output Permettono al computer di interfacciare con il mondo esterno: Video, Tastiera, Stampante, Mouse, Plotter, Scanner. Classificazione dei Computer Ogni macchina si distingue per una differente tecnologia. personal computer workstation mainframe super computer Frequenza Hanno un tecnologia Sono oggetti molto Hanno incredibili 1000 - 2000 MHz differente dal PC Sono più grandi ed hanno velocità rispetto ad Capacità più robusti poiché non capacità estremamente altri tipi di computer. 64 - 256 Mbyte si spengono mai superiori. Hanno più di un processore in parallelo. Scopo: Scopo: Scopo: Scopo: piccoli archivi Ricerche Data processing Calcolo scientifico di scrittura CAD (banche dati) altissimo livello internet Calcolo giochi internet Velocità di operazioni al secondo PC e Workstation 5 - 50 milioni di operazioni al secondo (MFLOPS) un super computer è nell'ordine dei GFLOPS di miliardi di operazioni sono cioè 1000 volte più veloci. 7
  • 8. Appunti d’esame Il computer www.profland.135.it Costo Computer PC = 2 - 10 mil di lire WS = 10 - 10 mil di lire MF = 200mil - 2mld SC = 2 - 60 mld Le istruzioni si rappresentano in memoria tali istruzioni vengono scritte utilizzando solo due caratteri O e I. Essendo solo due caratteri nello scrivere avrò bisogno di più caratteri. Si farà corrispondere ad ogni carattere una frase scritta secondo il codice binario. Ad ogni carattere del mio alfabeto farò corrispondere una successione di caratteri dell'altro alfabeto. Esempio caratteri codice DCD codice DIC codice ascii 0 001010 11110000 01010000 1 000001 11110001 11001000 2 000010 11110010 11000100 se utilizzo solo due caratteri avrò solo 4 combinazioni, 00 01 10 11 se ne considero 3 le combinazioni saranno 8. All'aumentare delle combinazioni il tentativo di enumerarle diventa sempre più difficile enumerarle quindi dovrà essere elaborata una strategia. Utilizziamo dei modelli che sono basati su dei criteri, in questi modelli si avrà una deduzione logica che se falsa fallisce anche la strategia ma se è vera la strategia non può fallire. Questo è il pensiero matematico Nel nostro problema la prima combinazione è 2 la seconda è 2 2 la terza 23 forse la quarta secondo la logica sarà 24. Ragioniamo quindi in termini matematici Nel sistema posizionale decimale ogni numero assume un significato in relazione al posto che occupa e alla base di numerazione che nel nostro caso è il 10 Quindi 123 significa 1 x 102 + 2 x 101 + 3 x 10. Al simbolo 123 siamo dunque in grado di dare un significato. Le stringhe di codici di sui sopra sono esattamente la stessa cosa con la differenza che queste stringhe sono basate su due caratteri e sono quindi in base 2.Se è scritto 01 io leggo 0 x 21 + 1 x 20 = 1; 0 x 21 + 0 x 20 Quindi alla domanda quanti sono i caratteri minimi necessari rispondo andando a vedere quanti sono i numeri che io posso rappresentare con un certo numero prefissato di cifre. Es con 1 cifra decimale posso rappresentare 10 numeri, con 2 cifre posso rappresentare i numeri che vanno da 0 a 99 che sono 100, con tre cifre decimali posso rappresentare 1000 numeri cioè da 0 a 999. Quindi con tot cifre quanti numeri posso esprimere? potrò esprimere totn, con tot cifre binarie io esprimo 2tot e quindi ho trovato quanti bit dovrò avere minimo per esprimere i dati. Con una casella 2 bit, con due caselle 4, con tre 8, con quattro 16, 8
  • 9. Appunti d’esame Il computer www.profland.135.it con cinque 32, con sei caselle 64. Quindi 6 caselle è il numero minimo con cui io posso rappresentare i circa 64 caratteri della lingua italiana. Dal punto di vista dell'efficienza sarebbe più logico operare con gruppi di 6 ma dal punto di vista della tecnologia sarebbe, invece più opportuno operare con gruppi di 8 poiché sono potenze di due e sui computer tutto è basato sul 2 o sulle potenze di due. Oggi si usano codici a 8 bit in particolare il codice ascii è il più usato. Es per scrivere Dado ad ogni lettera corrisponderà una stringa di caratteri binari. Ci chiediamo se il modo di esprimere i dati sia soltanto questo. Esprimendo i numeri il metodo suddetto è efficiente? Es 123 lo rappresento 010100000 01010010 01010011 sono necessarie ben 24 cifre binarie. Con una stringhetta da 8 bit posso enumerare 256 oggetti diversi. Se invece ho dei numeri posso usare soltanto 8 bit per rappresentare i numeri che vanno da 1 a 256. Utilizzare questo meccanismo quando opero solo con i numeri questo meccanismo sarebbe solo uno spreco di spazio. Quindi mi converrà utilizzare un processo di conversione del numero decimale nella base 2. Una volta che ho effettuato questa conversione poiché so che con 8 bit si possono rappresentare i numeri da 1 a 256 si possono rappresentare io userò non 24 ma solo 8 bit. Le informazioni nel computer non vengono codificate allo stesso modo ma dipende dal tipo di informazione. I caratteri li rappresenterò convertendo carattere per carattere, i numeri sarà più conveniente convertirli in numeri binari. I tipi di dati - Caratteri (alfanumerici) - Numeri - Informazioni logiche (confronto fra due entità il cui risultato è V o F) Il dato logico si esprime semplicemente con un bit es 0 falso, 1 vero. I dati vengono rappresentati tramite locazioni ma le locazioni spesso non sono sufficienti e quindi dobbiamo utilizzare la parola. La locazione è minimamente 8 bit. La parola può essere formata da più locazioni quindi se la parola è a 32 bit sarà costituita da 4 locazioni. Caratteri Su stringhe di caratteri posso fare le seguenti operazioni: lettura, ordine quindi il computer è in grado di fare dei confronti, trasferimenti e concatenazioni. Numeri Possono essere interi o decimali. Il procedimento di rappresentazione esposto prima lo posso utilizzare solo sui numeri interi. Numeri interi Prendiamo un numero intero e lo trasformiamo in binario, es. 123 diventa un certo numero binario utilizzando un certo numero di bit che mettiamo in memoria. 9
  • 10. Appunti d’esame Il computer www.profland.135.it utilizzerò tante locazioni quante sono necessarie per scrivere tutti questi numeri. Si decide una volta per tutte quanti bit al massimo utilizzare per rappresentare i numeri, normalmente si utilizzano tutti i bit contenuti nella parola. I numeri interi considerati sono solo quelli che possono essere rappresentati nel computer cioè quelli che rimangono al di sotto dei bit prefissati per essere utilizzati. Quindi quando parliamo di tipi interi indichiamo la sottoclasse di numeri interi che noi effettivamente siamo in grado di rappresentare. Es 2 corrisponderà ad un certo numero binario. In presenza di un numero negativo dovrò sacrificare un bit per li segno meno. Se ho a disposizione 8 bit io convertirò i numeri interi che riempiono soltanto 7 bit perché l'ottavo è per il segno. Se ho a disposizione 7 bit il massimo numero rappresentabile è 127, cioè 27 = 128 ma uno è lo zero quindi 127 (01111111). Esiste quindi un massimo intero rappresentabile. Con questo tipo di rappresentazione avremmo due modi per poter rappresentare lo zero 0+,0- ciò potrebbe creare errori. Quindi il numero 10000000 viene interpretato come un ulteriore numero attribuito o ai positivi 128 o ai negativi -128. Sul tipo intero, cioè sull'insieme dei numeri interi rappresentabili, sono definite le seguenti operazioni: addizione, sottrazione, moltiplicazione, divisione. Nelle operazioni dei tipi interi possono sorgere dei problemi legati al fatto che i numeri non sono tutti rappresentabili e quindi il risultato potrebbe non esserlo: Es ipotizziamo una macchina che possa al massimo scrivere i numeri fino a 100 posso scrivere 60, posso scrivere 50 ma non posso fare la somma di 60 + 50 in tal caso si ha una situazione di non rappresentabilità del risultato. Situazione eccezionale │ x │ > max dato non rappresentabile │ x # y│ > max risultato non rappresentabile (# indica una qualsiasi operazione). Tale situazione è in generale detta di overflow. In questo caso la macchina darà errore. La somma di 1 in binario si realizza mediante uno spostamento degli uno fino ad arrivare al massimo numero rappresentabile 11111111 se ci sommo 1 = 2 , 0 e 1 di riporto .... fino a diventare un numero negativo si invade quindi il campo dei numeri negativi -128 dal punto di vista software potrei creare un programma che permetta di segnalare l'errore prima di effettuare il calcolo. Quindi questo rischio ci fa capire che dobbiamo usare molto poco i numeri interi. A cosa servono i numeri interi? Servono solo a contare. I numeri decimali vengono utilizzati per i calcoli, essi possono però avere anche la parte decimale nulla. I numeri usati per i calcoli sono solo apparentemente interi ma in realtà hanno i decimali nulli. Se su una calcolatrice faccio l'operazione 1/2 il risultato è 0.5 se invece faccio un operazione di divisione 1/2 (numeri interi) fa 0 col resto di 2. Esistono numeri interi e numeri reali, le operazioni dell'uno non sono le operazioni dell'altro. Dovrò quindi indicare al computer di trattare i numeri come decimali. I software in genere operano sui numeri reali. I numeri reali vengono trattati in modo completamente differente dai numeri interi. Di Tipo reale 10
  • 11. Appunti d’esame Il computer www.profland.135.it Cos'è un numero? Es. 2 è la rappresentazione in valore di un numero che ottengo contando uno due. I valori sono simboli concatenati tra di loro che esprimono un valore. I simboli identificano delle proprietà dei numeri 1/2 identifica un simbolo che moltiplicato per due darà 1, il suo valore nel mondo dei numeri interi non esiste perché non esiste nessun numero intero che moltiplicato per due da 1. 2 è un simbolo che rappresenta un numero il cui quadrato è esattamente uguale a 2 il, suo valore non è rappresentabile. In conclusione i tipo reale comprende i numeri interi in cui il simbolo corrisponde al valore del numero, i numeri razionali che sono espressi da simboli a volte sono rappresentabili ma altre no, i numeri irrazionali non sono mai rappresentabili. Il tipo reale non considera quindi tutti i numeri reali ma soltanto una parte cioè quella rappresentabile. Per rappresentare un numero considero una locazione Suddividendola in due parti separandole ideologicamente con un punto a sinistra scrivo la parte inter del numero a destra quella decimale 11110.00111 avrò un certo numero di bit da dedicare all'intero ed un certo numero di bit da dedicare al decimale. Questa idea di rappresentazione è un idea molto poco efficiente perché limita moltissimo la rappresentatività occorre quindi cambiare la strategia con cui noi siamo tipicamente abituati a rappresentare i numeri sorge un problema di spazio. Ci chiediamo se esiste un metodo matematico per rappresentare meglio questi numeri posso esprimere numero es. 30 milioni come prodotto tra un numero e una potenza. I tipi reali sono una sottoclasse dei numeri razionali. Abbiamo detto che il modo con cui noi rappresentiamo i numeri è un modo poco efficiente. Si ricorre ad una rappresentazione più efficiente scrivendo una parte principale del numero e indicando l'esponete del 10 che completa quel numero per allinearlo in posizione corretta. Es 1mld = 1 x 109 ; 1/1mld = 1 x 10-9. Questo tipo di rappresentazione è la rappresentazione floating point (pag 98). In generale qualunque numero può essere rappresentato in questo modo: X = f x e dove: f è la mantissa, è la base di numerazione 10 per l'uomo 2 per la macchina, e è l'esponente. In alcuni casi la mantissa è rappresentabile in altri no. La rappresentazione Floating Point non è unica. Ma è invece opportuno che il tipo di rappresentazione sia univoco in modo da evitare ambiguità. Si sceglie quindi un sola tra quelle possibili (scientifica, ingegneristica). L'ingegneristica prende il numero ne guarda le cifre e le trasforma tutte in intero, quella scientifica fa l'operazione esattamente opposta il numero lo interpreta come un numero decimale es 0.35 potrei scrivere anche 0.035 sarebbe ancora decimale e allora mettiamo un'ulteriore limitazione: la prima cifra deve essere obbligatoriamente diversa da zero in questo modo la rappresentazione diventa unica. Questa è la rappresentazione scientifica Floating Point. La mantissa sarà quindi un numero sicuramente più piccolo di 1 e poi la prima cifra deve essere necessariamente diversa da zero ciò significa che nel caso di base 10 la mantissa dovrà essere maggiore di 1/10 in generale 1/ f 1. Per rappresentare il numero io devo conoscere la mantissa e l'esponente. Il calcolatore deve rappresentare due numeri interi trasformandoli in base binaria. (pag 11
  • 12. Appunti d’esame Il computer www.profland.135.it 104). Sia la mantissa sia l'esponente possono avere un proprio segno un bit verrà usato per il segno della mantissa un bit per li segno dell'esponente. Quali problemi possono nascere da questo tipo di rappresentazione? non posso rappresentare il numero: -se la mantissa ha più cifre di quante io ne possa scrivere, (precisione del numero) -se l'esponete ha più cifre di quante ne posso rappresentare (ordine di grandezza) La parte di numeri che posso rappresentare è ovviamente finita. L'insieme infinito dei numeri viene rappresentato con un numero finito di oggetti quindi vi è una approssimazione. I numeri che noi usiamo li chiameremo numeri macchina e sono una sottoparte finita dei numeri. La precisione dipende dal numero di bit che io ho a disposizione. L'approssimazione Il problema della precisione può essere risolto attraverso l'approssimazione. Anche se qui rappresentiamo comunque un intero a tale intero noi attribuiamo un significato diverso Es se il numero intero è 1236 ed io posso rappresentare soltanto 3 cifre siamo in una situazione di overflow. Ora invece abbiamo un numero decimale che è solo rappresentato come intero quindi al posto di scrivere 0.1236 posso scrivere 0.123. Le approssimazioni sono due: Troncamento: Non scrivere le cifre che vanno da t in poi. Arrotondamento: scrivere le cifre fino a t lasciando l'ultima inalterata se quelle che taglio sono inferiori a 0.5 arrotondare alla superiore se invece è maggiore. Tra le due tecniche la più precisa è l'arrotondamento il cui errore varia da 0 a 5. La seconda limitazione consiste in un range limitato, vi è cioè un numero finito di cifre con cui posso rappresentare l'esponente E min < e < Emax. Non posso rappresentare numeri al di fuori di un certo intevallo Es =10 t=3 Emin = -9 Emax = 9 allora: rmax = 0.999 x 109 massimo numero rappresentabile rmin = 0.100 x 10-9 minimo numero rappresentabile Situazioni Eccezionali Cosa accade quando andiamo al di sopra o al di sotto del range possibile? Es devo rappresentare 10100 al massimo posso rappresentare 1099 Se e > Emax si dice che si è verificato un overflow. Se e < Emin si dice che si è verificato un underflow. (pag 120) con i reali il calcolatore si ferma. Nelle situazioni di underflow il calcolatore sostituisce il più piccolo numero di tutti lo zero altri calcolatori si fermano. I numeri che mettiamo nel computer sono sia numeri positivi che negativi e vanno tra un minimo valore rappresentabile e un massimo valore rappresentabile un esponente minimo e un esponente massimo sia dalla parte positiva che dalla parte negativa. Poi c'è una fascia compresa tra il minimo e lo zero di non rappresentabilità. Le situazioni di overflow non possono essere risolte le situazioni di underflow spesso vengono approssimate con lo zero. 12
  • 13. Appunti d’esame Il computer www.profland.135.it I parametri che caratterizzano il sistema aritmetico floating - point a precisione finita sono: (pag 112)  = base di numerazione t = precisione Emin = minimo esponente Emax = massimo esponente Tali parametri variano da macchina a macchina ma i parametri secondo il sistema aritmetico standard IEEE sono: =2 t = 23 Emin = -127 Emax =128 tutto questo è scritto in una voce 32 bit di cui 23 sono per la mantissa, 7 per l'esponente due per il segno. In termini decimali si possono rappresentare dalle 6 alle 7 cifre decimali (da 2-127 a 2128) in decimali da 10-38 a 1039 è dunque di fficile che si verifichi una situazione di overflow. Tipicamente l'overflow sarà causato da situazioni di errore (es la divisione per zero). La precisione t invece è molto limitata 23 cifre binarie sono circa 6 - 7 cifre decimali tale precisione è detta precisione singola. Quando ne abbiamo bisogno noi possiamo ottenere una maggiore precisione aumentando il numero delle cifre che abbiamo a disposizione i computer sono quindi abilitati a mettere il numero in due voci si raddoppia così il numero di bit a disposizione: Doppia Precisione: =2 t = 52 Emin = -1023 Emax =1024 i tempi di calcolo sono più elevati quindi userò la semplice o la doppia a seconda delle esigenze. Di Tipo Logico Vero e Falso. Un dato logico si rappresenterà con un bit (es 0 = vero; 1 = falso ). Sorge un problema di indirizzamento nella loro rappresentazione per cui un intera locazione deve essere sciupata pur avendo bisogno soltanto di un bit (es pag 136) Sul tipo logico si fanno le operazioni dell'algebra di Boule: • Negazione (not,) • Congiunzione (and,) • Disgiunzione (or,) Negazione Se ho un valore logico che è vero il suo opposto sarà falso. p: 12 > 2 (vero) not p: 12 < 2 (falso) Congiunzione 13
  • 14. Appunti d’esame Il computer www.profland.135.it entrano due input ed esce un solo output si tratta infatti di un'operazione e in matematica un'operazione comporta l'ingresso di due input e di un solo output. p: 2 < 3 (vero) q: 5 < 3 (falso) p and q: 2 < 3 e 5 < 3 (falso). La congiunzione lega i due input costituendo un'unica frase logica. Disgiunzione Anche in questo caso si hanno due input ed un output. p: 2 < 3 (vero) q: 5 < 3 (falso) p or q: 2 < 3 o 5 < 3 (vero) Tavole di verità negazione congiunzione e disgiunzione p not p p q p and q p or q V F V V V V F V V F F V F V F V F F F F Esercizio 1 Costuire una funzione logica con queste proprietà: a b v v F f v V v f V f f F La funzione corrispondente è (not a e b) or (a e not b) Esercizio 2 Data una funzione calcolarla a seconda dei valori di a, b, c. Si costruisca la tavola di verità della seguente funzione: (a e b) or c Devo quindi elencare tutte le possibilità e ad ogni possibilità scrivere la risposta. a b c v v v V v v f V v f v V v f f F f v v V f v f F 14
  • 15. Appunti d’esame Il computer www.profland.135.it f f v V f f f F La rappresentazione delle istruzioni Nel computer scriverò dei comandi che verranno interpretati dalla unità di controllo. L'istruzione è la sequenza di bit scritta in linguaggio binario 0 e 1 solo la cpu è capace di interpretare. Questo linguaggio direttamente comprensibile all'elaboratore è detto linguaggio macchina. Questo linguaggio cambia da calcolatore a calcolatore perché dipende dall'unità di controllo. Es calcolo 2 x 3 + 7 le operazioni sono due, un istruzione elementare per il prodotto e un'istruzione elementare per la somma. Il comando fai una moltiplicazione può tradursi in una serie di comandi intermedi che noi non vediamo neanche. Ogni comando viene svolto in un ciclo di Clock, ma il tempo dell'operazione non corrisponde esattamente ad un solo ciclo di Clock. Parlando di MIPS abbiamo visto quante operazioni "ciclo" si fanno al secondo. Come sarà organizzato un programma che fa fare questo calcolo? Innanzitutto dovranno essere inseriti i dati: 2, 3, e 7 in forma binaria. D Bin 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 Le cifre binarie sono allineate a destra nelle locazioni di memoria (pag. 153). Dopo i dati dobbiamo prevedere delle altre locazioni in cui andare a scrivere i risultati. L'operazione può comportare anche due o più risultati parziali che comunque dovranno essere messi in memoria. Il calcoli sono svolti dall'unità logico aritmetica che dotata di sue memorie proprie dette registri. Il processo di esecuzione del calcolo sarà il seguente: Il dato 2 viene preso e portato nel registro; il dato 3 viene preso e portato nel registro, nel registro viene eseguita materialmente l'operazione di prodotto il risultato viene scritto nel registro dei risultati infine questo risultato viene riportato in memoria nel posto in cui avevamo previsto doveva andarsi a scaricare il risultato. La seconda fase del processo è simile alla precedente si somma il parziale a 7. Prendo 7 lo porto nel registro, prendo il risultato parziale e lo porto nel registro faccio le somme il risultato viene messo nel registro dell'operatore di somma, il risultato viene scaricato in memoria (pag. 155). Le istruzioni saranno costituite da stringhe di bit alcuni dei quali 15
  • 16. Appunti d’esame Il computer www.profland.135.it saranno interpretati come codice dell'operazione da fare, altri come gli indirizzi delle locazioni in cui ci sono i dati su cui effettuare l'operazione e di quelle in cui andare a mettere il risultato. Fondamentalmente una stringa di bit è divisa in 4 settori un primo settore contiene un certo numero di bit che sono interpretati come comando, e poi avremo gli indirizzi degli operandi tipicamente due di input ed uno di output. Questa stringa sarà scritta nella memoria. Se il calcolatore opera su 16 bit la stringa sarà di 16 bit 4,4,4,4. Se opera su 32 bit la stringa sarà composta da 8,8,8 e 8. (pag. 157). Le limitazioni: Con 4 bit posso il numero massimo rappresentabile è 15 perché va da 0 a 15 cioè la potenza 24 e quindi con 4 bit posso definire 16 diverse operazioni. Avendo a disposizione 16 bit e devo dare 3 indirizzi posso dare 4 bit a indirizzo significa che io posso localizzare solo 16 locazioni di memoria. Quindi questo tipo di istruzione ha un enorme limitazione dal punto di vista dell'indirizzamento. Una soluzione potrebbe essere quella di aumentare i bit dedicati all'istruzione aumenta la numerosità delle operazioni elementari e aumenta la capacità di indirizzamento. Un'altra soluzione è quella di ridurre il numero di indirizzi da dare. Es un istruzione che invece di avere 3 indirizzi 2 operandi e un risultato, potrei dire di scrivere il risultato sempre in una parte prefissata in questo caso non ho bisogno di dargli l'indirizzo. Il risultato lo scriviamo in uno dei due posti che contengono i dati ad esempio lo scriviamo nel posto in cui c'é il primo dato: 2 x 3 ognuno avrà un suo indirizzo, viene fatto il prodotto che poi viene scritto nell'indirizzo di 2 cioè 1000. L'operazione 6 + 7 coinvolgerà l'indirizzo 1000 che contiene il risultato dell'operazione precedente, e il 7. Il risultato totale comparirà nella locazione del primo operando all'indirizzo 1000. Lo svantaggio di quest'ultimo metodo è che i dati strada facendo si perdono. Se avessi bisogno dei dati in seguito dovrò effettuare dei salvataggi. Oggi potendo avere istruzioni a 32 o 64 bit non sorgono problemi di indirizzamento. L'istruzione sarà sempre costituita da un codice e gli indirizzi degli operandi. Dei due dati uno è libero e io dico l'indirizzo l'altro dato deve risiedere in una locazione predefinita. Per fare una somma o un prodotto ora dovrò fare due operazioni una di salvataggio del dato e poi l'operazione effettiva di calcolo. Allora nell'esecuzione di un programma indicheremo prima di tutto di copiare la locazione che contiene ad es. il dato 2 in un altra locazione chiamata registro poi facciamo la moltiplicazione del contenuto della locazione 1001 che è 3 quest'ultimo sarà moltiplicato con quello che sta nel registro quindi con 2. Il risultato di questo prodotto finirà nel registro che quindi non conterrà più 2 ma 6. L'utima operazione consiste nel sommare il contenuto del registro con 7. Vi sarà un'istruzione in cui si preleva il dato dal registro e si scrive nella memoria il risultato della locazione. (pag. 161). I limiti della programmazione in linguaggio macchina • scarsa interpretabilità poiché devo associare codici numerici a determinate operazioni 16
  • 17. Appunti d’esame Il computer www.profland.135.it • le istruzioni utilizzano indirizzi, le formule sono invece espresse con dei simboli non con degli indirizzi numerici • numero di operazioni elementari molto elevato (scarsa potenza del linguaggio) • riferimento a tipi di dati differenti (es interi o Floating Point) Dati questi limiti si attuano dei correttivi tra cui il più immediato è quello di sostituire i caratteri binari con dei caratteri a noi più familiari (es posso chiamare un casella a senza necessità di ricordare il suo indirizzo. L'istruzione sarà del tipo MPY moltiplica il contenuto di una locazione ideale che io chiamo A ed il contenuto di una locazione ideale che io chiamo B. (es. pag.165). Ancora potrò dare l'istruzione di moltiplicare A e B e di mettere il risultato in A, quindi dico somma A e C. (istruzione a 2 indirizzi) Potrò inoltre dare un istruzione ad 1 indirizzo del tipo: carica nel registro il dato A moltiplicalo con B, sommagli C e quindi salvalo in S. Si ha in questo caso un modo più semplice di scrivere un'istruzione: un nome mnemonico al posto del codice operativo, un nome simbolico al posto dell'indirizzo dell'operando. Quando facciamo questo abbiamo costruito un linguaggio che chiameremo: Linguaggio assembler Tale linguaggio ovviamente non è compreso dalla macchina occorrerà quindi un programma che traduca l'assembler in linguaggio binario e poi sarà necessario gestire gli indirizzi. Io invento le lettere A, B, C, e lui assegnerà a queste lettere degli indirizzi. Dobbiamo disporre quindi di una programma che sia capace di prendere in input il linguaggio assembler e di tradurlo in binario. L'elaboratore sarà sempre affiancato da un programma di base che mi permette di utilizzarlo in maniera più efficiente. Elaboratore e programmi assemblatori costituiscono quella che chiamiamo la macchina virtuale. (pag .168). MACCHINA FISICA calcolatore che mette a disposizione solo le potenzialità del suo hardware e del suo linguaggio macchina MACCHINA VIRTUALE macchina fisica + insieme di programmi (software) che sfruttano le potenzialità della macchina fisica. Il programma Assembler è formato da tante righe quante sono le istruzioni in linguaggio macchina. Quindi noi chiediamo di poter esprimere un messaggio umano che comunichi un contenuto che si traduce più ampio. Posso dunque intervenire sulla capacità di comprensione chiedendo se è possibile di avere delle istruzioni umane più potenti. 17
  • 18. Appunti d’esame Il computer www.profland.135.it Ho sostituito i caratteri binari in caratteri alfanumerici a me facilmente comprensibili, ma ho bisogno inoltre di avere delle istruzioni umane più potenti in cui con un solo comando io gli faccio fare più cose. Il secondo passo evolutivo è quello di costruire: Linguaggio di programmazione ad alto livello • più potente del linguaggio macchina (dietro un istruzione vi sarà un numero elevato di istruzioni in linguaggio macchina). • più vicino al linguaggio naturale • formalmente definito Esistono numerosi linguaggi ad alto livello ognuno dei quali è specializzato in varie cose. Inizialmente c'erano quelli di tipo calcolo scientifico e quelli di tipo gestione dei dati commerciale poi le periferiche di input output del Computer si sono fortemente arricchite, le capacità di interazione sono aumentate e i linguaggi si sono via via evoluti e specializzati. L'errore che talvolta viene commesso è quello di cercare di usare un linguaggio non appropriato per risolvere un problema che una altro linguaggio farebbe meglio. I linguaggi più diffusi sono: Fortran, C, C++, Pascal, Basic, Orcle, Progress, Matlab, Java. Il passaggio tra un linguaggio ad alto livello e il linguaggio macchina è reso possibile mediante l'uso di Programmi Traduttori. Il programma traduttore è molto più complesso di un programma assemblatore. Esistono due tipi di traduttori: Interpreti e compilatori. L'interprete • Prende in input contemporaneamente un'istruzione di un programma a.l. ed i dati ad essa relativi. Capisce le istruzioni le traduce in linguaggio macchina acquisisce i dati e le risolve. • Fornisce in output direttamente il risultato dell'esecuzione dell'istruzione Il concetto compilativo presenta invece due fasi FASE 1 Il Compilatore • prende in input un programma in linguaggio a.l. • Fornisce in output un programma in linguaggio macchina. FASE 2 Il programma in linguaggio macchina, a cui sono forniti in input i dati, viene esguito e fornisce in output i risultati. VANTAGGI E SVANTAGGI Compilatore 18
  • 19. Appunti d’esame Il computer www.profland.135.it le fasi di compilazione ed esecuzione sono logicamente e temporalmente distinte. Il compilatore è più efficiente perché richiede un tempo minore per la risoluzione del problema. Utilizzerò il compilatore quando ho un prodotto consolidato, la strategia è sicura faccio la traduzione e poi naturalmente userò soltanto il prodotto Traduce globalmente assemblando macro istruzioni e poi lo rilegge nella sua globalità e lo ottimizza cosa che l'interprete non può fare. (il Fortran è il compilatore scientifico più utilizzato). L’interprete Se io sto facendo un programma e questo programma contiene un errore io lo devo rifare ritradurlo e poi rilanciarlo cosa che per l'interprete avviene automaticamente. Il programma in linguaggio a.l. è costantemente sotto il controllo dell'interprete (più flessibile). Viene solitamente utilizzato l'interprete nelle fasi in cui devo fare parecchi interventi quindi tipicamente nelle fasi progettuali. Sono interpretativi la maggior parte dei linguaggi di sperimentazione. L'interprete traduce frase per frase. Tutti i linguaggi di programmazione devono avere delle definizioni rigorose e precise, devono essere scritti esclusivamente utilizzando alcune parole, alcuni simboli. I sistemi operativi Sono programmi per il funzionamento minimale di una macchina. Inzialmente i PC utilizzavano le valvole, successivamente si passò ai transistor enormemente più piccoli mantenendo le stesse capacità o anche aumentandole e poi si è passati al circuito integrato che contiene un certo numero di transitor. Lo schema dei calcolatori attuali rispecchia quello della macchina di Von Neumann (pag. 418). Le capacità di memoria di un computer sono vincolate dalla presenza di un campo elettrico che se è assente il computer non contiene niente, senza dati in memoria il computer non può funzionare. Vediamo di ripercorrere i passi logici per poter risolvere un probelma, esso deve essere analizzato, si costruisce un linguaggio e si prepara il problema utilizzando questo linguaggio. Anni 40 I passi erano: 1. preparare il programma in linguaggio macchina 2. memorizzare istruzioni e dati 3. fare eseguire il programma 4. estrarre il risultato dalla memoria 19
  • 20. Appunti d’esame Il computer www.profland.135.it Il programma veniva scritto su un supporto esterno al computer che poi il computer potesse leggere. Uno dei primi strumenti che hanno permesso di immettere dati ne computer sono le schede perforate. I buchi che venivano fatti in verticale corrispondevano alla presenza di zeri e uno. Ogni stringhetta rappresentava un carattere. Si aveva la necessità di memorizzare questi dati cosa che può avvenire solo dando istruzioni al computer. Devo dare istruzione al computer di caricare le schede e necessario disporre di un programma che sia già in memoria che insegni al computer come caricare le schede (loader). Il risultato veniva scritto su altre schede. Come si fa a caricare il loader? Un computer per essere acceso necessita di un processo di inizializzazione. In passato il loader veniva caricato a mano scrivendo a mano una serie di zeri e uno utilizzando una serie di interruttori all'esterno del PC. Lo schema era costituito dal nostro programma, dai dati del nostro programma, il loader. Vi era un comando di start up che faceva leggere il loader che poi permetteva la lettura degli altri programmi. Già all'epoca si era sviluppata l'idea di programmi di utlità generale che servissero a tutte le persone: il software di base di un computer il loader e in un certo senso il precursore dell'attuale sistema operativo. Fine anni 50 Furono poi introdotti i linguaggi ad alto livello e si avvertì la necessità di programmi traduttori che si trovano su schede. Quando lancio il programma scritto su schede dell'utente ad alto livello precedentemente dovrò caricare nella macchina un programma su schede che traduce il primo. (pag. 429) I risultati erano costituiti dal programma tradotto in linguaggio macchina che veniva scaricato su schede. Questo programma in linguaggio macchina veniva rimesso in memoria con i dati che servivano. La logica che veniva usata era di tipo compilativo davo un pacchetto in linguaggio ad alto livello ricevevo in cambio un pacchetto in linguaggio macchina. In caso di errore si doveva correggere la scheda in linguaggio ad alto livello che noi ritenevamo sbagliata rilanciare li processo ed ottenere un altro pacchetto in linguaggio macchina. Il sistema operativo è dunque costituito da un caricatore e da un programma traduttore (pag 430) essi rappresentano l'hardware. Inzialmente vi erano solo le schede perforate come unità di input/output poi fu introdotta la stampante solo successivamente il monitor e la tastiera. Ora sorge un problema la macchina ha una sua velocità interna di natura elettronica, quando interagisce con l'esterno opera con stampanti e tastiere che sono unità di tipo elettro-meccaniche che sono molto più lente delle precedenti. Il probelma è la differenza di velocità operativa tra due oggetti, vi sono operazioni che sono incredibilmente più lente rispetto alle altre, quando vengono eseguite il computer perde tempo. Noi vogliamo che la macchina lavori al massimo delle sue prestazioni cioè vogliamo che il processore svolga sempre qualche cosa. 20
  • 21. Appunti d’esame Il computer www.profland.135.it Mentre viene eseguita l'istruzione di stampa la CPU resta inattiva (pag. 431). Tale processo non è efficiente. Se io lancio solo il comando di stampa alla quale ci pensa poi la stampante e la CPU nel frattempo può riprendere le sue funzioni il processo diventa più efficiente. L'idea è stata quindi quella di introdurre qualcosa che potesse gestire le unità di input/output senza l'intervento diretto dell'unità di controllo. Questo dipositivo aggiuntivo per controllare esclusivamente le operazioni di I/O prende il nome di CANALE di I/O. Il canale può essere visto come un calcolatore indipendente dalla CPU che provvede a gestire il programma utente. Esso si occuperà dell'eventuale conversione di codici, del controllo sulla quantità dei dati da memorizzare, dell'indirizzamento delle varie unità di I/O. Il canale gestisce di solito più unità di I/O due sono i tipi di gestione: • mediante bus (un'ulteriore interfaccia tra il canale e le unità di I/O (pag. 436) • mediante gestione a stella, il canale parla direttamente con l'unità. I PC operano in genere con la logica del bus. La gestione a stella è più efficiente rispetto a quella bus perchè il canale parla direttamente con le singole unità di I/O. Se la comunicazione è diretta significa che io avrò un certo numero di uscite specializzate che non posso aumentare, la soluzione è quindi molto rigida. Invece nell'altro tipo di gestione l'unità si attacca per il tramite di un bus che è un'interfaccia con una tecnologia molto più bassa che mi consente di avere un numero molto elevato di unità di collegamento. Quindi la tecnologia a stella è più efficiente perché il canale parla direttamente con le unità di I/O ma è più limitativa, la tecnologia di bus è meno efficiente ma molto più flessibile. In una macchina in cui vi possono potenzialmente essere più unità di I/O la filosofia più razionale è quella del bus, in una macchina specializzata che ha un unico output userò la tecnologia a stella. Il sistema operativo risulta quindi costituito da: • programma caricatore • programma traduttore • programma per la gestione dell'I/O • programma per la sincronizzazione tra CPU e canale ANNI '60 L'idea del canale è stata una buona idea ma non risolve il problema di esecuzione contemporanea di più programmi. Se la CPU resta momentaneamente inattiva poichè sul prog. 1 sta intervenendo un'altra unità, essa potrà intanto operare su un altro programma, si ha così un uso efficiente della CPU. Nasce dunque la multiprogrammazione (pag. 438) cioè la capacità del sistema operativo di far condividere a più programmi l'uso della CPU. quando un programma effettua una operazione di I/O, l'uso della CPU passa ad un altro programma, i programmi in coda 21
  • 22. Appunti d’esame Il computer www.profland.135.it attendono lunghi periodi di tempo nell'attesa dell'istuzione di I/O del programma che sta utilizzando la CPU. Time Sharing Il processo mediante il quale passiamo da un programma a un'altro richiede una strategia dunque ci dovrà essere nel calcolatore un programma che gestisce questa filosofia con un certo criterio. Nasce la filosofia di gestire il tempo con cui i programmi stanno in memoria ad ogni programma viene assegnato un tempo massimo di utlizzo della CPU (time slice) la filosofia attuale è quella del Time Sharing. Ogni programma può utilizzare la CPU finché non si verifica una delle seguenti condizioni: 1. il programma finisce 2. il programma va in errore (divisione per zero, overflow...) 3. è richiesta una operazione di I/O 4. è terminato il tempo assegnato Casi 1 e 2: il programma è eliminato dalla memoria Casi 3 e 4: il programma è sospeso (viene mantenuto nella memoria) Il mantenimento di un programma in memoria potrebbe essere costoso se questo è di elevate dimensioni conviene quindi scaricarlo da qualche altra parte in attesa che venga ripreso. Lo Scheduler Per decidere quale programma passare in memoria quando diversi programmi sono in attesa, bisogna stabilire un ordine di accesso alla CPU. Si dovrà dunque disporre di un programma che stabilisca quest'ordine, cioè lo scheduler. Lo Scheduler per decidere la priorità si basa su diversi fattori: • memoria richesta dai programmi • tempo di CPU richiesto dai programmi • tipo del programma (di utente o di sistema) • tipo di utente (qualunque o gestore del sistema) • uso recente della CPU Lo scheduler assegna ad ogni programma un numero che determina il criterio di precedenza nell'utilizzo della CPU. Hanno priorità più alta i programmi che richiedono poca memoria e poco tempo di CPU. I programmi di sistema hanno priorità più alta rispetto a quelli di utente. Un SISTEMA OPERATIVO è l'insieme dei programmi che consentono il controllo e la gestione di tutte le risorse del calcolatore Hardware + sistema operativo (software) = macchina virtuale. 22
  • 23. Appunti d’esame Il computer www.profland.135.it Evoluzione della memoria (pag. 454) Buona parte della memoria centrale è occupata da un certo numero di programmi del sistema operativo. L'evoluzione dei sitemi operativi comporta l'uso di memorie che sono sempre più ampie. La memoria del computer ha uno spazio fortemente limitato rispetto a quelle che sono le nostre necessità. La memoria centrale è quella che contiene effettivamente il programma, solo se è contenuto in essa quest'ultimo può essere eseguito. Esistono altre memorie aggintive abilitate a contenere dati storici. I programmi che non posso essere memorizzati in memoria centrale vengono memorizzati nella memoria di massa o ausiliaria. Le memorie di massa hanno un minor costo rispetto alla centrale, maggiore capacità ma più lento tempo di accesso, e sono stabili. Sono costituite da dischi e nastri magnetici. La CPU non può manipolare informazioni direttamente dalla memoria di amssa. Queste devono essere prima trasferite in memoria centrale; si ha quindi la necessità programma che consenta il trasferimento dei dati dalla memoria di massa alla memoria centrale. Poché l'hard disk ha delle capacità molto elevate potrebbe anche contenere programmi che non entrano in memoria centrale in tal caso quel programma non può essere eseguito. Non ho bisogno di caricare tutto il programma affinché esso possa essere eseguito ma lo posso suddividere in blocchi (pagine) per tenere in memoria solo l'istruzione in esecuzione. (pag. 458) I programmi entrano ed escono continuamente dalla memoria, si ha dunque la necessità di programmi per la gestione automatica dello scambio di informazioni tra memoria centrale e memoria ausiliaria (memoria virtuale) Il termine memoria virtuale sta ad indicare che i computer possono andare oltre le loro capacità intrinseche di memoria. Vi deve essere un legame tra la memoria virtuale e quella reale. Se la memoria reale è piccola questo meccanismo di passaggio (paging) deve essere molto frequente ciò rallenta le funzioni del sistema. Le prestazioni di una macchina dipendono da quanta memoria centrale poiché in relazione alle sue dimensioni il paging sarà più o meno frequente. Anche il disco è in grado di influenzare il paging, se il disco è lento lo sarà anche il paging. Il software del computer risiede in una struttura esterna che abbiamo genericamente chiamato memoria di massa. Ogni sistema operativo organizza il proprio archivio in un certo modo creando il file sistem. Col termine file noi indichiamo un insieme di informazioni del computer. Ciò che distingue i file è l'end of file cioè un segnale di fine. Ad ogni file noi daremo un nome che ci permetterà di identificarlo. Ma non basta assegnare dei nomi soltanto occorre fissare delle regole di organizzazione. L'organizzazione è articolata in gruppi, se il gruppo è molto numeroso potrei suddividerlo in sottogruppi, si ha dunque una struttura gerarchica o ad albero. I nomi devono essere assegnati anche ai sottogruppi. I sottogruppi vengono chiamati cartelle. 23
  • 24. Appunti d’esame Il computer www.profland.135.it Una cartella può contenere oggetti o eventualmente altre cartelle. Nel file sistem la nomenclatura segue la logica posizionale, il nome vale per dove sta. Si associa al nome l'intera percorrenza dalla radice sino al file. Ad esempio se ho due file chiamati entrambe B, ma il secondo è contenuto nella 1, quest'ultimo è denominato 1B. I file oltre ad avere un nome, avranno anche un titolo ciò permette di codificarli. Il titolo si può attribuire in due modi: • I nomi per i file non sono liberi (i file Fortran saranno preceduti da una F, gli assembler da una A) tale metodo è complicato e poco flessibile. • I nomi sono liberi, ma ad essi verrà affiancato un titolo (estensione). I programmi possono essere a seconda del tipo essere suddivisi in due parti: • una parte residente in memoria centrale contenete i programmi che devono essere utilizzati da tutti i programmi in esecuzione. • una parte residente in memoria di massa che contiene i programmi che non devono essere mandati immediatamente in esecuzione dopo l'accensione. Questa parte principale prende il nome di Kernel. Il kernel del sistema operativo è l'insieme dei programmi che risiedono permanentemente in memoria centrale (cioé vengono caricati al momento dell'accenzione oltre ai gestori della memoria e della CPU) appartengono generalemete al Kernel i programmi per la gestione di: • I/O • situazioni speciali (accensione, spegnimento, accesso via rete, malfunzionamenti) • scambio di informazioni tra memoria centrale e memorie ausiliarie. La memoria centrale deve contenere almeno il programma che consenta di far partire la macchina. Negli anni quaranta questo programma veniva caricato a mano. Attualmente tali comandi vengono scritti in una terza memoria classificabile come memoria centrale poiché deve essere di tipo operativo, la quale deve avere la caratteristica teconolgica di non cancellarsi. Si tratta di istruzioni che permettono di innescare il processo di caricamento del Kernel. La memoria centrale è dunque divisa in due parti di cui una necessariamente non volatile nella quale vengono scritte le informazioni di partenza. ROM = read only memory memoria di sola lettura che contiene informazioni inserite al momento della costruzione ed il cui contenuto non si perde se si spegne il computer (memoria non volatile) 24
  • 25. Appunti d’esame Il computer www.profland.135.it RAM = random access memory significa memoria di accesso diretto nel senso che ogni locazione di memoria può essere raggiunta indipendente mente dagl'altri. Quindi la memoria dal punto di vista logico non è di tipo sequenziale. inoltre fanno parte della memoria centrale particolari memorie di capacità ridotta ma ad accesso molto rapido: i registri che fanno parte dell'unità logico aritmentica che oggi è parte della CPU. La CPU ha una sua memoria che conterrà i dati che sono in esecuzione. Inoltre poiché le strutture operative hanno velocità diverse è inevitabile che si venga a creare una sturuttura intermedia che attenui le differenze di velocità si hanno così le memorie cache che si collocano tra la Ram e la CPU e sono caratterizzate da una maggiore velocità. 25