2.2 Les objets d'UNIX
UNIX distingue des flux, des tâches et des fichiers.
Un fichier (file) est une suite ordonnée d'octets. La taille
maximale des fichiers est bien sûr limitée par la taille physique des
mémoires qui les retiennent. Un fichier peut contenir n'importe
quelle séquence d'octets et en particulier
-
des caractères formant un texte (comme cette documentation),
-
des programmes écrits dans un certain langage (FORTRAN, Lisp, PROLOG,
Pascal, C ...); ce sont aussi des textes.
-
des instructions binaires auquel cas ce fichier représente un
programme exécutable.
Un fichier peut être vide, c'est-à-dire exister et ne rien contenir !
Une tâche (process)
est un programme en cours d'exécution.
Un même programme peut être simultanément exécuté par
plusieurs tâches :
par exemple, plusieurs personnes peuvent user en même temps
d'un même compilateur ou d'un même éditeur de texte.
Une tâche naît, vit puis meurt.
Une tâche peut même changer de programme support (cf.
exec)
sans pour cela devoir perdre la vie.
Une tâche effectue un certain travail en exploitant des flux (stream)
pour en produire d'autres.
Un flux est une suite d'octets produite par un fichier ou une tâche en
destination d'un fichier ou d'une tâche.
Tout agencement particulier de tâches, flux ou fichiers peut être mis
en oeuvre par
UNIX,
notamment des choses aussi tératologiques que :
Quelques fichiers spéciaux existent qui mettent en oeuvre les
périphériques.
Ainsi
/dev/tty est-il, pour chaque utilisateur,
son ensemble clavier-écran : lire
/dev/tty permet de lire les caractères
frappés ; écrire sur
/dev/tty permet inversement d'afficher des textes sur l'écran.
Lorsque le calculateur est mis sous tension, un processus
d'amorçage (bootstrap)
se déroule et met en place pour chaque utilisateur
potentiel une tâche
particulière associée à trois flux connectés à un fichier spécial :
/dev/tty.
Le rôle de cette tâche particulière est de permettre, après connexion et
divers autres réglages, la mise en oeuvre du noyau d'UNIX,
c'est-à-dire
la réalisation de schémas associant flux, fichiers et tâches.
Elle lit les commandes frappées au clavier décrivant un schéma,
les interprète c'est-à-dire détermine la suite des appels au noyau
UNIX
nécessaire pour former et lancer l'exécution du schéma souhaité
(cf. « Presque le fin mot »).
Cette tâche est généralement une incarnation du programme
/bin/sh et est connue sous le nom d'interprète de commandes ou
shell.
Le nom de
shell (coquillage mais l'idée correspond mieux à celle d'un éventail)
correspond à l'idée graphique suivante :
L'utilisateur se voit offrir un choix équanime entre tous les programmes
accessibles.
Tous les schémas concevables ne sont pas descriptibles en
/bin/sh,
mais la plupart des plus usuels le peuvent être.