Vous êtes sur la page 1sur 173

Systèmes d’Exploitation I

Chapitre IV :

Système de Gestion des


Fichiers Amine DHRAIEF
1ère année
ESEN, Université de la Manouba
À quoi ressemble un disque dur ?

18/04/18 OS I 2
Structure physique d'un disque dur

18/04/18 OS I 3
Structure physique d'un disque dur

A : plateau ; B : bras ; C : tête ; 
D : cylindre ; E : piste ; F : 
secteur géométrique

Source :  Wikimedia Commons

18/04/18 OS I 4
Structure physique d'un disque dur

Source :  Wikimedia Commons

(A) piste, (B) secteur géométrique, (C) 
secteur d'une piste, (D) bloc

Le secteur (ou bloc) est la plus petite unité 
physique de stockage sur un support de 
donnée 
Sa taille varie de 512 octets à 4096 octets
18/04/18 OS I 5
Géométrie d'un disque dur
Adressage CHS : Cylinder/Head/Sector


Cylindre: superposition 
de plusieurs pistes
– Les pistes au dessus les
unes des autres sont
accessibles sans bouger les
têtes de lecture

18/04/18 OS I 6
Géométrie d'un disque dur
Adressage CHS : Cylinder/Head/Sector

Head: 
– Les têtes de lecture/enregistrement sont
solidaires des bras mobiles
– Le plus souvent il y a une tête par surface soit
deux par plateau
– Le chemin parcouru par une tête particulière
sur un cylindre particulier s'appelle une piste


Secteur :
– La piste est divisée en secteurs (aussi appelés
blocs) contenant les données.
– La taille d'une piste diminue en allant vers 
le centre du disque → le nombre de secteur 
par piste diminue aussi en allant vers le 
centre
– Taille d'un secteur plus commune= 512 octets
18/04/18 OS I 7
Géométrie d'un disque dur
Adressage CHS : Cylinder/Head/Sector

L'adresse CHS est 
simplement constituée par 
l'assemblage des trois 
composants décrits ci-
dessus.
– Le tout premier secteur d'un
disque est à l'adresse 0 / 0 / 1 :
c'est le premier secteur accédé
par la première tête positionnée
sur le premier cylindre.
– Le suivant sera 0 / 0 / 2 (ce
secteur est naturellement atteint
juste après par la même tête)
18/04/18 OS I 8
Taille d'un disque

Taille d'un disque = 
(Nombre de cylindre) x 
(Nombre de piste par cylindre) x 
(Nombre moyen de secteur par piste) x
(Taille du secteur)


Exemple=
– Nombre de piste par cylindre 255
– Nombre de cylindre = 36481
– Nombre moyen de secteur par piste = 63
– Taille du secteur = 512 octets
– Taille du disque ≈ 300 GB (255 * 36481 * 63 * 512 = 300066439680 
octets)

18/04/18 OS I 9
Pourquoi a-t-on besoin de fichiers ?

18/04/18 OS I 10
Définition d'un fichier

Toutes les applications informatiques doivent 
enregistrer et retrouver des informations. 


L’espace d’adressage étant insuffisant, on utilise des 
fichiers pour cela.


Fichier (nom masculin)
– Meuble, boîte servant à recevoir des fiches.
– Ensemble de données regroupées en une unité indépendante
de traitement informatique.

18/04/18 OS I 11
Définition #1 : Dictionnaire
Larousse

Fichier (nom masculin) : Ensemble organisé 
d'informations, désigné par un nom précis,
que le système d'exploitation d'un ordinateur
manipule comme une simple entité, dans sa
mémoire ou sur un support de stockage.

18/04/18 OS I 12
Définition #2 : Wikipedia

Un fichier informatique est au sens commun,
une collection, un ensemble de données 
numériques réunies sous un même nom,
enregistrées sur un support de stockage 
permanent, appelé mémoire de masse, tel
qu'un disque dur, un CD-ROM, une mémoire
flash ou une bande magnétique, et manipulées 
comme une unité.

18/04/18 OS I 13
Information indépendante du processus

Un processus en cours d’exécution peut enregistrer une quantité 
d’informations dans son espace d’adressage mais cette façon de faire 
présente trois inconvénients :
1)La capacité de stockage est limitée à la mémoire vive. Cette taille peut convenir
pour certaines applications, mais elle est beaucoup trop faible pour d’autres
(applications des banques, réservations, téléchargement p2p,...)
2)Les informations stockées en mémoire vive sont perdues, lorsque le processus
se termine ou lors du plantage de l'ordinateur. Pour un grand nombre d'applications,
les informations doivent être conservées pendant des durées importantes.
3)Il ne peut pas y avoir d’accès simultané à ces informations. Un répertoire
téléphonique stocké dans l’espace d’adressage d’un processus ne peut être
examiné que par ce seul processus (pour les raisons de protection des données
expliquées lors de l’étude des processus), de telle sorte qu’on ne peut rechercher
qu’un seul numéro à la fois.

→  Pour résoudre ce problème, il faut rendre l’information 
indépendante d’un processus donné.
18/04/18 OS I 14
Stockage à long terme des informations

Trois caractéristiques sont donc requises pour le 
stockage des informations à long terme :

1) Il faut pouvoir stocker des informations de très grande taille ;

2) Les informations ne doivent pas disparaître lorsque le 
processus qui les utilise se termine ;

3) Plusieurs processus doivent pouvoir accéder simultanément 
aux informations.

18/04/18 OS I 15
Fichiers = solution au problème

La solution à tous ces problèmes consiste à stocker les 
informations dans des fichiers sur des disques ou d’autres 
supports. 
– Les processus peuvent alors les lire ou en écrire de nouvelles. 


Les informations stockées dans des fichiers doivent être 
permanentes, c’est-à- dire non affectées par la création ou 
la fin d’un processus. 


Un fichier ne doit disparaître que lorsque son propriétaire le 
supprime explicitement.

18/04/18 OS I 16
Disque= suite de blocs

Nous considérons un disque comme une suite 
séquentielle de blocs de taille fixe qui supportent 
deux opérations
– Lire le bloc k
– Écrire le bloc k

→ Ces deux opérations permettent en principe 
de résoudre le stockage à long terme des 
informations.

18/04/18 OS I 17
Des questions évidentes

Voici quelques questions que l'on se pose 
rapidement :
1)Comment trouve-t-on l'information ?
2)Comment empêche-t-on un utilisateur de lire les 
données d'un autre utilisateur ?
3)Comment sait-on qu'un bloc est libre ?

18/04/18 OS I 18
Vie et mort d'un fichier

Le fichier (file) est l'unité d'information qui est 
créée par un processus.


L'information enregistrée dans des fichier doit être 
persistante → c'est-à-dire qu'elle ne doit pas être 
affectée par la création ou la fin d'un processus


Un fichier doit disparaître quand son propriétaire 
le demande expressément

18/04/18 OS I 19
Qui les gère alors ?

Les fichiers sont gérés par le système d’exploitation. 


La façon dont ils sont structurés, nommés, utilisés, 
protégés et implémentés sont des points majeurs de 
la conception du système d’exploitation. 


La partie du système d’exploitation qui gère les 
fichiers est appelée le gestionnaire du système de 
fichiers (en anglais file system)

18/04/18 OS I 20
Les fichiers

18/04/18 OS I 21
Les fichiers du point de vue utilisateur


Le système de fichiers est la partie la plus 
visible d’un système d’exploitation. 
– La plupart des programmes lisent ou écrivent au
moins un fichier, et les utilisateurs manipulent
beaucoup de fichiers.
– De nombreuses personnes jugent un système
d’exploitation sur la qualité de son système de
fichiers : son interface, sa structure et sa fiabilité.

18/04/18 OS I 22
Les fichiers du point de vue utilisateur

L’utilisateur attache la plus grande importance à 
l’interface d’un système de fichiers, c’est-à-dire à 
la manière de nommer les fichiers, de les protéger, 
aux opérations permises sur eux, etc. 
– Il est moins important pour lui de connaître les détails de
son implémentation, c’est-à-dire de connaître le nombre de
secteurs d’un bloc logique ou de savoir si l’on utilise des
listes chaînées ou des tables de bits pour mémoriser les
emplacements libres.
– Ces points sont, en revanche, fondamentaux pour le
concepteur du système de fichiers.

18/04/18 OS I 23
Nom d’un fichier : Pourquoi ?

Les fichiers sont un mécanisme d'abstraction. 
– Ils permettent d’écrire des informations sur le disque et de les lire
ultérieurement.


Ceci doit être fait de manière à masquer le fonctionnement et 
l’emplacement de stockage des informations à l’utilisateur. 
– Il ne doit pas avoir à choisir tel ou tel secteur, par exemple.


La gestion et l’affectation des noms des objets sont les 
parties les plus importantes d’un mécanisme abstrait. 
– Un processus qui crée un fichier lui attribue un nom.
– Lorsque le processus se termine, le fichier existe toujours et un autre
processus peut y accéder au moyen de ce nom.
18/04/18 OS I 24
Nom d’un fichier : Règles de formation ?


Les règles d’affectation des noms de fichiers varient d’un 
système à un autre, mais tous les systèmes d’exploitation 
autorisent les noms de fichiers constitués de chaînes de un à 
huit caractères non accentués. 
– Ainsi « tunis » et «ariana » sont des noms de fichiers valides.
– Les chiffres et des caractères spéciaux sont quelquefois autorisés. Ainsi « 2
», « urgent! » et « Fig.2-14 » peuvent être des noms valides.


