Comment le matériel et les logiciels informatiques fonctionnent-ils ensemble ?


En couches.

Repensez à un vieux film de la Seconde Guerre mondiale (ou même plus ancien), où le capitaine, debout sur la passerelle, donne un ordre : "Faites cap sur Hawaï". Son second relaie cet ordre aux autres officiers de pont concernés qui devront faire leur part pour exécuter cet ordre global.


L'un de ces officiers de pont prend un téléphone et crie un ordre à la salle des machines : "En avant, à mi-puissance !". (ou quelle que soit la nomenclature appropriée de la marine, désolé ; je ne ferai jamais un bon romancier d'histoire de la marine !).

L'ingénieur en chef en bas raccroche le téléphone, puis se retourne vers ses subordonnés, en regardant chacun à son tour "Chargez plus de charbon dans les chaudières 1 & 2 ! Renforcez la chaudière 3 ! Ajustez la pression de la vapeur ! Vérifiez le bla-bla-bla !".

Chacun de ces sous-ingénieurs gère ensuite ses subordonnés pour que ces choses soient faites. Le gars qui a reçu l'ordre "Chargez plus de charbon dans les chaudières 1 & 2 !" descend la ligne jusqu'à chacune de ces chaudières, vérifie le taux de combustion actuel, et ordonne aux laquais de commencer à pelleter du charbon, jusqu'à ce qu'ils atteignent la pression de vapeur X. L'autre gars attrape son équipe et commence à alimenter le moteur n° 3. Et ainsi de suite.

Le capitaine n'a pas besoin de savoir qu'il faut 15 pelletées de charbon pour obtenir une augmentation de 10% de la pression de vapeur sur les chaudières 1 & 2, mais que la chaudière 3 est un modèle plus récent et plus efficace qui n'a besoin que de 12 pelletées, ou même que la chaudière # 3 était au ralenti et qu'elle a besoin d'un grand coup de pied aux fesses pour se mettre en route aux côtés des #1 & 2. Il y a des couches d'abstraction, protégeant le capitaine d'un niveau de détail qui n'est pas pertinent pour qu'il fasse son travail (à moins que quelque chose ne se passe mal et nécessite une considération au niveau du commandement).

Chaque petit clic sur un bouton ou glissement de fenêtre déclenche une rafale de commandes et de réponses. Lorsque vous faites glisser une fenêtre d'une partie de l'écran à une autre, le système d'exploitation commence à repeindre cette fenêtre petit à petit, à mesure que vous maintenez le bouton gauche enfoncé et que vous déplacez votre souris, tout en repeignant les données graphiques qui se trouvaient sous la fenêtre, car il garde la trace de ce qui se trouve dans toutes les fenêtres, il dit à l'autre application responsable de cette fenêtre sous-jacente "Hé, vous n'êtes pas couvert par une autre fenêtre, vous êtes maintenant visible, j'ai besoin que vous repeigniez votre fenêtre - donnez-moi ces données graphiques et je les enverrai - juste les bits qui sont maintenant visibles - au matériel graphique."

Le système d'exploitation émet alors un ensemble de commandes, qui filtrent vers un ensemble plus important de sous-commandes à un "pilote de périphérique" pour prendre ces données graphiques, et les arranger d'une manière que la carte graphique peut traiter. La carte graphique prend cette commande et ces données, les traite (peut-être avez-vous un effet d'ombre portée autour des bords des fenêtres pour donner cet aspect 3D), puis déplace ces données mises à jour vers les circuits qui sortent les données vidéo vers votre moniteur.

Votre fenêtre bouge, et ce qui était sous la fenêtre est révélé.

Il y a du matériel, il y a des pilotes de périphériques, il y a souvent une "couche d'abstraction matérielle" qui essaie de faire en sorte que la plupart des matériels de certaines catégories soient tous présentés de manière uniforme au système d'exploitation, afin que celui-ci puisse émettre la même suite de commandes quelles que soient les différences entre une marque et un modèle de carte graphique et une autre, et il y a le système d'exploitation qui arbitre l'accès à tout le matériel, afin que vous puissiez exécuter plusieurs applications sur le même matériel et qu'elles s'entendent toutes, en partageant ces ressources limitées.

Couches. Couche d'abstraction.