Système de fichiers UNIX

Système de fichiers UNIX

Dans le OS UNIX, un fichier et un contenant de données brutes ou traitées sous forme d'un flot d'octets ( ou flot de caractères). Dans UNIX les données sont codées en ACII.

Les fichiers contiennent différents types d'informations. Par exemple, un fichier avec le code source d'un programme C ou C++, un document de texte contenant le courrier ou le code d'exécution d'un programme.Ce sont des fichier natifs supportés par UNIX, on peux les afficher ou copier par des commandes UNIX. Cependant, certains fichiers ne peuvent pas être traités par des commande native UNIX. Par exemple un fichier contenant des données d'une base de données comme Oracle devra être traité et affiché par des programmes spéciaux.

Un fichier peut être permanent sur le disque, temporaire en mémoire, affiché ou acceptent des données à partir d'un terminal.

Type de fichiers

Fichiers réguliers

Les fichiers réguliers sont permanents et contiennent des données telles que le code source d'un programme, un message électronique. C'est fichiers contiennent presque toujours de l'information textuelle.Les données sont organisées en enregistrements (records). Chaque ligne est un enregistrement.

Il y à un caractère spécial appelé caractère newline, qui permet à UNIX de retrouver la fin d'un enregistrement (fin de ligne) et le début du suivant.

Exemples de fichiers réguliers:
prog.c  contient un programme source en langage C
prog.exe  contient le code exécutable d'un programme
invite.doc  contient une invitation à un pot de départ

Chaque fichiers a des attributs associés. UNIX conserve les attributs  des fichiers dans une structure de données appelée i-node. Chaque i-node est identifié par un numéro de i-node. Chaque fichier du système a un i-node associé contenant les informations suivantes:
- des détails sur le propriétaire du fichier
- des détails sur les permissions du fichier
- des marques temporelles du fichier ( date et heure de création, modification, etc...)
- le type de fichier

Les marques temporelles suivantes sont associées à un fichier:
- l'heure du dernier accès
- l'heure de dernière modification
- l'heure de dernière modification du i-node

Fichiers de répertoire

Un fichier de répertoire est un fichier spécial contenant des informations sur les différents fichiers stockés dans le répertoire, comme leur emplacement, leur taille, l'heure de leur création et modification.Ce fichier ne peut être lu que par le système d"exploitation ou des programmes écrits spécialement pour le traitement des répertoire. On peut utiliser les commandes UNIX pur interroger certains attributs du répertoire. Un fichier de répertoire est comme un annuaire indiquant les adresses des fichiers qu'il contient.
Dans chaque répertoire, vous trouverez toujours les deux fichiers suivants:
1.  . (un seul point - fait référence au répertoire courant)
2.  .. (deux points consécutifs- fait référence au répertoire de niveau supérieur, répertoire parent)

Un répertoire possède au moins deux noms. Si on crée un sous-répertoire appelé testdir de répertoire /home/amer deux liens seront crée: /home/amer/testdir  et  /home/amer/testdir/.
L'entrée /home/amer/testdir est d’abord crée comme un répertoire vide et elle est ensuite liée à /home/amer/testdir/.  (un seul point).

Fichiers périphériques de type caractère et bloc

Les fichiers spéciaux en mode caractère ont des entrées/sorties traitant un caractère à la fois alors que les fichiers spéciaux en mode bloc accroissent l'efficacité des transferts de données par des mécanisme de cache, en gardant une copie des données en mémoire. Parmi ces fichiers on trouve:
- les unités disquettes (fichier spécial en mode caractère ou bloc)
- les unités de bande ( fichier spécial en mode caractère
- le terminal ( fichier spécial en mode caractère)

UNIX traite le clavier et le moniteur (terminal) comme des fichiers. Le clavier est considéré comme un fichier en entrée, aussi appelé fichier d'entrée standard (stdin). Le terminal est considéré comme un fichier en sortie, aussi appelé fichier de sortie standard (stdout).

Chose importante de l'entrée et de la sortie standard est la redirection des entrées/sorties. Toutes les commandes UNIX, par défaut, acceptent leurs entrée sur l'entrée standard, affichent leurs résultats sur la sortie standard et envoient les messages d'erreur sur la sortie d'erreur standard. Avec la redirection entrées/sorties, on peut contrôler respectivement la source et la destination de l'entrée et de la sortie d'une commande. Il est possible de diriger la sortie d'une commande vers un fichier différent de la sortie standard. De la même façon, il est possible d'accepter l'entrée à partir d'un fichier plutôt que de l'entrée standard. On peut aussi rediriger les messages d'erreur vers un fichier.

La poubelle (bit bucket), définie comme le fichier /dev/null, est un autre fichier spécial intéressant. Si on dirige la sortie d'une commande vers /dev/null, il ne se produit plus de sortie. Par exemple pour exécuter une commande pour vérifier seulement si cette commande a généré des erreurs.