Mis à jour le 30 janvier 2006
DM: Modéliser le système de fichiers

DM: Modéliser le système de fichiers

À rendre pour le vendredi 18 février 2005, 18h00.

Voir les Réponses aux questions ci-dessous.

Sujet

Le DM consiste à terminer le TD sur la modélisation du système de fichiers au moins jusqu'à la question 3, opérations sur les fichiers, incluse. Vous pouvez librement reprendre la partie corrigée du TD.

Si vous n'arrivez pas à réaliser la question 3 dans sa totalité, vous pouvez quand même y répondre partiellement, par exemple en n'implémentant que la lecture de fichiers. Il est important que chaque fonctionalité implémentée soit correcte: par exemple, si manifestement votre fonction write ne fonctionne pas, alors retirez-là. C'est mieux que de soumettre une version incorrecte! (Mais, bien sûr c'est encore mieux de la déboguer afin de pouvoir la soumettre.)

La question 4, opérations sur les répertoires, est facultative. Non pas qu'elle ne soit pas intéressante —bien au contraire, elle est très pédagogique!— mais réaliser le TD dans sa totalité peut-être long, en particulier pour ceux ne qui ne sont pas encore très à l'aise. Bien sûr, vous êtes encouragés à avancer progressivement dans la question 4, et à aller aussi loin que vous le pourrez.

Bon DM!

Dépôt des DMs

Pour déposer vous fichiers, récupérez le fichier Makefile. Il vous faudra également le fichier de tests Simplefs.tgz. Vérifiez d'abord que tout va bien en faisant simplement:
      
    make all
Cela compile et exécute les tests dans un fichier testSimplefs.out. Cela crée le fichier testSimplesfs,out même si les test échouent. Si vous n'arrivez pas à passer effectuer les tests, alors expliquer brièvement pourquoi fichier testSimplefs.FAILED que vous éditez à la main.

Si vous avez commencé la partie 4, alors vous devez avoir des fichiers dirfs.mli et dirfs.ml qui compilent et ils seront déposés. Si vous abandonnez la partie 4 et ne voulez pas la rendre, alors effacez vos fichiers dirfs.mli et dirfs.ml, ou placez les dans un sous-répertoire.

Pour déposez, faite simplement:
      
    make deposer
pour déposer le DM. Vous faire plusieurs dépots de suite, le dernier écrasant le précédent. Vous pouvez également voir ce que vous avez déposé avec:
      
    make voir
Et si vous voulez un peu de nettoyage, une fois que tout est fini,
      
    make clean

Réponses aux questions

  1. Pourrait-on avoir une procédure de tests?

    L'énoncé contient maintenant un programme de tests testSimplefs.ml (qui a besoin du fichier Simplefs.tgz) pour la question 3, qu'il suffit de compiler et d'exécuter. (Voir les détails dans le sujet)

    Il y a également un fichier mestests.ml d'exemples de petits tests que vous modifier à volonté (voir les détails ajoutés dans le sujet) pour faire la mise au point.

    Il y a aussi un fichier showdisk.ml qui permet de visualiser un fichier comme un disk.

    Enfin pour ceux qui auront abordé la partie 4, vous pouvez tester en récupérant le programme testDirfs.ml (qui a besoin du fichier Dirfs.tgz).

  2. Implémentation de la liste des blocs libres

    On utilise des blocs libres pour former une liste de blocs contenant les numéros des blocs libres, comme décrit dans le cours. Le bloc de tête de cette liste est partiellement rempli de numéros de blocs libres.

    On peut trouver le dernier numéro de bloc libre soit par calcul à partir du nombre total de blocs libres, soit en parcourrant le bloc de tête (après avoir sauté sa première case qui sert au chainage) et jusqu'à trouver la dernière case de numéro non nul.

    La version actuelle de Simplefs.dbg permet les deux stratégies, mais une version précédente ne permettait que la première stratégie, il faut donc raffraîchir ce fichier si besoin (Mon Feb 7 15:40).

  3. Peut-on avoir un Makefile pour compiler le projet?

    Le fichier Makefile pour faire le dépôt permet également de compiler vos fichiers et les tests, voir les détails ajoutés dans le sujet.

  4. Dans mkfs, comment peut-on initialiser les inodes? Voir dans les indications ajoutées dans le sujet.

Ce document a été traduit de LATEX par HEVEA