Anno Accademico 2005/2006
Programma dell'insegnamento di
INFORMATICA II (architetture hardware e software) - 073132
Il corso si articola in lezioni, esercitazioni e laboratori. Le
esercitazioni,
oltre ad illustrare aspetti applicativi di quanto esposto durante le
lezioni,
introducono anche argomenti non tratttati durante le lezioni stesse.
Obiettivi
Lo scopo della prima parte del corso, supportata dal laboratorio, e'
quello
di ampliare la conoscenza della programmazione che lo studente dovrebbe
avere acquisito nel corso di Informatica 1 portandolo a scrivere
programmi
che operano in rete in ambiente client-server e che utilizzano i
servizi
messi a disposizione dal sistema operativo per la gestione dei
processi,
con particolare riferimento al parallelismo.
Il resto del corso e' dedicato a comprendere come e' realizzato un
calcolatore seguendo un percorso di approfondimento “per livelli”,
scendendo
dal livello della programmazione, studiato in Informatica 1 e nella
prima
parte di questo corso, fino al livello delle porte logiche, che
costituiscono
l’astrazione del funzionamento dell’Hardware.
La distribuzione indicativa dell’attivita' didattica e' la seguente:
ore di lezione = 56, ore di esercitazione = 40, ore di laboratorio = 12
Programma delle lezioni e delle esercitazioni
1. Programmazione di rete e di sistema
1.1 Programmazione di rete
1.2 Programmazione del file system
1.3 Programmazione dei processi
2. Struttura del Sistema Operativo
2.1 Caratteristiche dell'hardware
2.2 Il nucleo del sistema operativo
2.3 La memoria virtuale
2.4 Il file system
2.5 Ingresso/uscita e gestori delle periferiche
3. Il livello dei circuiti logici
3.1 Porte logiche fondamentali e algebra di Boole
3.2 Mintermini e realizzazione di funzioni combinatorie
3.3 Sintesi di funzioni logiche e mappe di Karnaugh
3.3 Principali circuiti combinatori e ALU
3.4 Funzionamento della memoria
4. Microarchitettura
4.1 Esempio di microarchitettura (con riferimenti alla
architettura dei processori Motorola)
4.2 Tecniche di pipelining
4.3 Funzionamento delle memoria cache
5. Istruzioni macchina, assemblaggio e collegamento
5.1 Tipi di dato, formato delle istruzioni, modalita' di
indirizzamento,
ISA
5.2 La pila di sistema ed il processore Motorola 68000
5.3 La realizzazione di procedure ricorsive
5.4 Assemblaggio e collegamento
6. Sottosistemi funzionali, Bus, Ingresso/Uscita e Interrupt
6.1 Processore, memoria, periferiche
6.2 Funzionamento del bus
6.3 Ingresso/Uscita a livello assemblatore
6.4 Meccanismo di interrupt
Lezioni
Le lezioni sono raggruppate in unita' didattiche. Ogni unita' didattica
tratta uno specifico argomento.
Esercitazioni
Le esercitazioni sono raggruppate in unita' didattiche. Ogni unita'
didattica
tratta uno specifico argomento.
Le esercitazioni sono tenute dall'ing. Antonio
Taddeo ().
Laboratori
L’attivita' di laboratorio e' organizzata in livelli.
Durante ogni sessione verra' richiesta la realizzazione di programmi
progressivamente piu' difficili, il cui funzionamento verra' verificato
automaticamente dal sistema (o, se necessario, dal responsabile di
laboratorio).
I dettagli del meccanismo di funzionamento e valutazione del
laboratorio
verranno presentati a esercitazione. Qualora uno studente non superi il
livello relativo alla sessione di laboratorio in corso, il livello non
superato dovra' essere affrontato nelle sessioni sucessive.
Gli studenti saranno divisi in 3 squadre. Ogni studente e' assegnato
ad una squadra e deve seguire i turni di laboratorio della propria
squadra:
in caso di motivata e documentata impossibilita' a partecipare ad una
sessione,
si tentera' di permetterne il recupero. La suddivisione in squadre e il
calendario del laboratorio verranno comunicati all’inizio del corso.
I responsabili dei laboratori sono l'ing. Giovanni
Bucci (interno tel. 7421) e l'ing. Mauro
Bartesaghi (interno tel. 7407).
Modalita' d'esame
Laboratori
Ogni laboratorio prevede che ogni studente, identificato tramite
propria
login e password, realizzi autonomamente un programma che dovra'
funzionare su PC: ad ogni laboratorio e' associata una fase di verifica
del corretto funzionamento del programma realizzato durante quel
laboratorio.
La frequenza dei laboratori sara' conseguibile solo contemporaneamente
al periodo delle lezioni (marzo-giugno): non sono previste altre
verifiche
di laboratorio.
Chi non avra' superato con esito favorevole il livello minimo delle
prove dei laboratori, non potra' sostenere l’esame e dovra' frequentare
nuovamente il corso l’anno successivo.
Ogni studente ha diritto a partecipare a 6 sessioni di
laboratorio,
ognuno dalla durata di 2 ore. Le 6 sessioni globali sono divise in due
cicli: le prime 4 sessioni sono di tipo "esercitazione", le ultime 2 di
tipo "verifica". Nelle prime 4 sessioni e' possibile utilizzare
appunti,
manuali, libri. Nelle ultime 2 sessioni non e' consentito l'uso di
appunti,
manuali, libri: possono essere utilizzati manuali e documentazione in
linea
e verra' esercitato un controllo tipo esame.
Il punteggio ottenuto dallo studente nel laboratorio e' determinato
dal massimo livello superato: il punteggio minimo di sufficienza (0
punti)
e' conseguito superando i primi 4 problemi proposti nelle prime 4
sessioni
di tipo "esercitazione".
Nelle ultime 2 sessioni di verifica vengono proposti 3 problemi per
un valore totale di 8 punti: il superamento del primo problema porta ad
acquisire 4 punti, mentre i successivi problemi portano ad acquisire 2
punti ciascuno.
Qualora uno studente non completi la soluzione di un problema, nella
sessione successiva verra' riproposto lo stesso problema e la soluzione
parziale potra' essere salvata.
Prove in itinere
Verranno svolte due prove in itinere con il seguente calendario:
- il giorno 3 maggio con inizio alle
ore 8:30
precise.
- cognomi A - Z in aula AM1.
- il giorno 26 giugno con inizio
alle ore 8:30
precise.
- cognomi A - Z in aula VS7.
Chi avra' conseguito votazione insufficiente in una o entrambe le
prove,
potra' recuperarla/e sostenendo il/i recuperi di quella/e prova/e.
L'assenza
ad una prova in itinere equivale ad insufficienza.
Vale, in quanto applicabile, il Regolamento del Politecnico di Milano.
La prima prova in itinere prevede una votazione massima di 12 punti:
la seconda prova in itinere comporta una votazione massima di 13 punti
punti. Pertanto:
12 punti (prima prova) + 13 punti (seconda prova) + 8 punti
lab. = 33
Ogni prova in itinere e’ ritenuta sufficiente se sono stati conseguiti
almeno 6.5 punti.
Tramite le due prove in itinere devono essere conseguiti almeno 15
punti. Pertanto:
15 punti prove in itinere + 3 punti lab. = 18
10 punti prove in itinere + 8 punti lab. = insufficiente
N.B. La visione degli elaborati delle prove in itinere, la prova
orale e la registrazione dei voti avverranno a giugno. Chi intenda
rifiutare
l'eventuale voto conseguito tramite le prove in itinere e sostenere i
recuperi,
e' tenuto ad informarne il docente presenziando alla visione degli
elaborati
nello stesso giorno. Vale, in quanto applicabile, il regolamento del
Politecnico
di Milano.
Esame finale
L’esame finale vertera' sulla discussione delle prove in itinere, delle
prove di laboratorio e su una prova orale.
In occasione della visione degli elaborati delle prove in itinere,
che si terra' dopo la seconda prova in itinere, verranno tenuti gli
orali
degli studenti la cui votazione, dopo le prove in itinere e di
laboratorio,
risulti sufficiente. Chi non si presenta alla visione degli elaborati
delle
prove in itinere ed al successivo orale, perde il voto acquisito
durante le prove stesse.
Vale, in quanto applicabile, il Regolamento del Politecnico di Milano.
Recuperi
I recuperi si terranno a luglio, a settembre e a febbraio. Chi non si
presenta alla visione dell'elaborato della prova di recupero ed al
successivo orale, perde il voto acquisito durante la prova stessa.
Chi si presenta ad una prova di recupero per migliorare il voto
già
sufficiente di una prova precedente, perde il voto precedentemente
acquisito.
Vale, in quanto applicabile, il Regolamento del Politecnico di Milano.
Registrazione dei voti
La registrazione dei voti avverra' in occasione delle prove orali, le
quali si terranno successivamente alla seconda prova
in
itinere o successivamente alle prove di recupero.
I voti sufficienti acquisiti tramite le prove in itinere potranno
essere
registrati
esclusivamente in occasione della prima registrazione
e non verranno mantenuti validi successivamente.
Chi si presenta ad una prova di recupero per migliorare il voto
già
sufficiente di una prova precedente, perde quel voto precedentemente
acquisito.
Materiale in linea
Trasparenze dalle lezioni (in formato .pdf)
Introduzione al corso: file
(08-03-06)
Programmazione di rete e di sistema: file1
(08-03-06), file2
(08-03-06), file3
(16-03-03)
Caratteristiche dell'hardware: file
(16-03-03)
Il nucleo del s.o.: file
(16-03-03)
La memoria virtuale: file
(16-03-03)
Il file system: file
(24-03-03)
I device driver: file
(01-04-04)
Introduzione all'architettura strutturata dei calcolatori: file
(24-03-03)
Struttura dei calcolatori: file
(31-03-03)
Livello logico: file1
(16-04-03), file2
(16-04-03), addendum
al file2 (20-04-04), file3
(12-05-03)
La memoria cache: file
(13-05-03)
Hardware per l'I/O: file
(18-06-03)
Il linguaggio assemblatore ed il processore Motorola 68000: l'argomento
e' trattato dal testo di Hamacher (vedasi riferimento piu' sotto) nei
capitoli 4, 5. Un emulatore in ambiente Windows del processore Motorola
68000 e' presente al sito EASy68K.
La struttura del processore: l'argomento e' trattato dal testo di
Hamacher (vedasi riferimento piu' sotto) nei capitoli 8, 9.
Temi d'esame del corrente anno accademico
Prima prova in itinere del 3 maggio 2006: file .pdf
Seconda prova in itinere del 26 giugno 2006: file .pdf
Recuperi del 17 luglio 2006: parte 1 (file .pdf), parte 2 (file .pdf)
Recuperi del 12 settembre 2006: parte 1 (file .pdf), parte 2 (file .pdf)
Recuperi del 12 febbraio 2007: parte 1 (file .pdf), parte 2 (file .pdf)
Trasparenze dalle esercitazioni
Il materiale in linea dalle esercitazioni e delle prove d'esame del
corrente
anno accademico e' presente alla seguente pagina.
Temi d'esame dei precedenti anni accademici
Il materiale in linea dei temi delle prove d'esame dei precedenti anni
accademici e' presente alla seguente pagina.
Attenzione: a partire dall'A.A.
2004-2005 alcuni argomenti dell'insegnamento sono stati modificati. Per
esempio, il processore di riferimento non e' piu' il Mic-1 (e le sue
estensioni Mic-2, Mic-3) e il linguaggio assembler di riferimento non
e' piu' l' I-JVM.
Testi
G.
Pelagatti: Informatica II - Sistema operativo Linux e TCP/IP,
Esculapio,
Bologna, 2002 (nuova edizione)
C.
Bolchini, D. Sciuto: Informatica II - Sistemi Digitali, Esculapio,
Bologna, 2002 (nuova edizione)
C. Hamacher, Z. Vranesic, S. Zaky:
Computer Organization, McGraw-Hill, 2004 (fifth edition).
Edizione in lingua italiana:
Introduzione all'architettura dei calcolatori. McGraw-Hill, 2005,
traduzione a cura di Luca Breveglieri.
Altri riferimenti
Appunti del corso di Informatica 2, appunti da fotocopiare
Per approfondimenti (ed ulteriori informazioni sul linguaggio assembler
Intel 8086):
Contatti
Prima di contattare il docente, e' obbligatorio verificare che
l'informazione
richiesta non sia presente sul sito WEB dell'insegnamento (la pagina
corrente)
o nella bacheca elettronica del sito WEB
del Polo di Como.
Pertanto e' vietato:
subissare di richieste, telefonate, messagi di e-mail il
docente
– ove non strettamente necessario;
mandare messaggi che non rispettino i criteri di netiquette;
invocare richieste di gestione eccezionale del proprio caso.
Il docente puo' essere contattato per posta elettronica ().
Si ricorda di indicare nell'oggetto di ogni messaggio il proprio
cognome,
nome, numero di matricola ed insegnamento cui ci si riferisce: non
verra'
data risposta a messaggi il cui mittente non abbia rispettato i sopra
citati
criteri.
Il docente puo' essere contattato telefonicamente all'interno 7332.
Chiamando da rete pubblica, il numero telefonico e' 031-332.7332 oppure
02-2399.7332. Il docente puo' anche essere contattato telefonicamente
al
numero 333-5477997.
ritorna
al livello precedente