Programme des cours en Systèmes, Réseaux, Applications Réparties


Tronc commun

Systèmes et Réseaux (6 ECTS)

Répartition : 27h C, 33h TD-TP  - A compléter obligatoirement par un projet de système.

Objectifs :
Développer les principes fondamentaux de la conception des systèmes d'exploitation : gestion du parallélisme, gestion de l'information, allocation de ressources ; illustrer les techniques correspondantes ; introduire les principes de base des réseaux : problèmes et mécanismes liés aux transferts d'information entre ordinateurs (protocoles des couches physiques, liaison de données , réseau et transport).
 
Programme :
Programmation concurrente Processus, threads, synchronisation (exclusion mutuelle, sémaphores, moniteurs, etc.). Problèmes classiques de synchronisation (producteur-consommateur, etc.). Illustration possible avec  la programmation concurrente en Java. Mise en œuvre, noyau d'ordonnancement. Application : un petit noyau de système.

Gestion de l'information.
Nommage, liaison, application à la gestion de fichiers, à la liaison de programmes. Liaison dynamique (divers cas d'application). Cette partie doit aussi montrer l'applicabilité de ces principes aux systèmes répartis.

Gestion de ressources.
Gestion de mémoire, hiérarchie de mémoire. Mémoire virtuelle, principes, réalisation. Notions de cache, aspects quantitatifs (un peu d'éval. de perf.).  Gestion globale de ressources, problèmes d'interblocage et privation. Introduction à la sécurité, mécanismes de protection et leur mise en oeuvre.

Architecture générale d'un réseau informatique.
Organisation en couches : protocoles et interfaces

La couche physique: principe et supports existants
Mise en paquet, détection et correction d’erreurs
Un exemple de réseau local : Ethernet

Le problème du routage
IP et protocoles de routage associés

Services de transport
La récupération d’erreur par re-émission
Le contrôle de flux
Etude des protocoles de transport TCP/UDP

Contenu des TD en Systèmes
Total : 9h
Problèmes classiques de synchronisation (exclusion mutuelle, producteur-consommateur, lecteur-rédacteurs, etc.)
Principes de réalisation d'un noyau de processus
Liaison dynamique
Gestion de ressources : éviter interblocage et privation

Contenu des TP en Systèmes

TP1 (3h) Synchronisation
Programmation de problèmes élémentaires avec threads
TP2 (3h) Serveur concurrent
Réalisation d'un serveur concurrent avec threads
TP3 (3h) Gestion de fichiers et mémoire virtuelle
Entrées-sorties sur fichiers, lien avec mémoire virtuelle ; techniques de mémoire partagée

Contenu des TPs en Réseaux

TP1  (3h) Mise en place d'un réseau Ethernet entre des ordinateurs: Manipulation du matériel - Configuration système du réseau sur les machines - Observation et étude des performances du réseau suivant différents paramètres (tailles des paquets, nombre de trafics)
TP2 (6h) Etude des protocoles des couches MAC, Réseau et Transport: Principe de l'encapsulation - Observation des champs des trames circulant sur le réseau. - Observation de la variation du nombre de collisions sur le câble - Etude des différents champs des entêtes Ethernet, ARP, IP, UDP et TCP - Manipulation sans programmation des primitives de services au dessus de TCP et UDP (ouverture de connexion, envoie de données ...) et observation des paquets circulant alors sur le réseau.
TP3 (6h) Etude d'algorithme de routage: Compréhension du mécanisme de routage. Routage statique. Etude du protocole de mise à jour des tables de routages RIP.

Bibliographie sommaire :

Intergiciel et bases de données (6 ECTS)

Répartition : à définir

Contenu de la partie Intergiciel : Le middleware (intergiciel) est la couche logicielle située entre les couches basses (systèmes d'exploitation, protocoles de communication) et les applications dans un système informatique réparti. Son but est de faciliter le développement de ces applications, en masquant l'hétérogénéité des systèmes sous-jacents et les détails de leurs mécanismes, et en fournissant des interfaces normalisées de haut niveau. 

1. Systèmes répartis

   1.1. Introduction aux systèmes répartis
      - Modèle client-serveur : sockets, RPC
      - Communication : communication synchrone, communication asynchrone (à messages), communication de flux de données (par exemple des streams multimédia), communication de groupe
      - Serveurs multi-programmés (multi-threaded)
      - Service de nommage (exemple DNS)

   1.2. Aspects avancés des systèmes répartis
      - Qualité de service dans les systèmes répartis : performances, disponibilité, fiabilité
      - Techniques de garantie de qualité de service :
           - Duplication
           - Techniques de cache
           - Répartition de charge
           - Systèmes transactionnels
      - Exemples de systèmes répartis, avec illustration des techniques de qualité de service dans ces exemples :
           - Systèmes de gestion de fichiers répartis
           - Systèmes à agents mobiles, code mobile
           - Le Web comme système réparti de partage de documents
  2. Intergiciel
   - Patrons et canevas de l'intergiciel : proxy, intercepteurs, adaptateurs
   - Solutions middleware pour construction de systèmes répartis : CORBA, DCOM
   - Introduction à J2EE -(pour aspects de persistance, transactions, sécurité)

Contenu des TP en Intergiciel

TP 1 3h Programmation avec sockets Java
TP 2 et 3 (2X3h) Programmation d'applications réparties avec Java RMI
TP 4 et 5 (2X3h) Programmation d'applications réparties avec CORBA

Références bibliographiques
-----------------------------
M. Boger. "Java in Distributed Systems: Concurrency, Distribution and Persistence", John Wiley, 2001.
G. Brose, A. Vogel, K. Duddy. "Java Programming with CORBA", John Wiley 2001.
A. S. Tanenbaum, M. van Steen. "Distributed Systems: Principles and Paradigms", Prentice Hall 2002
S. Haugland, M. Cade, A. Orapallo. "J2EE 1.4: The Big Picture", Prentice Hall, 2004.
B. Krishnamurthy, J. Rexford. "Web Protocols and Practice", Addison Wesley, 2001.
D. Serain. "Middleware and Enterprise Application Integration", Springer Verlag 2002.


Modules spécialisés

Aspects avancés systèmes et réseaux (6 ECTS)

Répartition : 6h cours, 24h de travail en projets

Objectifs :
Contenu
Partie systèmes :
a) noyaux de systèmes configurables : utilisation des techniques à composants, des techniques d'adaptation. Illustration
b) noyaux multiprocesseurs
c) modèles à files d'attente, application au dimensionnement d 'un système
Partie réseaux :
a)  liens utilisés dans les réseaux de données et de télécommunication. En particulier les liens Ethernet rapides, l'ADSL et les réseaux sans fil sont étudiés ainsi qu'une variété de protocoles récents de niveau 2.

