next up previous contents
Next: 1.7 Programmes usuels Up: 1. Premiers pas Previous: 1.5 Commandes de bases

  
1.6 Programme, processus, logiciel & Co [YB]

Nous allons tenter ici de clarifier quelques termes d'emploi fréquent. Commençont par un que nous avons déjà rencontré, le terme de programme.

Une définition un peu abstraite, tirée d'un dictionnaire, est de dire qu'un programme est une suite d'instructions compréhensible par l'ordinateur, organisée de manière à ce que celui-ci accomplisse une tâche donnée. Cela est sans doute exacte, mais ne nous renseigne pas sur la forme que prennent les programmes sur notre système Linux...

Essayez donc la commande suivante :

more /bin/more

Normalement, vous devriez voir une série de caractères parfaitement incompréhensible, peut-être même entendre quelques beeps et récupérer un affichage désordonné (dans ce dernier cas, changez de console virtuelle, comme indiqué dans la section 1.3.3 page [*]). Que vient-il de se passer ?

La commande more vous est déjà connue, elle permet d'afficher le contenu d'un fichier. Lorsque vous appuyez sur Entrée après avoir tapé la commande, vous demandez au système d'exécuter un programme, more en l'occurrence. Mais sans doute avez-vous remarqué que le fichier dont nous avons demandé l'affichage porte le même nom que la commande...

Ce fichier est justement celui qui contient le programme correspondant à la commande more. Les instructions d'un programme (ce qu'il doit faire) sont en effet contenues dans un fichier, le plus souvent sous une forme que l'\oeil humain ne peut saisir mais aisément utilisable par l'ordinateur (on parle alors de fichier binaire, et tous les programmes ne se présentent pas sous cette forme). La très grande majorité des commandes sont donc des programmes, dont les instructions sont contenues dans des fichiers binaires.

Mais continuons notre enquête. Lorsque le système tente d'exécuter un programme, il lit le fichier qui le contient pour le placer dans sa mémoire. Alors seulement les instructions du programme sont exécutées, laquelle exécution se traduit le plus souvent par l'utilisation de davantage de mémoire, par la lecture ou l'écriture de divers fichiers, des affichages à l'écran... Le programme que nous avons exécuté plus haut, par exemple, a lut un fichier (/bin/more) et affiché son contenu à l'écran.

On se trouve alors en présence d'une entité dans la mémoire de l'ordinateur, qui évolue, qui agit sur différents éléments qui lui sont accessibles. On pourrait même considérer qu'elle est née (lors de la lecture du <<fichier-programme>> par le système), qu'elle vit (lors de l'exécution des instructions contenues dans le programme), et qu'elle mourra (lorsque sa tâche sera accomplie). Cette entité presque vivante est ce que l'on appelle un processus. Dans un système tel que Linux, tout processus est <<lancé>> par un autre processus, et est à même d'<<enfanter>> un ou plusieurs processus : on peut donc parler de <<relation père-fils>> entre les processus. Sachez qu'il est très courant d'avoir plus d'une vingtaine de processus s'exécutant simltanément lors du fonctionnement d'un système Linux, éventuellement communiquant entre eux. Pour s'y retrouver, le système attribue à chacun d'eux un numéro unique, désigné par le terme de PID (Process Identifier1.14). Par ailleurs, un même programme peut être exécuté plusieurs fois : à chaque exécution correspondra un processus à part.

Naturellement, la plupart des processus ne font guère parler d'eux : sinon, votre écran serait rapidement rempli de messages, et il vous serait impossible de vous retrouver dans un fouilli pareil. En fait, la plupart des processus tournent en arrière-plan, c'est-à-dire qu'ils font ce qu'ils doivent faire en silence. Par exemple, le processus qui vous permet d'accéder au système n'intervient que lorsqu'il est sollicité, le reste du temps il est silencieux. On parle communément de démons1.15 pour désigner de tels processus, lorsqu'ils font partie des composantes du système.

Pour finir notre <<bestiaire occulte>>, citons le cas des zombies. Ce sont des processus parvenus au terme de leur exécution (soit normalement, soit à la suite d'une erreur), mais que le système ne parvient pas à éradiquer de la mémoire. Ils demeurent donc ainsi, le plus souvent totalement inactifs, mais occupant une certaine quantité de mémoire, ce qui peut devenir gênant si leur nombre augmente trop. En général, cet état survient quand un processus se termine alors que le système n'a pas le temps de s'occuper de l'effacer de la mémoire, parcequ'il est trop sollicité. Cela peut également arriver lorsque le processus a provoqué une erreur telle que le système ne sait pas quoi en faire. Mais cela reste assez rare, ne vous inquiétez pas.

Nous savons maintenant ce qu'est un programme, et un processus. Donnons alors quelques définitions.

Un logiciel est un ensemble de programmes fortement liés entre eux, destinés à remplir une mission nécessitant plusieurs tâches plus ou moins complexes. Par exemple, un traitement de texte, qui peut aussi bien être utilisé pour rédiger un curriculum vitae que pour rédiger un livre entier.

Un système d'exploitation, dont nous parlons depuis le début, est un logiciel particulier : son rôle est de permettre à d'autres programmes de s'exécuter dans les meilleures conditions, et d'utiliser le matériel électronique de l'ordinateur. L'exécution d'un système tel que Linux peut donner lieu à l'apparition d'une multitude de processus.

Enfin, ce que l'on désigne par code source est ce qu'un (ou plusieurs) être humain a tapé au clavier, dans un certain langage de programmation compréhensible par lui, pour construire un programme. Ce texte n'est pas compréhensible par l'ordinateur, et doit subir une phase de traduction (ou compilation) pour obtenir un fichier binaire. Par exemple, Linux lui-même est programmé dans un langage (presque) intelligible, nommé langage C, et normalement le code source de Linux se trouve dans une arborescence située dans le répertoire /usr/src/linux. Notez qu'habituellement le code source des logiciels et systèmes commerciaux n'est pas ainsi librement disponible : Linux (et la plupart des outils qui l'accompagnent) appartient au mouvement OpenSource, et fait figure d'exception.



Footnotes

... 1.14
Identifiant ou Identificateur du Processus en français.
...démons1.15
De l'anglais daemon. La traduction n'est peut-être pas très heureuse linguistiquement, mais elle correspond bien à l'idée.

next up previous contents
Next: 1.7 Programmes usuels Up: 1. Premiers pas Previous: 1.5 Commandes de bases
kafka.fr@linux-france.org