Académique Documents
Professionnel Documents
Culture Documents
NFA003 (2018-2019)
Introduction
NFA003 (2018-2019)
Introduction
Fichier logique
Niveau utilisateur
Interface : fonctions du SGF
Niveau Système ou physique (Système de Gestion de Fichiers) :
- allocation des fichiers sur le support de masse
- répertoire
Fichier Physique
NFA003 (2018-2019)
Introduction : un exemple
dupont 20
Programme
cesar 09
données
cléopâtre 15
Fichier physique
100100010000 Structure selon
Allocation
fichier_notes_nfa004
NFA003 (2018-2019)
Le fichier logique
NFA003 (2018-2019) 5
Notion de fichier logique
NFA003 (2018-2019)
Notion de fichier logique
Program toto;
fermer (fichier)
Rupture de la Liaison avec le fichier physique
detruire (fichier)
NFA003 (2018-2019)
Notion de fichier logique
NFA003 (2018-2019)
Fichier à mode d'accès séquentiel
NFA003 (2018-2019)
Fichier à mode d'accès direct
ou
seek (3)
read (enregistrement)
NFA003 (2018-2019)
Exemple : les fichiers en langage pascal
program acces_fichiers
enrg_note = record nom_eleve : string;
note : integer;
Enregistrement
end;
t_fichier_notes = file of enrg_note;
var mon_fichier : t_fichier_notes; Déclaration fichier logique
begin
assign(mon_fichier, ‘fichier_notes_nfa004');
Mise en correspondance
reset ( mon_fichier ); (* ouvrir le fichier *)
while not eof ( nom_fichier ) do
(* parcourir les eélts du fichier – acceè s seéquentiel*)
begin
get ( mon fichier );
end;
(* acceès direct : aller aèl ’eél eém ent 6 *)
seek (mon_fichier,6) ;
get (mon_fichier) ;
(* fermeture automatique en fin de programme *)
end.
NFA003 (2018-2019)
Le fichier physique
NFA003 (2018-2019) 12
Structure du disque dur
plateau
NFA003 (2018-2019)
Fichier physique
toto 12
Programme
dupont 20
donnée
cesar 09 Fichier physique
Ensemble de
cléopâtre 15 00110 blocs physiques
Fichier_notes_nfa004
NFA003 (2018-2019)
Fichier physique
NFA003 (2018-2019)
Allocation contiguë
Difficultés :
- création d'un nouveau fichier
- extension du fichier
NFA003 (2018-2019)
Allocation contiguë
Fichier 4 : 6 blocs
Fichier 3 : 4 blocs
NFA003 (2018-2019)
Allocation contiguë
Compactage
Fichier 4 : 6 blocs
NFA003 (2018-2019)
Allocation contiguë
Déplacer les
fichiers
COUTEUX !
NFA003 (2018-2019)
Allocation par zones
ZP P
ZS I
ZS I
Zone
Primaire ZS I
( 3 blocs)
Zone Problèmes précédents
Secondaire
(2 blocs)
atténués mais toujours existants
NFA003 (2018-2019)
Allocation par bloc chainée
• Avantages :
Extension simple du fichier : allouer un
fichier 1 nouveau bloc et le chainer au dernier
Pas de fragmentation
fichier 2 • Difficultés :
Mode séquentiel seul
Le chaînage du bloc suivant occupe de
la place dans un bloc
Adresse/ n° bloc suivant
données
NFA003 (2018-2019)
Allocation par bloc chainée :
1 NULL
variante
2 Libre
Fin de fichier
Une table d'allocation des fichiers (File 3 5
7 1
fichier 1
11 7
N° de Bloc suivant
12 Libre Alloué pour le
fichier
13 15
14 Libre
fichier 2 15 3
16 Libre
17 13
FAT
NFA003 (2018-2019) 20 Libre
Allocation indexée
Les adresses des blocs physiques constituant un fichier sont rangées
dans une table appelée index, elle-même contenue dans un ou plusieurs
blocs disque
512 / 4 = 128 entrées
fichier 2
fichier 1
bloc d'index
0 Accès direct
Accès direct
.
.
.
9 Accès direct
10 1 indirection
11 2 indirections
12 3 indirections
Table d'allocation
13 entrées
NFA003 (2018-2019)
Allocation indexée : la solution Unix
.
.
.
9
10
11
12 10 K
NFA003 (2018-2019)
Allocation indexée : la solution Unix
La 11ème entrée de la table contient l’adresse d’un bloc d’index
INDIRECT_1. Ce bloc d’index contient des adresses de blocs
de données
Bloc = 1024 octets ; adresse de bloc = 4 octets → 256 entrées
dans le bloc d’index
0 INDIRECT_1
.
.
.
9 256 entrées 256 Ko alloués
10
11
12 Accès aux blocs de données en première indirection :
2 accès disque
Table d'allocation
13 entrées
NFA003 (2018-2019)
Allocation indexée : la solution Unix
La 12ème entrée de la table contient l’adresse d’un bloc d’index
INDIRECT_2. Ce bloc d’index contient des adresses de blocs d’index
INDIRECT_2_i (i de 1 à 256). Chaque bloc d’index INDIRECT_2_i contient
des adresses de blocs de données
Bloc = 1024 octets ; adresse de bloc = 4 octets → 256 entrées dans le
bloc d’index
Accès aux blocs de données en seconde indirection :
0 3 accès disque
.
.
. INDIRECT_2_i
9 INDIRECT_2
10
11
12
Table d'allocation
256 * 256 Ko alloués
13 entrées
NFA003 (2018-2019)
Allocation indexée : la solution Unix
La 13ème entrée de la table contient l’adresse d’un bloc d’index
INDIRECT_3. Ce bloc d’index contient des adresses de blocs d’index
INDIRECT_3_i. Chaque bloc d’index INDIRECT_3_i contient des adresses
de blocs d’index INDIRECT_3_i_j. Chaque bloc d’index INDIRECT_3_i_j
contient des adresses de blocs de données
Bloc = 1024 octets ; adresse de bloc = 4 octets → 256 entrées dans le
bloc d’index (i et j évolue de 1 à 256)
Accès aux blocs de données en troisième indirection :
0
4 accès disque
.
INDIRECT_3_i_j
. INDIRECT_3
INDIRECT_3_i 256 * 256 * 256 Ko alloués
10
11
12
Table d'allocation
13 entrées
NFA003 (2018-2019)
Allocation indexée : un exemple
0 Accès direct
Accès direct
.
. 10 blocs de données
.
9 Accès direct
INDIRECT_1
10 1 indirection
256 blocs de données
11 2 indirections
12 3 indirections INDIRECT_2_1
Table d'allocation
256 blocs de données
13 entrées
INDIRECT_2_2
INDIRECT_2
En mémoire centrale Sur disque
4 blocs de données
Fichier de 526 Ko 526 blocs
Allocation : 10 blocs en accès direct
: 256 blocs de données pointés par le bloc index INDIRECT 1
: restent 526 – 10 – 256 = 260 blocs . Tous ces blocs sont pointés à partir du bloc d’index
INDIRECT_2. 2 blocs d ‘index INDIRECT_2_1 et INDIRECT_2_2 sont nécessaires à ce niveau
NFA003 (2018-2019)
Gestion de l'espace libre
Le système maintient une liste d'espace libre, qui mémorise tous les
blocs disque libres (non alloués)
vecteur de bits
liste chaînée des blocs libres
NFA003 (2018-2019)
Gestion de l'espace libre par un vecteur de bits
01010101110101010111
NFA003 (2018-2019)
Gestion de l'espace libre par liste chaînée
La liste d'espace libre est représentée par une liste chaînée des
blocs libres
Difficile de trouver un
groupe de blocs libres
NFA003 (2018-2019)
Gestion de l'espace libre par liste chaînée:
variante avec comptage
Le premier bloc libre d’une zone libre contient l’adresse du premier
bloc libre dans la zone suivante et le nombre de blocs libres dans la
zone courante.
1 1
1 3
1 1
1 3
NFA003 (2018-2019)
Gestion de l'espace libre 1 NULL
2 Libre
Fin de fichier
3 5
6 Libre
7 1
N° de Bloc suivant
fichier 1 11 7
alloué pour le
fichier
12 Libre
13 15
14 Libre
fichier 2 15 3
16 Libre
17 13
FAT
NFA003 (2018-2019) 20 Libre
Correspondance
fichier logique - fichier physique
Désignation des fichiers : le répertoire
NFA003 (2018-2019) 36
Le répertoire
Le répertoire est une table sur le support permettant
de référencer tous les fichiers existants du SGF avec
leur nom et leurs caractéristiques principales.
Le répertoire stocke pour chaque fichier l'adresse des
zones de données allouées au fichier
Répertoire
fichier
fichier
fichier
NFA003 (2018-2019)
Le répertoire
NFA003 (2018-2019)
Organisation des répertoires
1 répertoire
NFA003 (2018-2019)
Organisation des répertoires
A/Arthur/1 A/Julie/1
Nom de fichier A/utilisateur /nomdufichier
NFA003 (2018-2019)
Organisation des répertoires
Répertoire à structure arborescente :
• chaque utilisateur dispose d'un sous-répertoire propre (répertoire
de travail)
• l'utilisateur peut créer des sous-répertoires à l'intérieur de son
répertoire de travail
répertoire racine A/1
A 1
sous-répertoire texte 1 3
pg
A/Julie/3
3 2 3
A/Arthur/texte/3 A/Arthur/pg/3
NFA003 (2018-2019)
Organisation des répertoires
On appelle chemin (path) la succession des répertoires en partant de la
racine pour atteindre un fichier. Un chemin est de la forme :
RepRacineseéparateursousRepseéparateurnomFichier
sous unix le séparateur est / ; sous Windows le séparateur est \
répertoire racine
A
sous-répertoire texte 1 3
pg
A/Julie/3
3 2 3
A/Arthur/texte/3 A/Arthur/pg/3
NFA003 (2018-2019)
Répertoire : exemple MS-DOS
Chaque fichier occupe 32 octets dans le répertoire
8 3 1 12 2 2 2 2
nom_fichier ext A H D B taille
NFA003 (2018-2019)
Opérations du Système de gestion de fichiers
◙ Structuration du disque
◙ Traitement des requêtes disque
◙ Opérations de haut niveau
◙ Protection des fichiers
NFA003 (2018-2019)
Structuration du disque dur
NFA003 (2018-2019) 45
Structuration du disque dur
Le formatage physique
Le formatage logique
Le partitionnement
NFA003 (2018-2019)
Formatage physique
Le formatage physique ou de bas niveau permet de diviser la
surface du disque en éléments basiques.
cylindre
plateau
disque
NFA003 (2018-2019)
Partitionnement
Une partition est une partie d'un disque dur destinée à accueillir un SGF. Elle
est identifiée par un nom appelé nom de volume. Elle est constituée d’un
ensemble de cylindres contigus
NFA003 (2018-2019)
Organisation de partition : LINUX
Descripteur des
fichiers
1er secteur Nom
contient l’amorçage du Taille
droits
SE Taille du SGF
et description de la blocs libres chainés
partition Descripteurs de fichiers
(inodes) libres
inode
NFA003 (2018-2019)
Organisation de partition : DOS
1 NULL
2 L
3 NULL Fichier 1 ext H
A D B taille
4 L
5 L
6 L
7 1
11 7
12 L
13 15
14 L
15 3
16 L
17 13
20 L
NFA003 (2018-2019)
Démarrage de l’ordinateur
1. L’utilisateur appuie sur le bouton d’alimentation de l’unité centrale
NFA003 (2018-2019)
Traitement des requêtes disque
NFA003 (2018-2019) 53
Traitement des requêtes disque
NFA003 (2018-2019)
Traitement des requêtes disque
E/S
att
A P1
P
E/S
att
A P2
P
E/S
att
A P3
P
A
L
P2 P3 P2 P1
NFA003 (2018-2019)
Temps d'accès à un secteur
Adresse HCS d'un secteur : n°face (head), n°piste (cylindre),n°secteur
cylindre
1. positionnement du bras sur la piste
Face
(head)
Piste
Secteur : 512 octets 2. temps d'attente pour le passage du secteur
Adresse HCS (3, 1, 30) sous la tête de lecture
le temps de positionnement du bras est le plus pénalisant : on utilise des algorithmes de services des
requêtes disques pour réduire au mieux les mouvements du bras
NFA003 (2018-2019)
L'ordonnancement du bras
1
1 1 2
2 3
3 2 3
NFA003 (2018-2019)
Ordonnancement du disque : FCFS
NFA003 (2018-2019)
Ordonnancement du disque : SSTF
NFA003 (2018-2019)
Ordonnancement du disque : SCAN
NFA003 (2018-2019)
Ordonnancement du disque : C-SCAN
Le bras balaye l'ensemble des pistes toujours dans le même
sens
Exemple : liste de requêtes (n° de piste)
98 183 37 122 14 124 65 67
position initiale de la tête de lecture/écriture : piste 53
NFA003 (2018-2019)
Réalisation des opérations de haut
niveau
NFA003 (2018-2019) 62
Interfaces d’appel du SGF
> cd /home
open (fichier)
chdir( /home)
Interface d’appel
open chdir (bibliothèque système)
_open
_chdir
SE : ensemble
de fonctions
Système de gestion de fichiers
NFA003 (2018-2019)
Les commandes
NFA003 (2018-2019)
Les commandes
NFA003 (2018-2019)
Les commandes
NFA003 (2018-2019)
Les appels systèmes
Exemple :
main () {
struct element { int fich;
char nom[12]; fich = open (ficG, r);
int note : integer; } while (not ÉND_OF_FILÉ) {
element enrg; read(fich, enrg, taille_enrg_octets) }
close(fich)
}
NFA003 (2018-2019)
Ouverture d’un fichier
MC
fich
NFA003 (2018-2019)
Lecture d’un fichier
MC
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
Lecture 1 Lecture 2
tailleÉnrgOctets tailleÉnrg0ctets
Open
offset = 0
read(fich, enrg, tailleÉnrgOctets)
offset = offset + tailleÉnrgOctets
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
Il faut déterminer à quel bloc les octets à lire appartiennent, et lire ce bloc
Bloc 0,1,2 Bloc 3
fich
offset
Open
offset = 0
tailleÉnrgOctets
inode
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
tampons mémoire
◙ Si non, il prend un tampon libre et copie le bloc disque dans le
tampon
◙ Si tous les tampons sont occupés, il libère un tampon en choisissant
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
1eè
re lecture : acceè
s au bloc 0 de ficG
Utilisateur Système
Liste de tampons en MC Inode ficG Nom
struct element { Taille
char nom []; droits
int note : integer; } Bloc 3 Bloc 4 Bloc 1 Bloc 5
vide
element enrg;
1 Ko ficA ficA ficB ficB
32
enrg
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
1eè
re lecture : acceè
s au bloc 0 de ficG
Utilisateur Système
Inode ficG Nom
Liste de tampons en MC
struct element { Taille
char nom []; droits
int note : integer; } Bloc 3 Bloc 4 Bloc 1 Bloc 5
element enrg;
1 Ko ficA ficA ficB ficB
Bloc 0
ficG
32
enrg
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
2eè
me lecture : acceè
s au bloc 0 de ficG
Utilisateur Système
Liste de tampons en MC
struct element {
char nom [];
Bloc 3 Bloc 4 Bloc 1 Bloc 5
int note : integer; }
element enrg;
1 Ko ficA ficA ficB ficB
Bloc 0
ficG
32
enrg Recherche du bloc 0 de ficG dans la liste
bloc 0 de ficG est dans la liste
fich = open(ficG, r);
while (not ÉND_OF_FILÉ) { 0 accès disque
read(fich, enrg, tailleÉnrrOctets) }
Bloc 0
close(fich) ficG
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
33eè
me lecture : acceè
s au bloc 1 de ficG
Utilisateur Système
Liste de tampons en MC
struct element {
char nom [];
int note : integer; } Bloc 3 Bloc 4 Bloc 1 Bloc 5
1 Ko ficA ficA ficB ficB
Bloc 0
element enrg;
ficG
32
enrg Recherche du bloc 1 de ficG dans la liste
bloc 1 de ficG n'est pas dans la liste
fich = open(ficG, r); → lecture depuis le disque
while (not ÉND_OF_FILÉ) {
read(fich, enrg, tailleÉnrrOctets) }
Bloc 1
close(fich) ficG
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
33eè
me lecture : acceè
s au bloc 1 de ficG
Utilisateur Système
Liste de tampons en MC
struct element {
char nom [];
int note : integer; } Bloc 3 Bloc 4 Bloc 1 Bloc 5
1 Ko ficA ficA ficB ficB Bloc 0
element enrg;
ficG
32
Aucun tampon libre
enrg Écriture si le Le moins récemment accédé
bloc a été modifié
est libéré (Bloc3, FicA)
dans le cache
fich = open(ficG, r);
while (not ÉND_OF_FILÉ) {
read(fich, enrg, tailleÉnrrOctets) }
close(fich) Bloc 3 Bloc 1 1 accès disque
ficA ficG
NFA003 (2018-2019)
Exemple : lecture d’un fichier sous Unix
33eè
me lecture : acceè
s au bloc 1 de ficG
NFA003 (2018-2019)
Écriture dans un fichier
NFA003 (2018-2019)
Fermeture d’un fichier
close(fich)
NFA003 (2018-2019)
Protection des fichiers
NFA003 (2018-2019) 81
Protection des fichiers
Fiabilité du support
Utilisation de différents types de redondance
NFA003 (2018-2019)
Protection contre les accès inappropriés
fichA
Annie Nicolas Martine Charles Louis
rx r rx rx rwx
NFA003 (2018-2019)
Protection contre les accès inappropriés
G3 : Nicolas
G2 : Martine, Charles, Annie
G1 : Louis
Annie Nicolas Martine Charles fichA
Louis
rx r rx rx rwx G3 G2 G1 fichA
r rx rwx
G3 : Annie, Louis
G2 : Martine, Charles
G1 : Nicolas
NFA003 (2018-2019)
Protection : exemple Unix
Définition de trois groupes :
le propriétaire : celui qui a crée le fichier
le groupe : le groupe de travail
les autres : tous les autres
> ls -l
drwxr-xr-x 2 delacroi 4096 Oct 22 1998 repertoire
-rw-r--r-- 1 delacroi 6401 Jan 8 1997 eleve.c
-rwxr-xr-x 1 delacroi 24576 Dec 15 1998 essai
> ls -l essai.c
-rw-rw-rw- 1 delacroi 67 Dec 15 1998 essai.c
NFA003 (2018-2019)
Protection contre les dégâts physiques
primaire secondaire
secteur
C
données 100010001000 1100 100010001000 1100
R
C
Somme de contrôle : inclut des éléments
redondants par rapport aux données
CRC (contrôle de redondance cyclique) : fonction permettant de détecter les erreurs et les
appliquée aux données et calculant la somme de réparer
contrôle
NFA003 (2018-2019)
Protection contre les dégâts physiques
Cartouches
NFA003 (2018-2019)
Protection contre les dégâts physiques
Trash jour J
Restauration
dernière sauvegarde complète
Complétée par les sauvegardes incrémentales
à J-1
NFA003 (2018-2019)
Protection contre les dégâts physiques
Lecture/écriture
NFA003 (2018-2019)