Découvrir GNU/Linux episode 1, la version texte

Bonjour tout le monde. Comme vous le voyez, la chaîne évolue un peu, elle se diversifie. Mais je ne compte pas vous abandonner comme ça, je commence aujourd’hui une nouvelle série de vidéos pour tout ceux qui souhaitent découvrir ce que c’est que Linux. Alors, ok, à la base je souhaite permettre aux débutants de faire leurs premières armes sous Linux, MAIS, et c’est un gros MAIS, si vous avez déjà un peu de bagages sous Linux, je compte bien saupoudrer assez de choses pour que même vous, à qui la ligne de commande ne fait pas peur, vous appreniez pleins de choses. Par contre, je préviens tout de suite, je vais continuer d’alterner les vidéos VLog, 3 minutes, etc. Et je sortirai un nouvel épisode de cette série une fois par mois

Alors on va commencer tout de suite, par ce premier épisode, dans lequel on va se poser la question… un système d’exploitation, à quoi ça sert ?


Alors je ne vais pas faire durer le suspense très longtemps hein. Un système d’exploitation a pour rôle de faire tourner des programmes. Tout simplement. Ce qui veut dire que, quelquesoit le système d’exploitation devant lequel je me trouve, tout est fait pour faciliter le fonctionnement de programmes. On va appeler ces programmes des processus. C’est un peu simplifié, car un programme peut avoir plusieurs processus, mais l’idée est bien là.

Mon système d’exploitation, pour faciliter l’écriture des programmes, va également jouer le rôle d’une interface d’abstraction du matériel…

  • Interface d’abstraction ? Ouais, ça y est, ça fait 2 minutes que tu parles, et tu m’as déjà perdu

Non ne t’inquiète pas, je vais prendre un exemple et tu vas voir que si le mot a l’air compliqué, c’est assez simple à comprendre. Quand on a du matériel, n’importe quel type de matériel, mais si je prends ma souris par exemple, c’est pas facile pour un programme de récupérer les informations de la souris. Déjà il y a le mouvement de la souris, ensuite les boutons. Et y’a des souris avec 1 boutons, avec 3 boutons, avec 15 boutons. Il y a des souris qu’on connecte avec un cable de type USB, autrefois il y avait les souris le câble PS/2, on a des souris sans fil en bluetooth, il y a des souris sans fil avec une petite clé USB qu’on met dans l’ordinateur. Ça fait beaucoup de possibilités. Et ça veut dire que un programme qui voudrait, par exemple, permettre de dessiner à l’écran quand on clique sur le bouton gauche de la souris, et ben ce programme doit être capable de récupérer les informations de tous ces types de souris. Et encore, là j’ai supposé que toutes les souris envoient leurs informations de mouvement de la même façon, mais rien ne me le garanti.

Alors, pour qu’on ne tombe pas dans un truc aussi compliqué que ça quand on écrit un programme, hé bien le système d’exploitation va savoir comment récupérer les informations pour tous les types de souris qu’on rencontre. C’est ce qu’on appelle le pilote de la souris. Et il va présenter aux programmes, une façon de discuter avec la souris qui est tout le temps la même. Qu’on soit avec une souris PS/2, avec une souris Bluetooth, ou avec un pavé tactile, le système d’exploitation va me présenter une souris standardisée ! Le programme n’a pas à s’occuper des détails, c’est le système d’exploitation qui fait ça pour lui. C’est ça qu’on appelle une interface d’abstraction. On rend les détails techniques invisibles, et on permet aux programmes d’accéder au périphérique d’une façon qu’on a standardisé dans le système d’exploitation.

Et ce que je viens de décrire, c’est la même chose qu’on soit avec Linux, ou BSD, ou Windows, ou MacOS. Là où il va y avoir une grosse différence, c’est le standard qui va permettre à un programme de discuter avec un périphérique. Et là, sous Linux, comme sous de nombreux systèmes d’exploitation de type Unix, la méthode de discussion entre un programme, et un périphérique, c’est un fichier ! On en reparlera, mais mon programme, qui me permet de dessiner à l’écran, pour voir les mouvements de la souris, il va juste avoir à aller lire les mouvements de la souris qui sont affichés en temps réel dans un fichier spécial. Si le programme sait lire le contenu d’un fichier, il sait lire les informations de mouvement de la souris.

Et comme le contenu du fichier, la description des mouvements, est standardisée, il peut alors prendre en compte toutes les souris du marché !

La partie du système d’exploitation qui fait ce boulot, c’est à dire qui aide les programmes à accéder au matériel, c’est ce qu’on appelle le noyau, ou le kernel du système d’exploitation. Le noyau est juste là pour faire fonctionner des processus. Tout seul, il ne sert à rien !

