Solution des exercices SGF 1- Exercice 0 : On suppose que la taille de bloc est 565 On veut accéder à 585ème bloc : combien d accès disc sont nécessaires? Inode Table index de taille 565 (=taille d un bloc) @Bloc 10 blocs Accès Accès indirect Accès double indirection Accès triple indirection Table index indirect double Niveau1 Table index indirect double Niveau2 @Bloc @Bloc ŁIl y deux type d accès : Accès direct et accès séquentielle : ŁAccès direct : Charger Inode Charger (seulement) table index indirect double niveau 1 1 AD 1 AD 583=10 + 565 + 8 Il n est pas parmi les 10 bloc Si la table index indirect est chargée le dernier bloc sera 575 donc on doit aller à table index double indirection Charger table index indirect double niveau 2 Transfert le bloc 583 1AD 1AD Donc on a besoin de 4 AD pour accéder directement au bloc 583
Ł Accès séquentiel : C est-à-dire on doit accéder a tout les blocs jusqu'à arriver au bloc 583 Charger Inode «1 AD» Transférer les 10 premiers blocs (il nous reste 575 blocs) «1 AD * 10 = 10 AD» Charger table d index indirect «1 AD» Transférer 565 blocs (les adresses des blocs sont références dans table d index indirect) Il nous reste 10 blocs «1 AD * 565 =565 AD» Charger table d index indirect double Niveau 1«1 AD» Charger table d index indirect double Niveau 2«1 AD» Transférer 8 blocs «1 AD *1O = 8 AD» Donc on a besoin de 587 AD pour accéder séquentiellement au bloc 583 Exercice 01 : 1-a) Allocation contigüe simple : On a besoin d une zone de taille (20+10) 30 blocs On a une seule solution F1 après F3 : Lire 20 blocs de F1 «20AD» Ecrire les 20 Blocs à partir de @60 «20AD» Ecrire les 10 blocs à partir de @80 «10 AD» Nombre d accès disc = 20 + 20 + 10 + 1 (accès au répertoire) + 1 (mettre à jours la taille de fichier)=52 AD 1-b) Allocation contigüe avec extension : ŁIl y a 4 cas possibles : Après F2 Après F3 Avant F3 Avant la fin de disque Remarque : - On partage dans les cas extrêmes ŁLe critique chacun des cas : Après F2 F2 ne pourra pas s étendre sans extension Après F3 Avant F3 F1 ne pourra pas s étendre sans extension Avant la fin de disque :
On choisit après F2? Car si le système fait le préchargement de bloc, il est plus intéressent que l extension soit rapproche de début de F1, un algorithme de préchargement à le tendance de charger les blocs voisin en premier 2) ŁLe critique chacun des cas : Après F2 F2 ne pourra pas s étendre sans extension Après F3 Avant F3 F1 ne pourra pas s étendre sans extension Avant la fin de disque :
Exercice 02 : 1/ La structure d une inode : Type de fichier Droi d accès Nombre de liens symbolique UID GID Taille Atime Mtime Ctime Adresse du ficher 2/Le système ne gérer pas le mécanisme de buffer cache : Taille de table d index = 1024/4= 256 entrées Nombre de bloc = 8 Mo = 8 * 1024 Ko = 8*1024 bloc=8192 blocs Nombre des enregistrements = 8192* 4 =32768 enregistrements Charger Inode «1 AD» Charger les 10 *4 premiers enregistrements «1 AD * 10 * 4= 40 AD» Charger table d index niveau 1 «1 AD» Charger 256 *4 enregistrement «1 AD * 256 * 4 = 1024 AD» Charger table d index double niveau 1 ««1 AD» Charger 31 tables d index double niveau 2«1 AD * 31= 31 AD» charger (31*256)*4 enregistrements «31 * 256 * 4 = 31704 AD» Nombre d accès disque = 1+40+1+1024+1+31+31704 =(40 + 1024+31704) + 1+1+1+31 =32768+34 =32802 Temps d accès = 32802 * 40 * 10-3 =1312 08 S=21,86 M = 21M et 52S Remarque : Ł 31 table index niveaux 2 car : Avant on a accédé à 10 + 256 = 366 blocs Alors il nous reste 8192-366=7826 blocs 7826= 30*256 + 146 Donc on a besoin de 31 tables d index double niveau 2
Ł Quand il n y a pas le buffer cache pour chaque enregistrement on doit accéder au disque c est-à-dire pour charger un bloc de quatre enregistrements on doit accéder a lui quatre fois 3/Le système gérer un mécanisme de buffer cache : Charger Inode «1 AD» Charger les 10 premiers blocs «1 AD * 10 = 10 AD» Charger table d index niveau 1 «1 AD» Charger 256 blocs «1 AD * 256 = 256 AD» Charger table d index double niveau 1 ««1 AD» Charger 31 tables d index double niveau 2«1 AD * 31= 31 AD» Charger (31*256) enregistrements «30 * 256+146 = 7826 AD» Nombre d accès disque = 1+10+1+256+1+31+7826 =(10 + 256+7826) + 1+1+1+31 =8192+34 =8226 Temps d accès = 8226*40*10-3 =329,04S=5M et 29 S Exercice 03 : 1) Ajouter un bloc en début de fichier : A-Contigüe : Accés au reprtoire «1AD» SI il existe un espace libre avant le début de fichier Alors Ecrire le nouveau bloc «1AD» Mettre à jours l adresse de début fichier sur le répertoire «1 AD ou 0 AD» /* 1 AD Łsi le répertoire dans DD 0 AD Łsi le répertoire dans MC Alors il faut 2 AD ou 3 AD */ Sinon Lire 100 blocs «100 AD» Ecrire 100 blocs «100 AD» Ecrire 1 nouvel bloc«1ad» Mettre à jours l adresse de début fichier sur le répertoire«1 AD ou 0 AD» /* Alors il faut 202 AD ou 203 AD */ Finsi
B-Chainé : Accès au répertoire de fichier 1 AD «1AD» Ecrire le bloc 1 AD «1AD» Mettre à jours dans le répertoire «1AD ou 0AD» /* Alors il faut 3 AD ou 2 AD */ C- Allocation indexé : Accès au répertoire de fichier 1 AD «1AD» Lire la table d index «1AD» Ecrire le bloc «1AD» Mettre à jours la table d index «1AD ou 0AD» /* Alors il faut 3 AD ou 4 AD */ 2) Enlever un bloc en fin de fichier : - Contigüe, Chainé et Indexé : Accès au répertoire de fichier 1 AD «1AD» @bloc=@debut +taille Déclarer que le bloc est libre Mettre à jours la taille de fichier dans le répertoire «1AD ou 0AD» /* Alors il faut 1AD ou 2 AD */ Remarque : Si le SGF procède un mise à jours à 0 quand il libre un bloc on ajout 1 AD pour écrire 0 dans le bloc enlevé