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 Sistemi Operativi di Stallings. 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 si puo' far riferimento al sito del relativo comitato tecnico.
I sistemi RAID sono trattati anche nel capitolo 11 del testo di Sistemi Operativi di Stallings.
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. 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
Un classico testo sui cluster e' quello di Pfister.
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.
5. 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.
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.
6. Tecniche di base per sistemi distribuiti
Sincronizzazione dei clock e algoritmo di
Lamport.
Mutua esclusione distribuita.
Elezione del coordinatore.
Deadlock distribuiti.
Distributed snapshot.
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 nei capitoli 11 e 13.2.4 della vecchia edizione italiana del testo I
Moderni Sistemi Operativi di Tanenbaum.
7. 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, 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' 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' consultare 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 Web e' quello
del W3C, il protocollo HTTP e' descritto anche
nelle RFC 1945 (HTTPv1.0) e RFC
2616 (HTTPv1.1).
8. 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 8 del testo Computer
networks.
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.
Per quanto riguarda le problematiche di attacchi e vulnerabilita' dei sistemi si puo' fare
riferimento al sito CVE (Common Vulnerabilities and Exposures) ed alla classificazione degli attacchi del MITRE.
9. 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.
Bibliografia
D. P. Bovet, M. Cesati, Understanding the Linux kernel, O'Reilly, 2005
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, Pearson, 2016
W. Stallings, Operating systems, 9 ed., Pearson, 2018
A.S. Tanenbaum, N, Feamster, D. J. Wetherall, Computer networks, 6th edition, Pearson, 2021
A.S. Tanenbaum, I moderni sistemi operativi, Jackson Libri, 1994
A. S. Tanenbaum, T. Austin, Structured Computer Organization, 6 ed., Prentice Hall, 2013