Correction de L’Examen de la Session Principale

Ce document présente la correction d’un examen portant sur plusieurs domaines de l’informatique, notamment la gestion des fichiers, les systèmes de gestion de fichiers (SGF), la programmation système et les outils de compilation et de débogage. Il évalue la compréhension des structures de fichiers, la manipulation des i-nœuds, la rédaction de Makefile et l’utilisation d’outils comme gdb.

D'après le document Correction de L’Examen de la Session Principale

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Correction de L’Examen de la Session Principale

Programming, File Systems, Makefile · PDF · 2 pages

Afficher l'aperçu du document

Consulter le document original →

Ce document présente la correction d’un examen portant sur plusieurs domaines de l’informatique, notamment la gestion des fichiers, les systèmes de gestion de fichiers (SGF), la programmation système et les outils de compilation et de débogage. Il évalue la compréhension des structures de fichiers, la manipulation des i-nœuds, la rédaction de Makefile et l’utilisation d’outils comme gdb.

Exercice 1 (4 pts) Comparaisons d'implantation de fichiers

On demande d’identifier, pour quatre représentations différentes de la localisation d’un fichier, quelles propositions parmi six sont vérifiées, en justifiant brièvement.

Les représentations sont :

  • a) Un couple <numéro du premier bloc, nombre de blocs>
  • b) Un couple <numéro du premier bloc, numéro du dernier bloc> avec chaînage des blocs entre eux
  • c) Un ensemble de 24 couples <numéro de bloc, nombre de blocs>
  • d) Un ensemble de 13 numéros de blocs, organisés en plusieurs niveaux de blocs contenant des numéros de blocs

Les propositions à vérifier sont :

  1. La taille totale du fichier doit être connue lors de sa création.
  2. Aucune information de taille n'est nécessaire lors de la création.
  3. Il est possible que le fichier ne puisse être créé alors que l'espace libre est supérieur à la taille du fichier.
  4. L'accès aléatoire à un bloc quelconque du fichier demande un seul accès disque.
  5. L'accès aléatoire à un bloc quelconque du fichier demande au plus 4 accès disque.
  6. L'allocation d'espace peut se faire par blocs individuels.

Les réponses données sont :

abcd
1X
2XX
3XXXX
4X
5X
6XXX

Justifications :

  • a) Couple <numéro du premier bloc, nombre de blocs> : La taille totale doit être connue (proposition 1 non cochée, donc non requise), mais ici la taille est donnée explicitement par le nombre de blocs. L’accès aléatoire à un bloc est possible en un seul accès disque (proposition 4 cochée) car les blocs sont contigus. L’allocation se fait par blocs contigus, donc pas par blocs individuels (proposition 6 non cochée). La création peut échouer même si l’espace libre est suffisant (proposition 3 cochée) car il faut un espace contigu.
  • b) Couple <numéro du premier bloc, numéro du dernier bloc> avec chaînage : La taille n’est pas nécessaire à la création (proposition 2 cochée). L’allocation peut se faire par blocs individuels (proposition 6 cochée). L’accès aléatoire demande plusieurs accès (proposition 4 non cochée). La création peut échouer (proposition 3 cochée) car les blocs doivent être chaînés.
  • c) Ensemble de 24 couples <numéro de bloc, nombre de blocs> : L’allocation peut se faire par blocs individuels (proposition 6 cochée). La création peut échouer (proposition 3 cochée). La taille n’est pas nécessaire à la création (proposition 2 non cochée). L’accès aléatoire demande plusieurs accès (proposition 4 non cochée).
  • d) Ensemble de 13 numéros de blocs avec plusieurs niveaux d’indirection : La taille totale doit être connue à la création (proposition 1 cochée). L’accès aléatoire peut demander jusqu’à 4 accès disque (proposition 5 cochée). L’allocation peut se faire par blocs individuels (proposition 6 cochée). La création peut échouer (proposition 3 cochée).

Réponse finale : Les cases cochées correspondent aux propositions correctes comme indiqué dans le tableau ci-dessus.

Exercice 2 (5 pts) Système de Gestion de Fichiers (SGF)

On travaille sur un disque de 64 secteurs, avec un SGF similaire au Fast File System (FFS) d’UNIX. Les 16 premiers secteurs sont réservés à la table des i-nœuds. Chaque secteur contient 4 mots de 4 octets. Un i-nœud occupe un secteur et contient 2 pointeurs directs, 1 pointeur indirect, et 1 double-pointeur indirect. Un i-nœud est un entier de 4 octets. Dans un répertoire, un nom de fichier est un tableau de 4 octets. L’identifiant du répertoire racine est 0.

Question 1 : Quelle est la taille (en secteurs) du fichier décrit par l’i-nœud 1 ?

La solution donnée est 1 secteur.

Explication : L’i-nœud 1 contient probablement uniquement des pointeurs directs, ce qui correspond à un fichier occupant un seul secteur.