Certains systèmes de fichiers différencient les lettres 
majuscules et minuscules alors que d’autres ne le font pas. 
– Unix fait partie de la première catégorie et MS-DOS de la deuxième.
– Les noms suivants désignent donc des fichiers distincts sur un système Unix
: « tunis », «Tunis» et « TUNIS».
– Sur MS-DOS, ils désignent le même fichier.
18/04/18 OS I 25
Nom de fichier: extension


De nombreux systèmes d’exploitation gèrent des noms en deux 
parties, les deux parties étant séparées par un point, comme dans 
« prog.c ». La partie qui suit le point est alors appelée extension ; 
elle donne en général une indication sur la nature du fichier.
– Sous MS-DOS, par exemple, les noms de fichiers comportent 1 à 8 caractères
éventuellement suivis d’une extension de 1 à 3 caractères.
– Sous Unix, la taille de l’extension éventuelle est libre, le fichier pouvant même
avoir plus d’une extension comme dans « prog.c.Z ».


Dans certains cas, les extensions sont simplement des 
conventions et ne sont pas contrôlées. Un fichier « fichier.txt » est 
vraisemblablement un fichier texte, mais ce nom est destiné 
davantage au propriétaire du fichier qu’au système d’exploitation. 
En revanche, certains compilateurs C imposent l’extension « .c » à 
tous les fichiers à compiler
18/04/18 OS I 26
La structure des fichiers

Les fichiers peuvent être structurés de 
différentes manières
– Suite d'octets
– Suite enregistrement
– Arbre

18/04/18 OS I 27
Fichier= suite d'octets

Le fichier est une suite d'octets 
sans structure
– Le système d'exploitation ne connaît
pas et ne s'occupe pas du contenu
de ce fichier
– Il ne voit que des octets
– Toute signification doit être apporté
par le programme des utilisateurs
– UNIX et Windows suivent tout deux
cette approche

1 octet
18/04/18 OS I 28
Fichier= suite d'enregistrements

Le fichier est une suite d'enregistrements de 
longueur fixe 
– Concept principal : une opération de lecture renvoie un
enregistrement/une opération d’écriture réécrit ou ajoute
un enregistrement
– 80 caractère → carte perforées de 80 colonnes
– 132 caractères → imprimantes de 132 colonnes
– Les programmes lisaient les données par bloc de 80
caractère est écrivaient par bloc de 132 caractères
– Obsolète

18/04/18 OS I 29
Fichier= arbre

Le fichier est un arbre d'enregistrement
– Les enregistrements n'ont pas la même longueur
– Chaque enregistrement contient une clé dont la
position est fixe dans l'enregistrement
– L'arbre est trié en fonction des clés → permet de
rechercher rapidement une clé donnée
– L'opération fondamentale ne consiste pas à obtenir
le prochain enregistrement, mais obtenir un
enregistrement avec une clé donnée

18/04/18 OS I 30
Les types de fichiers

La plupart des systèmes d'exploitation supportent plusieurs types de fichiers
– UNIX est Windows ont des fichiers ordinaires et des répertoires
– UNIX traite aussi des fichiers spéciaux caractère et bloc


Les fichiers ordinaires (regular files) sont ceux qui contiennent les informations des
utilisateurs. Ils sont soit des fichiers en code ASCII, soit des fichiers binaires.


Les répertoires (directories) sont des fichiers systèmes qui conservent la structure du
système de fichiers


Les fichiers spéciaux caractère (character special files) sont liés aux périphériques
entrées/sorties


Les fichiers spéciaux bloc (block special files) servent à modéliser les disques.

18/04/18 OS I 31
Les fichiers ASCII


Les fichiers ASCII se composent de lignes 
de texte
– Chaque ligne se termine par le caractère retour
chariot (CR : Carriage Return) ou le caractère saut
de ligne (LF : Line Feed)
– On peut les afficher et les éditer avec n'importe quel
éditeur de texte

18/04/18 OS I 32
Les fichiers binaires


Ce ne sont pas des fichiers ASCII !
– Si on les affiche cela donne un résultat incompréhensible
– Ils possèdent une structure interne connue des
programme qui les exploitent


Bien que techniquement le fichier soit juste une 
structure d'octets, le système d'exploitation 
exécutera ce fichier seulement s'il possède un 
certain format

18/04/18 OS I 33
Les fichiers binaires


Un fichier binaire 
comporte généralement 
cinq parties :
– L'en-tête (header)
– Le code
– Les données
– Les bits de translation
(relocation)
– La table des symboles

18/04/18 OS I 34
Les fichiers binaires


Le début de l'en-tête  
est un nombre magique 
(Magic number)
– C'est une valeur qui
identifie le fichier comme
étant un fichier exécutable
– Pour éviter l’exécution
accidentelle d'un fichier
qui ne possède pas ce
format

18/04/18 OS I 35
Les fichiers binaires


Le code et les 
données du 
programme lui 
même suivent l'en-
tête
– Ils sont chargés en
mémoire et déplacés à
l'aide des bits de
translation

18/04/18 OS I 36
L'accès au fichiers : accès séquentiel


Les premiers systèmes d'exploitation 
proposaient un seul type d'accès au 
fichiers : l'accès séquentiel (sequential
access).
– Dans ce système, un processus pouvait lire tous les
octets ou tous les enregistrements d'un fichier dans
l'ordre en commençant au début
– Les fichiers séquentiels étaient pratiques quand le
support de stockage était une bande magnétique .

18/04/18 OS I 37
L'accès au fichiers : accès aléatoire

Lorsque les disques ont servi à l'enregistrement 
des fichiers, il est devenu possible de lire des 
octets ou des enregistrement d'un fichier dans 
n'importe quel ordre


Les fichiers dont les octets ou les 
enregistrements peuvent être lus dans n'importe 
quel ordre sont appelés fichier à accès directe 
ou accès aléatoire (random access)

18/04/18 OS I 38
Les attributs des fichiers

Chaque fichier possède un nom et des données. 


Les systèmes d'exploitation associent des 
informations complémentaire : 
– l'heure et la date de sa création et sa taille

