|
Cette page pourra être mise à jour en apportant éventuellement des précisions sur les projets qui seront effectivement choisis.La majeure 2 comporte un projet obligatoire pour tous. Ce projet a lieu dans l'un au choix des cours enseignés. Cette page décrit les projets rattachés au cours système.
README
expliquant, en ASCII, succinctement votre projet, son
architecture, comment le tester, etc. (par exemple 50 à 200 lignes).rsh
pour remote shell permet depuis
une machine A d'exécuter des commandes sur une machine distante B. La
commnade rcp
permet de transférer des fichiers entre une machine locale A
et une machine distante B.
On se propose d'écrire un service similaire rcaml
permettant
à un programme OCaml tournant sur une machine A d'éxécuter des
appels systèmes sur une machine B distante et de se servir de ce
mécanisme pour implémenter rcp
en OCaml.rcaml
pour fournir une implémentation
de rcp
réalisant l'échange de fichiers entre la machine A et la machine
B avec, comme pour rcp
la possibilité de préserver les permissions et
les dates de modification ainsi que les copies récursives.rsync
permet la copie récursive de fichiers entre machines
distantes (reliées par une connexion relativement lente) de façon efficace.
L'idée principale est de limiter le transfert entre les deux machines aux
données qui diffèrent. Comme première approximation, on peut avant de faire
le transfert d'un fichier de la machine A vers la machine B comparer les
clés de hash de ce fichier (par exemple MD5, implanté par le module Digest
de Ocaml) sur les machines A et B et
ne copier le fichier que si ces clés diffèrent. Afin de bien se comporter
également sur de gros fichiers, par exemple des bases de données, on peut
raffiner cette méthode en découpant le fichier en blocs et en prenant le
bloc plutôt que le fichier comme unité de transfert. On pourra également
utiliser des coprocessus pour permettre au processeurs d'effectuer des
calculs pendant les attentes dues aux accès disques.HTTP/1.1
(mais on n'en couvrira qu'un petit sous-ensemble).GET
avec la possibilité de vérifier si le document a changé
depuis une certaine date.
tracker
) maintient, pour chaque fichier
(identifié globalement par un numéro supposé unique), la liste des
machines qui l'ont contacté au sujet de ce fichier. Digest
d'Ocaml en particulier), et
permettre de re-télécharger un bloc dont la checksum est erronée. On
pourra aussi transmettre toutes ces informations au tracker, afin
qu'elles soient diffusées à tous les clients.Ce document a été traduit de LATEX par HEVEA