Impianti Informatici

Corso di Laurea in Ingegneria Informatica

Docente: Pietro Baroni

Torna a pagina principale

                        Programma dettagliato del corso con riferimenti bibliografici e a siti Web

I contenuti del corso di Impianti Informatici derivano dall'elaborazione e sintesi di materiale proveniente da piu' fonti, sia di natura bibliografica tradizionale sia accessibili via Internet. Per la natura stessa degli argomenti trattati, il programma del corso e' da considerarsi altamente dinamico e soggetto ad aggiornamenti in ogni nuova edizione.

Scopo di questa pagina e' fornire una traccia sufficientemente dettagliata del contenuto del corso tenuto nell'anno accademico corrente e indicare, nei limiti del possibile, i riferimenti alle fonti e/o a materiale utile per approfondimenti aggiuntivi.

Ogni commento, suggerimento o segnalazione di errore e' benvenuto: scrivete !

 

1. Concetti introduttivi 

Definizione di impianto informatico. Comunicazione ed elaborazione. 
Struttura generale di un impianto informatico: componenti + rete di interconnessione. 
Tipologie di interconnessione (bus, switch, multistage). 
Struttura dei componenti: unitą funzionale + communication assist. 
Communication abstraction. 
Concetti di latency, bandwidth e costo di un'operazione.
Costi di comunicazione: overhead, delay, contention, overlap. 
Frequenza di comunicazione e replicazione. 
Tendenze tecnologiche nell'evoluzione dei sistemi di elaborazione e delle richieste di performance. 
Tipi di parallelismo (bit level, instruction level, thread level). 

Riferimenti
Il principale riferimento per la parte 1 e' il testo Culler-Singh-Gupta (capitolo 1).

 

2. Architetture dei sistemi di elaborazione

Tassonomia di Flynn. 
Architetture UMA basate su bus. 
Consistenza della cache: snoopy cache e protocollo MESI. 
Split transaction bus. 
Architetture UMA basate su crossbar switch e reti Omega. 
Esempi commerciali. 
Sistemi operativi per multiprocessori: requisiti e caratteristiche. 
Symmetric Multi-Processing (SMP).
Concetto di scalable multiprocessing. 
Architetture NUMA. 
NC-NUMA. 
CC-NUMA: problemi di coerenza della cache e uso di directory. 
Directory memory-based, cache-based e gerarchiche. 
Meccanismi di scambio di messaggi: classificazione di paradigmi bloccanti e non-bloccanti. 
Esempi di protocolli per directory memory-based. 
Esempi di protocolli per directory cache-based (SCI: Scalable Coherent Interface). 
Cenni alle architetture COMA. 
Architetture basate su scambio di messaggi. 
Massively Parallel Processors.
La parallelizzazione di un algoritmo sequenziale: discussione di un esempio.
Reti di interconnessione: definizione e e parametri caratteristici. 
Topologie: stella, full interconnect, tree, butterfly, Benes network e fat tree, ring, mesh, torus, ipercubi. Routing nelle reti ad alte prestazioni. 
Esempi di architetture complete di high-performance computer. 
Il report top500.

Riferimenti
Il materiale presentato nella parte 2 e' discusso in forma sintetica nel capitolo 8 del testo Structured Computer Organization.
Gli stessi argomenti sono discussi in modo estremamente dettagliato nel testo Culler-Singh-Gupta (capitoli da 5 a 10).
I sistemi operativi per multiprocessori sono trattati nel capitolo 10 del testo di Stallings adottato per il corso di Sistemi Operativi. Interessanti dettagli sul supporto SMP in Linux sono forniti nel capitolo 11 del testo Bovet-Cesati.
L'esempio di parallelizzazione di un algoritmo sequenziale e' tratto dal capitolo 9 del testo di Pfister.
Il sito top500 propone la classifica mondiale dei calcolatori ad alte prestazioni e contiene numerose informazioni e link utili sull'argomento.

 

3. Input/Output ad alte prestazioni

High performance I/O: concetti base. 
Sistemi RAID: tipologie e caratterizzazione. 
Interfaccia SCSI.
Esempi di canali di I/O e System Area Networks (HIPPI, Myrinet, Fibre Channel). 
Esempi di disk array e sistemi di I/O commerciali. 
Backup: pianificazione e classificazione.



Riferimenti
Il materiale presentato nella parte 3 e' trattato in modo completo nei capitoli 1 e 2 del testo di May.
Una trattazione parziale si trova anche nel capitolo 2 del testo Structured Computer Organization.
Per approfondimenti sull'interfaccia SCSI un buon punto di partenza e' la relativa sezione nel sito PCGuide
I sistemi RAID sono trattati anche nel capitolo 11 del testo di Stallings adottato per il corso di Sistemi Operativi.
Il sito del consorzio Storage Networking Industry Association (SNIA)  e' un buon punto di partenza per approfondimenti sui sistemi di storage.
Vi sono inoltre siti di associazioni collegate a tecnologie di interconnessione come Fiber Channel Industry Association, Infiniband Trade Association, PCI Special Interest Group.

 