→ Ces informations sont appelés les attributs du 
fichier (file's attributes) ou metadonnées 
(metadata)

18/04/18 OS I 39
Les attributs des fichiers

18/04/18 OS I 40
Les opérations sur les fichiers

Create ●
Append

Delete ●
Seek

Open ●
Get atributes

Close ●
Set attributes

Read ●
Rename

Write

18/04/18 OS I 41
Les répertoires

18/04/18 OS I 43
Les répertoires : des fichiers comme
d'autres ?

Pour conserver une trace des fichiers, les systèmes 
de fichiers possèdent généralement des répertoires 
(directory) ou des dossiers (folders) 


Les répertoires sont eux mêmes des fichiers dans 
nombre de systèmes

18/04/18 OS I 44
Les répertoires sous UNIX

Sur un système Unix les fichiers sont organisés, du 
point de vue de l’utilisateur, selon un domaine de 
nommage structuré en arbre, et dont les éléments 
principaux sont les répertoires et les chemins.

bin media home dev etc mnt

amine

18/04/18 OS I 45
Les répertoires

Chaque  nœud  de  l’arbre,  hormis  les  feuilles,  est  un 
répertoire


Le  répertoire  correspondant  à  la  racine  de  l’arbre  est 
appelé  le  répertoire  racine  (root directory  en  anglais).  Par 
convention,  son  nom  est  une  oblique  «  /  »  (slash  en 
anglais).


Les  noms  de  fichiers  d’un  même  répertoire  doivent  être 
différents,  mais  le  même  nom  peut  être  utilisé  dans  des 
répertoires différents

18/04/18 OS I 46
Les chemins d'accès : absolue ou
relatif

Pour identifier un fichier particulier, on utilise un chemin (path en anglais), 
c’est-à-dire la suite des noms des répertoires qui conduisent au fichier, 
séparés par des obliques.


Si le premier élément de départ est une barre oblique, le chemin est dit absolu 
(absolute path name). Son point de départ est alors le répertoire racine.
– Exemple : /home/amine/Dropbox/Cours/Cours-ESEN/L1-OS-I/


Sinon (le premier élément est un nom de répertoire ou le nom du fichier lui-
même), le chemin est dit relatif : son point de départ est alors le répertoire de 
travail courant du processus en cours, répertoire qui lui est associé lors de sa 
création.
– Exemple : Dropbox/Cours/Cours-ESEN/L1-OS-I/

18/04/18 OS I 47
Les répertoires spéciaux


Chaque répertoire contient au moins deux 
répertoires, notés « . » et « .. » : ils 
représentent respectivement le répertoire 
courant et son répertoire parent. 


Dans le cas du répertoire racine, ils 
coïncident.

18/04/18 OS I 48
Dessine moi un système de fichiers ?

18/04/18 OS I 49
La conception des systèmes de fichiers
utilisateur vs. concepteur

Nous examinons maintenant le système de fichiers du point de vue 
du concepteur. 


Les utilisateurs se préoccupent des noms des fichiers, des 
opérations qui permettent de les manipuler, de l’arborescence des 
fichiers, ... 


Les concepteurs portent d'avantage leur attention sur 
l’organisation de l’espace du disque et sur la manière dont les 
fichiers et les répertoires sont sauvegardés.

→ Ils recherchent un fonctionnement efficace et fiable

18/04/18 OS I 50
L'organisation du système de fichier
rôle de l'MBR

Les systèmes de fichiers sont enregistrés sur des disques.


Les disques peuvent être divisés en une ou plusieurs partitions, 
avec des systèmes de fichiers indépendants sur chaque partition. 


Le secteur 0 du disque appelé enregistrement d'amorçage maître 
(MBR – Master Boot Record) sert à amorcer la machine


La fin du MBR comprend la table de partitions, laquelle indique 
l'adresse de début et de fin de chaque partition
– Une de ces partitions est marquée comme étant la partition active

18/04/18 OS I 51
L'organisation du système de fichier
le bloc d'amorçage

Quand l’ordinateur est amorcé, le BIOS lit et 
exécute le MBR
– Le programme MBR détermine la partition active, y lit le
premier bloc appelé bloc d'amorçage (boot block) et
l'exécute


Le programme du bloc d'amorçage charge le 
système d'exploitation contenu dans cette 
partition

18/04/18 OS I 52
L'organisation du système de fichier

Pour une question d'uniformité, chaque partition 
commence un bloc d'amorçage, même si elle ne contient 
pas de système d'exploitation
– Elle pourrait en contenir un ultérieurement


Une organisation possible d'un système de fichiers

18/04/18 OS I 53
L'organisation du système de fichier
le superbloc


Après le bloc de boot, vient généralement le 
superbloc (superblock)
– Contient tout les paramètres clé concernant le système de
fichier
– Contient un numéro magique qui identifie le type de système
de fichier

18/04/18 OS I 54
Organisation logicielle de l’espace du disque


Les fichiers étant habituellement sauvegardés sur 
des disques, l’organisation logicielle de l’espace 
du disque est primordiale pour les concepteurs de 
systèmes de fichiers. 


Celle-ci porte sur la stratégie de stockage, sur la 
taille des blocs et sur la façon de repérer les blocs 
libres.

18/04/18 OS I 55
Organisation logicielle de l’espace du disque
Stratégie de stockage

Il existe deux stratégies pour stocker un fichier de n octets :
– on alloue n octets consécutifs sur le disque 
– ou on divise le fichier en plusieurs blocs (pas nécessairement 
contigus/adjacents).


Si l’on sauvegarde un fichier sur un nombre contigu d’octets, 
on doit le déplacer chaque fois que sa taille augmente (ce qui 
arrive fréquemment). 


La plupart des concepteur systèmes de fichiers préfèrent donc 
stocker les fichiers dans plusieurs blocs de taille fixe, pas 
nécessairement adjacents.

18/04/18 OS I 56
Organisation de l’espace du disque
Taille des blocs

Il faut alors déterminer la taille optimale d’un 
bloc.


Le compromis habituellement adopté consiste à 
prendre des blocs de 512 octets, 1 Ko ou 2 Ko. 


Si l’on prend des blocs de 1 Ko sur un disque 
dont les secteurs font 512 octets, le système de 
fichiers lit et écrit deux secteurs consécutifs en 
les considérant comme un ensemble unique et 
indivisible, appelé unité d’allocation (cluster).

18/04/18 OS I 57
Organisation de l’espace du disque
Repérage des blocs libres


Dès qu’on a choisi la taille des blocs, on doit 
trouver un moyen de mémoriser les blocs libres


Les deux méthodes les plus répandues sont
– Liste chaînée
– Table de bits

18/04/18 OS I 58
Organisation de l’espace du disque
Repérage des blocs libres

18/04/18 OS I 59
Organisation de l’espace du disque
Repérage des blocs libres


La première méthode consiste à utiliser une liste 
chaînée des blocs du disque, chaque bloc 
contenant des numéros de blocs libres.


La deuxième technique de gestion des espaces 
libres a recours à une table de bits, chaque bit 
représentant un bloc et valant 1 si le bloc est 
occupé (ou libre suivant le système d’exploitation). 
– Un disque de n blocs requiert une table de n bits.

18/04/18 OS I 60
Organisation de l’espace du disque
Repérage des blocs libres - liste chaînée

Considérons un disque dur de 500GB. Une taille d'un bloc de 1KB.
→ Le disque contient 524 millions de bloc (500*1024*1024= 524 288 000)


Le numéro de bloc codée sur 32 bits. Taille d'un élément de la liste 
chaînée = un bloc contiendra  256 numéros de bloc libres
– Nombre de numéro de bloc libre que peut contenir un bloc de 1Ko = 
Taille d'un bloc en bit / taille du numéro du bloc
 (1024 octet*8 bit /32 bits)


Pour adresser tous les blocs du disque dur (524 millions de numéro de 
blocs) on a besoin de (524 288 000 / 256 = 2 048 000 blocs)
→ 2 millions de blocs !!!!

18/04/18 OS I 61
Organisation de l’espace du disque
Repérage des blocs libres – table de bit

Considérons un disque dur de 500GB. Une taille d'un bloc 
de 1KB.
→  Le disque contient 524 millions de bloc (500*1024*1024)


1 bloc est représenté par un bit → taille max de la table de 
bit = 524 millions de bits = (524/8) / 1024 = 64000 Ko = 
64000 blocs


Pour adresser tous les blocs du disque dur 
→ 64000 bloc

18/04/18 OS I 62
Les méthodes de stockage des fichiers

Les fichiers étant constitués d’un certain nombre de blocs, le 
système de fichiers doit mémoriser les blocs des différents fichiers.


Le principe fondamental pour stocker un fichier est de mémoriser 
l’adresse des blocs le constituant. 


Différentes méthodes sont utilisées pour cela :
– allocation contiguë,
– allocation par liste chaînée,
– allocation par liste chaînée indexée
– et nœud d’information (i-node)

18/04/18 OS I 63
Stockage des fichiers
Allocation contiguë

La méthode d’allocation la plus simple consiste à stocker 
chaque fichier dans une suite de blocs consécutifs. Un fichier 
de 50 Ko, par exemple, occupera 50 blocs consécutifs sur un 
disque dont la taille des blocs est 1 Ko. 


Cette méthode a deux avantages importants :
1)Elle est simple à mettre en œuvre puisqu’il suffit de mémoriser un 
nombre, l’adresse du premier bloc, pour localiser le fichier.
2)Les performances sont excellentes puisque tout le fichier peut être lu 
en une seule opération.

→ Aucune autre méthode d’allocation ne peut l’égaler.

18/04/18 OS I 64
Stockage des fichiers
Allocation contiguë

Malheureusement, l’allocation contiguë présente également 
deux inconvénients importants :

– Premièrement, elle ne peut être mise en œuvre que si la taille 
maximum du fichier est connue au moment de sa création. 

Sans cette information, le système d’exploitation ne peut pas déterminer 
l’espace à réserver sur le disque. 

Dans les systèmes où les fichiers doivent être écrits en une seule opération, 
elle peut néanmoins être avantageusement utilisée.

– Le deuxième inconvénient est la fragmentation du disque qui découle 
de cette politique d’allocation. 

Elle gaspille de l’espace sur le disque. 

Le compactage du disque peut y remédier mais il est en général coûteux. Il 
peut cependant être réalisé la nuit lorsque le système n’est pas chargé.

18/04/18 OS I 65
Stockage des fichiers
Allocation contiguë

(a) Allocation contiguë de l'espace disque pour 7 fichier
(b) L'état du disque après suppression des fichiers D et F

18/04/18 OS I 66
Stockage des fichiers
Allocation par liste chaînée

La deuxième méthode consiste à sauvegarder les blocs des fichiers dans 
une liste chaînée. Le premier mot de chaque bloc, par exemple, est un 
pointeur sur le bloc suivant. Le reste du bloc contient les données.


Cette méthode possède les avantages suivants :
– Contrairement à l’allocation contiguë, tous les blocs peuvent être utilisés → Il n’y a pas
d’espace perdu en raison d’une fragmentation du disque.
– L’entrée du répertoire stocke simplement l’adresse du premier bloc. Les autres blocs sont
trouvés à partir de celui-là.


Elle possède également des inconvénients :
– Si la lecture séquentielle d’un fichier est simple, l’accès direct est extrêmement lent.
– Le pointeur sur le bloc suivant occupant quelques octets → l’espace réservé aux données
dans chaque bloc n’est plus une puissance de deux.

Ceci est moins efficace car de nombreux programmes lisent et écrivent des blocs dont la taille est une
puissance de deux.

18/04/18 OS I 67
Stockage des fichiers
Allocation par liste chaînée

18/04/18 OS I 68
Stockage des fichiers
Allocation par liste chaînée indexée

Les inconvénients de l’allocation au moyen d’une liste chaînée 
peuvent être éliminés en retirant le pointeur de chaque bloc 
pour le placer dans une table ou en index en mémoire. MS-
DOS utilise cette méthode avec la FAT (File Allocation Table).


Cette méthode possède les avantages suivants :
– Elle libère intégralement l’espace du bloc pour les données →  Elle 
facilite les accès directs. 

La liste doit toujours être parcourue pour trouver un déplacement donné dans le
fichier, mais elle réside entièrement en mémoire et peut être parcourue sans
accéder au disque.
– Comme pour la méthode précédente, l’entrée du répertoire contient 
un seul entier (le numéro du premier bloc) qui permet de retrouver 
tous les autres blocs quelle que soit la taille du fichier.

