Piattaforme Software per la Rete
Questa pagina e' dedicata al supporto per il modulo 2 del corso Piattaforme Software per la Rete, offerto per i corsi di laurea di primo livello in Ingegneria Informatica e Ingegneria delle Telecomunicazioni.
Il modulo 2 concerne la programmazione di sistema, l'implementazione di applicazioni client-server, l'uso delle API socket POSIX/Linux per TCP e UPD, e il supporto di sistema operativo e di virtualizzazione per sistemi mobili.
Obiettivi del modulo
Obiettivo del corso e' consolidare le capacita' di programmazione a basso livello, e fornire un'ampia competenza nella costruzione di software che interagisce con la rete. Tutto il modulo 2 ha, per questo, una forte impronta progettuale e pratica.
Idealmente, per gli studenti di Ingegneria Informatica, il modulo 2 supplementa il corso di Architettura dei Calcolatori e Sistemi Operativi, ed e' fortemente sinergico con i corsi di Sistemi Distribuiti e Sistemi Embedded 2 proposti nella laurea magistrale. Rispetto al primo e al terzo, completa il trattamento dei Sistemi Operativi, mentre rispetto al secondo fornisce una visione a basso livello dei meccanismi di base necessari per l'implementazione dei sistemi distribuiti.
Struttura del modulo
Il modulo e' composto da 30 ore di lezione, e 20 di esercitazione. Le esercitazioni del corso sono affidate all'Ing. Alessandro Barenghi.
La valutazione avviene attraverso un esame scritto, che puo' essere sostituito da un progetto concordato con il docente.
Materiale didattico
I libri adottati per il corso sono:
- B. Kernighan & R. Pike, The Practice of Programming, Addison-Wesley
- D. Comer & D. Stevens, Internetworking with TCP/IP, Vol. III: Client-Server Programming and Applications, Linux/Posix Sockets Version
In alternativa, e' possibile usare questo testo:
- S. Seth & M. A. Venkatesulu, TCP-IP Architecture, Design and Implementation in Linux, Wiley-IEEE Computer Society
Inoltre, i seguenti testi liberamente distribuiti sono adottati per le esercitazioni:
- CodeSourcery LLC, Advanced Linux Programming Guide (ALP)
- S. Piccardi, Guida alla Programmazione in Linux (GaPiL)
- M. Cooper, Advanced Bash Scripting Guide (ABS)
Infine, saranno rese disponibili slide e dispense per alcuni argomenti avanzati non coperti dal materiale elencato qui sopra.
Programma dettagliato (2012)
Data | Argomento | Materiale | Tipo |
---|---|---|---|
Prima parte | |||
7/3 | Introduzione, programmazione C | Practice of Programming | L |
8/3 | Pratica di programmazione, librerie dinamiche | Practice of Programming | L |
14/3 | Strumenti di amministrazione di sistema | Slides,Materiale | L |
15/3 | Programmazione shell | ABS | L |
27/3 | Ingegnerizzazione del software in C | Practice of Programming, up to chapter 6 | L |
28/3 | Laboratorio 1: Programmazione C & shell | Mercurial, Doxygen, GDB, GNU Make | Lab |
Seconda parte | |||
29/3 | Strumenti di amministrazione di rete | Slides,Materiale, Comer cap 4 | E |
30/3 | Firewalling, Network Address Translation e Tunnels | Slides,Materiale Firewall, Materiale NAT/Tunnels | E |
3/4 | Sicurezza di sistema | Slide | E |
4/4 | Laboratorio 2: Programmazione C | Mercurial, Doxygen, GDB, GNU Make | Lab |
9/5 | Laboratorio A: amministrazione di rete | Materiale | E |
12/4 | Presentazione dei progetti | S | |
Terza parte | |||
18/4 | Programmazione con i Socket | GaPiL cap 15-17, ALP cap 5.5, Comer cap 5 | L |
10/5 | Programmazione client-server con concorrenza | ALP | L |
16/5 | Laboratorio 3: Socket | Lab | |
17/5 | Segnali Avanzati e Sockets | E | |
23/5 | Socket UDP, RAW, IPv6 | E | |
24/5 | Remote Procedure Call | Comer cap 19-22, rpcgen Programming Guide altro materiale, codice visto a lezione | L |
30/5 | Laboratorio 4: Remote Procedure Call | Lab | |
5/6 | Network File System | L | |
Quarta parte | |||
31/5 | Introduzione alla programmazione di moduli kernel | E | |
7/6 | Programmazione di moduli kernel: sincronizzazione | E | |
13/6 | Laboratorio B: Programmazione moduli del kernel | (laboratorio in aula non informatizzata: portare un laptop!) | E |
14/6 | Reti wireless e Sicurezza delle reti Wi-Fi | L/E | |
20/6 | Esercitazioni riassuntive | netcat | L/E |
21/6 | Esercitazioni riassuntive | rpc | L/E |
Programma dettagliato (2011)
Modalita' d'esame
Il corso prevede un esame scritto, sostituibile in parte (in generale per un singolo modulo) da un progetto.
Temi d'Esame:
Progetti
Ecco la lista dei progetti disponibili di qui a Giugno 2012:
Progetti ancora disponibili (lista aggiornata al 14/6/2012 ore 10:00):
- Tutti quelli presentati il 13/6, tranne il progetto riguardante la GUI per fs-uae
Progetti 2011 (non piu' disponibili)
Reduction Optimization
Analyzing large datasets often requires computing summary indices (e.g., the mean of a population). Such computation can be easily parallelized exploiting data partitioning – each thread accesses an indipendent slice of the data and computes a partial index. Later, partial indices must be aggregated to obtain a global index. Such aggregation can be performed in different flavors, e.g. concurrently or by a master thread. Concurrent aggregation requires synchronizations, and both operations must be implemented efficiently.
A paper on this work.
Optimal Barrier Tree Placement on NUMA Architectures
The implementation of a tournament barrier organizes threads in a tree. Sibling threads in such a tree should be allocated to neighbour cores in a NUMA architecture. The project aims at optimizing the synchronization tree taking into account the hardware geometry.
TLS Cache Implementation
In modern architectures, it is possible to hold variables that are globally visible in a thread, but not to other threads in a special memory region called Thread Local Storage. Assuming one wants to store an unbounded number of data items in the TLS, it is necessary to define a caching policy, since there is only limited space in the hardware TLS. The project aims at implementing a fast caching policy within a reduction and synchronization library to cache synchronization data structures.
Optimized Reduction Experimentation on SESC
SESC is an architectural simulator for an arbitrary number of processing units (cores). Tournament barrier algorithm outperform standard barrier algorithms when using more than 16 threads. The project aims at configuring SESC to represent different many-core architectures, and experimenting optimized reduction and synchronization implementations on it.
Each of these projects is suitable for 2 students (the last can be extended up to 4 students).
Parallel Benchmarks on Embedded Many-Core Platforms
Multi- and many-core systems are gaining ground in mobile platforms (see e.g. NVidia Tegra and PowerVR accelerators). The goal of this project is to benchmark a new many-core platform by porting several existing programs, chosen from the popular Parsec and NAS benchmark suites.
Each application can be ported by 1 to 2 students.