Table of Contents

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.

News

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:

In alternativa, e' possibile usare questo testo:

Inoltre, i seguenti testi liberamente distribuiti sono adottati per le esercitazioni:

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)

Data Argomento Materiale Tipo
9/3 Introduzione, programmazione C Comer cap 1, ALP cap 1 L
16/3 Strumenti di amministrazione di sistema Slides,Materiale E
22/3 Strumenti di sviluppo GaPiL (app D) E
23/3 Programmazione shell ABS E
30/3 Strumenti di amministrazione di rete Slides,Materiale, Comer cap 4 E
31/3 Presentazione dei progetti
6/4 Concorrenza: Processi ALP cap 3, GaPiL cap 3 L/E
7/4 Concorrenza: Thread e mutua esclusione ALP cap 4, Futexes are tricky and other materials L/E
14/4 Programmazione con i Socket GaPiL cap 15-17, ALP cap 5.5, Comer cap 5 L/E
20/4 Programmazione client-server con concorrenza Comer cap 2, 3, 6-8, 15, 16, ALP L/E
27/4 Programmazione client-server con concorrenza ALP L/E
28/4 Segnali Avanzati e Sockets Slides Materiale E
5/5 Remote Procedure Call Comer cap 19-22, rpcgen Programming Guide altro materiale L
11/5 Socket UDP, RAW, IPv6 Slides,Materiale E
12/5 Network File System Comer cap 23, 24 L/E
19/5 Firewalling Slides,Materiale E
25/5 Network Address Translation e Tunnels Slide,Materiale Comer cap 17, 18 E
26/5 Introduzione alla programmazione di moduli kernel Slides,Materiale E
1/6 Deadlock & Sincronizzazione Comer cap 28 L
8/6 Programmazione di moduli kernel per Netfilter Slide E
9/6 Reti wireless Slide L
15/6 Sicurezza delle reti Wi-Fi Slide E
16/5 Sicurezza di sistema Slide E
22/6 Esercitazioni riassuntive E
23/6 Esercitazioni riassuntive E

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):

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.