18/04/18 OS I 69
Stockage des fichiers
Allocation par liste chaînée indexée

Le fichier A utilise les 
blocs 4,7 2 10 et 12

Le fichier B utilise les 
blocs 6,3 11 et 14

18/04/18 OS I 70
Stockage des fichiers
Allocation par liste chaînée indexée

Le principal inconvénient de cette méthode 
vient du fait que la table doit résider 
entièrement en mémoire en permanence. 


Un grand disque de 500 000 blocs requiert 
500 000 entrées dans la table qui occupent 
chacune  4 octets dans le cas de FAT32.  La 
table occupera  2 Mo en mémoire

18/04/18 OS I 71
Stockage des fichiers
Nœuds d’information i-node

Pour mémoriser quel bloc appartient à
quel fichier, une dernière méthode
consiste à associer à chaque fichier
un structure de donnée appelée
nœud d'index ou i-node.


Un i-node inclut 
1)les attributs 
2)et les adresses disque des blocs du 
fichier


En fonction de l'i-node il est 
possible de trouver tous les blocs 
d'un fichier
18/04/18 OS I 72
Stockage des fichiers: Avantage des i-node


Le grand avantage de cette conception est que le i-
node a besoin d'être en mémoire seulement quand 
le fichier correspondant est ouvert.
– Si chaque i-node occupe n octets
– Et un maximum de k fichiers peuvent être ouvert en même
temps
– La mémoire totale occupée par le tableau contenant les i-
nodes des fichiers ouverts est k*n octets
→ seul cet espace pourra être réservé à l'avance.

18/04/18 OS I 73
Stockage des fichiers: Avantage des i-node


Le tableau des i-node des fichiers ouverts est plus petit que 
l'espace occupé par la table du cas de l'allocation par liste 
chaînée indexée.

– La taille de la table de maintient de la liste chaînée croît


proportionnellement avec la taille du disque : si le disque contient
n blocs la table contient n entrée → elle croît linéairement à
mesure que la taille du disque augmente

– Le concept de i-node requiert un tableau en mémoire dont la taille


est proportionnelle au nombre maximum de fichier qui peuvent
être ouvert simultanément → quelque soit la taille du disque

18/04/18 OS I 74
Stockage des fichiers : Problème des i-node


Les i-nodes posent cependant un problème : 

– Si chacun d'eux a la place pour un nombre donné


d'adresse disque, que se passe-t-il lorsqu'un fichier croît
au-delà de cette limite ?

– La solution est de réserver la dernière adresse disque,


non pour un bloc de données du fichier mais pour
l'adresse d'un bloc comprenant plusieurs adresse
supplémentaire

18/04/18 OS I 75
Les répertoires dans tout ça ?

Pour lire un fichier, il faut qu'il soit ouvert


Quand un fichier est ouvert, le système d'exploitation se sert du chemin 
d'accès précisé par l'utilisateur afin de rechercher l'entrée du répertoire.


L'entrée du répertoire fournit les informations nécessaires pour trouver les 
blocs de disque. Ces informations peuvent être
– L'adresse disque du fichier entier (allocation contiguë)
– Le numéro du premier bloc (liste chaînée)
– Le numéro de l'i-node


La fonction principale du répertoire est de faire correspondre le nom ASCII 
du fichier à une information nécessaire pour trouver les données.

18/04/18 OS I 76
Les répertoires dans tout ça ?

Pour UNIX, les répertoires sont des fichiers et
leurs i-nodes mappent les noms de fichiers aux
i-node correspondant

18/04/18 OS I 77
Mise en œuvre des répertoires : ou
stocker les attributs des fichiers ?

Chaque système de fichier gère des attributs, tels que le 
propriétaire de chaque fichier ou sa date de création, et 
cela doit être stocké quelque part


Une solution évidente consiste à les stocker directement 
dans l'entrée du répertoire
– Dans cette conception simple, un répertoire consiste en une liste
d'entrées dont la taille est fixe, qui correspond chacune à un fichier
– Chaque entrée contient le nom du fichier, une structure d’attribut et
une ou plusieurs adresses disque précisant les blocs du disque
– Approche de Windows

18/04/18 OS I 78
Mise en œuvre des répertoires : ou
stocker les attributs des fichiers ?

Pour les systèmes qui fonctionnent avec les i-
nodes, une autre possibilité de stocker les 
attributs est de le faire dans les i-node plutôt 
que dans les entrées de répertoires


Dans ce cas l'entrée du répertoire peut être 
plus petite et être juste constituée d'un nom de 
fichier et d'un numéro d'i-node
– Approche d 'UNIX
18/04/18 OS I 79
Les fichiers partagés : un besoin

Lorsque plusieurs 
utilisateurs travaillent 
ensemble sur un même 
projet, ils ont 
fréquemment besoin de 
partager des fichiers
– Ainsi il est souvent
souhaitable qu'un fichier
partagé apparaisse
simultanément dans
différents répertoires qui
appartiennent à différents
utilisateurs
18/04/18 OS I 80
Exemple de fichier partagé

Exemple : un des fichiers de 
l'utilisateur C est présent dans 
un répertoire de l'utilisateur B.


La connexion entre le 
répertoire de B et le fichier 
partagé est appelé lien (link)


Le système de fichiers est 
maintenant l'équivalent d'un 
graph orienté acyclique ou 
DAG (Directed Acyclic Graph), 
plutôt qu'un arbre
18/04/18 OS I 81
Les fichiers partagés : Problèmes

Même si le partage de fichiers est pratique, ce principe amène 
néanmoins quelques problèmes

– Si les répertoires comprennent réellement les adresses des fichiers sur le


disque, une copie des adresses devra être faite dans le répertoire B au
moment de la création du lien.

– Si l'utilisateur B ou l'utilisateur C modifie le fichier, les nouveaux blocs


n’apparaîtront que dans le répertoire de l'utilisateur qui effectué la
modification.

– Les modifications ne seront pas visibles pour l'autre utilisateur qui est un
échec pour un but de partage.

18/04/18 OS I 82
Résolution des problèmes des fichiers
partagés

Ce problème peut être résolu de deux manières. 


Premièrement, les blocs ne sont pas listés dans 
le répertoires mais dans une petite structure de 
données associée au fichier lui-même. 
– Les répertoires pointent simplement sur la petite
structure de données.
– C'est l’approche utilisée sous UNIX (dans lequel la petite
structure de données est l'i-node)

18/04/18 OS I 83
Résolution des problèmes des fichiers
partagés

Deuxièmement, B est lié à l'un des fichiers de 
C par la création d'un nouveau fichier de type 
lien, et par le placement de ce fichier dans le 
répertoire de B.
– Le nouveau fichier possède simplement l'accès du
fichier avec lequel il est lié
– Quand B lit le fichier partagé, le système d'exploitation
s'aperçoit qu'il est de type lien, recherche le nom du
fichier et le lit. Ce lien s'appelle lien symbolique
(symbolic link)

18/04/18 OS I 84
Les fichiers partagés : Inconvénients de la
solution

Chacune de ces méthodes présente des inconvénients


Dans la première, au moment où B fait le lien avec le 
fichier partagé, l'i-node indique que c'est l'utilisateur C 
qui en est le propriétaire, la création d'un lien ne modifie 
pas le propriétaire, mais elle augment le compteur de 
liens de l'i-node, de sorte que le système sait combien 
d'entrées de répertoires pointent à ce moment sur le 
fichier

18/04/18 OS I 85
Les fichiers partagés : Inconvénients de la solution

Si l'utilisateur C décide de détruire le fichier, le système est 
confronté à un problème : 
– S'il supprime le fichier et efface l'i-node, l'utilisateur B aura une entrée de
répertoire qui pointe sur un i-node invalide.
– Si cet i-node est réattribué plus tard à un autre fichier, le lien de l'utilisateur B
pointera sur un mauvais fichier.


Le système peut voir que le fichier est encore utilisé d'après le 
compteur de l'i-node, mais il n'a aucun moyen de déterminer toutes 
les entrées de répertoire qui contienne ce lien avant de les détruire.
– Les pointeurs sur les répertoires ne peuvent pas être stockés dans les i-nodes
parce que le nombre des liens peut être illimité

18/04/18 OS I 86
Les fichiers partagés : Inconvénients de la
solution


Il ne reste alors plus qu'à effacer l'entrée du répertoire 
de C, mais en conservant l'i-node intact, avec un 
compteur à 1.
– l'utilisateur B est le seul utilisateur à avoir une entrée de
répertoire sur un fichier dont le propriétaire est C.

18/04/18 OS I 87
Les fichiers partagés : Inconvénients de la
solution

Ce problème ne se produit pas avec les liens 
symboliques, parce que seul le propriétaire du ficher a 
un pointeur sur l'i-node de ce fichier
– Les utilisateurs qui ont un lien sur un fichier ont uniquement
des chemins d'accès ; ils n'ont pas de pointeurs sur l'i-node
– Quand le propriétaire efface le fichier, ce dernier est détruit
– La destruction d'un lien symbolique n'affecte en rien le
fichier

18/04/18 OS I 88
Exemple de systèmes de fichiers

18/04/18 OS I 89
Les systèmes de fichiers de MSDOS : FAT (16/32)