b) introduction à l'étude de la théorie des files d'attente appliquée aux réseaux, ainsi qu'un approfondissement de l'étude des mécanismes de contrôle de congestion.
c) problèmes de résolution de noms.

Contenu des TPs/TDs
Systèmes :
Mini-projet : Utilisation d'un système à composants (Think) pour la réalisation d'un noyau configurable
TD : utilisation de modèles quantitatifs pour dimensionner un système
Réseaux :
TP1 : Réseaux sans fil, manipulation du matériel, spécificités des réseaux sans fil

TD1-2 : files d'attente, gestion du trafic
TP2 : Gestion des files d'attente dans un routeur
TP3 : Étude du contrôle de congestion dans TCP
TP4 : DNS

Infrastructures et services pour le Web (6 ECTS)

Répartition :  24 H Cours, 36 H TD machine

Equipe enseignante:

Objectif.  Contenu

Panorama des technologies du Web
HTML/CSS/JavaScript
XML/XPath/XSLT/XHTML
Autour d'HTTP
Types, Architectures et technologies des services Web
Programmation PHP (la programmation Servlet/JSP est abordée en M2PGI)

Sécurité : notions et terminologies, risques et rnjeux, attaquants, proies et défenseurs (Hackers & Co, Ingénierie sociale, Honey Pot).
Notions élémentaires de cryptographie (Algo Sym/Asym, Clés secrete/publique/privées, Taille de clés, one-way hash, ...).
Introduction et construction de protocoles de communication sécurisés (SSL, SSH, PGP/GPG, PKI, Kerberos ...).
Exemple pratique avec l'ADSL et le WiFi. Attaques (sniffing, spoofing, ...) et Parades.
Exemple de sécurité là où on ne l'attend pas
Organisation de la sécurité informatique
Architecture d'un réseau securisé (VPN, tunneling TCP, ...)
Points de droit