4. Elementi di affidabilitą degli impianti

Probabilita' di guasto, MTTF, failure rate. Distribuzione esponenziale. Combinazioni serie e parallelo: esempi di applicazione. Guasti con dinamica: esempio di passive standby con switch. MTTR e MTBF, availability. Esempi di valutazioni di affidabilita' di sistemi RAID. 

Riferimenti
Il materiale presentato in questa parte e' trattato in qualunque testo sull'affidabilita' dei sistemi e in particolare nel testo di Pecht.

5. Cluster

Concetto di cluster e loro classificazione. 
Tecniche di load balancing.
Esempi di cluster commerciali e open-source.
Cenni alle librerie PVM e MPI.

Riferimenti
I cluster sono parzialmente trattati nel capitolo 13 del testo di Stallings adottato per il corso di Sistemi Operativi.
Cenni alle tecniche di load-balancing sono presenti sono presenti nella sezione 4.6 del testo Menasce'-Almeida.
Le librerie PVM e MPI sono trattate nel capitolo 14 del testo Dowd-Severance.
Un esempio di load-balancer ed una breve trattazione sul load-balancing sono fornite da un articolo sul Linux Journal.
Per esempi specifici di cluster si segnalano:
- il sito del progetto Linux Virtual Server;
- un'introduzione alle tecnologie cluster Windows;
- documentazione tecnica sulla tecnologia di clustering e load balancing Sysplex

 

6. Architettura client/server e middleware

Architettura client-server: definizione e tipologie.
Modelli Benson, Gartner group e Winsberg. 
Architetture 2-tier e 3-tier. 
Architetture Web-based.
Middleware: tipologie (message oriented, TPM, RPC, ORB). 
Funzionamento RPC. 
Oggetti distribuiti: CORBA, DCOM, RMI. 
Problematiche di progetto di sistemi client-server: stateful vs. stateless server, gestione anomalie, scelta protocollo trasporto, comunicazione sincrona e asincrona. 
Sistemi operativi di rete e distribuiti: classificazione e tipi di servizi forniti.

Riferimenti
Il testo Loosley-Douglas offre nel capitolo 2 una esauriente discussione delle diverse definizioni e classificazioni delle architetture client/server e nel capitolo 15 una discussione e classificazione del middleware.
In modo piu' sintetico gli stessi argomenti nonche' gli altri contenuti di questa parte sono trattati nel capitolo 13 e nell'Appendice B (CORBA) del testo di Stallings adottato per il corso di Sistemi Operativi.
Per un esempio di definizione di un meccanismo di RPC si possono esaminare le RFC 1831(RPC Protocol), 1832(XDR), 1833(RPCBIND).
Per lo standard CORBA si veda il sito ufficiale gestito da OMG.
Per DCOM si veda la relativa documentazione on line.
Per RMI si veda qualunque testo non elementare sul linguaggio Java o la relativa documentazione on line.

 

7. Tecniche di base per sistemi distribuiti 

Sincronizzazione dei clock e algoritmo di Lamport. 
Mutua esclusione distribuita. 
Elezione del coordinatore. 
Deadlock distribuiti. 
Distributed snapshot. 
Il problema dei generali bizantini. 
Tecniche di replicazione.

Riferimenti
Gli algoritmi distribuiti sono trattati estensivamente nel testo Chow-Johnson.
In forma piu' sintetica gli argomenti di questa parte sono reperibili nel capitolo 14 del testo di Stallings adottato per il corso di Sistemi Operativi e nei capitoli 11 e 13.2.4 della vecchia edizione italiana del testo I Moderni Sistemi Operativi di Tanenbaum.

 

8. Servizi software distribuiti

Concetto di name service. 
DNS: struttura e funzionamento. 
NetBIOS e NetBEUI: servizi forniti, modalita' di funzionamento broadcast e WINS. 
Distribuzione di task. 
Cenni al protocollo TELNET. 
Migrazione di processi e applicazioni. 
Algoritmi sender-initiated, receiver-initiated, con coordinatore. 
Condivisione di file. 
Cenni al protocollo FTP. 
File system di rete e distribuiti. 
Semantiche di condivisione dei file. 
NFS: architettura e meccanismo di funzionamento. Mount remoto, lookup, autenticazione.
Protocollo SMB (Server Message Block).
Protocolli di supporto alla gestione di reti: DHCP, SNMP.
Condivisione utenti: NIS.
Servizi di directory: X.500, LDAP, cenni ad Active Directory.
Servizi di posta elettronica: protocolli SMTP e POP3, standard MIME.
Servizio Web: procotollo HTTP.