C'est un système de fichier qui a été utilisé 
sur les premiers ordinateurs personnels 
d'IBM
– Il est utilisé (FAT32) dans toutes les versions de
Windows et dans des appareils embarqués
– Il est utilisé par Apple dans ces appareils
embarqués (IPod)
– Plus utilisé que le système de fichier moderne
NTFS (journalisé)

18/04/18 OS I 90
Entrée répertoire MSDOS

Pour lire un fichier, un programme MS-DOS doit d'abord 
faire un appel système open afin d'obtenir un descripteur 
pour ce fichier
– un descripteur de fichier est une clé abstraite (un entier) pour accéder
à un fichier (stdin=0, stdout=1,stderr=2).

● open a besoin du chemin d'accès, qui peut être absolu ou 
relatif au répertoire de travail
– Ce chemin est parcouru élément par élément jusqu'au répertoire finale.
– Le répertoire finale est lu en mémoire.
– On y cherche alors le fichier qui peut ensuite être ouvert.

18/04/18 OS I 91
Entrée répertoire MSDOS

Bien que les répertoires MS-DOS aient des tailles variables, 
leurs entrées ont une taille fixe de 32 octets


La figure ci-dessous présente le format d'une entrée de 
répertoire MS-DOS
– Il contient le nom du fichier, ses attributs, la date et l'heure
de sa création, son bloc de début et sa taille exacte
– 10 bits inutilisé (reseved)

18/04/18 OS I 92
Taille maximale d'un fichier MSDOS


MS-DOS enregistre la taille exacte du fichier 
en utilisant un nombre sur 32 bits
– Les fichiers peuvent ainsi avoir en théorie une taille
maximal de 4Go (2^32 = 4294967296 = 4Go).
– Cependant, la taille maximale d'un fichier est limité
à 2Go.

18/04/18 OS I 93
MSDOS et FAT

MS-DOS conserve une trace des blocs de fichiers dans une 
table d'allocation en mémoire principale

– L'entrée du répertoire comprend le numéro du premier bloc

– Celui-ce sert de l'index dans les entrées de la FAT (File Allocation 
Table) de 64 Ko qui présente en mémoire principal

– En suivant le chaînage, on peut trouver tous les blocs

18/04/18 OS I 94
FAT 12 – 16 -32

Il existe trois versions du système de fichier 
de type FAT : FAT-12, FAT-16 et FAT-32, 
selon le nombre de bits d'une adresse disque


FAT-32 porte mal son nom, puisque seuls les 
28 bits de poids faible des adresses disque 
sont employées.
– On aurait dû l'appeler FAT-28 !

18/04/18 OS I 95
Taille maximale de partition dans FAT-12


Pour toutes les FAT, le bloc de disque peut 
être un multiple de 512 octets
– FAT-12 : taille maximale de partition = (2¹²– 10
adresses)x 512 octet. Les 10 adresses sont réservés
pour des marqueurs spéciaux : fin de fichier, bloc en
erreur…
– FAT-12 : taille maximale de partition = 4086 x 512 =
2Mo
– FAT-12 : taille de la FAT en mémoire = 4096 entrée
de 2 octets chacune = 8192 octets

18/04/18 OS I 96
Taille maximale de partition dans FAT-16


FAT avec des pointeurs de disques de 16 
bits
– Taille de bloc de 8,16,32 Ko
– Taille maximale de la partition 2¹⁶ adresses x 32 Ko
chacune = 2 Go
– Un disque supporte 4 partitions → taille maximal
d'un disque de 8 Go

18/04/18 OS I 97
Taille maximale de partition dans FAT-32


FAT avec des pointeurs de disques de 28 
bits
– Taille maximale de la partition = 2²⁸ adresse x 4 Ko
= 2²⁸ x (2²) x (2¹⁰) = 2⁴⁰ = 1 To

Théoriquement 4 To
Théoriquement 8 To
18/04/18 OS I 98
Avantages de FAT-32

Nombre de partition : 
– Un disque de 8Go peut être constitué d'une seule partition au lieu de 4
(dans FAT-16).


Taille de bloc : 
– FAT-16 doit absolument utiliser un bloc 32 Ko pour une partition de 2 Go
– FAT-32 on peut utiliser des blocs de 4 Ko pour une partition de 2 Go
– L'avantage de disposer de blocs de plus petite taille est que l'on 
gaspille moins d'espace

un fichier de 10 octets occupe 32 Ko d'espace disque

Avec un fichier de 8 Ko et des blocs de 32 Ko : 3/4 du bloc gaspillé

Avec un fichier de 8 Ko et un bloc de 4 Ko → pas de gaspillage disque

18/04/18 OS I 99
Exercice I (Rattrapage 2017)
Considérons un disque dur ayant une capacité de 256 Go et un système de 
gestion de fichier utilisant FAT-32

1) Donner la taille minimale de bloc physique en Kilo octets pour indexer tout 
l'espace disque. 
2)Quelle est alors la taille minimale d'un fichier dans un tel système ?
3) Calculer le nombre de blocs nécessaires pour stocker la table FAT sur le 
disque.
4) Pour la mémorisation de blocs libres de cette unité disque, la méthode table 
de bits  (bitmap) est utilisée. Quelle est la taille de la table de bits en blocs ?
5) Vous décidez de formater ce  disque dur en FAT-16 en choisissant des blocs 
physiques de 32 Koctets. Expliquer pourquoi il est déconseillé fortement de 
faire cette opération ?

18/04/18 OS I 100
Correction Exercice I
1) Donner la taille minimale de bloc physique 
en Kilo octets pour indexer tout l'espace 
disque. 
• Taille du disque = 256 Go = 28 * 230 = 238 octets.
• Une entrée de la FAT-32 a 28 bits. Nombre
d'unité d'allocations (nombre d'entrée
possibles) = 228
• Taille minimale de bloc physique = 1 bloc
physique = 238/228 = 210 octets = 1 Koctets

18/04/18 OS I 101
Correction Exercice I
2) Quelle est alors la taille minimale d'un 
fichier dans un tel système ?

Taille minimale d'un fichier = 1 bloc physique = 1 Koctets

3)Calculer le nombre de blocs nécessaires 
pour stocker la table FAT sur le disque. 

Taille de la table FAT = 228 * 28 bits.

Nombre de blocs nécessaires = 228 * 28 /8*210= 228 * 28 /213
=28 *215blocs

18/04/18 OS I 102
Correction Exercice I
4) Pour la mémorisation de blocs libres de 
cette unité disque, la méthode table de bits  
(bitmap) est utilisée. Quelle est la taille de la 
table de bits en blocs ?

Taille de la table de bit = nombre de blocs du disque
= 228 bits.

Taille de la table en bloc =228 / 213= 215 blocs

18/04/18 OS I 103
Correction Exercice I
5) Vous décidez de formater ce  disque dur 
en FAT-16 en choisissant des blocs 
physiques de 32 Koctets. Expliquer 
pourquoi il est déconseillé fortement de 
faire cette opération ?

taille max = 216 * 215 = 231 = 2 GB <<< 256 Go

18/04/18 OS I 104
Système de fichier d'UNIX

Un répertoire UNIX comprend une entrée pour chaque fichier de ce 
répertoire.


Chaque entrée est extrêmement simple
– Le nom du fichier (14 octets)
– Et le numéro de son i-node (2 octets)
– Ces paramètres limitent à 64 Ko (2^16 , 2 octets = 16 bits, numéro de l’i-node) le
nombre de fichier par système de fichier

18/04/18 OS I 105
Les i-nodes sous UNIX

Un i-node unix stocke à la fois les attributs (metadata) ainsi que les pointeurs 
sur les blocs
 

 Les i-nodes UNIX contiennent certains attributs
– La taille du fichier
– Trois information temporelles

Date et heure de créations

Date et heure  du dernier accès

Date et heure de la dernière modification
– Le nom du propriétaire
– Le nom du groupe
– Les information de protection
– Un compteur indiquant le nombre d'entré de répertoires pointant sur lui (pour les liens)

Un compteur indiquant 0 → l'i-node est récupéré et les blocs de disque sont placés dans la lste des 
blocs libres

18/04/18 OS I 106
Les i-nodes sous UNIX

Les 10 (12) premières adresses des blocs sont 
enregistrées dans l'i-node lui-même

– Pour les petits fichiers, toutes les informations nécessaire se


trouvent dans l'i-node, lequel est chargé dans la mémoire quand le
fichier est ouvert

– Pour de plus grands fichiers, une des adresses de l'i-node


correspond à l'adresse d'un bloc de disque appelé bloc de simple
indirection (single indirect block)

Ce bloc contient non pas de données mais des adresses supplémentaires

18/04/18 OS I 107
Les i-nodes sous UNIX

Si cela n'est pas suffisant, une autre adresse de l'i-
node, appelée bloc de double indirection (double 
indirect block), contient l'adresse d'un bloc qui 
contient une lise de bloc de simple indirection
– Chacun de ces blocs de simple indirection pointe sur
quelques centaines de blocs de données


Si cela ne suffit toujours pas, on peut avoir recours 
à  un bloc de triple indirection (triple indirect block)

18/04/18 OS I 108
Les i-nodes d'UNIX

18/04/18 OS I 109
Exercice 2 (EXAMEN 2017)

