Votre ordinateur, cette cellule bourrée d’organites

Il y a des jours, comme ça, où on se lève en se disant « Hé ! Et si je faisais un article sur les systèmes d’exploitation ? ». En fait, j’ai surtout adoré ce comic de xkcd (https://xkcd.com/676/) et je voulais vous en parler. Alors, de quoi qu’il cause ?

Je suppose que vous connaissez tous le terme processeur : la partie de l’ordinateur chargée de réaliser tous les calculs nécessaires à son fonctionnement. La manière dont ils réalisent les calculs et les instructions qu’on peut leur demander sont définies par leur architecture : ici, l’architecture du processeur concerné est « x64 » plus exactement « x86-64 ».

Sans trop rentrer dans les détails compliqués :

  • L’architecture x86 a été nommée d’après le processeur Intel 8086 en 1978. C’est celle qui a vu le développement de l’informatique grand public.
  • L’architecture x86-64, parfois abrégée en x64, est la version 64 bits de l’architecture x86. Elle permet entre autres de gérer des quantités de mémoire vive supérieure (au-delà de 4 Go). Elle est relativement récente puisqu’elle a été introduite en 2000 par AMD.
  • Une autre architecture très répandue : ARM ; c’est celle que tous les mobiles (smartphones, tablettes) emploient. Elle existe également en version 32 et 64 bits.

Illustration 2: schéma de la machine de Turing

Mais à quoi sert ce processeur ? On avait parlé dans un article précédent (et ui tout est lié) de la machine de Turing. Je vous mets un petit schéma bilan pour les deux du fond qui suivent pas (je vous ai vus !)

Eh bien, un processeur, c’est un peu la tête de lecture, la table de transition, son « langage » étant défini par son architecture. Si vous vous demandez ce que devient le ruban, c’est la mémoire vive qui en fait office. Vous savez, la RAM, comme dans « ça rame » ?

Bon, on ne devrait utiliser ce terme que dans un cas précis : quand cette brave RAM est complètement saturée parce que vous avez essayé de lancer Gimp, LibreOffice, Firefox, Thunderbird en même temps que vous faisiez un rendu sous Blender (si vous ne voyez pas de quels logiciels il s’agit je vous laisse cliquer sur leur nom pour voir leur fiche Wikipédia).

Mais je m’égare (a, faubourgs de Carthage) : revenons au sujet. Si notre machine de base est complète, alors à quoi sert tout le reste de ce qui est évoqué dans la BD ? Si vous avez regardé la vidéo du second article, vous sauriez qu’il est possible de concevoir une machine de Turing universelle, capable de faire fonctionner ce que n’importe quelle autre machine de Turing pourrait faire fonctionner.

Eh bien, c’est sur ce principe qu’a été conçu l’informatique moderne, pour qu’un programme puisse s’exécuter sur plusieurs ordinateurs au lieu d’un. C’est le rôle de tous les composants qu’on va évoquer maintenant ! On parle, à ce sujet, d’ « abstraction ».

XNU est le noyau du système d’exploitation qu’utilise Randall (l’auteur de xkcd), à savoir macOS. Les autres noyaux communs sont Windows NT (je vous laisse deviner à quel système il appartient…) et Linux (base des systèmes GNU/Linux mais aussi… d’Android !). Le noyau traduit les demandes qu’il reçoit en instructions pour le processeur. Vous comprenez maintenant pourquoi on ne peut pas installer « simplement » Windows 10 x64 sur une tablette par exemple : le noyau transmettrait des instructions x86-64 à un processeur ARM, qui ne comprendrait rien. Le noyau Linux d’Android, vous l’aurez compris, a été adapté pour les processeurs ARM (sans quoi il ne marcherait pas mieux).

Le noyau répond à un jeu d’instructions nommé POSIX : le sens de l’acronyme importe peu, mais c’est une norme définie pour assurer une compatibilité entre les systèmes descendant d’Unix. Encore un mot que vous comprenez pas ? Well : Unix, c’est le papi des systèmes d’exploitation. Ses petits-enfants sont, entre autres, macOS et le monde foisonnant des GNU/Linux.

POSIX prend ses instructions auprès de Darwin, un système d’exploitation minimal qui est commun à tous les OS d’Apple (tvOS, watchOS, macOS, etc.). Avantage : le développement de ces systèmes est simplifié. Darwin prend ses ordres auprès de macOS.

Mais on ne s’arrête pas là ! En effet, il est sur une page web et il utilise Firefox. Il s’avère que les navigateurs utilisent également un « noyau », qu’on nomme ici « moteur de rendu ». Son travail est de transformer le langage de conception des sites web (enfin, les : CSS pour la mise en forme, HTML pour la structure et JavaScript pour les interactions) en instructions compréhensibles par le système (qui traduira pour Darwin, qui traduira pour POSIX, qui traduira pour le noyau, qui traduira pour le matériel)

Illustration 3: récapitulatif des moteurs de rendu par navigateur & système

Je vous ai fait un petit tableau pour voir un peu quel navigateur utilise quel moteur de rendu. Vous remarquerez que j’ai écrit Android dans la ligne « ARM » au lieu de « OS mobiles » : en effet, sur iOS, il est tout bonnement impossible d’employer un moteur de rendu différent de celui de Safari ; tous les « navigateurs » pour iOS demandent donc à Safari le rendu des pages. Pour votre culture perso, Blink est dérivé de Webkit ; comme vous le remarquerez, ça laisse donc peu de moteurs de rendus différents, ce qui n’est pas sans poser problème… mais ça, on en parlera dans un autre article : finissons celui-ci.

Je reprends à SFR sa catchphrase : et c’est pas fini ! En effet, Randall a la mauvaise idée de regarder une vidéo en flash. Cette techno, appréciée pendant un temps, s’est transformée depuis une paire d’années en cancer du web à éliminer.

En effet, Flash constitue en quelque sorte un moteur de rendu dans le moteur de rendu pour interpréter les objets flash qu’on trouve parfois encore sur certains sites web. C’est donc particulièrement lourd ; et c’est en plus dangereux quand on sait que Flash est bourré de failles de sécurité. Il ne peut pas être isolé proprement comme le sont vos pages web, en tant que moteur de rendu, et laisse donc la porte ouverte à des attaquants pour faire des vilaines choses à votre ordi. Sad.

Je vous ai réalisé un joli schéma pour résumer ce qu’on a vu dans le cas de Randall :

Illustration 4: un petit résumé des couches de l’oignon

Je suppose que le titre vous est plus clair maintenant !