Page préc.
Types de fichiers |
Fin de page |
Page suiv.
Bibliographie |
En standard, trois fichiers particuliers sont ouverts lors du lancement d'un processus par le langage de commande (shell). Ils peuvent cependant être refermés par le programme lui-même. Il s'agit des fichiers de descripteurs :
0 : c'est le fichier standard d'entrée (clavier) – stdin en CL'ouverture d'un fichier par un processus réserve un élément dans la table. Chaque élément non nul de cette table pointe sur un élément de la table des fichiers ouverts du système.
1 : c'est le fichier standard de sortie (écran) – stdout en C
2 : c'est le fichier standard de sortie des erreurs (écran aussi) – stderr en C
Si le même fichier est ouvert par plusieurs processus, il n'occupe qu'un seul élément de la table des fichiers du système. En revanche, un élément lui correspond dans la table des descripteurs de fichiers de chaque processus (et le descripteur de ce fichier peut être différent d'un processus à l'autre). Chaque élément de la table comporte un certain nombre d'informations, comme par exemple le déplacement dans le fichier (position en nombre d'octets où se fera le prochain accès, par rapport au début du fichier (position 0)).
Une autre information contenue dans chaque élément de ce tableau de fichiers est un pointeur vers un tableau d'i-nœuds.
Chaque fois qu'un nouveau fichier est ouvert par le système, son i-nœud contenu dans le F.S. est chargé en mémoire, et quelques informations supplémentaires lui sont ajoutées, qui sont inutiles ou dépourvus de sens sur son image disque, comme :
Structures internes mises en œuvre par le S.G.F
La fonction système
dup()
a pour effet de dupliquer un descripteur de fichier.
En supposant qu'initialement seuls les descripteurs de fichiers 0, 1, 2 et m correspondent à des fichiers ouverts, la figure suivante illustre la modification de la table de descripteur obtenue par l'appel à la fonction dup() suivant :
n = dup (m); |
Le premier descripteur de fichiers disponible pointe à son tour sur le même fichier que le descripteur m (n prend la valeur 3).
Effet de dup() sur la table des file descriptors
L'exécution de la fonction fork() a pour effet de créer un processus fils par duplication d'un certain nombre d'informations, en particulier la table des identificateurs de fichiers. La figure suivante montre le résultat de l'exécution de la fonction fork(). Les deux processus pointent vers les mêmes fichiers.
Page préc.
Types de fichiers |
Début de page |
Page suiv.
Bibliographie |