On rappelle que sous Unix, un fichier est représenté de façon interne 
par la structure de données i-node. Cette structure comprend:
– un ensemble de 10 pointeurs directs qui pointent vers des blocs contenant les 
premières données du fichier
– un pointeur indirect simple,
– un pointeur indirect double, 
– et enfin un pointeur indirect triple (un degré de plus d'indirection). 


En supposant que la taille d'un bloc est de 512 octets et que la taille 
d'un index est de 4 octets, indiquer (en nombre de blocs et en octets) :
– 1) la taille minimale d'un fichier ?
– 2) la taille maximale d'un fichier ?

18/04/18 OS I 110
Correction Exercice 2
1) La taille minimale d'un fichier ?
– Un fichier une fois créé va occuper au minimum 01
bloc ; sa taille est au moins égale à 512 octets

2) La taille maximale d'un fichier ?
– Avec 128 entrées pour chaque table de pointeurs et
512 octets par bloc, cela donne des fichiers d'au
maximum 10 + 128 + 128*128 + 128*128*128= 2.113.674
blocs soit une taille très confortable de 512*2.097.152 =
1.082.201.087 octets.

18/04/18 OS I 111
Les i-nodes d'UNIX

Exemple : chemin d'accès /usr/ast/mbox

18/04/18 OS I 112
Les systèmes de fichier journalisés

18/04/18 OS I 113
Les systèmes de fichier journalisés

L'idée de base est de conserver dans un journal la 
trace de ce que va faire le système avant qu'il ne le 
fasse
– En cas de plantage, avant la réalisation des travaux planifiés et
après le démarrage, le système pourra retrouver dans le journal
ce qu'il devait faire au moment du plantage et terminer le travail


Un tel système est appelé système de fichier 
journalisé (journaling file system)
– NTFS/ext3/ResierFS

18/04/18 OS I 114
Les systèmes de fichier journalisés

Pour illustrer le problème, regardons une opération simple : 
supprimer un fichier sous UNIX. Elle demande trois étapes
– Supprimer l'entrée du fichier dans le répertoire
– Libérer l'i-node et le placer dans le groupe des i-nodes libres
– Libérer tous les blocs et les placer dans le groupes des blocs libres


Supposons que le système plante après la première étape
– L'i-node et les blocs ne sont plus accessibles mais ils ne peuvent pas
non plus être réassignés.
– Si le plantage a lieu après la deuxième étape, seuls les blocs sont
perdus.

18/04/18 OS I 115
Les systèmes de fichier journalisés

Ce que fait un système de fichier journalisé est d'écrire en 
premier dans le journal un événement qui contient la liste des 
actions à réaliser
– Cet événement est ensuite écrit sur le disque
– Une fois l’événement est écrit dans le journal, alors les actions sont
réalisées
– Une fois les actions ont été réalisées, l’événement est effacé du journal


Si le plantage se réalise, pour récupérer, le système de fichiers 
peut lire le journal et regarde si des actions sont en cours
– Si oui, ces actions seront exécutées jusqu'à ce que le fichier soit
correctement supprimé

18/04/18 OS I 116
Les systèmes de fichier journalisés

Pour que la journalisation fonctionne, il faut que 
les actions journalisées soient idempotentes, 
ce qui veut dire qu'elles peuvent être répétées, 
sans dommage, autant de fois que nécessaire
– Idempotence : une opération qui produit le même
résultat qu'elle soit exécutée une seule ou plusieurs fois
– Exemple : : Le tri d'une liste d'éléments est une
procédure idempotente. Une fois la liste triée, le fait de
la trier à nouveau ne changera pas l'ordre des
éléments ; la liste ne sera donc pas modifiée.

18/04/18 OS I 117
Les systèmes de fichier journalisés

Une action telle que « mettre à jour la table de bits pour indiquer que l'i-
node k ou le bloc n est libre » doit pouvoir être répétée indéfiniment sans 
danger


De la même manière, rechercher dans un répertoire et supprimer toute 
entrée XXX est idempotent


Par contre, ajouter le bloc nouvellement libéré de l'i-node k à la fin de la 
liste des blocs libres n'est pas idempotent puisqu'il peut déjà être dans la 
liste


L'action plus longue « Chercher dans la liste des blocs libres et ajouter le 
bloc n s'il n'y est pas » est idempotente.

18/04/18 OS I 118
Les systèmes de fichier journalisés

Les systèmes de fichiers journalisés doivent 
accommoder leurs structures de données et 
leurs actions journalisables pour qu'elles 
soient toutes idempotentes

→ Sous de telles conditions la récupération 
d'un plantage peut être faite rapidement et 
de manière sûre.

18/04/18 OS I 119
Les systèmes de fichier journalisés

Afin d'augmenter la fiabilité des systèmes 
de fichiers on peut utiliser la notion de 
transaction atomique (atomic transaction)
– Lorsque ce concept est utilisé, un groupe d'actions
doit être encadré par begin transaction et end
transaction
– Le système sait alors qu'il doit accomplir toutes les
actions encadrées ou aucune, mais en aucun cas
un sous ensemble

18/04/18 OS I 120
Les systèmes de fichiers virtuels

18/04/18 OS I 121
Les systèmes de fichiers virtuels

Plusieurs systèmes de fichiers sont utilisés, souvent sur le même 
ordinateur, parfois avec un même système d'exploitation
– Un système Windows peut gérer NTFS comme système de fichiers principal
mais aussi un système FAT-32 ou FAT-16 par héritage

– Un système Linux peut avoir un systèe ext2 comme racine du système de


fichiers, une partition ext3 montée sur /usr et un second disque dur avec
RiserFS.

→ Du point de vue de l'utilisateur, c'est un système de fichiers 
unique et hiérarchique. Ce qui se passe pour intégrer ces divers 
et incompatibles systèmes de fichiers est invisible aux 
utilisateurs et aux processus.

18/04/18 OS I 122
Les systèmes de fichiers virtuels

Les systèmes UNIX utilisent le concept de 
système de fichiers virtuels ou VFS (Virtual File
System) pour tenter d'intégrer différents systèmes 
de fichier dans une structure ordonnée.


L'idée principale est d'extraire la partie du système 
de fichiers qui est commune à tous les systèmes 
de fichiers et de mettre le code dans une couche 
séparée qui appelle les systèmes de fichiers réels 
sous-jacent pour gérer les données.

18/04/18 OS I 123
Les systèmes de fichiers virtuels

Les appels qui 
proviennent des 
processus utilisateurs 
sont des appels 
normalisés POSIX tels 
que : open, read, write


Le VFS a ainsi une 
interface haute avec les 
processus utilisateur qui 
est l'interface POSIX

18/04/18 OS I 124
Les systèmes de fichiers virtuels

Le VFS a aussi une 
interface basse avec 
les systèmes de 
fichier spécifique qui 
est appelé interface 
VFS.

18/04/18 OS I 125
Commandes du SGF d'UNIX

18/04/18 OS I 126
L’ARBORESCENCE

Le système Linux ne connaît que trois types de fichiers :
– Les fichiers ordinaires (regular files). Ils servent à mémoriser les
programmes et les données des utilisateurs et du système.

– Les fichiers répertoires ou répertoires (directories). Chaque répertoire


contient la liste et la référence des fichiers placés sous son contrôle et la
référence du répertoire dont il dépend (répertoire père).

– Les fichiers spéciaux. Ils désignent les périphériques, les tubes ou autres


supports de communication inter-processus. Les fichiers spéciaux
associés aux périphériques peuvent être caractères (terminaux) ou blocs
(disque) ; les entrées/sorties (E/S) se font soit caractère par caractère, soit
bloc par bloc, un bloc étant composé de n caractères (512, 1024 ou 2048).

18/04/18 OS I 127
L’ARBORESCENCE

L’extension du système de fichiers aux périphériques 
constitue une des grandes particularités de Linux. 
– Cela permet à un utilisateur de diriger les données produites par son
application vers un fichier ou un périphérique.
– Autre conséquence, les noms des fichiers et des périphériques
obéissent à la même syntaxe et l’accès aux périphériques est contrôlé
par le mécanisme de protection des fichiers.


Le système de fichiers est organisé en une seule 
arborescence logique. 
– Cet arbre est composé de répertoires qui contiennent eux–mêmes
d’autres répertoires, ou des fichiers.

18/04/18 OS I 128
L’ARBORESCENCE
Filesystems Hierarchy Standard, FHS


/ :  
– Racine du système, hiérarchie primaire


/bin :  binaires, utilitaires binaires ,binaries,
binary utilities (binutils)
– Exécutables des commandes essentielles
disponibles pour tous les utilisateurs (ex: cd, cat,
ls…)

18/04/18 OS I 129
L’ARBORESCENCE
Filesystems Hierarchy Standard, FHS

