3. Que c’est qu’un fichier
Collection nommée d’informations
apparentées, enregistrée sur un stockage
secondaire
Nature permanente
Les données qui se trouvent sur un stockage
secondaires doivent être dans un fichier
Différents types:
Données (binaire, numérique, caractères….)
Programmes
5. Attributs d’un fichier
Constituent les propriétés du fichiers et sont stockés dans un fichier spécial
appelé répertoire (directory). Exemples d’attributs:
Nom:
Identificateur:
Détermine qui peut écrire, lire, exécuter…
Date:
En bytes ou en blocs
Protection:
Indique le disque et l’adresse du fichier sur disque
Taille:
Ex: binaire, ou texte; lorsque le SE supporte cela
Position:
Un nombre permettant au SE d’identifier le fichier
Type:
pour permet aux personnes d’accéder au fichier
pour la dernière modification, ou dernière utilisation
Autres…
6. Opérations sur les fichiers: de base
Création
Écriture
Lecture
Pointeur de lecture
Positionnement dans un fichier (temps de recherche)
Suppression d’un fichier
Pointeur d’écriture qui donne la position d’écriture
Libération d’espace
Troncature: remise de la taille à zéro tout en
conservant les attributs
7. Autres opérations
Ajout d’infos
Rénommage
Copie
peut être faite par rénommage: deux noms pour un seul
fichier
Ouverture d’un fichier: le fichier devient associé à un
processus qui en garde les attributs, position, etc.
Fermeture
Ouverture et fermeture peuvent être explicites (ops
open, close)
ou implicites
9. Structure logique des fichiers
Le type d’un fichier spécifie sa structure
Le SE peut alors supporter les différentes structures
correspondant aux types de fichiers
Cela complexifie le SE mais simplifie les applications
Généralement, un fichier est un ensemble
d’enregistrements (records)
Chaque enregistrement est constitué d’un ensemble de
champs (fields)
Un champ peut être numérique ou chaîne de chars.
Les enregistrements sont de longueur fixe ou variable
(tout dépendant du type du fichier)
Mais pour Unix, MS-DOS et autres, un fichier est
simplement une suite d’octets « byte stream »
Donc ici, 1 enregistrement = 1 octet
C’est l’application qui interprète le contenu et spécifie
une structure
Plus versatile mais plus de travail pour le programmeur
9
10. Organisation de répertoires
Efficacité: arriver rapidement à un
enregistrement
Structure de noms: convenable pour usager
deux usagers peuvent avoir le même noms pour
fichiers différents
Le même fichier peut avoir différents noms
Groupement de fichiers par type:
tous les programmes Java
tous les programmes objet
11. Listes et groupes d’accès - UNIX
Modes d ’accès: R W E
Trois classes d ’usager:
propriétaire
groupe
public
demander à l ’administrateur de créer un
nouveau groupe avec un certain usager et un
certain propriétaire
droit du propriétaire de régler les droits
d ’accès et d ’ajouter des nouveaux usagers
12. Listes et groupes d’accès
Mode d’accès: read, write, execute
Trois catégories d’usagers:
RWX
a) owner access
7
111
RWX
b) group access
6
110
RWX
c) others access
1
001
Demander au gestionnaire de créer un groupe, disons G, et
ajouter des usagers au groupe
Pour un fichier particulier, disons jeux, définir un accès
owner group
public
approprié
chmod 761
jeux
Changer le groupe d’un fichier
chgrp
G
jeux
14. Méthodes d’accès: 4 de base
Séquentiel (rubans ou disques): lecture ou écriture
des enregistrements dans un ordre fixe
Indexé séquentiel (disques): accès séquentiel ou
accès direct (aléatoire) par l’utilisation d’index
Indexée: multiplicité d’index selon les besoins, accès
direct par l’index
Direct ou hachée: accès direct à travers tableau
d’hachage
Pas tous les SE supportent les méthodes d’accès
Quand le SE ne les supporte pas, c’est à l’application de
les supporter
Chap 11
14
15. Méthodes d’accès aux fichiers
La structure logique d’un fichier détermine sa méthode d’accès
Les SE sur les « mainframe » fournissent généralement plusieurs
méthodes d’accès
Car ils supportent plusieurs types de fichiers
Plusieurs SE modernes (Unix, Linux, MS-DOS…) fournissent une
seule méthode d’accès (séquentielle) car les fichiers sont tous du
même type (ex: séquence d’octets)
Mais leur méthode d’allocation de fichiers (voir + loin) permet
habituellement aux applications d’accéder aux fichiers de différentes
manières
Ex: les systèmes de gestions de bases de données (DBMS)
requièrent des méthodes d’accès plus efficaces que juste
séquentielle
Un DBMS sur un « mainframe » peut utiliser une structure fournie
par le SE pour accès efficace aux enregistrements.
Un DBMS sur un SE qui ne fournit qu’un accès séquentiel doit donc
« ajouter » une structure aux fichiers de bases de données pour
accès directs plus rapides.
15
16. Fichiers à accès séquentiel
(archétype: rubans)
La seule façon de retourner
en arrière est de retourner au
début (rébobiner, rewind)
bloc
En avant seulement, 1 seul enreg.
à la fois
bloc
...
...
...
enregistrements
espace interbloc
16
17. Lecture physique et lecture logique dans un
fichier séquentiel
Un fichier séquentiel consiste en blocs d’octets enregistrés sur un
support tel que ruban, disque…
La dimension de ces blocs est dictée par les caractéristiques du support
Ces blocs sont lus (lecture physique) dans un tampon en mémoire
Un bloc contient un certain nombre d’enregistrements (records) qui sont
des unités d’information logiques pour l’application (un étudiant, un
client, un produit…)
Souvent de longueur et contenu uniformes
Triés par une clé, normalement un code (code d’étudiant, numéro
produit…)
Une lecture dans un programme lit le prochain enregistrement
Cette lecture peut être réalisée par
La simple mise à jour d’un pointeur si la lecture logique précédente
ne s’était pas rendue à la fin du tampon
la lecture du proch. bloc (dans un tampon d’E/S en mémoire) si la
lecture logique précédente s’était rendue à la fin du tampon
Dans ce cas le pointeur est remis à 0
17
18. Autres propriétés des fichiers
séquentiels
Pour l’écriture, la même idée: une instruction d’écriture
dans un programme cause l’ajout d’un enregistrement
à un tampon, quand le tampon est plein il y a une
écriture de bloc
Un fichier séquentiel qui a été ouvert en lecture ne
peut pas être écrit et vice-versa (impossible de
mélanger lectures et écritures)
Les fichiers séquentiels ne peuvent être lus ou écrits
qu’un enregistrement à la fois et seulement dans la
direction ‘en avant’
Chap 11
18
19. Adressage Indexé séquentiel (index sequential)
Un index permet d’arriver directement à
l’enregistrement désiré, ou en sa proximité
Chaque enregistrement contient un champ clé
Un fichier index contient des repères (pointeurs) à
certain points importants dans le fichier principal (p.ex.
début de la lettre S, début des Lalande, début des matricules qui
commencent par 8)
Le fichier index pourra être organisé en niveaux (p.ex.
dans l’index de S on trouve l’index de tous ceux qui
commencent par S)
Le fichier index permet d’arriver au point de repère dans
le fichier principal, puis la recherche est séquentielle
Chap 11
19
20. Exemples d’index et fichiers
relatifs
Pointe au début des Smiths (il y en aura plusieurs)
Le fichier index est à accès direct, le fichier relatif est à accès séquentiel
Accès direct: voir ci-dessous
Chap 11
20
21. Index et fichier principal (Stallings)
Dans cette figure, l’index est étendu à
plusieurs niveaux, donc il y a un fichier
index qui renvoie à un autre fichier
index, n niveaux
(Relative file)
Chap 11
21
22. Pourquoi plusieurs niveaux
d’index
Un premier niveau d’index pourrait
conduire au début de la lettre S
Un deuxième niveau au début des
Smith, etc.
Donc dans le cas de fichiers volumineux
plusieurs niveaux pourraient être
justifiés.
Chap 11
22
23. Séquentiel et index séquentiel: comparaison
P.ex. Un fichier contient 1 million
d’enregistrements
En moyenne, 500, 000 accès sont nécessaires
pour trouver un enregistrement si l’accès est
séquentiel!
Mais dans un séquentiel indexé, s’il y a un seul
niveau d’indices avec 1000 entrées (et chaque entrée
pointe donc à 1000 autres),
En moyenne, ça prend 500 accès pour trouver le
repère approprié dans le fichier index
Puis 500 accès pour trouver séquentiellement le
bon enregistrement dans le fichier relatif
Chap 11
23
24. Mais… besoin de fichier débordement
Les nouveaux enregistrements
seront ajoutés à un fichier
débordement
Les enregistrements du fichier
principal qui le précèdent dans
l’ordre de tri seront mis à jour
pour contenir un pointeur au
nouveau enregistrement
Donc accès additionnels au
fichiers débordement
Périodiquement, le fichier
principal sera fusionné avec le
fichier débordement
Chap 11
24
25. Fichier indexé
Utilise des index multiples pour différentes
clés, selon les différents besoins de
consultation
Quelques uns pourraient être exhaustifs,
quelques uns partiels, et organisés de
façons différentes
Chap 11
25
27. Accès directe (ou relatif)
Fichier est vu comme collection d’enregistrement
logiques de grandeurs fixes
Basé sur le modèle disque (composé de blocs)
Spécifie numéro de bloc pour accédés données
Numéro souvent relatif (du début du fichier)
Ce n’est pas tous les SEs qui offres les accès
séquentiels et directes
Facile de simuler l’accès séquentiel avec l’accès directe
Maintient un pointeur cp indiquant la position courante
dans un fichier
L’inverse est très difficile
Chap 11
27
28. Utilisation des 4 méthodes
Séquentiel (rubans ou disques): lecture ou écriture des
enregistrements dans un ordre fixe
Indexé séquentiel (disques): accès séquentiel ou accès direct par
l’utilisation d’index
Pour fichiers qui doivent être consultés parfois de façon séquentielle,
parfois de façon directe (p.ex. par nom d’étudiant)
Indexée: multiplicité d’index selon les besoins, accès direct par
l’index
Pour travaux ‘par lots’: salaires, comptabilité périodique…
Pour fichiers qui doivent être consultés de façon directe selon des
critères différents (p.ex. pouvoir accéder aux infos concernant les
étudiants par la côte du cours auquel ils sont inscrits)
Direct ou hachée: accès direct à travers tableau d’hachage
Pour fichiers qui doivent être consultés de façon directe par une clé
uniforme (p.ex. accès aux information des étudiants par No. de matricule)
28
30. Structures de répertoires (directories)
Une collection de structures de données contenant infos
sur les fichiers.
Répertoires
Fichiers
F1
F2
F3
F4
Fn
Tant les répertoires, que les fichiers, sont sur disques
À l’exception d’un rép. racine en mém. centrale
Chap 11
30
32. Information dans un répertoire
Nom du fichier
Type
Adresse sur disque,...
Longueur courante
Longueur maximale
Date de dernier accès
Date de dernière mise à jour
Propriétaire
Protection
Chap 11
32
33. Opérations sur répertoires
Recherche de fichier
Création de fichier
Suppression de fichier
Lister un répertoire
Rénommer un fichier
Traverser un système de fichier
Chap 11
33
34. Organisation de répertoires
Efficacité: arriver rapidement à un
enregistrement
Structure de noms: convenable pour
usager
deux usagers peuvent avoir le même noms
pour fichiers différents
Le même fichier peut avoir différents noms
Groupement de fichiers par type:
tous les programmes Java
Chap 11
tous les programmes objet
34
35. Structure à un niveau
Un seul rép. pour tous les usagers
Ambiguïté de noms
Problèmes de groupement
Primitif, pas pratique
Chap 11
35
36. Répertoires à deux niveaux
Rép. séparé pour chaque usager
`path name`, nom de chemin
même nom de fichier pour usagers différents est
permis
recherche efficace
Pas de groupements
Chap 11
36
38. Caractéristiques des répertoires
à arbres
Recherche efficace
Possibilité de grouper
Repertoire courant (working directory)
cd /spell/mail/prog
Chap 11
38
39. Graphes sans cycles: permettent de
partager fichiers
Unix: un symbolic link donne un chemin à un fichier ou sousrépertoire
Chap 11
39
40. Références multiples dans graphes
acycliques
Un nœud peut avoir deux noms
différents
Si dict supprime list donc pointeur
vers fichier inexistant (dangling
pointer). Solutions:
Pointeurs en arrière, effacent
tous les pointeurs
Compteurs de références (s’il y
a encore des refs au fichier, il
ne sera pas effacé)
Ni Unix ni Microsoft
n’implémentent ces politiques,
donc messages d’erreur
Solutions impossibles à gérer
dans un système fortement
Chap 11
reparti (ex: www)
40
41. Graphes avec cycles (structure
générale)
• Presque inévitables quand il est permis de pointer à un noeud arbitraire de la structure
• Pourraient être détectés avec des contrôles appropriés au moment de la création d ’un
nouveau pointeur
•Contrôles qui ne sont pas faits dans les SE courants
Chap 11
41
42. Considérations dans le cas de
cycles
En traversant le graphe, il est nécessaire de savoir si on retombe
sur un noeud déjà visité
Un noeud peut avoir compteur de ref != 0 en se trouvant dans
une boucle de noeuds qui n ’est pas accessible!
Des algorithmes existent pour permettre de traiter ces cas,
cependant ils sont compliqués et ont des temps d ’exécution nonnégligeables, ce qui fait qu’ ils ne sont pas toujours employés
Ramasse-miettes = garbage collection
root
Un sous-arbre qui n’est pas accessible à
partir de la racine mais il ne peut pas être
effacé en utilisant le critère ref=0 car il fait
ref à lui-meme!
Chap 11
42
43. Combiner plusieurs systèmes de
fichier
Le système de fichier
Répertoire qui réside dans une partition/appareil spécifique
Pourquoi combiner?
Plusieurs partitions de disques rigides, disquettes, CDROM,
disques réseau.
Vision et accès uniforme
Comment?
Attacher un système de fichier à un nœud particuler dans la
hiérarchie du répertoire.
Windows: système à 2 niveaux – attaché à des lettres
d’appareils
Unix: opération d’attachement explicit (mount), peut attacher un
système de fichier n’importe où dans le répertoire.
43
Chap 11
44. Attachement du système de
fichier
Un système de fichier doit être
attaché (mounted) avant d’être
accédé
Un système de fichier est
attacher à un point
d’attachement (mount point)
Chap 11
44
48. Protection
Types d ’accès permis
lecture
écriture
exécution
append (annexation)
effacement
listage: lister les noms et les attributs d ’un
fichier
Par qui
Chap 11
48
49. Listes et groupes d’accès - UNIX
Modes d ’accès: R W E
Trois classes d ’usager:
propriétaire
groupe
public
demander à l ’administrateur de créer un
nouveau groupe avec un certain usager
et un certain propriétaire
droit du propriétaire de régler les droits
d ’accès et d ’ajouter des nouveaux
Chap 11
49
50. Listes et groupes d’accès
Mode d’accès: read, write, execute
Trois catégories d’usagers:
RWX
a) owner access
7
111
RWX
b) group access
6
110
RWX
c) others access
1
001
Demander au gestionnaire de créer un groupe, disons G, et
ajouter des usagers au groupe
Pour un fichier particulier, disons jeux, définir un accès
approprié
owner
group
chmod 761
public
jeux
Changer le groupe d’un fichier
chgrp G jeux
52. Structures de systèmes de fichiers
Structure de fichiers: deux façons de voir un
fichier:
unité d’allocation espace
collection d ’informations reliées
Le système de fichiers réside dans la
mémoire secondaire: disques, rubans...
File control block: structure de données
contenant de l ’info sur un fichier
55. Allocation contiguë
Chaque fichier occupe un ensemble de
blocs contigu sur disque
Simple: nous n’avons besoin que
d’adresses de début et longueur
Supporte tant l’accès séquentiel, que
l’accès direct
Moins pratique pour les autres méthodes
56. Allocation contiguë
Application des problèmes et méthodes
vus dans le chapitre de l’alloc de
mémoire contiguë
Les fichiers ne peuvent pas grandir
Impossible d’ajouter au milieu
Exécution périodique d’une compression
(compaction) pour récupérer l’espace
libre
57. Allocation enchaînée
Le répertoire contient l ’adresse du
premier et dernier bloc, possibl. le
nombre de blocs
Chaque bloc contient un pointeur à
l’adresse du prochain bloc:
bloc
=
pointeur
60. Avantages - inconvénients
Pas de fragmentation externe - allocation de
mémoire simple, pas besoin de compression
L ’accès à l ’intérieur d ’un fichier ne peut être
que séquentiel
Pas façon de trouver directement le 4ème
enregistrement...
N’utilise pas la localité car les enregistrements
seront éparpillés
L ’intégrité des pointeurs est essentielle
Les pointeurs gaspillent un peu d ’espace
61. Allocation indexée: semblable à la
pagination
Tous les pointeurs sont regroupés dans
un tableau (index block)
index table
63. Allocation indexée
À la création d ’un fichier, tous les
pointeurs dans le tableau sont nil (-1)
Chaque fois qu’un nouveau bloc doit
être alloué, on trouve de l ’espace
disponible et on ajoute un pointeur avec
son adresse
64. Allocation indexée
Pas de fragmentation externe, mais les
index prennent de l’espace
Permet accès direct (aléatoire)
Taille de fichiers limitée par la taille de
l’index block
Mais nous pouvons avoir plusieurs niveaux
d’index: Unix
Index block peut utiliser beaucoup de
mémoire
65. UNIX BSD: indexé à niveaux
(config. possible)
Ce répertoire est en mémoire, tous les
autres sont sur disque
12 blocs disque de 4K chaque
1024 blocs de 4K
chaque
1024x
1024
blocs
de 4K
Bloc de 4K contient 1024 pointeurs
67. Gestion d’espace libre
Solution 1: vecteur de bits (solution Macintosh, Windows 2000)
0 1
2
n-1
bit[i] =
…
1 block[i] occupé
Exemple d’un vecteur de bits où les
blocs 3, 4, 5, 9, 10, 15, 16 sont occupés:
0 block[i] libre
00011100011000011…
L’adresse du premier bloc libre peut être
trouvée par un simple calcul
68. Gestion d’espace libre
Solution 2: Liste liée de mémoire libre (MS-DOS, Windows 9x)
Tous les blocs de mémoire libre sont liés ensemble par
des pointeurs
69. Table d'allocation des fichiers
Une variation de l'allocation liée est d'utiliser
une table d'allocation des fichiers (FAT).
-
-
-
Utilisé par MS-DOS et OS/2.
Une partie du disque est réservée pour stocker la table qui
contient les pointeurs vers tous les fichiers de la partition.
Chaque entrée dans la FAT correspond à un bloc sur le
disque. Chaque entrée contient le pointeur vers le bloc
suivant du fichier.
Une valeur spéciale indique la fin du fichier.
Une entrée nulle signifie un bloc inutilisé.
71. Allocation indexée
Utilisé pour gérer les problèmes liés aux
deux autres méthodes.
Similaire à l'allocation liée mais tous les
pointeurs sont stockés ensembles dans
un bloc spécial (index block)
73. Inodes
Une structure qui contient la description
du fichier :
Type
Droits d'accès
Possesseurs
Dates de modifications
Taille
Pointeurs vers les blocs de données
Les inodes sont stockés en mémoire tant
que le fichier est ouvert
75. Répertoires
Structurés dans/par l'arborescence
Chaque répertoire peut contenir des fichiers et
des répertoires
Un répertoire est juste un fichier de type
spécial
Fonctions spéciales pour accéder à un
répertoire
Chaque entrée de répertoire contient le nom du
fichier et son inode
Le noyau recherche l'arborescence pour convertir
le nom de fichier en un numéro d'inode.
77. La cohérence
Un système de fichiers est cohérent s’il est capable de restituer à
l’utilisateur ses fichiers et ses répertoires dans l’état où il les a
laissés.
Parmi les utilitaires d’un système d’exploitation, on trouve un
utilitaire de vérification et de correction des erreurs au niveau du
système de fichiers tel que scandisk pour Windows.
Du point de vue pratique, ces utilitaires examinent les SDD du
système d’exploitation et corrigent les erreurs qu’il peuvent y
trouver.
La vérification concerne les blocs appartenant aux fichiers ou
libres, et l’état des répertoires.
Les tableaux qui suivent illustrent un cas d’incohérence obtenu
avec un utilitaire d’Unix qui compte le nombre de fois où un bloc
est trouvé libre ou occupé :
78. Numéros des blocs0123456789101112131415Tableau des blocs
libres1101021110011100Tableau des blocs
utilisés0000200001100011Quand le SGF est cohérent, chaque
bloc apparaît une fois au maximum soit dans le premier tableau
soit dans le second.
Le second utilitaire vérifie les I-Nodes. Son rôle consiste à
parcourir tous les répertoires en partant de la racine et à
construire un tableau où le contenu d’une case est le nombre de
fois où un I-Node est référencé.
Lorsqu’un fichier est partagé par un lien physique son numéro d’INode apparaît dans un autre répertoire.
Pour vérifier la cohérence, on compare la valeur obtenue avec le
compteur de liens dans chaque I-Node.
79. Gestion
Enregistrements
de fichiers
logiques et physiques
Un enregistrement logique est un ensemble de données ayant un
sens pour l’utilisateur. Un fichier est une suite d’enregistrements
logiques.
Un enregistrement physique, aussi appelé bloc, est l’unité de
stockage manipulée par le système. Avec les disques, cette unité de
stockage est un secteur ou un multiple de cette taille. On l’appelle
unité d’allocation, parfois Cluster.
Les blocs peuvent être plus grands ou plus petits que les enregistrements logiques décidés par le programmeur. Le système peut
enregistrer plusieurs enregistrements logiques de petite taille dans un
seul bloc, ou peut avoir besoin de plusieurs blocs pour enregistrer de
grands enregistrements logiques.
79
80. Gestion de fichiers
Les
blocs physiques sont numérotés par le système et forment
la base de toute structure de fichier.
Le caractère (octet, byte) est la plus petite quantité d’information
manipulée par le système. Un fichier, vu par le système, est donc
un ensemble de blocs de taille fixe, chacun étant constitué d’une
suite de caractères.
80
81. Gestion des ressources disques
Le
système doit connaître l’emplacement sur disque (numéro de
cylindre, piste et secteur) de chaque bloc.
La première idée qui vient à l’esprit est de placer le fichier dans
des blocs consécutifs. Cette approche n’est pas réaliste compte
tenu de l’accroissement et des modifications des fichiers.
On peut gagner en flexibilité en adoptant une structure de blocs
dans laquelle chaque bloc contient un pointeur indiquant l’emplacement du bloc suivant. Cette approche facilite les modifications
et l’accroissement, mais alourdit la recherche d’un enregistrement, qui devient séquentielle.
81
82. Gestion des ressources disques
Une
possibilité est d’utiliser une table de pointeurs contenant
les indications nécessaires pour déterminer l’emplacement d’un
bloc cherché.
Il y a deux stratégies possibles : une table par unité de disque,
ou une table par fichier. Dans le premier cas, il faut charger en
mémoire la table contenant les pointeurs de tous les fichiers du
disque. Dans le second, on ne garde en mémoire que la table
des fichiers ouverts.
Un autre problème est celui de l’allocation de l’espace disque.
Le système tient à jour des tables facilitant la recherche de
secteurs disponibles. Deux possibilités sont couramment
utilisées : une table d’allocation, ou un bitmap.
82
85. Répertoires
Le
lien entre le nom d’un fichier et sa localisation sur disque est
réalisé à l’aide d’une table de correspondance appelée répertoire
(directory).
On peut concevoir des répertoires à un seul niveau, i.e.
contenant le nom de tous les fichiers du disque, ou à plusieurs
niveaux, permettant à chaque utilisateur d’organiser ses fichiers
de façon hiérarchique au moyen de sous-répertoires.
85
86. Structure
d ’un disque souple
Piste
0
Secteur 1 BOOT
2 FAT1
3 FAT1
4 FAT1
5 FAT1
6 FAT1
7 FAT1
8 FAT1
9 FAT1
10 FAT1
11 FAT2
12 FAT2
13 FAT2
14 FAT2
15 FAT2
16 FAT2
17 FAT2
18 FAT2
86
1
FAT2
DIR
DIR
DIR
DIR
DIR
DIR
DIR
DIR
DIR
DIR
DIR
DIR
DIR
DIR
u.a. 2
u.a. 3
u.a. 4
2
u.a. 5
6
7
8
.
.
.
.
Débu t des
données de
l'utilisateur
87. 0
Statut
7
Nom
(en ASCII)
16
87
AttributsŹ
:
1 = Lecture seulement
2 = Fichier cachˇ
4 = Fichier syst¸ me
8 = Nom du volume
16 = Sous-rˇ pertoire
32 = Archive
15
Extension
Réservé
Attribut
21
Réservé
9
23
Heure
25
27
31
Taille du fichier
Date
No. de la
1e u.a
.
88. Table
0
d’allocation de fichiers (FAT)
1
FF FF
Type de
disque
2
3
U.a. No.
4
5
6
7
8
9
No.de l'u.a.
suivante du
fichier ou:
000=libre
FF8-FFF=dernière u.a. d'un fichier
FF7=non lisible
Dans la FAT originale de DOS, on n’avait que 12 bits par entrée. Ceci
limitait la taille du disque à 4095 u.a.
Par exemple, 4096 u.a. de 512 octets = 2 Mo.
88
89. On
peut grossir la taille des unités d’allocation, mais la perte
d’espace par fichier augmente en conséquence. En moyenne,
cette perte est de 1/2 u.a. par fichier.
Depuis
ce temps, on a eu la FAT16, avec 16 bits par entrée, et
sur les disques durs on utilise aujourd’hui la FAT32 avec 32 bits
par entrée.
Windows NT et Windows 2000 utilisent un nouveau système de
fichiers beaucoup plus performant appelé NTFS.
89
90. Exemple : UNIX
Unix a été développé par Bell Laboratories à partir de 1970 par
Ken Thompson et Dennis Ritchie. Ce système a été mis
successivement sur PDP-7, 9 et 11, puis sur VAX, et enfin sur
des machines à base de microprocesseur MC68000. Aujourd’hui,
il fonctionne sur les stations de travail avec des microprocesseurs RISC.
En l979, on en est rendu à la version 7, la mieux connue. En
1982 apparaît le SYSTEM III, puis en 1983 le SYSTEM V suivant
la politique de distribution commerciale de AT&T.
90
91. Exemple : UNIX
Depuis
1991, le phénomène Linux a fait son apparition. Il s'agit
d'un UNIX de domaine public pour micro-ordinateur initialement
écrit par un étudiant en informatique finlandais, Linus Torvalds.
Il
a été porté sur plusieurs plates-formes, notamment : Intel
80x86, PowerPC, Alpha, Amiga, etc. Sa conception est moderne
et c'est elle que nous examinerons ici.
91
92. Exemple : UNIX
Sous
Unix, un fichier est une séquence linéaire de mots de 8
bits, de 1 octet à 1000 Mo. L'usager visualise le fichier comme
une séquence linéaire et peut atteindre n'importe quel octet du
fichier soit de façon absolue, soit en spécifiant une position
relative par rapport à la position courante, ou encore par rapport
à la fin du fichier.
À
partir d'une position quelconque, on peut lire un nombre
quelconque d'octets.
92
93.
Exemple
: UNIX
Unité d'allocation : bloc de 512 octets
1024 octets pour le SYSTEM V
et le système 4.1 de Berkeley.
4096 octets pour la version 4.2,
93
1 Ko à 4 Ko pour Linux.
94. Exemple
: UNIX
À
chaque fichier (y compris les répertoires qui sont également
des fichiers et les périphériques, que Unix considère comme des
fichiers spéciaux) on associe un inode (i-node ou index-node)
dans lequel on peut trouver les informations suivantes :
-
94
le propriétaire (user ID, group ID)
les protections (code de 16 bits)
les
dates
(création,
dernière
modification)
les liens vers d'autres nœuds-i
(nombre de répertoires qui contiennent ce fichier)
le type de fichier (données,
répertoire, périphérique)
les adresses disques des blocs de
données (13)
la longueur du fichier en octets.
95.
Exemple
0
8
16
24
32
40
48
56
64
72
80
88
96
104
112
120
: UNIX
Type et permissions
Utilisateur (UID)
Heure et da te d'accès
Heure et da te de modification
Groupe (GID)
Compteur de liens
Attributs du fichier
1 e bloc
3 e bloc
5 e bloc
7 e bloc
9 e bloc
11e bloc
Bloc de 1 e indirection
Bloc de 3 e indirection
ACL du fichier
Adresse de fragment
Réservé
AC L = Ac cess Control List, pas enco re implémenté
95
Taille du fi chier
Heure et da te de création
Heure et da te d'effacement
Nb. de blocs
Réservé
2 e bloc
4 e bloc
6 e bloc
8 e bloc
10 e bloc
12 e bloc
Bloc de 2 e indirection
Version du fichier
ACL du répertoire
Réservé
96.
Exemple
Dans
Dans
: UNIX
Linux, la taille d’un inode est de 128 octets.
le système de fichiers Ext2 adopté par la plupart des
systèmes Linux, le disque est divisé en groupes de blocs.
Chaque groupe de blocs contient un superbloc, des descripteurs
de groupe, un bitmap de blocs, un bitmap d'inodes, une table
d'inodes et des blocs de données. Les bitmaps occupent chacun
1 bloc ou u.a. Ceci limite donc la taille des groupes à 8 192
blocs pour des blocs de 1 Ko. ou 32 768 blocs pour des blocs de
4 Ko. Les inodes sont répartis également parmi les groupes de
blocs. Le nombre d'inodes par groupe ne peut non plus dépasser
les nombres ci-dessus.
96
97.
Exemple
: UNIX
Bloc 0
Bloc
d’amorce
Groupe de blocs 0
Groupe de blocs 1
…
Groupe de blocs n
Chaque groupe de blocs contient une copie du superbloc, des inodes et des
blocs de données :
Superbloc
97
Descripteurs
de groupe
Bitmap
de blocs
Bitmap
d'inodes
Table
d'inodes
Blocs de données
98.
Exemple
: UNIX
Le
superbloc contient le nombre d'inodes et le nombre de blocs
dans le système de fichiers. Il contient aussi de l'information sur
le nombre d'inodes et de blocs par groupe de blocs.
Le
descripteur de groupe est une structure de 32 octets donnant
le nombre de blocs dans le bitmap d'inodes, dans le bitmap de
blocs et dans la table d'inodes, le nombre d'inodes libres, le
nombre de blocs libres et le nombre de répertoires. Cette
dernière information est utile au système qui tente répartir les
répertoires parmi les différents groupes de blocs. Il allouera donc
un nouveau répertoire dans le groupe qui en a le moins.
Cette
organisation permet aux inodes d'être voisines des blocs
auxquels elles font référence, et aux inodes d'être voisines de
leur inode de répertoire, ce qui permet un accès plus rapide.
98
99.
Exemple
: UNIX
Dans chaque inode, on trouve
no de blocs. Les 12 premières
15 adresses disque en termes de
adresses d'une inode permettent
d'atteindre un espace données de :
12 1024 octets = 12 288 octets.
13e adresse disque pointe vers un autre bloc de 1024 octets
qui contient 256 adresses disque (4 octets par adresse), soit :
La
256 1024 octets = 262144 octets.
14e adresse disque pointe vers 256 blocs indirects
(indirection d'ordre 2) qui pointent à leur tour chacun vers 256
adresses disques :
La
99
256 256 1024 octets = 67108 864 octets.
100.
Exemple
: UNIX
15e adresse disque est une indirection d'ordre 3, ce qui
permet aux fichiers Linux d'atteindre des tailles avoisinant
La
La
256 256 256 1024 octets = 17 179 869 184 octets.
taille maximale d'un tel fichier sera donc :
17 179 869 184 + 67 108 864 + 262 144 + 12 288 Go.
Cette
implantation privilégie, du point de vue accès, les fichiers
de petite taille (12 Ko). À l'ouverture, le premier descripteur du
fichier (inode) est copié en mémoire. Lorsqu'on franchit le cap de
12 288 octets, le système d'exploitation copie le premier bloc
indirect, et ainsi de suite.
100
101.
Exemple
: UNIX
Pour savoir où se trouve l'octet n d'un fichier,:
° si n < 12 288, il se trouve dans le bloc direct n / 1024 à l'offset
n mod 1024.
° si n >12 288 et n ≤ 262 144, il se trouve dans le bloc donné par
la table de première indirection (n - 12 288) / 1024 à l'offset :
(n - 12 288) mod 1024,
° etc.
101
102.
Exemple
: UNIX
Ext2
tente de minimiser la fragmentation des fichiers lors de
l'allocation des blocs. Il cherche des blocs libres autour d'un bloc
cible. Si ce dernier est libre, il est alloué. Sinon, on cherche un
bloc libre dans les 32 entourant le bloc cible. Si on en trouve un,
il est alloué. Sinon, on cherche un bloc libre qui soit au moins
dans le même groupe de blocs que le bloc cible. Il y a plusieurs
heuristiques pour la définition du bloc cible. L'un d'entre eux est
de prendre le premier bloc libre dans le groupe de blocs où se
trouve l'inode du fichier.
Lorsqu'un
bloc libre est trouvé, on réserve les 8 blocs suivants,
s'ils sont libres. Quand le fichier sera fermé, les blocs réservés
restants seront libérés.
102
103.
Exemple
: UNIX
Répertoires
Les
entrées d'un répertoire Linux sont de longueur variable parce que
les noms de fichier peuvent aller de 1 caractère à 255 caractères. Il
s'agit en fait d'une liste chaînée, puisque le champ longueur de l'entrée
(rec_len), toujours arrondi vers le haut à un multiple de 4, donne en fait
la position de l'entrée suivante.
Octets
4
No. d'inode
2
2
1 à 255
rec_len
name_len
Nom du fichier
longueur
de l'entrée
103
longueur
du nom
105.
Exemple
: UNIX
Répertoires
Chaque
répertoire ne peut avoir qu'un parent. Le répertoire
racine n'a pas de parent et son pointeur “parent” contient luimême, c.-à-d. le #2.
Lorsqu'un
fichier est effacé, le numéro d'inode de l'entrée de
répertoire est mis à 0 et l'entrée est éliminée de la liste chaînée
en augmentant le champ rec_len de l'entrée précédente pour
qu'elle pointe à l'entrée suivante.
105
106. 2) le SGF d’UNIX (1/3)
* Structure hiérarchique
* 4 types de fichiers:
ordinaires: suite octets
catalogues: nœuds de l’arbre de cette structure
liens: pointent vers fichier
spéciaux: accès aux périphériques
107. 2) le SGF d’UNIX (2/3)
Fichier et structure inode:
1) Type (parmi les 4)
2) Taille
3) Date
4) Permission
5) Propriétaire
6) Localisation des données
108. le SGF de Windows NT
Micro$oft en 1988…
* Mieux que la FAT du Dos/Windows
* Mieux que HPFS de OS/2
New Technology File System (NTFS)
* Logical Cluster Numbers (LCN)
* Virtual Cluster Number (VCN)
114. Feature
XFS
UFS
VxFS
NTFS
Max FS Size
18 million TB
1 TB
1 TB
2 TB
Max File Size
9 million TB
1 TB
1 TB
2 TB
Extents
Blocks
Extents
Extents
4 GB
NA
64 MB
Undoc’d
Free extents
organized by
B+ trees
Bitmap per
cylinder grp
Bitmap per
allocation unit
Single bitmap
512 bytes to 64
KB
4KB or 8KB
Yes
Yes
No
NT 5.0
Directory
Organization
B+ Tree
Linear
Hashed
B+ tree
Inode allocation
Dynamic
Static
Dynamic
Dynamic
Crash Recovery
Asynch.
Journal
Fsck*
Synch. Journal
Synch. Journal
Maximum
Performance
7GB/sec
Not Available
1GB/sec
Not Available
File Space
Allocation
Max. Extent Size
Free Space
Mgmt
Variable Block
Size?
Sparse File
Support?
4GB/sec (single
file)
512 bytes to
64KB (4KB w/
compression)
116. Disques magnétiques
Plats rigides couverts de matériaux
d ’enregistrement magnétique
surface du disque divisée en pistes (tracks)
qui sont divisées en secteurs
le contrôleur disque détermine l`interaction
logique entre l ’unité et l ’ordinateur
117. Ordonnancement disques
Problème: utilisation optimale du
matériel
Réduction du temps total de lecture
disque
étant donné une file de requêtes de lecture
disque, dans quel ordre les exécuter?
118. Paramètres à prendre en considération
Temps de positionnement (seek time):
le temps pris par l`unité disque pour
se positionner sur le cylindre désiré
Temps de latence de rotation
le temps pris par l ’unité de disque
qui est sur le bon cylindre pour se
positionner sur le secteur désirée
Temps de lecture
temps nécessaire pour lire la piste
Le temps de positionnement est
normalement le plus important, donc il
est celui que nous chercherons à
minimiser
119. File d’attente disque
Dans un système multiprogrammé avec mémoire virtuelle, il y
aura normalement une file d’attente pour l ’unité disque
Dans quel ordre choisir les requêtes d ’opérations disques de
façon à minimiser les temps de recherche totaux
Nous étudierons différents méthodes par rapport à une file
d ’attente arbitraire:
98, 183, 37, 122, 14, 124, 65, 67
Chaque chiffre est un numéro séquentiel de cylindre
Il faut aussi prendre en considération le cylindre de départ: 53
Dans quel ordre exécuter les requêtes de lecture de façon à
minimiser les temps totaux de positionnement cylindre
Hypothèse simpliste: un déplacement d`1 cylindre coûte 1 unité
de temps
120. Premier entré, premier sorti: FIFO
axe de
rotation
45
85
146
85
108
110
59
2
Mouvement total: 640 cylindres = (98-53) + (183-98)+...
En moyenne: 640/8 = 80
121. SSTF: Shortest Seek Time First
Plus court d’abord
À chaque moment, choisir la requête
avec le temps de recherche le plus court
à partir du cylindre courant
Clairement meilleur que le précédent
Mais pas nécessairement optimal! (v.
manuel)
Peut causer famine
122. SSTF: Plus court servi
Mouvement total: 236 cylindres (680 pour le précédent)
En moyenne: 236/8 = 29.5 (80 pour le précédent)
123. SCAN: l’algorithme de
l’ascenseur
La tête balaye le disque dans une
direction, puis dans la direction opposée,
etc., en desservant les requêtes quand il
passe sur le cylindre désiré
Pas de famine
125. Problèmes du SCAN
Peu de travail à faire après le
renversement de direction
Les requêtes seront plus denses à
l’autre extrémité
Arrive inutilement jusqu’à 0
126. C-SCAN
Retour rapide au début (cylindre 0) du disque
au lieu de renverser la direction
Hypothèse: le mécanisme de retour est
beaucoup plus rapide que le temps de visiter
les cylindres
Comme si les disques étaient en forme de cercle!
C-LOOK
La même idée, mais au lieu de retourner au
cylindre 0, retourner au premier cylindre qui a
une requête
127. C-LOOK
direction
retour: 169 (??)
153 sans considérer le retour (19.1 en moyenne) (26 pour SCAN)
MAIS 322 avec retour (40.25 en moyenne)
Normalement le retour sera rapide donc le coût réel sera entre les deux
128. C-LOOK avec direction initiale opposée
direction
Retour 169
Résultats très semblables:
157 sans considérer le retour, 326 avec le retour