Riferimenti
Per i concetti generali e' possibile riferirsi ai capitoli 12 e 13 della vecchia edizione italiana del testo I Moderni Sistemi Operativi di Tanenbaum.
Per una trattazione piu' ampia e dettagliata dei concetti generali si puo' utilizzare il testo Chow-Johnson
Il servizio DNS e' trattato nel capitolo 7 del testo Computer networks di Tanenbaum, inoltre e' possibile riferirsi direttamente alle RFC 1034(DOMAIN NAMES - CONCEPTS AND FACILITIES), 1035(DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION), 1033(DOMAIN ADMINISTRATORS OPERATIONS GUIDE).
NetBIOS su TCP/IP e' definito nelle RFC 1001(CONCEPTS AND METHODS) e 1002(DETAILED SPECIFICATIONS) Su NetBIOS e dintorni e' disponibile varia documentazione in rete, ad esempio quella "ufficiale" sul sito Microsoft.
Il protocollo TELNET e' definito nella RFC 854.
Il protocollo FTP e' definito nella RFC 959.
Una buona descrizione generale di NFS si trova nel capitolo 17 del testo Silberschatz-Galvin. Per avere maggiori dettagli e seguire l'evoluzione delle varie versioni consultare le RFC 1094(NFSv2), 1813(NFSv3), 3010(NFSv4).
Per il protocollo SMB si puo' consultare il sito Samba (in particolare il relativo tutorial), un articolo relativo a CIFS sul sito Microsoft o anche un minitutorial indipendente.
DHCP e' specificato nella RFC 2131.
SNMP e' descritto nel capitolo 7 del testo Computer networks di Tanenbaum,  ed e' specificato in una varieta' di RFC che coprono le diverse versioni a partire dalla RFC 1157 (e dintorni), fino alla serie che inizia con la RFC 2570.
Per il NIS si puo' consultare il relativo HOW-TO.
Lo standard X.500 ha un suo sito di riferimento, LDAP e' specificato nella RFC 1777,  per Active Directory si puo' consultate il sito Microsoft.
SMTP e' specificato nella RFC 821, POP3 nella RFC 1939, MIME nella RFC 2045.
Il sito di riferimento per tutto cio' che riguarda il World Wide Wed e' quello del W3C, il protocollo HTTP e' descritto anche nelle RFC 1945 (HTTPv1.0) e RFC 2616 (HTTPv1.1).


9. Sicurezza degli impianti informatici

Crittografia: principi e requisiti.
Crittografia simmetrica (a chiave privata) e asimmetrica (a chiave pubblica).
Firma digitale e certificazione delle chiavi pubbliche.
Il problema dell'autenticazione.
Schemi di autenticazione ed esempi di attacchi.
Cenni a Kerberos.
Esempi di protocolli sicuri:  IPSec, SSL, SSH.
Firewall: tipologie e classificazione.
Esempi di attacchi informatici e relative contromisure.

Riferimenti
Alcuni dei concetti relativi a questa parte sono trattati nel capitolo 7 del testo Computer networks di Tanenbaum.
Un testo con taglio didattico interamente dedicato alle tematiche di sicurezza e' Cryptography and network security di Stallings che copre ampiamente gli argomenti sopra elencati.
Kerberos v5 e' specificato nella RFC 1510.
Per dettagli su IPSec e le numerose RFC collegate e' possibile riferirsi direttamente all'apposito comitato IETF.
Esistono siti dedicati alle implementazioni open source di SSL e SSH.
In rete sono presenti svariati documenti sui firewall, tra i quali il seguente firewall tutorial.
Per quanto riguarda le problematiche di attacchi e vulnerabilita' dei sistemi il principale riferimento mondiale e' il CERT.

Bibliografia

D. P. Bovet, M. Cesati, Understanding the Linux kernel, O'Reilly, 2001

R. Chow, T. Johnson, Distributed Operating Systems & Algorithms, Addison Wesley, 1997

D. E. Culler, J. P. Singh, A. Gupta, Parallel computer architecture: a hardware/software approach, Morgan Kaufmann, 1999

K. Dowd, C. Severance, High performance computing, O' Reilly, 1998

C. Loosley, F. Douglas, High-performance client/server, Wiley, 1998

J. M. May, Parallel I/O for high performance computing, Morgan Kaufmann, 2001

D. A. Menasce', V. A. F. Almeida, Capacity planning for Web performance, Prentice Hall, 1998

M. Pecht, Product Reliability, Maintainability, and Supportability Handbook, CRC Press, 2009

G. F. Pfister, In search of clusters, 2nd edition, Prentice Hall, 1998

A. Silberschatz, P. Galvin, Operating System Concepts, 5th edition, Addison-Wesley, 1997 (anche in versione italiana, Sistemi Operativi, quinta edizione, Addison-Wesley, 1998

W. Stallings, Cryptography and network security, Prentice Hall, 1998

W. Stallings, Operating systems, 4 ed., Prentice Hall, 2001 (disponibile anche in versione italiana: W. Stallings, Sistemi Operativi, Jackson Libri)

A.S. Tanenbaum, Reti di Computer, terza edizione, UTET Libreria, 1997 (oppure nella corrispondente versione inglese: Computer networks, 3rd edition, Prentice Hall, 1996)

A.S. Tanenbaum, I moderni sistemi operativi, Jackson Libri, 1994

A. S. Tanenbaum, Structured Computer Organization, 4 ed., Prentice Hall, 1999

 

Torna a pagina principale