Réponse : 1 secteur.

Question 2 : Quelle est la taille (en secteurs) du fichier décrit par l’i-nœud 4 ?

La solution donnée est 3 secteurs.

Explication : L’i-nœud 4 utilise des pointeurs directs et indirects, ce qui permet d’adresser plusieurs secteurs. Le total calculé est 3 secteurs.

Réponse : 3 secteurs.

Question 3 : Quelle est la liste des noms de fichiers pour le répertoire racine ?

Solution : HELP, ME, MARY, HAD

Explication : Ces noms sont extraits directement du contenu du répertoire racine (i-nœud 0).

Réponse : HELP, ME, MARY, HAD

Question 4 : Quel est l’i-nœud du fichier /MARY/ABLE ?

Solution : 10

Explication : En parcourant le répertoire MARY, on trouve le fichier ABLE dont l’i-nœud est 10.

Réponse : 10

Question 5 : Que faire si j’ai bien lu l’intégralité du fichier /ME/WAS ?

Solution : APT 7 ABLE 10 MARY 2 MOVE 8

Explication : Cette réponse semble indiquer une liste de fichiers ou d’actions à effectuer après la lecture complète du fichier /ME/WAS. Sans plus de contexte, on suppose qu’il faut traiter ces fichiers ou commandes dans cet ordre.

Réponse : APT 7 ABLE 10 MARY 2 MOVE 8

Question 6 : Ce système de fichiers peut-il supporter les liens symboliques ? Pourquoi ?

Solution : C’est possible, mais seulement pour les chemins dont les noms ne dépassent pas la taille limite que le SGF prend en charge.

Explication : La limitation vient de la taille fixe des noms de fichiers (4 octets) et de la structure du SGF. Les liens symboliques sont possibles mais limités en longueur.

Réponse : Oui, mais uniquement pour des chemins dont la taille ne dépasse pas la limite du SGF.

Exercice 3 (6 = 3 + 3 pts) Programmation système

Le contenu de cet exercice n’est pas fourni dans la source, il est donc impossible de le traiter.

Exercice 4 (5 = 4 + 1 pts) Outils make, gdb, …

Question 1 : Donner le fichier Makefile pour construire le programme « commande »

Situation :

  • commande.c contient la fonction main et inclut : <stdio.h>, <string.h>, <math.h>, "commun.h", "util.h", "fichier.h"
  • util.c inclut : <stdio.h>, "commun.h", "util.h"
  • commun.c inclut : <stdio.h>, "commun.h", "fichier.h"
  • libfichier.a contient les fonctions déclarées dans fichier.h
  • Le compilateur utilisé est gcc avec options ANSI C, warnings en erreurs

Makefile proposé :

commande: commande.o commun.h util.h fichier.h libfichier.a
	gcc $(CFLAGS) -o commande commande.o util.o commun.o -lfichier

commande.o: commande.c commun.h util.h fichier.h
	gcc $(CFLAGS) -Wall -ansi -pedantic -c commande.c

util.o: util.c util.h commun.h
	gcc $(CFLAGS) -Wall -ansi -pedantic -c util.c

commun.o: commun.c commun.h fichier.h
	gcc $(CFLAGS) -Wall -ansi -pedantic -c commun.c

Explication : Chaque fichier objet dépend des fichiers sources et des headers nécessaires. Les options -Wall -ansi -pedantic activent tous les warnings, le mode ANSI C et considèrent les warnings comme des erreurs.

Question 2 : Modifier le Makefile pour pouvoir déboguer le programme avec gdb

Solution : Ajouter l’option -g dans la variable CFLAGS.

Par exemple :

CFLAGS=-g

Ou lancer la compilation avec :

$ make CFLAGS=-g

Explication : L’option -g génère les informations de débogage nécessaires pour gdb.

Méthode

Ce corrigé récompense une démarche claire et rigoureuse :

  • Pour l’exercice 1, il faut comprendre les structures d’allocation de fichiers, leurs contraintes et les conséquences sur la gestion de l’espace et l’accès aux blocs. Il faut justifier chaque proposition par rapport à la représentation donnée.
  • Pour l’exercice 2, la maîtrise des i-nœuds, des pointeurs directs et indirects, ainsi que la structure des répertoires est essentielle. Il faut savoir interpréter les données du disque et extraire les informations demandées.
  • Pour l’exercice 4, la rédaction d’un Makefile fonctionnel et l’ajout d’options de compilation adaptées sont attendus. La connaissance des options gcc est indispensable.
  • Les erreurs pénalisées sont l’absence de justification, la confusion entre les types d’allocation, l’oubli des dépendances dans le Makefile, ou l’absence d’options correctes pour le débogage.

En résumé, ce sujet valorise la compréhension des concepts fondamentaux, la capacité à appliquer les connaissances techniques, et la rigueur dans la présentation des solutions.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions