VII. Gestion des fichiers
VII.1. Définition
Un fichier est vu comme une suite d'articles ou d'enregistrements
logiques d'un type donné qui ne peuvent être manipulés qu'à travers des opérations
spécifiques. L'utilisateur n'est pas concerné par l'implantation des
enregistrements, ni par la façon dont sont réalisées les opérations.
Généralement, elles sont traduites par système d’exploitation en opérations élémentaires
sur les mémoires.
On dispose généralement des opérations suivantes :
− fichiers : créer, ouvrir, fermer, détruire, pointer au début,
renommer, copier dans un autre fichier, éditer le contenu,
− articles : lire, écrire, modifier, insérer, détruire, retrouver.
Un système de fichiers (SGF) est l'entité regroupant les fichiers
mémorisés sur disque. Il contient les données des fichiers et un ensemble
d'informations techniques.
VII.2. Le support physique
A l'écriture, la tête magnétise le support. C'est le défilement
des points magnétisés qui permet de lire. Le courant d'air créé par le plateau
en mouvement fait flotter la tête.
Le disque tourne dans arrêt à vitesse constante. Un grain de
poussière entre le disque et
la tête les détruit tous les deux. (Ex : un fragment de cendre de cigarette).
On empile plusieurs plateaux les uns au-dessus des autres. Les
plateaux tournent à la même vitesse. Les têtes sont solidaires (une tête par
face).
Figure
28. Pile de
plusieurs plateaux.
VII.2.1. Formatage physique
Sur chaque face, on écrit sur des pistes concentriques. Les pistes
au-dessus les unes des autres sont accessibles sans bouger les têtes de
lecture. Elles forment un cylindre.
Les pistes sont divisées en secteurs. Le secteur est l'unité de
lecture-écriture. Le formatage physique marque les positions des pistes et des
secteurs.
VII.2.2. La taille du disque
Il suffit de connaître :
−
La taille du secteur.
−
Le nombre de secteurs par piste.
−
Le nombre de pistes par cylindre.
−
Le nombre de cylindres.
Taille d'une piste = taille d'un secteur x nombre de secteurs
(clusters, blocs) par piste
Taille d'un cylindre = taille d'une piste x nombre de faces par
cylindre
Taille d'un plateau = taille d'une piste x nombre de pistes /
plateau
Taille du disque = taille d'1 cyl. x nbre de cyl = taille d'1
plat. x nbre de plat.
VII.2.3. Adresses sur le disque
Chaque secteur est repéré par ses coordonnées : (n° de cylindre,
n° de face, n° de secteur).
La carte d'interface reçoit de l'ordinateur une commande (lire, ou
écrire + données) et une adresse de secteur, et exécute l'opération sur un
secteur entier.
Alors physiquement, un fichier est une suite de secteurs dont
l'ordre est essentiel !
VII.2.4.
Les temps d'accès
Quand on
demande à lire un secteur, la carte d'interface va
1.
Placer les têtes de lecture sur le bon cylindre.
2.
Attendre que le secteur cherché arrive sous la tête.
3.
Copier le secteur sur la carte d'interface.
4.
Envoyer les données de la carte à l'ordinateur.
VII.2.4.1. Temps de lecture d'un secteur
(Durée de 1 tour) / (Nombre de secteurs par piste).
Durée constante (ex : 0,5 ms)
Débit = le nombre d'octets lus par seconde
Si on lisait sans arrêt = le nombre d'octets qui passent sous la
tête en 1 seconde.
Exemple:
Secteurs de 512 octets, 32 secteurs / piste, 7200 tours / mn
⇒ 16 Ko par piste, 120 tours / s
Débit = 1920 Ko/s = 1,875 Mo par seconde
Lecture d'un secteur = 1 / (120 x 32) = 2,5x10-4 s
VII.2.4.2. Attendre un secteur
Au mieux : attente nulle
Au pire : un tour
Temps de latence = durée moyenne d'attente = demi durée d'un tour
Ex : 4 ms
VII.2.4.3. Changer de piste
Au plus près : la piste voisine ⇒ temps de déplacement minimal
Au plus loin : du cylindre intérieur au cylindre extérieur ⇒ temps
de déplacement maximal
En général, entre les deux ⇒ temps de déplacement moyen
Ex : 9,5 ms
Alors, pour lire un fichier dans l'ordre et si les secteurs sont
n'importe comment sur le disque, à chaque secteur il faut :
1. Placer les
têtes (durée = temps de déplacement moyen)
2. Attendre le
secteur (durée = temps de latence)
3. Lire (durée
fixe)
VII.2.5. Formatage logique
On divise le disque en partitions formées de cylindres consécutifs
Chaque partition est utilisée par le système comme un disque
−
Un peu moins de déplacement de têtes.
−
On peut mettre un système par partition (double boot).
VII.3. Organisation de l'espace
disque
Il existe deux stratégies pour stocker un fichier de n octets sur
disque :
1.
allouer des secteurs contigus totalisant une capacité d'au-moins n
octets. Avec deux inconvénients:
o
le dernier secteur a toutes chances d'être sous-utilisé et ainsi,
on gaspille de la place. Le pourcentage de place perdue est d'autant plus grand
que la taille moyenne des fichiers est faible, ce qui est la réalité
o
si le fichier est agrandi, il faudra déplacer le fichier pour
trouver un nouvel ensemble de secteurs consécutifs de taille suffisante
2.
diviser le fichier en blocs de taille fixe, insécables, que système
d’exploitation alloue de façon non nécessairement contigüe à des secteurs.
Un bloc est défini comme une zone de mémoire secondaire contenant
la quantité d'information qui peut être lue ou écrite par un périphérique en
une seule opération. La taille d'un bloc est donc attachée à un périphérique
d'E/S et fixée par le matériel. Cependant, si système d’exploitation n'a pas le
choix de la taille d'un bloc, il peut grouper plusieurs article dans un même
bloc (packing).
Pour des blocs de taille 1 Ko, le taux de remplissage du disque
est excellent, mais la vitesse de transfert des données est modeste (délai de
rotation du disque et de recherche importants par rapport au temps de transfert
lui-même). Au-delà de 1 Ko, le taux de remplissage se dégrade, mais la vitesse
de transfert s'améliore.
VII.4. Gestion des blocs libres
Dès qu'on a choisi une taille de blocs (souvent 1/2 Ko à 2 Ko), on
doit trouver un moyen de mémoriser les blocs libres. Les deux techniques les
plus répandues sont les suivantes :
−
table de bits : on gère une table comportant autant de bits que de
blocs sur le disque. A chaque bloc du disque, correspond un bit dans la table,
positionné à 1 si le bloc est occupé, à 0 si le bloc est libre (ou vice versa).
Par exemple, un disque de 300 Mo, organisé en blocs de 1 Ko, sera géré par une
table de 300 Kbits qui occupera 38 des 307.200 blocs
−
liste chaînée de n° des blocs : par exemple, un disque de 300 Mo,
organisé en blocs de 1 Ko : supposons que chaque bloc soit adressé par 4
octets. Chaque bloc de la liste pourra contenir 255 adresses de blocs libres.
La liste comprendra donc au plus 307.200/255 = 1205 blocs. Cette solution
mobilise beaucoup plus de place que la précédente.
On peut imaginer deux variantes de cette dernière solution :
−
une liste chaînée de blocs : chaque bloc libre pointe sur le bloc
libre suivant,
−
une liste chaînée de zones libres : chaque bloc de début d'une
série de blocs libres (zone libre) contient la taille de la zone et pointe sur
le premier bloc de la zone libre suivante.
0 Commentaires