D’ailleurs, quand on parle de Linux, on fait une petite confusion. Linux, c’est juste un noyau de système d’exploitation. C’est à dire que c’est juste un truc qui joue le rôle de l’interface d’abstraction. Pour pouvoir se servir d’un ordinateur, on a besoin d’au moins quelques programmes. Et très souvent, une partie de ces programmes viennent d’un projet qui s’appelle le projet GNU. On parle alors d’un système d’exploitation GNU/Linux, car on trouve les programmes du projet GNU, et le noyau Linux.

  • Bon alors ça y est, maintenant je sais ce que c’est qu’un système d’exploitation, mais t’as pas oublié les utilisateurs là dedans ?

Ah, c’est une bonne question. En fait, non, je ne les ai pas oubliés. Pour le système, la notion d’utilisateur est assez… comment dire, floue. Le système d’exploitation ne voit pas l’utilisateur comme une femme ou un homme assis sur une chaise et qui manipule une souris et un clavier. Tout ça n’a aucun sens pour lui.

  • Heu… si quand même. Enfin, tu veux dire que l’utilisateur n’existe pas pour le système d’exploitation ?

Si, si, il existe. Mais pas comme un truc autonome. Pour l’instant, dans mon système d’exploitation, j’ai, en gros, deux choses. En premier j’ai le noyau, et en second j’ai les programmes. Et le truc important, c’est les programmes, donc les processus.

Un utilisateur, on en aura besoin si on veut limiter les actions possibles d’un utilisateur physique. Par exemple, je ne veux pas que Pierre qui a un compte sur mon ordinateur, puisse aller lire mes emails. On va donc devoir différencier Pierre de Yves.

  • Ben… tu viens de dire que ça n’existait pas de façon autonome

Oui, je sais. C’est pas un truc autonome l’utilisateur. C’est juste une propriété associée à un processus. C’est tout. En fait, quand un processus est créé, ça veut dire quand on exécute un programme, il y a des propriétés qu’on va devoir associer au processus. La première, c’est un numéro. Car mon ordinateur, c’est avant tout une grosse machine à calculer, et il ne sait manipuler que des nombres. Donc on va avoir le processus numéro 1, le numéro 42, le numéro 11 285, etc. Il y a d’autres propriétés dont on parlera dans une autre vidéo, mais dans ces nombreuses propriétés, il y a un numéro, qu’on appelle le User ID, ou numéro d’utilisateur. Pour le système, un utilisateur n’est qu’une propriété, numérique, d’un processus !

  • Oui mais ok, mais je comprends pas trop. Si l’utilisateur c’est une propriété d’un processus, comment on fait quand c’est pas un utilisateur qui lance un programme ?

Encore une fois, tu poses une bonne question. Ces propriétés, donc pour l’instant le numéro du processus, et le numéro de l’utilisateur du processus, ce ne sont pas des propriétés facultatives. Pour pouvoir faire fonctionner un programme, il faut avoir un numéro de processus et un numéro d’utilisateur. Sinon, le noyau ne créera pas le processus dans la mémoire… Donc, même un programme que tu n’as pas lancé toi même, et qui fonctionne tout seul sur ton ordinateur, il a un propriétaire. Mais on reviendra là dessus un peu plus en détail dans un autre épisode, tu verras.

  • D’accord. Mais comment le système fait pour savoir que c’est moi qui ai lancé un programme ?

Alors pour comprendre ça, on a besoin d’une autre propriété d’un processus. On a vu qu’on avait le numéro du processus, mais on a aussi le numéro du processus parent. Ça veut dire, que dans un programme, un éditeur de texte par exemple, on a mémorisé quelquepart le numéro du programme qui a lancé l’éditeur de texte. Si tu as double cliqué sur l’icône de l’éditeur de texte, le programme qui te présentait la souris et les icônes c’est lui qui a lancé le programme. Et donc, dans l’éditeur de texte on a l’information « le processus numéro 145 est celui qui m’a créé ! ». Et par défaut, quand un programme est créé dans la mémoire, il récupère une bonne partie des propriétés de son parent. Et dans notre cas, si tu es l’utilisateur numéro 42, et bien l’éditeur de texte va tourner avec la propriété utilisateur numéro 42 !

Alors je suis bien conscient que tout ça est plutôt théorique pour le moment, mais on va voir dans les épisodes qui viennent que ça va prendre du sens plus concret. En fait, on n’a pas besoin de savoir tout ça pour utiliser Linux, mais par contre, ça permet de vraiment mieux comprendre ce qu’il se passe quand on le manipule.

Comme ça fait déjà pas mal de choses, je te propose qu’on continue la prochaine fois, de façon beaucoup plus concrete, à comprendre ce qu’il se passe quand on se connecte sur l’ordinateur. Et tu verras que tout ça prend son sens !

Ciao les geeks