École de technologie supérieure



École de Technologie Supérieure

INF-125 Travail pratique #2

Simulation d’un système d’exploitation

1. Objectifs

- Concrétiser les notions théoriques sur l'utilisation des tableaux en allocation dynamique.

- Améliorer vos notions de découpage en fonctions et l'utilisation de paramètres par références.

- Utilisation des chaînes de caractères et l’utilisation de la librairie .

2 Description du problème: Gérer des fichiers

Avant que ne vienne Windows, il y avait sur les PC un «système d’exploitation» nommé DOS. On vous demande de créer un petit programme qui simulera certaines commandes de DOS. Celui-ci permettra de gérer des fichiers sur un disque rigide simulé en mémoire. Les différentes commandes seront :

- Créer un fichier

- Renommer un fichier

- Copier un fichier

- Effacer un fichier

- Afficher tous les fichiers

- Formater le disque

- Aide sur les commandes

- Quitter

3. Description des commandes

- Formater le disque (format)

o Doit être faite au moins une fois avant l’utilisation des autres commandes (à l’exception de l’aide).

o Après son exécution, le disque ne contiendra plus de fichier. On dira que le disque est vide.

o Un disque lorsqu’il vient d’être formaté contient 5000 blocs disponibles. Vous pouvez voir les blocs comme étant l’espace libre sur disque.

o Il faudra confirmer avec l’utilisateur avant d ‘exécuter cette commande.

- Créer un fichier (mkfile)

o Nécessite 2 paramètres. Le nom de fichier et le nombre de blocs désirés. Le nombre de blocs est entre 1 et le maximum de blocs encore disponibles.

o Il ne peut y avoir 2 fichiers avec le même nom.

▪ Ex : mkfile fic1 1000 (ok)

mkfile fic1 1000 (rejeté, fichier existe déjà)

- Renommer un fichier (rename)

o Nécessite 2 paramètres. Le premier est le nom du fichier et il doit exister. Le deuxième est le nouveau nom de fichier et ne doit pas déjà exister.

▪ Ex : rename fic1 fic2 (ok)

rename fic1 fic1 (rejeté fichier existe déjà)

- Copier un fichier (copy)

o Comme pour renommer, cette commande nécessite 2 paramètres. Le nom du fichier à copier qui doit exister et le nom du nouveau fichier qui lui, ne doit pas exister.

o Le nouveau fichier aura exactement le même nombre de blocs que l’autre, s’il y a assez de blocs disponibles.

- Effacer un fichier (delete)

o Détruit complètement le fichier et remet les blocs disponibles. Naturellement, le fichier existe. Il faudra confirmer avec l’utilisateur avant d’exécuter cette commande.

- Afficher tous les fichiers (dir)

o Affiche tous les fichiers, le nombre de blocs qui leur est associés et le nombre de blocs qu’il reste de disponibles sur le disque. Après avoir formaté, cette commande affiche qu’il y a 5000 blocs de disponibles.

- Aide sur les commandes (help)

o Donne le nom des commandes et les paramètres nécessaires

▪ Ex : mkfile

rename

etc.

- Quitter (exit)

▪ Quitte le programme. Naturellement, tous les fichiers sont perdus.

***Dans tous les cas, si une contrainte n’est pas respectée, vous rejetez la commande en avisant avec un message d’erreur significatif de l’erreur qui s’est produite.

***Pour un exemple d’exécution voulue, voir l’exécutable « M:\inf125\tp2\tp2.exe ».

4. Statégie à employer

Structure à utiliser pour conserver les données :

[pic]

Voici ce que réalise chacun des éléments :

- Disque_formaté : Cette variable permet de savoir si le disque a été formaté. S’il n’a pas été formaté, il doit être impossible d’exécuter une fonction autre que formater le disque. Le formatage du disque aura pour effet d’initialiser les 6 éléments ou de les vider s’ils contiennent des données.

- Nombre_de_fichiers : Cette variable conserve le nombre de fichiers présentement sur le disque. Si on formate le disque, ce nombre de fichier devient 0.

- Tableau_bloc_de_départ : Ce tableau dynamique contiendra le numéro du bloc de départ sur le disque de chacun des fichiers. La case à l’indice 0 de ce tableau correspond au fichier de la case 0 du tableau des noms. Ainsi, le fichier «test.txt» commence au bloc 0.

- Tableau_occupation_des_blocs : Ce tableau permet de savoir quels blocs appartiennent à quel fichier et dans quel ordre on doit lire les blocs. Pour les trouver, il suffit de prendre le bloc de départ et de regarder son contenu. Si c’est –2, c’est le dernier bloc du fichier, sinon le numéro à l’intérieur est celui du bloc suivant dans le fichier. Par exemple, le fichier «test.txt» commence au bloc 0 et contient les blocs 1, 2, 3, 4,et 5. De la même façon, le fichier «tp1.exe» commence au bloc 6 et utilise les blocs 7, 9 et 11.

- Nombre_blocs_disponibles : Cette variable conserve le nombre de blocs disponibles sur le disque. On pourrait les dénombrer dans le tableau statique de l’occupation des blocs (un –1 signifie un bloc vide), mais il est plus rapide de garder une variable qui retient ce nombre. Ainsi, si au départ il y a 5000 blocs disponibles et que l’on ajoute un fichier de 10 blocs, la variable contiendra alors 4990. On saura grâce à cette variable si on manque d’espace disque.

- Tableau_noms : Ce tableau dynamique contiendra le nom de tous les fichiers présentement sur le disque. Tout ajout ou retrait de fichier fera varier la taille de ce tableau. Si on décide de renommer un fichier, il faudra le faire en modifiant ce tableau. Attention, deux fichiers ne peuvent pas avoir le même nom.

Le programme principal ressemblera simplement à ceci :

Tant que l’usager ne veut pas quitter

Saisir la commande au clavier ainsi que ses paramètres

Si la commande et ses paramètres sont valides alors

Exécuter la commande demandée

Sinon

Afficher un message d'erreur significatif

Fin si

Fin de la boucle

Les commandes seront implantées dans des fonctions.

4 Recommandations et informations supplémentaires

Ce programme est BEAUCOUP plus complexe que le premier. Commencez immédiatement ou vous ne terminerez pas à temps!!!

Chaque commande devrait être une fonction qui en utilisera plusieurs petites. N'hésitez pas à découper votre problème en plus petits problèmes.

On attend de vous une simulation. AUCUN vrai fichier n’est créé durant l’exécution du programme.

5 Contraintes de l’enseignant

Le travail devra respecter les exigences de remise des travaux pratiques (voir sur le site du cours dans la section Travaux pratiques). De plus,

- AUCUNE VARIABLE GLOBALE NE SERA ACCEPTÉE. CECI ENTRAÎNERA UNE PERTE DE LA MOITIÉ DES POINTS (50%).

- Si le programme n'est pas fonctionnel, faites la liste des fonctionnalités défaillantes et des tests que vous avez faits pour vous en apercevoir.

- Un programme qui ne compile pas se voit attribuer la note zéro pour la partie exécution.

- La politique du 10% pour la qualité du français sera appliquée (commentaires et documents).

- Le plagiat attribuera automatiquement la note 0 à tous les participants peu importe leur degré d'implication.

- Aucun document écrit à la main ne sera accepté.

- Une partie qui n'est pas imprimée n'est pas corrigée (même si elle est sur la disquette) et se voit attribuer la note 0.

Bon travail!

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download