MASTER 1 INFORMATIQUE	LILLE 1
Architecture des systemes d'exploitation

-------------------------------------------------------------------------------
Création d'un système de fichier en utilisant un disque dur virtuel

	par Rémi Melisson && Erik Clairiot
-------------------------------------------------------------------------------



1/ Statut de l'application
__________________________

Actuellement, cette application contient :
 - Bibliothèque d'utilisation du disque dur virtuel
 - Gestion et création du Master Boot Record, et volumes associés
 - Gestion de l'allocation et libération des blocs du disque, selon notre politique choisie
 - Bibliothéque de création, modification et d'accès aux fichiers du disque
 - Gestionnaire CLI permettant de partitionner le disque dur
 - Et beaucoup d'implémentations cachées
 
 
2/ Installation de l'application
________________________________

A votre disposition, uniquement les fichiers sources et d'entêtes. Si vous ne possédez pas le support de disque virtuel, vous ne pourrez pas vous servir de ce système.
Nous fournissons un fichier Makefile, un simple % make compilera toutes les commandes qui pourront vous être utile.

Le répertoire par défaut supposé contenir la librairie hardware est le dossier "lib/". Le plus simple pour vous est de copier cette librairie dans ce dossier, sous le doux nom de "hardware.lib". Sinon, modifiez le fichier Makefile en conséquence, notamment la variable "LIBS" en haut de fichier.

La compilation produit moults fichiers, qui correspondent chacun à une commande bien précise. Nous les détaillerons çi-après.

PS: Une version avec la librairie hardware existe, et est disponible à l'adresse : http://apps.chesstux.com/filesystem/fs-lib.tar.gz


3/ Structure de l'application
_____________________________

Décrivons brièvement ce à quoi chaque fichier source (représenté par le même nom que son entête) correspond, de bas à haut niveau :

Bibliothéques
-------------

 - drive.h : Gére tous les déplacements de tête de lecture, interruptions matérielles, copie et lecture dans les registres du disque
 
 - mbr.h : Fonctions permettant de créer une structure MBR, de la copier sur le disque et de la récuperer. Introduit la notion de volumes et de partitionnement.
 
 - volume.h : Fonctions permettant d'utiliser efficacement un volume, de préparer son initialisation en vue d'une utilisation d'un systeme de fichiers. Abstraction des secteurs et cylindre du disque, en passant par un système de numéro de blocs, relatif à un volume.
 
 - inode.h : Structures définissant l'identificateur qu'un fichier aura, appelé inoeud / inode.
 
 - file.h : Bibliothèque s'occupant du systeme de fichiers. Accés aux fichiers, création, modification, suppression, copie. S'appuie sur les règles d'arborescence et de répertoire.
 
 - filenaming.h : Gére les recherches de fichiers, identification d'un répertoire contenant un fichier, modification de répertoire.

Gestionnaire
------------

 - vm.c : Gestionnaire de partition permettant de controler puissamment votre disque dur.
 
Commandes
---------

 - mkhd.c : Création d'un disque virtuel
 - frmt.c : Formatage du disque complet
 - dmps.c : Affichage de parties du disque
 - nfs.c : Création d'un systeme de fichiers sur une partition
 - status.c : Affichage du statut d'une partition
 
 - if_nfile.c : Création d'un fichier
 - if_pfile.c : Affichage du contenu d'un fichier par son inoeud
 - if_dfile.c : Supprime un fichier par son inoeud
 - if_cfile.c : Copie un fichier d'un inoeud à un autre

 - nfile.c : Création d'un fichier par son nom
 - pfile.c : Affiche le contenu d'un fichier representé par son nom
 - dfile.c : Supprime un fichier par son nom
 - cfile.c : Copie un fichier source dans un fichier destination
 
 - pdir.c : Affiche le contenu d'un répertoire par son nom
 - ndir.c : Crée un nouveau répertoire par son nom
 
 
4/ Tester l'application
_______________________

Pour tester le système de fichiers, voici un petit ensemble d'étapes qui pourraient vous montrer la puissance de ce système, ou pas.

A. Creer le disque.
./mkhd

B. Partitionner le disque, créer le MBR et au moins une partition, sachant que la partition par défaut de notre systeme est la première partition du disque.
./vm

A la création d'une partition, le systeme de fichiers est automatiquement mis en place. Mais vous pouvez créer un nouveau systeme ou réinitialiser le volume avec :
./nfs

B-C. Consultation en hexadécimal du disque. Arg 1 : Numero de cylindre. Arg 2 : Numéro de secteur. Arg 3 : Nombre de secteurs consécutifs à afficher.
./dmps 0 0 10

C. Verification de la partition.
./status

D. Consultation du répertoire racine.
./pdir /

E. Création d'un premier fichier, l'entrée standard attendra une ligne vide avant de fermer le fichier.
./nfile file.1

F. Consultation du répertoire racine.
./pdir /

G. Consultation du fichier. Tous les noms de fichiers doivent être en absolu, donc commencer par "/".
./pfile /file.1

H. Création d'un nouveau dossier à la racine.
./pdir /dir.1

I. Copie du premier fichier dans le dossier "/dir.1".
./cfile /file.1 /dir.1/file.2

J. Consultation du dossier créé.
./pdir /dir.1

H. Consultation du fichier copié.
./pfile /dir.1/file.2

K. Consultation en hexadécimal du volume.
./dmps 0 2 10

Vous pouvez aussi vous amusez à manier les fichiers avec leurs inoeuds, avec les commandes ./if_*file.

Suite de commandes :

./mkhd
./vm
./nfs
./dmps 0 0 10
./status
./pdir /
./nfile file.1
./pdir /
./pfile /file.1
./pdir /dir.1
./cfile /file.1 /dir.1/file.2
./pdir /dir.1
./pfile /dir.1/file.2
./dmps 0 2 10


5/ A implémenter
________________

Notre systeme de fichiers ne supporte pas pleinement la suppression de fichiers, quelques problèmes résident encore, ce n'est qu'une question de temps. Pour la prochaine version si prochaine version il y a.

Formatage rapide. Actuellement, une creation de systeme de fichiers enregistre les blocs libres sous forme de liste chainée, mémorisée dans les blocs libres du disque. Implémentation d'une liste chainée par ensemble de blocs vide souhaitable.

6/ Contact
__________

<remi.melisson -AT- etudiant _DOT_ univ-lille1 -DOT- FR>
<erik.clairiot -AT- etudiant _DOT_ univ-lille1 -DOT- FR>
