Precorso diInformatica 2008/2009
A.A. 2008/2009
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Programma del corso
6 ore di lezioni teoriche
Lunedì 22 e giovedì 25 settembre Algoritmi e Programmazione Architettura degli elaboratori Sistemi Operativi Networking
6 ore di pratica in laboratorio
Martedì 23 e venerdì 26 settembre Linux, Desktop Environments, Bash e Manuali Account personale, posta elettronica e browser Stampare e compilare i propri programmi Compressione, scripting, SSH e SFTP
dsi.unive.it/~zabeo
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il corso di laurea in Informatica
In questo corso di laurea non si insegna ad utilizzare il computer o a programmare
(anche se sono inevitabili effetti collaterali)
«Computer science is no more about computers than astronomy is about telescopes.»
Edgser Dijkstra, Turing award in 1972
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Una corretta alimentazione
Programmazione,Ing. del Software,
Architettura,Sistemi Operativi,
Basi di Dati....
Logica, Algebra,Teoria dei grafi,
Matematica discreta,Calcolo numerico,Computabilità....
Algoritmi,Complessità,Correttezza,
Terminazione,Strutture dati....
BasiMatematiche
Linguaggi eProgrammazione
Algoritmie strutture dati
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il mestiere dell'informatico
Il laureato in materie informatiche è flessibile:
Non tutti i compiti hanno lo stesso grado di desiderabilità... (...e di difficoltà)
Programmatore Sistemista Progettista
Docente Call center operator Altro....
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Un po' di storia
• L'ingresso del calcolatore nel mondo del lavoro risale all'inizio del 1900; la tecnologia delle macchine di calcolo prodotte all'inizio del secolo era meccanografica
• Con queste macchine si eseguivano calcoli ad una discreta velocità (per quei tempi), dell'ordine di 60 operazioni al minuto; la loro gestione era tuttavia molto complessa
• I “programmi” venivano “scritti” su schede perforate che venivano interpretate meccanicamente dall’elaboratore.
Una scheda perforata
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Alan Turing
• Nel 1936 il logico inglese Alan Turing definisce il modello del calcolatore moderno, la cosiddetta 'macchina di Turing'
• Essa è in grado di eseguire operazioni elementari secondo uno schema di calcolo ricorsivo, che consenta di risolvere ogni tipo di problema di logica simbolica in un numero finito di passi
• Non ne verranno costruiti esemplari reali, ma la sua idea costituirà la base dell'architettura dei futuri computer.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 La guerra ed ENIAC
Con lo scoppio della Seconda Guerra Mondiale, il progresso nell'area dei computer subirà degli sconvolgimenti: le esigenze strategiche e militari daranno impulso a nuovi tipi di ricerche e di macchine, tra cui l’ENIAC (Electronic Numerical Integrator and Calculator), che impiegò per la prima volta valvole elettroniche, e venne utilizzato per calcolare traiettorie balistiche.
ENIAC
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Enigma
• Enigma è una macchina crittografica utilizzata durante la guerra dalle armate tedesche per cifrare le comunicazioni
• La macchina era stata inventata da un ingegnere polacco e non è chiaro come sia potuta finire nelle mani dei tedeschi
• A causa di questo elaboratore, gli inglesi ebbero grossi problemi a decifrare i messaggi intercettati.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Gli anni '50
• Il 1955 vede la nascita di IBM 702: la prima macchina commerciale completamente costruita con transistor e messa sul mercato da IBM.
• Dal 1956 fu introdotto il FORTRAN, primo linguaggio di programmazione ad alto livello,a cui seguirono LISP, COBOL, ALGOL e BASIC (Beginner's All-purpose Symbolic Instruction Code).
IBM 702
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Gli anni '60
• Nel 1962 nasce al MIT il primo video game, sviluppato da Steve Russell; tuttavia non era molto economico, visto che una partita di un'ora costava circa 300$.
• Nel 1964 La Epson inventa la stampante a matrice di punti (dot matrix printer).
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il 1969
• I laboratori Bell sviluppano il sistema operativo
UNIX.• Viene disegnata una semplice combinazione di un
processore e di una unità di calcolo (la prima CPU), che sarà poi effettivamente realizzata dalla Intel. Il processore Intel 4004 a 4 bit diede
inizio alla rivoluzione elettronica;in un unico chip era contenuta tutta lapotenza di calcolo dell’ENIAC.
• Su commissione del Dipartimento della Difesa USA, ARPANET studia la prima rete (ha solo 4 nodi), che diverrà la più grande rete mondiale: Internet.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il Computer entra in casa
• Fino al 1977 gli elaboratori erano utilizzati soltanto da aziende e organismi governativi, ed avevo prezzi esorbitanti
• In quell’anno viene annunciato l'APPLE II, il primo personal computer, con programmi di videoscrittura, fogli di calcolo, giochi e tanto altro.
• Nel 1984 viene annunciato dalla Apple il personal computer Macintosh; si tratta una macchina interamente grafica, dal prezzo abbordabile.
PC APPLE IIApple
Macintosh
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Microsoft windows
• Otto anni dopo la Microsoft sviluppa Windows 1.0, introducendo aspetti tipici del Macintosh nei computer DOS.
• Si verificheranno continue dispute legali tra Microsoft ed Apple a causa dell’eccessiva somiglianza di Windows e Macintosh.
Nel 1977 Bill Gates e Paul Allen fondano la
Microsoft
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 File System
• Negli ultimi dieci anni la potenza di calcolo dei PC ha avuto una crescita continua; tuttavia la loro complessità è irrisoria rispetto a quella dei supercomputer:
– elaboratori dedicati ad utilizzi in cui vi sia la necessità di sostenere elevati volumi di elaborazione, come in enti di difesa, centri di ricerca, istituti di meteorologia, aziende aerospaziali ecc.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 I concetti chiave dell'Informatica
In effetti l'informatica è una scienza piuttosto semplice, in quanto si occupa unicamente di due cose:
Informazione (cosa)
Algoritmi (come)
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il concetto di informazione
Informazione è qualsiasi cosa che possa essere:
✔ Comunicata
✔ Capita
✔ Interpretata ed assimilata
A questa idea corrispondono tre livelli di definizione dell'informazione:
✔ Livello sintattico
✔ Livello semantico
✔ Livello cognitivo
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello sintattico
L'informazione per essere comunicata ha bisogno di:
✔ Un linguaggio con cui esprimerla
✔ il linguaggio naturaleil linguaggio dei segniil linguaggio matematico
✔ Un messaggio (espresso in tale linguaggio) che la codifichi
✔ una frase in italianouna sequenza di 13 simboli scelti in {1,2,X}
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello sintattico
Esempio: il numero dieci
✔ In italiano: dieci
✔ In inglese: ten
✔ In notazione decimale: 10
✔ In notazione binaria: 1010
✔ In notazione esadecimale: A
✔ In numeri romani: X
✔
Tutti questi messaggi esprimono il numero dieci, ciascuno in un linguaggio diverso, ma nessuno è il numero dieci
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello semantico
Definisce il significato di ciò che è rappresentato in un messaggio:
✔ Nell'esempio precedente il numero “dieci” (dal punto di vista concettuale)
✔
Il livello semantico riguarda “concetti” e quindi prevede un agente in grado di “capire” il significato veicolato dal messaggio
Tale comprensione necessità una definizione rigorosa del livello sintattico comune a chi invia e a chi riceve il messaggio:
✔ L'interpretazione del messaggio “X” cambia a seconda che mi stia esprimendo secondo la sintassi italiana, del totocalcio o dei numeri romani
✔
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello semantico
In prima approssimazione i computer sono macchine completamente stupide
Non sono in grado di “capire” nessun concetto, ma solo di manipolare simboli (di un determinato linguaggio):
✔ Spostare simboli
✔ Confrontare simboli
✔ Combinare simboli
✔
In questo senso il computer opera sempre a livello sintattico
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello semantico
I “programmi” (che sono scritti da umani per svolgere compiti specifici) fanno sì che il computer manipoli l’informazione a livello sintattico in modo coerente con il livello semantico che a questa informazione è associato (dagli umani, che lo capiscono)
Il complesso computer/programma diventa un po’ meno stupido: se il programma è scritto correttamente, è in grado di veicolare messaggi che sono coerenti con la semantica ad essi attribuita (sempre dagli umani)
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello semantico
Esempio:
Se uso un motore di ricerca su Internet e digito “Università di Genova”, il programma che gestisce il motore non ha idea di cosa sia l’università e del fatto che Genova sia una città, ma mi restituirà comunque i documenti che trova che contengono la frase “Università di Genova”, che sono esattamente quel che voglio ottenere.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello cognitivo
Il livello cognitivo invece:
✔ Riguarda la conoscenza veicolata dal messaggio e segue il livello semantico
✔ Prevede l'integrazione dell'informazione data dal messaggio nel contesto della conoscenza propria di chi lo riceve
✔ Implica l'idea di imparare (o dedurre) qualcosa di nuovo dai messaggi ricevuti
✔
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Livello cognitivo
Il livello cognitivo è proprio degli esseri intelligenti
Il trattamento automatico dell’informazione a questo livello viene studiato in alcune aree interdisciplinari che coinvolgono l’informatica:
✔ Intelligenza artificiale
✔ Information retrieval
✔ Machine learning
✔
Con i prodotti di queste discipline i computer possono effettuare un trattamento dell’informazione a livello cognitivo (possono “imparare”) anche se restano ancora lontani dall’essere “intelligenti”
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il concetto di informazione
Riassumendo:
✔ Il computer è una macchina che sa manipolare sintatticamente simboli in un linguaggio proprio e lo sa fare in modo molto efficiente
✔ Ci occuperemo di rappresentazione e manipolazione dell’informazione a livello sintattico (quel che fanno i computer)
✔ Vedremo i programmi (algoritmi) come strumenti per istruire il computer a manipolare l’informazione sintatticamente in modo consistente con il livello semantico
✔ Rendere i computer in grado di “capire” e “imparare” è molto complicato e la scienza sta solo muovendo i primi passi in questa direzione
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Definizione di algoritmo
“Sequenza non ambigua di istruzioni elementari che permettono la soluzione di un problema in un numero finito di passi”
Sequenza = esiste un ordine ben definito
Non ambigua = esiste un'interpretazione certa
Passi finiti = è definita una terminazione
Ciascun algoritmo risolve un problema specifico e deve funzionare su qualunque istanza di tale problema.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Definizione di algoritmo
Nel dettaglio
✔ Un algoritmo consta di una sequenza di istruzioni che spiegano come affrontare il problema in dipendenza dei dati
✔ I dati sono informazioni che definiscono l’istanza del problema e che saranno manipolate dall’algoritmo
✔ Cambiando i dati possono cambiare le azioni che l’algoritmo prevede, ma tutto resta consistente con l’idea generale di risolvere quel problema specifico
✔ Per essere eseguito un algoritmo deve essere codificato in un programma, che traduce le istruzioni in un linguaggio comprensibile al computer
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Esempio di algoritmo
1) Se la macchina è spenta, accenderla
2) Inquadrare il soggetto
3) Finché il campo inquadrato non va bene
1) Se è troppo largo, aumentare lo zoom
2) Se è troppo stretto, diminuire lo zoom
4) Scattare
5) Controllare la foto sul visore
6) Se è venuta male
1) Cancellarla
2) Tornare al punto 2
Scattare una foto con una macchina digitale
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Struttura classica di algoritmo
Un algoritmo è costituito di una sequenza di passi
Ci sono tre tipi di successione temporale dei passi:
✔ Sequenziale
✔ Condizionale
✔ Iterativa
✔
Le istruzioni condizionali ed iterative consentono di cambiare il flusso dell’algoritmo secondo quel che succede (ossia secondo la situazione creata dai dati su cui si sta lavorando)
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Rappresentazione in pseudocodice
Esempio: Una classe di dieci studenti partecipa a un test. Dati i voti di ciascuno studente, determinare il voto medio riportato dalla classe
Poni il totale a zeroInizializza il contatore degli studenti a 1
while( il contatore è minore o uguale a 10){Leggi il prossimo votoAggiungi il voto al totaleAggiungi uno al contatore degli studenti
}
Il voto medio è il totale diviso 10Stampa il voto medio
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Diagramma di flusso
Totale = 0Studenti = 1
Studenti <= 10 ?
Leggi ilprossimo voto
Si
Totale = Totale + VotoStudenti = Studenti + 1
Media = Totale / 10
No
Stampa Media
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Linguaggio macchina
• Rappresenta l’unico linguaggio direttamente eseguibile dall’elaboratore
• Non necessita quindi di una “traduzione” ulteriore
• La sua rappresentazione è la codifica binaria
• Risulta di difficile comprensione da parte dell’utente, che solitamente programma in linguaggi di alto livello.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Linguaggio di alto livello
• Ogni istruzione di questi linguaggi esprime una serie di azioni elementari
• L’esecuzione di un programma scritto in linguaggio di alto livello necessita una traduzione in linguaggio macchina (compilazione)
• Questi linguaggi astraggono dai dettagli legati all’architettura e sono di semplice comprensione.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Ricapitolando
I computer sanno solo eseguire un numero molto ridotto di operazioni sintattiche su simboli di un dato linguaggio (i numeri binari, che vedremo)
Per funzionare, un computer ha bisogno di:
✔ Un programma che lo istruisca su cosa fare
✔ Dati sui quali agire
✔
Abbiamo quindi bisogno di tradurre sia gli algoritmi che i dati in un linguaggio “comprensibile” al computer
Parleremo di rappresentazione e codifica dell’informazione
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Codifica dell'informazione
Per rappresentare l’informazione in modo fruibile dai computer abbiamo bisogno di codici che la possano esprimere in modo semplice, sintetico e non ambiguo.
Un codice (o un linguaggio) si basa su:
✔ Un alfabeto di simboli
✔ Una sintassi con sui comporre tali simboli in sequenze
✔ Una semantica da associare ai simboli o alle sequenze
Nella codifica dei dati, la semantica resterà per lo più dominio degli umani che tali dati interpretano
Nella codifica dei programmi, la semantica sarà interpretata dal computer in termini di operazioni elementari che questo è in grado di eseguire
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Codifica dell'informazione
I computer hanno un grosso limite: possono gestire solo rappresentazioni finite codificate attraverso un insieme finito di simboli
Dato qualunque insieme finito di n simboli, questo può essere messo in relazione con i primi n numeri interi (partendo da zero)
Quindi basta trovare un modo efficiente e opportuno (per il computer) di rappresentare i numeri interi e si può in questo modo codificare qualunque rappresentazione (finita)
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Codifica decimale
La codifica decimale la conosciamo bene:
✔ Alfabeto di dieci simboli (cifre): 0 1 2 3 4 5 6 7 8 9
✔ Assumiamo per il momento di rappresentare numeri di non più di n cifre
✔ Ogni numero si rappresenta con una sequenza (stringa) di n cifre
✔ A ogni cifra si assegna una semantica (quella solita)
✔ Ogni cifra ha una posizione nella sequenza e ad ogni posizione di assegna una semantica: unità, decine, centinaia, migliaia, ecc…
105 104 103 102 101 100
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Codifica decimale
La semantica di una stringa si ottiene moltiplicando ciascuna cifra per la potenza di dieci corrispondente al posto che occupa e sommando il tutto
✔ 0x100000+0x10000+0x1000+1x100+2x10+7x1 = 127
✔ Con questa regola il numero 127 si scriverà in effetti 000127 e il numero più grande che si riesce a rappresentare è il 999999
✔ Normalmente non abbiamo questi limiti perché assumiamo l’esistenza di un simbolo separatore (ad esempio lo spazio) che ci indica dove inizia e dove finisce un numero
0
105
0
104
0
103
1
102
2
101
7
100
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Codifica binaria
Stesso meccanismo, ma:
✔ l’alfabeto è di soli due simboli: 0 1
✔ La semantica assegnata alle posizioni in una stringa di cifre binarie corrisponde (da destra a sinistra) potenze successive di due: 1, 2, 4, 8, 16, …
✔ La semantica di una stringa si ottiene moltiplicando ciascuna cifra per la potenza di due corrispondente al posto che occupa e sommando il tutto
1
25
0
24
1
23
0
22
0
21
1
20
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Operazioni binarie
1 1 0 0 1 +
1 1 0 1 =
___________
1 0 0 1 1 0
(1)01110010+
011(1)100
10
1 1 0 0 1
1 1 0 1 =
________
1 1 0 0
Somma
In parentesi è indicato il riporto
Sottrazione
In parentesi è indicato il prestito
25 +13 =____38
25 13 =____12
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Esempio di sommatore
1111110011101010100110110010100110000000RocRiba
+I S
O
a b
Ro Σ Ric
a
Ro Ri
c
b
011101110000OIS
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Numeri binari e computer
Qualunque informazione rappresentata nel computer (sia dati che programmi) viene codificata in forma binaria
Ragioni pratiche:
✔ I simboli 0 e 1 si fanno corrispondere a due livelli di tensione elettrica e l’elaborazione dell’informazione avviene attraverso commutazioni tra questi due livelli di tensione, operati da circuiti logici, fatti di un numero elevatissimo di transistor miniaturizzati, ciascuno molto semplice
✔ Conviene costruire molti circuiti molto semplici piuttosto che meno circuiti più complessi
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Numeri binari e computer
Ragioni filosofiche:
✔ La numerazione binaria è adeguata a rappresentare il ragionamento creativo (Leibnitz, XVII secolo): ogni cifra può rappresentare una decisione (cfr istruzioni condizionali)
✔ C’è corrispondenza tra la matematica in base 2 e la logica (Boole, XIX secolo), quindi possiamo formalizzare il ragionamento (logico) attraverso procedure algoritmiche (matematiche)
✔ Si può ottenere un modello del cervello umano rappresentando una rete di neuroni ciascuno dei quali può assumere due stati attivo/inattivo (McCulloch & Pitts, 1943)
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Numeri binari e computer
Una cifra binaria (rappresentata in un computer) si chiama genericamente bit (contrazione di binary digit = cifra binaria)
Un gruppo di 8 bit si chiama byte
Il byte è l’unità di misura usata per quantificare l’informazione rappresentata in un computer (ad esempio, la capacità della sua memoria)
I multipli del byte si ottengono moltiplicandolo per potenze di 2 che si avvicinano a potenze di 10
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Numeri binari e computer
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 la memoria del computer
Una memoria è un contenitore fatto di “scatolette” (celle) ciascuna delle quali può contenere un gruppetto di bit
La capacità di una cella di memoria di solito è di qualche byte (8, 16, 32 o 64 bit)
✔ 8 bit = numeri da 0 a 255
✔ 16 bit = numeri da 0 a 65.535
✔ 32 bit = numeri da 0 a 4.294.967.295
✔ 64 bit = numeri da 0 a circa 18,5 miliardi di miliardi
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 I dati
I dati sono informazioni rappresentate secondo una certa codifica
In ultima analisi, qualunque dato viene codificato attraverso numeri binari immagazzinati nelle celle di memoria del computer
Per arrivare a questo possono essere però necessari diversi passaggi, che aumentano con la complessità strutturale dei dati da rappresentare
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 I dati
Esempio: i numeri naturali
✔ Dobbiamo prima di tutto decidere quanti ne vogliamo rappresentare e quindi quanti bit servono per rappresentarne uno
✔ Quindi per esempio se abbiamo scelto n=4 possiamo rappresentare solo numeri tra 0 e 15 e la sequenza 0010100011110001 rappresenta nell’ordine i numeri 2 8 15 1
✔ Se scegliessimo n=8 la stessa sequenza rappresenterebbe nell’ordine i numeri 40 e 241
l’informazione codificata nei dati si può recuperare solo se è nota la semantica del codice utilizzato per rappresentarli !
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 I dati
Esempio: il testo
Vogliamo rappresentare sequenze composte da:
✔ lettere dell’alfabeto maiuscole e minuscole
✔ cifre decimali
✔ segni di punteggiatura
✔ parentesi varie
✔ simboli speciali
✔ spazi
Servirebbero almeno 7bit per rappresentare ciascun simbolo
Con questo metodo è stata ottenuta la tabella ASCII, largamente usata
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Tabella ASCII
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 I dati composti
I dati come numeri e caratteri di testi si dicono elementari perché abbiamo una regola semplice per definire come codificarli
A partire da questi, si possono definire tipi di dato più complessi, ottenuto per composizione
Per esempio, la scheda di un cliente in un archivio di contabilità potrà contenere diversi campi di diverso tipo:
✔ codice cliente (numero intero)
✔ nome e cognome (stringhe di testo)
✔ partita iva (numero intero)
✔ ecc…
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Trasmissione dell'informazione
Sorgente
Trasmettitore Ricevitore
Destinazione
Messaggio
Messaggio
Sistema di trasmissione
Canale di trasmissione
Rumore
Segnale
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Errore di trasmissione
• A causa del rumore, non è sempre possibile garantire che i dati ricevuti da un canale di trasmissione siano corretti.
• Si verifica un errore di trasmissione quando il dato ricevuto in uscita dal canale è diverso dal dato immesso.
– L’errore si definisce singolo, doppio, triplo ecc. in base al numero di bit errati.
• Esistono appositi codici di rilevazione e correzione degli errori di trasmissione.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Rilevazione degli errori
• Codice di parità: al dato da trasmettere si aggiunge un bit di parità, che indica se gli 1 del dato sono pari o dispari.– parità pari: es. a 01001110 si aggiunge 0
per ottenere 01001110 0– parità dispari: es. a 01101110 si aggiunge
1 per ottenere 01001110 1• In questo modo i dati ricevuti devono avere
sempre un numero pari di 1, altrimenti sono errati.
• Tuttavia questo codice permette di rilevare solo gli errori singoli o dispari.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Trasmissione dei segnali
Modulazione(AM,FM,PM)
Digitalizzazione(campionamento e
quantizzazione)
Modulazione(modem)
Codifica
Segnale analogico
Segnale digitale
Canale analogico
Canale digitale
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Modello concettuale di un calcolatore
Elaborazione
Comunicazione
MemorizzazioneInterconnessione
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Schema di riferimento
Schermo Tastiera Mouse Altreperiferiche
InterfacciaI/O
InterfacciaI/O
InterfacciaI/O
InterfacceI/O
Memoriacentrale
CPU
Bus DatiBus Indirizzi
Bus di Controllo
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Caratteristiche del collegamento a bus
Vantaggi• Semplicità: unica linea di connessione implica costi ridotti• Estendibilità: aggiunta di nuovi dispositivi molto semplice• Standardizzabilità: regole precise di comunicazione tra
dispositivi diversiSvantaggi• Lentezza: il bus è utilizzabile solo in mutua esclusione• Limitata capacità: al crescere del n. di dispositivi collegati• Sovraccarico del processore: la CPU funge infatti da
master sul controllo del bus
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Organizzazione “bus oriented”
Memoria centrale
Unità disco
Terminale Stampante
Unità di controllo
Unità aritmetico
logica (ALU)
Registri
Dispositivi di I/O
BUS
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Tipologie di istruzioni
• Istruzioni aritmeticologiche– somma, sottrazione, divisione, …– AND, OR, XOR, …– maggiore, minore, uguale, minore o uguale, …
• Controllo del flusso delle istruzioni– flusso sequenziale– selezione semplice, a due vie, a n vie, ...– ciclo a condizione finale, iniziale, …
• Trasferimento di informazione– trasferimento dati e istruzioni tra CPU e memoria– trasferimento dati e istruzioni tra CPU e dispositivi di
I/O attraverso le relative interfacce
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Elementi della CPU
• Unità di controllo: legge le istruzioni dalla memoria e ne determina il tipo.
• Unità aritmeticologica: esegue le operazioni necessarie per eseguire le istruzioni.
• Registri caratteristiche:– memoria ad alta velocità, usata per risultati temporanei e
informazioni di controllo– il valore massimo memorizzabile in un registro è
determinato dalle dimensioni del registro– registri specifici sono ad esempio: program counter (PC),
che indica l’indirizzo dell’istruzione successiva, l’instruction register (IR), che indica l’istruzione che si sta eseguendo, lo stack pointer (SP) ecc.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Esecuzione delle istruzioni
• Prendi l’istruzione corrente (in linguaggio macchina) dalla memoria e mettila nel registro istruzioni IR (fetch);
• Incrementa il program counter PC in modo che contenga l’indirizzo dell’istruzione successiva;
• Determina di che tipo è l’istruzione corrente (decode);• Se l’istruzione usa una parola in memoria, determina
dove si trova;• Se necessario carica la parola in un registro della CPU;• Esegui l’istruzione (execute);• Ripeti il ciclo.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Evoluzione delle CPU
29 000134 000
275 000
275 000
1 200 000
3 100 000
7 500 000
24 000 000
42 000 000
8 16
16 1632 32
32 16
32 3232 64
32 64
32 64
32 64
4.77 12
8 1616 33
16 33
33 50
60 200233 400
450 11331600 2000
Dimensione registri bus dati
19781982
1986
19881989
19931997
1999
2000Pentium 4
Pentium III
80386
808680286
80386 SX
80486
Pentium
Pentium II
CPU Anno Frequenza (MHz)
Numero transistor
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Legge di Moore
“Il numero di transistor per cm2 raddoppia ogni 18 mesi”Ovvero di circa il 60% ogni anno.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Incrementare le prestazioni: il parallelismo
• La frequenza di clock influenza direttamente il tempo di esecuzione delle istruzioni ed è limitata dalla tecnologia disponibile.
• Il parallelismo permette di migliorare le prestazioni senza modificare la frequenza di clock. Esistono due forme di parallelismo:– parallelismo a livello delle istruzioni (architetture
pipeline e superscalari)– parallelismo a livello di processori
(multiprocessori e multicomputer).
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Architettura pipeline
Consiste nell’organizzare la CPU come una “catena di montaggio”• la CPU viene suddivisa in stadi, ognuno dedicato
all’esecuzione di un compito specifico• l’esecuzione di una istruzione richiede il passaggio
attraverso tutti o alcuni degli stadi della pipeline• in un certo istante, ogni stadio esegue la parte di
istruzione di sua “competenza”• in un certo istante esistono diverse istruzioni
contemporaneamente in esecuzione, una per stadio.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Esempio di pipeline a 5 stadi
• S1. lettura istruzioni dalla memoria e loro caricamento in un apposito buffer
• S2. decodifica dell’istruzione per determinarne il tipo e gli operandi richiesti
• S3. individuazione e recupero degli operandi dai registri o dalla memoria
• S4. esecuzione dell’istruzione• S5. invio dei risultati all’apposito registro.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Multiprocessori e multicalcolatori
• Nei Multiprocessori diverse CPU condividono una memoria comune:– le CPU devono coordinarsi per accedere alla memoria– esistono diversi schemi di collegamento tra CPU e
memoria; quello più semplice prevede ci vi sia un bus condiviso.
• Nei Multicalcolatori si utilizzano più calcolatori, ognuno dei quali dotato di una memoria privata:– la comunicazione tra CPU è basata su scambio di
messaggi– si è arrivati a costruire multicalcolatori con ~10000
CPU.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 La memoria
• Supporto alla CPU: deve fornire alla CPU dati ed istruzioni il più rapidamente possibile
• Archivio: deve consentire di archiviare dati e programmi garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo
• Esigenze:– velocità per il supporto alla CPU– non volatilità ed elevate dimensioni per l’archivio
• Tecnologie:– elettronica: veloce ma costosa e volatile– magnetica e ottica: economica e non volatile, ma molto
lenta.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Caratterizzazione di una memoria
• Velocità:– tempo di accesso: quanto trascorre tra richiesta e relativa risposta– velocità di trasferimento: quanti byte/sec si possono trasferire
• Volatilità:– cosa succede quando la memoria non è alimentata?– per quanto tempo i dati vi rimangono immagazzinati?
• Capacità: quanti byte può contenere?• Costo per bit• Modalità di accesso:
– diretta (o casuale): il tempo di accesso è indipendente dalla posizione
– sequenziale: il tempo di accesso dipende dalla posizione– mista– associativa: indicato il dato, la memoria risponde indicando
l’eventuale posizione che il dato occupa.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Memoria centrale
• Mantiene al proprio interno dati e istruzioni dei programmi in esecuzione.
• È una memoria ad accesso “casuale” (Random Access Memory)
• Tecnologia elettronica (veloce ma volatile e costosa)• Due diversi tipi di memoria elettronica:
– R.O.M. (Read Only Memory): permanente e di sola lettura (serve ad esempio a memorizzare le istruzioni da effettuare all’accensione del calcolatore (bootstrap))
– Flash: permanente e riscrivibile (USB, memorie per piccoli apparecchi elettronici quali palmari, cellulari, fotocamere, ...).
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il principio di località: la cache
• Località spaziale: “quando si accede all’indirizzo A, è molto probabile che gli accessi successivi richiedano celle vicine ad A.”
• Località temporale: “quando si accede all’indirizzo A, è molto probabile che gli accessi richiedano di nuovo la cella A.”
• Si utilizza quindi una memoria che consenta accessi estremamente veloci su blocchi utilizzati di recente. Questa memoria è la cache: veloce ma molto costosa, quindi piccola.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Gerarchia di memorie
max
maxminCPU Registri
Cache
Memoria centrale
Dischi magnetici / ottici
Nastri magnetici
Dimensioni Velocità
min
Costo/bitmax
min
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Dischi magnetici
• Sono piatti, generalmente di alluminio, ricoperti di materiale ferromagnetico
• Fattore di forma (diametro)– sempre più piccolo, consente velocità di rotazione maggiori– 3.5 pollici per sistemi desktop e fino ad 1 pollice per i portatili.
• Testina (strumento di lettura/scrittura)– è sospesa appena sopra la superficie magnetica– scrittura: il passaggio di corrente positiva o negativa attraverso
la testina magnetizza la superficie– lettura: il passaggio sopra un’area magnetizzata induce una
corrente positiva o negativa nella testina.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Tracce e settori
• Traccia (track): sequenza circolare di bit scritta mentre il disco compie una rotazione completa. Tra una traccia e l’altra c’è un piccolo spazio separatore (gap).
• Settore (sector): parte di una traccia corrispondente ad un settore circolare del disco– un settore contiene 512 byte di dati, preceduti da un preambolo
e seguiti da un codice di correzione degli errori
• Altre sottostrutture sono i cluster e i blocchi.• Formattazione: operazione che predispone tracce e
settori per la lettura/scrittura– circa il 15% dello spazio si perde in gap, preamboli e codici di
correzione errori.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Tracce e settori
Traccia Settore
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Hard disk
L’Hard Disk è composto da più superfici (piatti) e da una testina di lettura per superficie.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Floppy disk
• Funzioni: distribuzione del software su larga scala (con l’avvento dei PC) e archiviazione dati
• Struttura analoga a quella di un disco magnetico– il disco si ferma quando non è operativo– l’avvio della rotazione comporta un ritardo di ½
secondo• Caratteristiche tipiche di un floppy da 3.5’’:
– capacità: 1.44 MB– tracce × settori: 80 × 18– giri per minuto (RPM): 300– velocità di trasferimento: 500 Kbps.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Dischi ottici
• Lettura ottica basata sulla riflessione (o sulla mancata riflessione) di un raggio laser sul supporto
• Densità di registrazione più alta che nei dischi magnetici
• Creati in origine per registrare programmi televisivi, successivamente applicati ai calcolatori.
• Tipologie: – CDROM, CDR, CDRW, DVD, DVDRAM, ...
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Compact Disk (CD)
• Supporto proposto nel 1980 da Philips e Sony per sostituire i dischi musicali in vinile
• Standard di fabbricazione IS10149:– diametro: 12 cm; spessore: 1.2 mm e foro di 15 mm al centro– produzione:
• laser ad alta potenza che brucia fori di 0.8 m in un μ disco master (le depressioni sono dette pit e le aree tra i pit sono dette land)
• dal master si ricava uno stampo• nello stampo viene iniettata una resina liquida di policarbonato che
forma un CD con la stessa sequenza di pit del master• sul policarbonato viene depositato uno strato molto sottile di
alluminio riflettente• copertura con strato protettivo e poi con una etichetta.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Lettura dei CD
• Un laser a bassa potenza emette una luce infrarossa sul disco
• I pit appaiono come cunette su una superficie piatta• I passaggi pit/land o land/pit indicano un 1, e la loro
assenza indica uno 0• Pit e land sono impressi in una spirale unica che
compie 22.188 giri attorno al disco• La lettura viene effettuata a velocità costante (120
cm/sec), molto meno della velocità di lettura degli hard disk.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Pit e Land su CD
Passaggio da land a pitPassaggio da pit a land
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 CD-Rom
• Nel 1984 Philips e Sony definiscono uno standard per i CDROM (Compact DiskRead Only Memory) in cui si definiva la struttura ed il formato da utilizzare per memorizzare dati digitali invece che “musica”
• Rispetto ai CD audio i CDROM hanno:– stesse dimensioni– compatibilità dell’ottica e della meccanica– stesso processo produttivo– migliore capacità di correggere gli errori
• Nel 1986 si definisce la possibilità di mischiare audio, video e dati nello stesso settore.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Velocità e capacità dei CD-Rom
• Velocità base (1x):– 75 settori/sec– 153.6 KByte/sec– velocità superiori (n x) crescono in proporzione
• Capacità– 74 minuti di musica ~ 640 MB– 80 minuti di musica ~ 700 MB
• Tempo di accesso– alcune centinaia di millisecondi.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 CD Recordable (CD-R)
• Sono CD che vengono scritti una sola volta (WORM)– si utilizzano per backup, produzioni in piccole serie,
generazione di master, …– hanno le stesse dimensioni dei CDROM
• La riflettività di pit e land è simulata– c’è uno strato di colore tra il policarbonato e lo strato
riflettente: nello stato iniziale questo strato è trasparente– per scrivere, un laser ad alta potenza colpisce un punto
nello strato della superficie colorata, rompe un legame chimico e crea una macchia scura.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 CD ReWritable (CD-RW)
• Dischi ottici riscrivibili• Lo strato di registrazione utilizza una lega di argento,
indio, ammonio e tellurio che ha due stati stabili:– lo stato cristallino, con elevata capacità di riflessione (land)– lo stato amorfo, con ridotta capacità di riflessione (pit)
• Si usa un laser con tre potenze diverse:– alta potenza: il laser scioglie la lega e un raffreddamento rapido
la porta dallo stato cristallino a quello amorfo– media potenza: la lega si scioglie e si raffredda tornando nel suo
stato cristallino– bassa potenza: si rileva solo lo stato del materiale.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Digital Versatile Disk (DVD)
• Pit più piccoli, spirale più serrata, utilizzo del laser rosso• Caratteristiche dei DVD:
– capacità di 4.7 GB = 133 minuti di video ad alta risoluzione, con colonna sonora in 8 lingue e sottotitoli in 32 lingue
• Diversi formati di DVD:– lato unico strato unico (4.7 GB)
– lato unico strato doppio (8.5 GB)
– due lati strato unico (9.4 GB)
– due lati strato doppio (17 GB)
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Nastri magnetici e unità DAT
• Capacità di diversi GB• Accesso sequenziale ai dati• Molto lenti• Utili solo per operazioni di backup
Interrecord gap Record
Traccia 1
Traccia 9
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Architettura della macchina di Von Neumann
Memoria
CPU
Unità di ingresso Unità di uscita
Programmi e dati
Risultati
Unità centrale
CPU: Central Processing Unit
ALUUnità di controllo
I microprocessori attuali sono dispositivi elettronici in grado di implementare all'interno di un unico circuito integrato le funzioni di un'intera CPU
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Unità centrale
DA T A
B U S
ALU
CPUUnità di controllo
MAR Memoria ROM
MBR
MAR Memoria RAM
MBR
C O N T R O L
B U S
A D D R E S S
B U S
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Microprocessori e bus
• I microprocessori sono dispositivi elettronici che implementano in un unico circuito integrato le funzioni di una intera CPU. I microprocessori attuali hanno bus dati a 8, 16, 32, 64 bit.
• Il bus dati (data bus) esprime la capacità di elaborazione del processore (quanti bit possono essere elaborati in parallelo)
• Il bus indirizzi (address bus) esprime la capacità di memorizzazione del processore (2m celle di memoria, se m è il numero dei bit del bus)
• La capacità di indirizzamento indica il numero di celle diverse cui si può accedere:
210 Byte = 1024 byte = 1 KByte220 Byte = 1048576 byte = 1 Mbyte230 Byte = 1073741824 byte = 1 GByte
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Un esempio
• Variazione nella precisione di misura di 1 Kg. in un sistema di pesatura basato su microprocessori con diversa dimensione del bus dati
Numero di bit bus dati 4 8 16
Dati rappresentabili 24=16 28= 256 216= 65536
Precisione relativa 6.25% ~3.9 ‰ ~0.015‰
Precisione max. 62.5 gr ~3.9 gr ~0.015 gr
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Osservazioni
• I microprocessori a 8 bit di dato hanno tipicamente bus indirizzi a 16 bit con capacità di indirizzamento di 64 KB
• I microprocessori a 16 bit di dato hanno tipicamente bus indirizzi a 2024 bit con capacità di indirizzamento di 116 MB
• I microprocessori a 64 bit di dato hanno bus indirizzi a 64 bit con capacità di indirizzamento fino a circa 1019 byte
• I microprocessori Single Chip riuniscono in un unico circuito integrato più di uno dei blocchi costituenti un microcalcolatore (eventualmente tutti).
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Architettura di una CPU
SP PC R e g 0
R e g N
F
L
A
G
ACC C
O
N
T
R.
D
E
C
O
D.
I
N
S
T.
R
E
G.
BUS DATI INTERNO
….
BUS INDIRIZZI INTERNO BUS IND. ESTERNO
BUS DATI ESTERNO
ALU
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Ciclo di esecuzione delle istruzioni
•FETCH (prelevamento dell’istruzione)•DECODIFICA•ESECUZIONE
La memoria (ROM e RAM) contiene il programma e i dati sui quali opera la CPU. Il Program Counter (PC) contiene l’indirizzo della cella di memoria con la prossima istruzione da eseguire.
FORMATO DELLE ISTRUZIONICodice Operativo Operando 1 Operando 2
Campo che caratterizza le varie istruzioni Gli operandi possono
essere 0, 1, 2
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Sequenza delle operazioni elementari
•FETCH: vengono letti i campi che costituiscono l’istruzione:1) (PC)→MAR2) ((MAR)) →MBR; (PC)+1 →PC3) (MBR) → IR
I passi 1, 2, 3 permettono di caricare in IR (instruction register) il codice operativo (OP Code) dell’istruzione corrente. Passi analoghi permettono di caricare in opportuni registri della CPU gli operandi presenti nell’istruzione. In tal caso, nel passo 3 la destinazione del dato proveniente dalla memoria non è più IR, ma opportuni registri.•DECODE: viene identificata l’istruzione corrente sulla base dell’OP Code•EXECUTE: è diversa a seconda del tipo di istruzione. In pratica consiste nell’inviare comandi e dati alle unità interessate.
•P.S. MAR= Memory Address Register; MBR: Memory Buffer Register•Notazione: (X) →Y significa: “Il contenuto della cella puntata dal registro X viene trasferito nel registro Y
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Formato delle istruzioni
• Le istruzioni sono codificate da stringhe di bit. • Una volta caricata nell’IR, un’istruzione deve essere decodificata ed
eseguita. A tal scopo l’unità di controllo deve conoscere:• codice operativo• sorgente: dati su cui operare• destinatario: dove porre il risultato e, se sorgente e destinazione sono
in memoria, la modalità di indirizzamento
Codice Operativo Sorgente Destinazione Mod. indirizzamento
Esempio 1: Somma tra il contenuto del registro R2 e il contenuto dell’accumulatore. Il risultato va nell’accumulatore
FORMATO codice operativo
FETCH come in precedenza
ESECUZIONE (R2)+(ACC)→ACC
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Esempio di esecuzione di istruzioni
Esempio 2: somma tra il contenuto della cella di memoria il cui indirizzo è specificato nell’istruzione ed il contenuto dell’accumulatore; il risultato va nell’accumulatore
•FORMATO: codice operativo+operando
•FETCH:1) (PC)→MAR 4) (PC)→MAR2) ((MAR)) →MBR; (PC)+1 →PC 5) ((MAR)) →MBR; (PC)+1 →PC3) (MBR) → IR 6) (MBR) →Rn
•EXECUTE:1) (Rn) →MAR 3) (MBR) →Rn2) ((MAR)) →MBR 4) (Rn)+(ACC) →ACC
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Esempio di esecuzione di istruzioni
Esempio 3: saltare all’istruzione che è memorizzata nella cella il cui indirizzo è specificato all’interno dell’istruzione corrente:
•FORMATO: codice operativo+operando
•FETCH:1) (PC)→MAR 4) (PC)→MAR2) ((MAR)) →MBR; (PC)+1 →PC 5) ((MAR)) →MBR; (PC)+1 →PC3) (MBR) → IR 6) (MBR) →Rn
•EXECUTE:1) (Rn) →PC
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 I sistemi operativi
• I sistemi operativi permettono di gestire le risorse efficientemente– tengono traccia di chi accede alle risorse– accettano e soddisfano le richieste di uso di risorse– risolvono i conflitti tra più risorse
• Possono essere visti come una macchina di calcolo estesa– rappresentano la base su cui è possibile scrivere
programmi applicativi in modo più semplice che utilizzando direttamente l’HW.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Vantaggi dei sistemi operativi
• I sistemi operativi permettono definire uno standard per interfacciare i dispositivi fisici, per cui:– lo sviluppo dei programmi risulti più semplice ed
indipendente dal calcolatore che si utilizza– l’aggiornamento del SW di base e dell’HW sia
trasparente all’utente ed alle applicazioni.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Il SO come intermediario tra HW e SW
Software =SO + applicazioni SW
SW SW (appl)
HW
SO
HW
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Composizione di un sistema operativo
Sistema Operativo
Utente
HW
Interpretecomandi
SWapplicativo
Gestioneprocessore
Gestione memoria
Gestione periferiche
File system
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Processi e programmi
• Un programma è una entità statica composta dal codice eseguibile del processore.
• Un processo è una entità dinamica relativa al programma in esecuzione, ed è composto da:– codice del programma– dati necessari all’esecuzione del programma– stato dell’esecuzione
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Esecuzione di un processo
Processoattivo
Processoin attesa
Richiesta di operazione I/O
Operazione I/O completata
Ogni operazione di I/O consiste in una chiamata al SO e successiva sospensione del processo utente per attendere l’esecuzione dell’operazione di I/O
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 La multiprogrammazione
tempo
Progr. 1
Progr. 2
Progr. 3
Attesa per operazioni di I/O Elaborazione
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Time sharing
• È possibile condividere la CPU tra più processi interattivi, suddividendo il tempo di esecuzione del processore tra più utenti
• Ogni processo utilizza periodicamente un intervallo di tempo prestabilito (quanto)
• Durante il quanto di esecuzione di un processo, tutti gli altri processi sono sospesi
• Al termine di ogni quanto (context switch), il processo in esecuzione viene sospeso e si assegna la CPU ad un altro processo.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Processi pronti ed in attesa
• Quando un processo non è in esecuzione può assumere due diversi stati:– attesa: il processo è sospeso finché un determinato
evento esterno non si verifica (i.e., I/O)
– pronto: il processo è sospeso finché non gli viene concesso l’uso della CPU
– in ogni instante di tempo vi è un solo processo attivo, e tutti gli altri sono o in attesa o pronti, e memorizzati in apposite code che ne indicano l’ordine di esecuzione.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Diagramma di esecuzione
Richiestaoperazione I/O
Completamento operazione I/O
Termine quanto di tempo
Selezione primo processo pronto e sua esecuzioneInizio esecuzione(accodamento)
Termineelaborazione
Codaprocessi
pronti
Processo attivo
Codaprocessi in attesa
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Round robin
quanto tempo
Proc. 1
Proc. 2
Proc. 3
E
E
E
E
E
E
E E
E
E
Richiesta I/O
P
P
P
P
P
P
P
P
A
P
A
P
A P
P P
P
P P
P
Context switch
Fine utilizzo I/O
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Macchina astratta del kernel
processo1
CPUvirtuale
InterfacceI/O
Memoriadi lavoro
Bus DatiBus Indirizzi
Bus di Controllo
processon
CPUvirtuale
Periferiche
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Gestione della memoria
• Ogni processo necessita di una certa quantità di memoria (ad esempio per immagazzinare il codice ed i dati utilizzati)
• Spesso l’effettiva memoria fisica non è sufficiente a contenere tutto lo spazio richiesto per n processi
• Il gestore della memoria risolve i conflitti garantendo uno spazio di memoria virtuale anche superiore alla capacità della memoria fisica.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Swapping
• Nonostante le diverse politiche di gestione della memoria, spesso le memoria centrale non è sufficientemente estesa per contenere tutti i programmi concorrenti
• Una soluzione consiste nel trasferire il contenuto di un’area di memoria centrale in un’area della memoria di massa (area di swap).
• La memoria di massa è molto più lenta della memoria centrale, quindi lo swap è utile per processi in attesa ma non per processi pronti.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Paginazione
• Un miglioramento nell’efficienza dell’uso della memoria si ha grazie alla paginazione, ovvero la suddivisione della memoria in sezioni di dimensioni fisse (pagine)
• Si basa sul principio di località spaziale e temporale: si possono utilizzare zone di memoria non fisicamente contigue e tenere in memoria centrale solo la porzione di codice che si sta eseguendo.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Pagine logiche e pagine fisiche
Memoria centrale (spazio fisico)
pagina 0
pagina 1
pagina 2
pagina 3
pagina 4
pagina 5pagina
6pagina 7
pagina 0
pagina 1
pagina 3
pagina 1
pagina 2
pagina 0Spazio logico
processo 1
Spazio logicoprocesso 2
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Macchina astratta della memoria
Processo nProcesso 1Memoria
logica
CPUvirtuale
InterfacceI/O
Bus DatiBus Indirizzi
Bus di Controllo
Memoria logica
CPUvirtuale
Periferiche
InterfacciaI/O
Memoriadi
massa
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Gestore delle periferiche
• Il gestore delle periferiche permette la comunicazione tra il calcolatore e tutti i dispositivi esterni ad esso collegati (video, tastiera, stampanti, mouse, ecc.); inoltre:– garantisce un comportamento asincrono dell’ambiente
rispetto al calcolatore e gestisce di accessi contemporanei da parte di più periferiche
– nasconde ai processi il numero (spesso limitato) di risorse HW disponibili (i.e. più stampe su un’unica stampante)
– non permette ai processi di distinguere tra differenti risorse dello stesso tipo.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Sistemi Plug&Play
• Nelle versioni più recenti dei sistemi operativi, la necessità di configurare “manualmente” ogni periferica tramite appositi driver viene sostituita da funzioni Plug&Play:– ad ogni accensione del calcolatore il SO scandisce
tutte le risorse HW rilevando quelle non ancora configurate
– ogni periferica comunica al SO i driver di cui necessita ed il SO installa gli appositi driver senza l’intervento dell’utente.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Lo spooling
• La tecnica di spooling è utilizzata dai driver per rendere virtuali più periferiche non condivisibili; ad esempio, nel caso di una stampante e più processi che intendono stampare:– ogni processo invia il file da stampare al driver della
stampante, che lo mette in coda nella directory di spooling
– i file in coda vengono stampati secondo l’ordine di arrivo
– a directory di spooling vuota il driver rimane in memoria in attesa di una nuova richiesta di stampa.
• In questo modo i processi evitano lunghe attese ed operano indipendentemente dalla periferica.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Macchina astratta dell I/O
Processo nProcesso 1Memoria
logica
CPUvirtuale
Bus DatiBus Indirizzi
Bus di Controllo
Memoria logica
CPUvirtuale
InterfacciaI/O
Memoriadi
massa
I/Ovirtuale
I/Ovirtuale
I/Ovirtuale
I/Ovirtuale
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Evoluzione dei sistemi operativi
• I primi calcolatori non prevedevano l’uso di sistemi operativi, ed erano direttamente programmati in linguaggio macchina.
• Con l’aumento della complessità degli elaboratori e del codice da implementare si è reso necessario introdurre un intermediario tra HW e SW che facilitasse la gestione del lavoro.
• Uno dei primi SO fu OS/360.• Con l’introduzione della multiprogrammazione furono
progettati sistemi come CTSS e MULTICS, che spianarono la strada alla nascita di UNIX uno dei più popolari ed efficienti sistemi operativi.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Evoluzione dei sistemi operativi
• In seguito nacque l’MSDOS, fin troppo “ispirato” a UNIX, ma particolarmente semplice ed adatto ai personal computer.
• Una nota particolare merita Linux, un discendente diretto di UNIX ed apparso per la prima volta nel 1991.
• Uno dei suoi pregi è di essere completamente gratuito ed “open source”, ovvero qualsiasi utente può modificarne il codice sorgente.
• Tuttavia i sistemi che hanno registrato il maggior successo negli ultimi anni sono Macintosh e Windows, grazie alla loro estrema semplicità e chiarezza dell’interfaccia grafica.
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 File System
È un meccanismo per memorizzare e accedere a dati e programmi
Le informazioni (dati/programmi) sono codificate in sequenze di byte, e sono raccolte in file.
I file possono avere varie semantiche, a seconda del tipo di dati che contengono. La semantica si capisce (nella maggior parte dei casi) guardando l’estensione del file:
.txt .c .html
.jpg .gif .mp3
.pdf .ps .doc
.exe .xls
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Interfaccia testuale al File System
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Interfaccia grafica al File System
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 File System
I file sono raggruppati in directory, che possono contenere file o altre directory.
Si forma così una struttura gerarchica ad albero, le cui foglie sono i file e le directory vuote
/
usr lib home
bin games mario
Prova.c
floppy
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Pathname
Ciascun file ha un pathname che lo identifica in modo univoco all’interno del file system.
Un pathname e’ una sequenza di nomi di directory che conducono da una directory di partenza ad un certo file, attraverso l’albero del file system.
Pathname assoluto: /home/mario/Prova.cPathname relativo: Prova.c
/
usr lib home
bin games mario
Prova.c
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Home Directory
Ogni utente del sistema Linux ha associata una directory personale, dove può raccogliere e organizzare i propri file.
La directory personale si chiama home directory e si inserisce nel file system sotto la directory /home/
Il nome della propria home directory corrisponde alla propria login:
/
usr lib home
anna luigi mario
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Directory corrente
Quando un utente si collega al sistema, il s.o. gli fa guardare il file system partendo dalla sua home directory.
All’inizio la directory corrente è la vostra home dir
Per leggere un file si usano i comandi
more <pathname>
less <pathname>
/
lib home
mario
Prova.cProva.c
altrimenti si deve specificare il pathname assoluto, cioè more /lib/Prova.c
con more Prova.cIl file è cercato nella directory corrente
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Navigare nel File System
Per cambiare la directory correntee navigare nel file system cd <pathname>
I pathname possono contenere dei simboli speciali:. denota la directory corrente
.. denota la directory soprastante
/
usr lib home
bin games mario
Prova.c
cd ../../usr
more ../home/mario/Prova.c cd ./bin corrisponde a cd bin
Pre
cors
o d
i In
form
ati
ca -
A.A
. 2
00
8/2
00
9 Navigare nel File System
Comandi per visitare il file system:
• cd <pathname> sposta la directory corrente
• pwd ritorna il path assoluto della directory corrente
• ls [<pathname>] visualizza il contenuto della directory. Prova le opzioni –l e –a
• more <pathname> visualizza il contenuto del file
• cp <path1><path2> copia il primo file nel secondo (path2 viene sovrascritto)