Skip to content

MOOC NSI - fondamentaux.

Transcription de la vidéo

4.2.1.9 part1 : Flux d'entrée-sortie I

[00:00:01]

Pour avancer vers un autre mécanisme de communication entre processus que sont les tubes, nous allons d'abord parler brièvement de flux d'entrées/sorties. Nous allons rappeler quelques notions sur les fichiers puisque la gestion des flots d'entrées sorties est étroitement liée à la gestion des fichiers. Comme vous le savez certainement, un fichier est un ensemble d'informations persistantes, c'est à dire c'est un regroupement d'informations que nous voulons conserver au-delà de l'arrêt de l'ordinateur. D'ailleurs, un fichier, c'est la plus petite unité de stockage persistante qui peut être manipulée par un processus ou par un utilisateur. Les fichiers sont utilisés partout dans un système. Ils servent de support des programmes exécutables : nous avons vu dans des vidéos précédentes et nous avons parlé de fichiers exécutables. Bien sûr, ils servent à stocker des données et nous allons voir que les fichiers sont utilisés pour faire communiquer les processus.

Les fichiers peuvent être manipulés à l'aide de quatre fonctions principales fournies par le système d'exploitation. Les quatre fonctions sont open, read, write et close et ce sont donc des appels système. L'appel système open permet d'ouvrir un fichier et à la suite de cette opération, le système d'exploitation fournit un identifiant appelé descripteur qui permet aux programmes ou à l'utilisateur de travailler avec un fichier. L'opération symétrique, c'est l'opération close qui permet donc de fermer un fichier et d'indiquer que le processus ou l'utilisateur n'utilisera plus ce fichier. Bien sûr, vous avez les deux opérations principales pour travailler avec les fichiers qui sont read write pour faire des lectures ou des écritures dans un fichier.

Alors, on a dit qu'il y a un lien étroit entre fichiers et entrées/sorties.

[00:02:16]

En effet, les organes d'entrées sorties et là on parle de l'écran, du clavier ou du disque sont représentés par des fichiers particuliers. Cela veut dire que pour manipuler les organes d'entrées/sorties, nous utilisons la même interface que l'interface avec les fichiers normaux. C'est l'interface que nous avons vu sur le transparent précédent. Le deuxième point est que quand on regarde les flots d'entrées/sorties d'un processus et le flot d'entrées, c'est la suite de données qu'un processus utilise. en entrée donc en lecture et le flot de sortie ce sont les données qu'un processus produit, ces flots d'entrées sorties peuvent être dirigés soit vers les organes d'entrées sorties, qui est le comportement standard auquel on est habitué, soit vers des fichiers sur disque.

Alors, les flots d'entrées sorties standard sont représentés par des fichiers qui, classiquement, ont des descripteurs 0, 1 et 2. Nous avons donc l'entrée standard qui a l'identifiant zéro. La sortie standard qui a le descripteur 1, et la sortie d'erreur qu'il y a le descripteur 2. Mais quels sont ces numéros? En effet, le système d'exploitation gère pour le processus une table des fichiers ouverts qui s'appelle aussi la table de descripteurs. Dans cette table, le système d'exploitation va mettre les informations dont il a besoin pour travailler avec les fichiers. Typiquement, il va y avoir les informations de l'emplacement du fichier si le fichier est sur disque. Vu que ce sont des informations sensibles qui ne peuvent pas être données à l'utilisateur ou au programme, il n'y a que le système d'exploitation qui va les manipuler. Mais pour identifier le fichier, il va rendre à l'utilisateur un identifiant, ce descripteur, pour que le programme où l'utilisateur utilise ce descripteur quand il demande des lectures ou des écritures pour un fichier particulier.

[00:04:37]

Les flots d'entrées/sorties peuvent être manipulés et nous allons maintenant voir comment ils sont manipulés en ligne de commande. En effet, nous pouvons donc ( on a dit qu'on pouvait rediriger les entrées/sorties en ligne de commande), cela est fait à l'aide des chevrons ou des symboles plus petit, plus grand. Si on regarde ici les exemples, il y a une première commande cat fich qui a pour résultat donc de lire le fichier fich et afficher son contenu. Sur la première ligne, vu que nous ne donnons pas d'indication de redirection, donc nous n'utilisons pas le < ou le >, la commande va utiliser la sortie standard, qui est l'écran. Dans la deuxième commande, nous utilisons la même commande, mais nous redirigeons la sortie en utilisant le symbole > vers le fichier fich1. Comme résultat, nous allons nous retrouver avec un fichier fich1 dont le contenu sera identique au contenu du fich. Et enfin le troisième exemple : si on exécute cette commande cat /dev/null redirection vers fich, vu que /dev/null correspond à un fichier vide, cela reviendrait à effacer le contenu du fichier fiche.

Dans cette séquence, nous avons parlé d'entrées/sorties. Nous avons vu que les flots d'entrées/sorties d'un processus sont initialement dirigées vers les organes d'entrées/sorties qui sont le clavier et l'écran. Ces organes sont gérés à l'aide de fichiers spéciaux. Toutefois, l'interface pour travailler avec les fichiers spéciaux est la même que pour travailler avec les fichiers normaux. Les flots d'entrées/sorties des processus peuvent être redirigés et donc utiliser des fichiers sur disque.