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 :
- Silberschatz, Galvin, Gagne, Operating System Concepts, 6th ed.,
Addison-Wesley, 2001Tanenbaum & Woodhull, Operating Systems Design
& Implementation, Prentice Hall, 2000
- Tanenbaum & van Steen, Distributed Systems, Prentice Hall,
2002 (pour petite partie (nommage, fichiers essentiellement)
- Laurent Toutain, Réseaux locaux et Internet (des
protocoles à l’interconnexion) – 2ème Edition - HERMES.
- James Kurose et Keith Ross, Analyse structurée des
Réseaux - des applications de l’Internet aux infrastructures de
télécommunication - - 2e Edition - Pearson Education
- Andrew Tanenbaum, Réseaux, 4ème Edition -
InterEditions
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 :
- Objectifs
: a) introduire les aspects non couverts dans les cours de tronc
commun, et donc la connaissance est nécessaire aux
spécialistes ; b) donner un aperçu des avancées
récentes en systèmes et réseaux, illustrées
par des exemples.
- Aspects couverts : modèles quantitatifs et
évaluation de systèmes et réseaux ; noyaux de
systèmes configurables, noyaux de systèmes
embarqués, systèmes multiprocesseurs ; couche liaison dans
les réseaux, gestion de charge, réseaux sans fil, mobiles.
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.
- Donner
les bases permettant de mettre en œuvre, d'administrer et d'utiliser
les services bâtis sur l'infrastructure du Web.
- Aspects
couverts : Technologies et applications du web (protocoles,
représentation de données, organisation de serveurs,
réalisation de services) ; éléments
d'administration ; principes et mise en œuvre de la
sécurité.
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
- Objectifs
: introduire les principes de conception et les outils permettant de
réaliser des applications à grande échelle
utilisant notamment les grappes et grilles de calcul.
- Aspects
couverts : Composants logiciels, conception, support intergiciel ;
techniques de configuration et d'adaptation ; architectures et
algorithmique parallèles.
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