TP : sous forme d’un mini-projet de Web dynamique avec une base de données (PHP et base MySQL ou Oracle au choix)
(mini-ECOM ultra simplifié) 4 tables SQL (Product-Order-OrderLine leur seront donnés)
Ce module requiert de la part du service informatique qu'un serveur Apache + modPHP + MySQL soient installés sur un des serveurs de l'UFR avec un accès restreint à l'Intranet
Mise en œuvre de la sécurité en Java (JCE, JSSE, JAAS, gestion de clés), Mise en œuvre du tunneling, écoute réseau WiFi ("WarDriving"), ...

A titre indicatif :
Transparents: http://www-adele.imag.fr/~donsez/cours/index.html#web
Exemples: http://www-adele.imag.fr/~donsez/cours/exemplescourstechnoweb

Bibliographie
Applied Cryptography,  Bruce Schneier (Wiley), ISBN 0-471-59756-2 (ISBN 2-84180-036-9 en VF)
IEEE Security & Privacy, catalogue électronique de la BU IMAG


Infrastructures pour le calcul à grande échelle (6 ECTS) 

Répartition : 24 h cours, 36h TP et projets

Équipe pédagogique : Sara Bouchenak, Didier Donsez, Guillaume Huard, Jean-François Méhaut, Olivier Richard
Le premier aspect couvert est l'utilisation de techniques avancées de l'inergiciel (composants, adaptation, configuration) pour faciliter la cosntruction et l'administration de grandes applications sur grappes et grilles. Le deuxième aspect contient les principaux éléments d'architecture pour le calcul à haute performance. La troisième partie constitue le cœur de cet enseignement et reprend les principales approches algorithmiques et leurs mises en oeuvre au travers d'environnements. Le cours se termine par une étude de quelques applications et l'analyse quantitative et qualitative des performances.

Intergiciel à grande échelle : Composants et adaptation
Notion de composant logiciel : des objets aux composants
Fondements des modèles à base de composants
Exemples d'illustration : Fractal, OSGi, etc.
Constructions de base : intercepteurs, adaptateurs, etc.

Études de cas, avec mini-projets, exemples d'utilisation, utilisant notamment du logiciel libre.

Administration, déploiement, configuration de grands systèmes

Architectures pour le calcul parallèle

     - Processeur (vectoriel, superscalaire, hyperthreading)
     - Multi-processeurs à mémoire partagée (SMP, cache, NUMA)
     - Multi-processeurs à mémoire distribuée (grappes de PC, latence,
       débit)
     - Réseaux à haut débit (Myrinet, SCI, Quadrics,...)

Algorithmique et programmation parallèle

     - Techniques de décomposition
     - Interaction (communications, partage de données)
     - Modèles d'algorithmes parallèles

     - Environnements MPI etOpenMP

Applications parallèles et évaluation de performances

     - Algorithmes matriciels (multiplication de matrice, produit
     scalaire)
     - Algorithmes de recherche pour des problèmes d'optimisaton
     discrète(profondeur, largeur, anomalie d'accélération)
     - Métriques de performance (accélération, efficacité,...)
     - Granularité, extensibilité,...

Bibliographie

Szyperski, C. (2002). Component Software - Beyond Object-Oriented Programming. Addison-Wesley.
          608 pp
AspectJ : http://aspectj.org
Bruneton, É., Coupaye, T., and Stefani, J.-B. (2002a). The Fractal composition framework. ObjectWeb
          Consortium. http://fractal.objectweb.org
Halloway, S. D.  (2002). Component Development for the Java Platform. Addison-Wesley.
          334 pp
Laddad R. (2003). AspectJ in Action, Manning
   
A. Grama, A. Gupta, G. Karypis, V. Kumar  Introduction to Parallel Computing , Addison-Wesley, 2nd édition, 2003

Y. Robert, A. Legrand, Algorithmique Parallèle; cours et problèmes, Dunod, 2003