/boot  initialisation  (bootstrap)
– Fichiers statiques du chargeur d’amorçage (noyaux, images ramdisk,
fichiers de configuration du chargeur d'amorçage…)


/dev  périphérique  (device) 
– Fichiers spéciaux des périphériques


/etc  configuration éditable en mode texte  (editing text
config )
– Fichiers de configuration au format textuel de plusieurs programmes
et services du système

18/04/18 OS I 130
L’ARBORESCENCE
Filesystems Hierarchy Standard, FHS

/home  maison  (home directory)
– Répertoires personnels des utilisateurs


/lib  bibliothèques  (librairies) 
– Bibliothèques partagées essentielles et modules du noyau


/media 
– Contient les points de montages pour les médias amovibles

18/04/18 OS I 131
L’ARBORESCENCE
Filesystems Hierarchy Standard, FHS

/mnt  montage  (mount) 
– Point de montage pour monter temporairement un système de fichiers


/opt  optionnel  (optional)
– Emplacement pour des applications installées hors gestionnaire de paquets
(logiciels optionnels)


/proc  processus  (processes) 
– Répertoire virtuel pour les informations système (états du noyau et des
processus système)


/root  racine (root)
– Répertoire personnel du super-utilisateur
18/04/18 OS I 132
L’ARBORESCENCE
Filesystems Hierarchy Standard, FHS

/run exécution système  (runtime system) 
– Informations relatives au système depuis son dernier démarrage (ex :
utilisateurs actifs, services en cours d'exécution, etc.)


/sbin  binaires système  (super binaries, super binnary utilities 
(super binutils))
– Exécutables système essentiels


/srv  services  (services)
– Données pour les services du système


/tmp  temporaire (temporary)
– Fichiers temporaires des applications
18/04/18 OS I 133
L’ARBORESCENCE
Filesystems Hierarchy Standard, FHS

/usr  ressources système Unix  (Unix system resources)
– Hiérarchie secondaire, pour des données en lecture seule par les
utilisateurs. Ce répertoire contient la vaste majorité des applications
usuelles des utilisateurs et leurs fichiers


/usr/bin
– Exécutables des programmes additionnels disponibles pour tous les
utilisateurs (ex : le gestionnaire de fichiers, le lecteur de musique, le
navigateur Web…)


/usr/lib 
– Bibliothèques partagées par les applications additionnelles de /usr/bin
et /usr/sbin
18/04/18 OS I 134
L’ARBORESCENCE
Filesystems Hierarchy Standard, FHS

/usr/local Hiérarchie tertiaire. 
– Emplacement où les utilisateurs doivent installer les applications
qu'ils compilent.


/usr/share
– Fichiers non reliés à l'architecture partagés par les applications de
/usr/bin et /usr/sbin (ex : les icônes, les thèmes, la documentation…)


/var  variable  (variable) 
– Données variables et diverses

18/04/18 OS I 135
LA CLASSIFICATION DES
FICHIERS LINUX

La syntaxe d’un nom de fichier n’est pas très stricte. 
Il est recommandé de limiter le nom d’un fichier à 14 
caractères au plus et de n’utiliser que les lettres 
majuscules ou minuscules (attention, Linux 
différencie les majuscules des minuscules), 
– les chiffres et quelques autres caractères (le point ., le tiret –,
le souligné ).
– Linux autorise jusqu’à 255 caractères pour le nom du fichier.
La longueur minimum est de un caractère.
– Les caractères spéciaux suivants sont à proscrire absolument :
\ > < | $ ? & [ ] * ! " ‘ ( ) ` @ ~ <espace>

18/04/18 OS I 136
LA CLASSIFICATION DES
FICHIERS LINUX

Le point (.) joue un rôle particulier dans le nom d’un fichier.
– Les fichiers dont les noms commencent par un point (.), comme
.profile, sont des fichiers cachés (c’est–à–dire qu’ils n’apparaissent
pas dans la liste des fichiers en tapant la commande ls sans
argument).


Le point sert également à suffixer les noms des fichiers. 
Cette pratique est très recommandée, car elle facilite la 
gestion des fichiers. 
– Il est vrai qu’il n’existe pas de syntaxe précise ; il existe toutefois un
certain nombre de conventions

18/04/18 OS I 137
LA CLASSIFICATION DES
FICHIERS LINUX

 Les caractères spéciaux et leur 
signification
– * → désigne toute chaîne de 0 à n caractères,
– ? → désigne un caractère quelconque,
– [. . .] → désigne un caractère quelconque
appartenant à l’ensemble des caractères entre
crochets.

18/04/18 OS I 138
LA CLASSIFICATION DES
FICHIERS LINUX

Fich* → désigne tous les fichiers de nom fich et 
ayant un suffixe.


Essai? → permet d’obtenir tous les fichiers ayant un 
nom de 6 caractères dont les 5 premiers caractères 
sont essai, le dernier caractère est quelconque.


[a-z]* désigne tous les noms commençant par une 
lettre minuscule.

18/04/18 OS I 139
LA DÉSIGNATION DES FICHIERS

Un fichier est repéré par son nom et sa 
position dans l’arborescence : son chemin 
d’accès (pathname).


La syntaxe de ce chemin d’accès est très 
précise et peut être décrite des deux manières 
suivantes :
– Le chemin d’accès absolu
– Le chemin d’accès relatif

18/04/18 OS I 140
LA DÉSIGNATION DES FICHIERS

Le chemin d’accès absolu
– Il permet d’accéder à un fichier quelconque dans l’arborescence du système de
fichiers.
– Il est composé d’une suite de noms de répertoires séparés par le caractère /.
– Il commence toujours par le caractère / qui désigne le répertoire racine et se
termine par le nom du fichier que l’on veut atteindre.
– La longueur du chemin d’accès absolu d’un fichier est limitée à 1024
caractères


Exemple
– /home/amine/Dropbox/Cours/Cours-ESEN/L1-OS-
I/Cours/Chapitre4/code-source-chapt4/fichier-appel-
system.c

18/04/18 OS I 141
LA DÉSIGNATION DES FICHIERS

Le chemin d’accès relatif
– La désignation d’un fichier par son chemin d’accès absolu se révèle
rapidement lourde vu le nombre de répertoires intermédiaires à désigner.
Tout utilisateur peut se positionner sur n’importe quel répertoire de
l’arborescence.
– Ce répertoire devient courant (répertoire de travail ou current working
directory).
– Dès l’entrée en session de l’utilisateur, le système le place dans un répertoire
de travail initial (répertoire d’accueil ou home directory). Ce répertoire a été
créé au moment de l’établissement du compte de l’utilisateur.
– Le système associe alors en permanence, à tout processus ou tâche, le
chemin d’accès complet du répertoire de travail courant de l’utilisateur.
– Ainsi, l’usager peut désigner un fichier en ne donnant que son chemin
d’accès relatif au répertoire de travail courant. A partir de ce répertoire
courant, l’utilisateur construit son propre sous–arbre de répertoires et de
fichiers.
18/04/18 OS I 142
LA DÉSIGNATION DES FICHIERS

chemin absolu : /home/amine/develop/prog1


répertoire courant : /home/amine


chemin relatif : develop/prog1

18/04/18 OS I 143
LA DÉSIGNATION DES FICHIERS

Tout répertoire contient au moins deux entrées :
– . → représente le répertoire lui–même.
– .. → représente le répertoire père.


Ces entrées de répertoire ne sont en général pas 
imprimées par les utilitaires du système. Elles 
permettent de référencer le répertoire courant sans 
l’obligation de citer son nom de chemin d’accès 
absolu ou de référencer avec un chemin d’accès 
relatif un fichier dans un sous–arbre.

18/04/18 OS I 144
LA DÉSIGNATION DES FICHIERS

répertoire courant : /home/amine/


chemin d’accès relatif: 
../amine/develop/prog1


chemin d’accès absolu équivalent : 
/home/amine/develop/prog1

18/04/18 OS I 145
LA MANIPULATION DES
FICHIERS
● $pwd → Print Working Directory : Affiche le chemin d’accès du 
répertoire courant. 

● $cd → Change Directory

● $mkdir → MaKe DIRectory, Crée un nouveau répertoire

● $rmdir → ReMove DIRectory, Supprime un répertoire, s’il est vide.

● $du → Disk Usage

18/04/18 OS I 146
LA MANIPULATION DES
FICHIERS
● $ls → LiSt files. Permet d’obtenir la liste et les 
caractéristiques des fichiers contenus dans un 
répertoire.

● $cat → conCATenate. La commande cat est une 
commande multi–usage qui permet d’afficher, de 
créer, de copier et de concaténer des fichiers.
● $cp → CoPy. Cette commande permet la copie 
de fichiers

18/04/18 OS I 147
Protection des fichiers

Comme tout système multi-utilisateur, Linux possède des 
mécanismes permettant au propriétaire d’un fichier d’en 
protéger le contenu. Le propriétaire est l’utilisateur ayant 
créé le fichier. 


Pour permettre le partage de fichiers et faciliter le travail en 
équipe, Linux définit la notion de groupe d’utilisateurs, et 
tout utilisateur appartient à un groupe au moins. 


Les droits d’accès (en anglais permissions) à un fichier 
sont définis par son propriétaire.

18/04/18 OS I 148
DROIT D’ACCÈS AUX FICHIERS

À chaque fichier est associé un ensemble 
d’indicateurs précisant les droits d’accès au 
fichier.


Pour chaque fichier il existe trois types 
d’utilisateurs :
– le propriétaire du fichier,
– les membres du groupe propriétaire du fichier,
– les autres utilisateurs du système.

18/04/18 OS I 149
DROIT D’ACCÈS AUX FICHIERS

Pour chaque fichier et par type d’utilisateur il 
existe trois modes principaux :
– autorisation d’écriture (w)
– autorisation de lecture (r)
– autorisation d’exécution (x)


En plus de ces neuf bits (rwx rwx rwx), 
Unix/Linux définit d'autres bits de permission 
(SUID, SGID).

18/04/18 OS I 150
DROIT D’ACCÈS AUX FICHIERS

Sous Linux il existe différents types de fichiers :
– fichier ordinaire → ()
– fichier répertoire → (d)
– fichier spécial : périphérique accédé en mode caractère 
→ (c)
– fichier spécial : périphérique accédé en mode bloc → (b)
– tube nommé (named pipe) → (p)
– lien symbolique → (l)
– Socket → (s)

18/04/18 OS I 151
DROIT D’ACCÈS AUX FICHIERS

Ainsi, à chaque fichier Linux sont associés 10 
attributs (1 pour désigner le type, et 9 attributs de 
protection, 3 pour le propriétaire, 3 pour le groupe 
et 3 pour les autres utilisateurs). L’ensemble des 
renseignements sur un fichier est obtenu en 
utilisant la commande $ls -l

18/04/18 OS I 152
DROIT D’ACCÈS AUX FICHIERS

18/04/18 OS I 153
DROIT D’ACCÈS AUX FICHIERS

On écrit côte à côte les droits r, w puis x respectivement 
pour le propriétaire (u), le groupe (g) et les autres 
utilisateurs (o). 


Les codes u, g et o (u comme user, g comme group et o 
comme others) sont utilisés par les commandes qui 
permettent d'attribuer les droits et l'appartenance des 
fichiers. 


Lorsqu'un flag est attribué à une entité, on écrit ce flag (r, 
w ou x), et lorsqu'il n'est pas attribué, on écrit un '-'

18/04/18 OS I 154
DROIT D’ACCÈS AUX FICHIERS

Une autre manière de représenter ces droits est sous forme binaire 
grâce à une clef numérique fondée sur la correspondance entre un 
nombre décimal et son expression binaire, une lettre équivaut à 1, 
un tiret à 0.
– 0 = 000
– 1 = 001
– 2 = 010
– 3 = 011
– 4 = 100
– 5 = 101
– 6 = 110
– 7 = 111

Les droits  rwx rwx rwx est équivalent à 777

Les droits rwx rw-  r- x est équivalent à 765
18/04/18 OS I 155
MODIFICATION DES DROITS
D’ACCÈS AUX FICHIERS

La protection d’un fichier ne peut être modifiée 
que par le propriétaire à l’aide de la commande 
chmod (CHange MODe).  Il existe deux modes 
d’utilisation de cette commande. 


La première (la plus ancienne) utilise la 
description des protections par un nombre 
octal.
– $chmod 765 exemple

18/04/18 OS I 156
MODIFICATION DES DROITS
D’ACCÈS AUX FICHIERS

Le deuxième mode d’utilisation de chmod, le mode symbolique, permet une 
description absolue ou relative des droits d’accès, comme suit

● chmod [who]op[permission] fichier


Who
– est une combinaison de lettre u (user=propriétaire), g (groupe), o (other=autre) ou a
(all=tous) pour ugo,

op
– + permet d’ajouter un droit d’accès, - de supprimer un droit d’accès et = d’affecter un droit
de manière absolue (tous les autres bits sont remis à zéro),

permission 
– r (read=lecture), w (write=écriture), x (exécution).

18/04/18 OS I 157
MODIFICATION DES DROITS
D’ACCÈS AUX FICHIERS
● $chmod u-w file → supprime le droit d’écriture 
au propriétaire.

● $chmod g+r file →  ajoute le droit de lecture 


pour le groupe.

● $chmod ug=x file → accès uniquement en 


exécution pour le propriétaire et le groupe, pas de 
modification pour les autres.

18/04/18 OS I 158
Droit d’accès à la création du
fichier

La protection d’un fichier, ainsi que le nom du propriétaire (le 
vôtre) et le nom du groupe auquel il appartient, sont établis à sa 
création et ne peuvent être modifiés que par son propriétaire.

● La commande umask permet de définir un masque de 
protection des fichiers (et répertoires) lors de leur création. 
– Cette commande se trouvait en général dans le fichier .bashrc, mais elle
peut être exécutée à tout moment.
– Pour les distribution récente de ubuntu, la valeur par défaut de umask se
trouve dans /etc/login.defs
– Le masque est exprimé en base de 8

18/04/18 OS I 159
Droit d’accès à la création du
fichier

18/04/18 OS I 160
Droit d’accès à la création du
fichier

18/04/18 OS I 161
Droit d’accès à la création du
fichier

La valeur 022 est soustraite de la permission permanente 
(111 111 111) :

111 111 111 → permission permanente


-
000 010 010 → on enlève les bits dont on ne veut pas

111 101 101 → 755


umask 022 permet de créer des fichiers ou des répertoires 
dont la protection est rwx r-x r-x. C’est souvent l’option par 
défaut.

18/04/18 OS I 162
Droit d’accès à la création du
fichier

La valeur 002 est soustraite de la permission 
permanente (111 111 111) :

111 111 111 → permission permanente


-
000 000 010 → on enlève les bits dont on ne veut pas

111 111 101 → 775


umask 002 permet de créer des fichiers ou répertoires 
dont la protection est rwx rwx r-x. 

18/04/18 OS I 163
Droit d’accès à la création du
fichier

Pour les fichiers ordinaires, 
– $umask 022 donnera une protection de type
rw- r-- r-- ,
– $umask 002 donnera une protection de type
rw- rw- r-- ,


car la possibilité d’exécution n’est pas autorisée sur les 
fichiers ordinaire

18/04/18 OS I 164
Accès au contenu des répertoires

18/04/18 OS I 165
Droits des répertoires

Dans le cas des répertoires, l’interprétation 
des droits est légèrement différente de celle 
concernant les fichiers. 


Les informations concernant un répertoire 
sont obtenues par la commande $ls -dl
nom_repertoire

18/04/18 OS I 166
Droits des répertoires

L’interprétation des protections pour les répertoires est la 
suivante :

– r → autorise la lecture du contenu du répertoire comme dans le cas des


fichiers; permet donc de voir la liste des fichiers qui sont dans le
répertoire.

– x → autorise l’accès au répertoire (à l’aide de la commande cd).

– w → autorise la création, la suppression et le changement du nom d’un


élément du répertoire. Cette permission est indépendante de l’accès
aux fichiers dans le répertoire.

18/04/18 OS I 167
Droits des répertoires

La possibilité de suppression d’un fichier n’est  pas fixée dans les 
permissions de ce fichier, mais dans les permissions du répertoire qui le 
contient.
– Ce n’est donc pas une permission fixée fichier par fichier. 


Cela pose problème, en particulier dans le répertoire /tmp : tout 
utilisateur doit pouvoir créer des fichiers dans /tmp, qui a donc les 
permissions rwx pour other. 
– Chacun peut donc lire et écrire dans /tmp, et donc y créer des fichiers. 


Mais chacun pourrait aussi supprimer tout fichier dans /tmp, y compris 
des fichiers créés par d’autres utilisateurs. 

→ D’où l’utilité du bit t sur un répertoire : si ce bit est positionné, un 
utilisateur qui peut écrire dans le répertoire peut y créer des fichiers, 
mais ne peut supprimer un fichier que s’il en est propriétaire

18/04/18 OS I 168
MODIFICATION DU PROPRIÉTAIRE ET DU GROUPE

● La commande $chown nom_propriétaire
nom_fichier permet de changer le propriétaire d’un 
fichier. 
– Pour des raisons de sécurité, seul l’administrateur peut 
modifier le propriétaire d’un fichier ou d’un répertoire. 

● La commande $chgrp nom_groupe nom_fichier 


permet le changement de groupe pour les fichiers ou 
répertoires cités,
–  à condition que l’utilisateur fasse partie du nouveau groupe 
et soit propriétaire de ces fichiers ou répertoires.

18/04/18 OS I 169
MODIFICATION DU PROPRIÉTAIRE ET DU GROUPE


Le fichier /etc/group  défini les groupes auxquels les utilisateurs appartiennent


Le format d'une entrée /etc/group
– adm:x:4:amine,syslog
● adm : Nom du groupe
● x : password
● 4 : Group ID (GID)
● amine,syslog : Group List : membres des groupes

18/04/18 OS I 170
MODIFICATION DU PROPRIÉTAIRE ET DU GROUPE

● Le fichier /etc/passwd contient les 
information sur les comptes utilisateurs 

18/04/18 OS I 171
Lien matériel (hard link)


Un fichier, en tant qu’espace disque, est repéré par son index et non 
par son nom. L’index est le numéro de l’inode décrivant entièrement 
le fichier sur disque. Un répertoire est un fichier de type particulier 
contenant des couples (index, nom_de_fichier).


Il est donc possible d’associer deux noms différents au même index. 
Cette opération est effectuée par la commande ln (LiNk)

● $ln fichier_existant nouveau_nom


Le même fichier, au sens espace disque, peut alors être accédé par 
les deux noms : fichier_existant et nouveau_nom.

18/04/18 OS I 172
Lien symbolique (soft link)


La numérotation des inodes est interne à chaque système de fichier.


Or, deux fichiers différents appartenant à deux système de fichier 
différents peuvent porter le même index (le même numéro d’inode). 
La logique décrite précédemment est alors inapplicable.


Pour résoudre ce problème, il faut utiliser dans ce cas un lien 
symbolique : $ln -s fichier_existant nouveau_nom


Le fichier nouveau nom est créé (nouvel inode), mais n’occupe que 
peu de place sur disque : il ne contient que la référence à 
fichier_existant.

18/04/18 OS I 173
The END

18/04/18 OS I 174

Vous aimerez peut-être aussi