De l'informatique à l'électronique

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je me demandais comment s'opérait l'interface entre informatique et électronique.

Pour illustrer mon propos, je faire prendre l'exemple d'un CD. Pour stocker des données dessus, une tête va graver la matière : si je me souviens bien, c'est un creux pour 0 et rien pour 1 - ou l'inverse. Mais comment est commandée cette tête ?

Quand j'utilise ma machine, l'OS envoie une instruction en Assembleur - par exemple, stocker 0011 sur le CD - à quelqu'un, qui la traduit et fait effectuer les mouvements adéquates à la tête chargée de graver le CD. Mais comment cette traduction s'opère-t-elle ? Comment un composant électronique peut-il comprendre l'Assembleur ?

Merci !

+0 -0

C'est le contrôleur de disque dur / lecteur CD qui reçoit des instructions (des commandes comme stocker une donnée à un endroit précis) et les données à sauvegarder. Ces instructions proviennent du processeur qui communique avec le composant via la carte mère. Mais celui qui pilote le processeur pour donner ces instructions c'est le système d'exploitation qui par le pilote de périphérique à une correspondance entre les instructions matérielles du lecteur disponibles et les actions logicielles.

Par exemple, quand tu fais write() sur un fichier dans ton programme, l'OS va regarder dans le pilote les instructions machines comment transmettre un write() au lecteur et va transmettre ça au processeur qui transmet ça au lecteur.

Chaque périphérique a son propre langage pour traiter ces actions, bien qu'une partie soit éventuellement standardisée.

+0 -0

Ce sont donc ces fameux drivers.

Mais comment un pilote peut-il transformer les actions logicielles - transformées en Assembleur, non ? - en signal électrique - donc comprendre l'Assembleur - ? C'est intelligent ces machins-là ? oO

Merci. ^^

+0 -0

Tout logiciel fini par être de l'assembleur, pilote inclus. Après c'est le processeur qui va interpréter ça, voir qu'il y a correspondance dans le code du pilote avec une instruction matérielle à envoyer à un périphérique et voilà.

Le pilote n'est pas intelligent, enfin un peu, ça dépend du périphérique à piloter. Un pilote qui gère un disque dur sera plus sophistiqué qu'un pilote pour un lanceur missile USB de manière évidente. Les pilotes de cartes graphiques ne sont pas simples non plus. Mais ce sont eux qui permettent au système d'exploitation de faire le lien entre les appels systèmes qu'utilisent les programmes et des actions physiques sur le périphérique.

Au milieu du pilote et du matériel tu as aussi le firmware, sorte de logiciel embarqué au périphérique. Un disque dur ou une carte graphique sont assez complexes pour en avoir, et eux vont analyser les signaux électriques reçus (qui correspondent à des instructions matérielles, souvent génériques) pour correspondre en ordre réels au disque dur. Comme ceci l'OS n'a pas toujours pleinement conscience du travail du périphérique (car le firmware s'occupe de l'optimisation ou de certains détails mineurs).

+0 -0

Après c'est le processeur qui va interpréter ça, voir qu'il y a correspondance dans le code du pilote avec une instruction matérielle à envoyer à un périphérique et voilà.

Concrètement, comment ça fonctionne ? Parce qu'en fin de compte, un processeur c'est "simplement" un assemblage de matériaux, non ? Comment fait-il pour savoir que si il reçoit telle instruction ASM alors il doit effectuer telle opération électronique ?

Quand on fait de l'électronique, c'est souvent un déclenchement matériel qui fait fonctionner les composants - appui sur un bouton, connexion de deux fils, champ magnétique rotatif… Mais pour un processeur, rien de tel.

+0 -0

Une donnée binaire est un courant, allumé pour 1 et éteins pour 0. À partir de là, quand l'OS demande de graver un 1, un courant est envoyé et ça actionne la tête (très simplifié). À l'aide de transistors, qui sert à faire toute sorte de porte logique, et à partir de là tout est possible. En fait, tout ce que fait un ordinateur passe par le CPU, qui n'est ni plus ni moins un assemblage de milliers de transistors microscopiques gravés sur cette petite plaque, donc au final, toutes les opérations d'un ordinateur sont des courants. Et il suffit d'amplifier (ou diminuer peut-être) ce courant, et par le biais de moteurs ou d'électroaimants ou autre, de retranscrire ce courant en mouvement mécanique, comme abaisser la tête par exemple.

Quant au mouvement mécanique, c'est la tête de lecture qui l'effectue, ou le clavier. Chaque partie de disque gravée viens d'un clavier mécanique à son origine.

+0 -0

Oui, mais comment l'instruction logicielle est-elle transformée en courant ?

Quand je presse mon clavier, c'est simple, c'est grosso modo comme si j'appuyais sur un bouton poussoir, permettant au courant de passer. Mais quand je clique sur "Zeste de Savoir", le navigateur le dit au serveur, qui le dit à l'OS, qui transforme ça en commande Assembleur, qui, j'ai cru comprendre, est envoyée au CPU, qui fait un truc pour l'analyser, et envoie ou pas - ou demander d'envoyer, peu importe les détails électriques - le courant puis… [poursuivre avec le message de Breizh ci-dessus]. Mais c'est quoi ce truc ?

Merci. ^^

+0 -0

Un CPU c'est quelques milliers/millions/milliards de transistors. Un transistor transmet un courant dans certaines conditions, c'est pourquoi on s'en sert pour créer des portes logiques, des unités de calcul (comme un additionneur) et d'autres trucs.

Donc, le processeur gère les instructions qu'il reçoit, qui sont des ordres électriques, à partir des données et des commandes (qui sont exprimés sous forme de tension électrique à un instant t), il va générer une sortie (de la même manière que pour les entrées). Les combinaison des sorties des processeur va être l'entrée pour d'autres sections du processeur et ainsi de suite. Et quand une certaine configuration électrique sera présente, il va générer une tension électrique à destination d'autres périphériques comme ton disque dur.

Chaque instruction assembleur a une correspondance en tension électrique (tels et tels fils à 0 logique, les autres à 1) et les données sont représentées de la même façon. Du coup il effectue les opérations souhaitées de manière totalement électronique. Un processeur est donc totalement stupide, il n'effectue que ce qu'il reçoit bêtement, c'est l'assemblage des transistors qui est fait de sorte que ça fonctionne ainsi.

Est-ce plus clair ?

+0 -0

Chaque instruction assembleur a une correspondance en tension électrique (tels et tels fils à 0 logique, les autres à 1) et les données sont représentées de la même façon. Du coup il effectue les opérations souhaitées de manière totalement électronique.

La question c'est : comment cette correspondance se fait-elle ?

Pour illustrer, mettons que je parte en Angleterre, avec une amie billingue. Il fait presque nuit, nous entrons dans un pub. Le barman me demande : "Could you turn the light on, please?".

Hein ?! Koulde you teurne ze laïte quoi ?

Là, mon amie me traduit pour que j'aille allumer la lumière - elle, n'étant pas une allumeuse. J'appuie sur l'interrupteur et tout s'éclaire.

Bref. Dans ce petit récit, le barman est un programme Python, mon amie l'OS et moi le CPU. Même si c'est plus complexe que ça, le programme a parlé à mon amie, qui m'a traduit ses propos - Python vers Assembleur donc - et, comprenant la phrase grâce à mon cerveau, j'ai pressé l'interrupteur.

Mais le CPU, lui, il n'a pas de cerveau, donc il fait comment pour savoir que telle commande ASM signifie "du courant sur cette sortie et aucun sur celle-là" ?

Merci pour votre patience !

+0 -0

C'est comme je le disais l'organisation des transistors qui l'impose.

Les transistors voient des entrées de courant, et cela va permettre de générer des sorties. La combinaison de ces transistors permet la création de fonctions que l'on nomme instructions assembleurs. Le processeur en lisant les instructions (et l'action de lire les instructions se fait par des transistors) permet de savoir quoi faire des données en générant la sortie adéquat.

Après si tu veux savoir comment fonctionne un transistor, va voir sur Wikipédia. :p

+0 -0

Donc l'instruction lui est envoyée via des transistors ?

Le cas échéant, qui sait par quels transistors passer quand il reçoit telle commande ASM et comment le sait-il ? Il y a bien un moment où la commande ASM devient ordre électrique puisque, en ce qui me concerne, je n'envoie pas manuellement du jus aux transistors ! ^^

+0 -0

L'instruction logicielle (ASM) est un courant électrique en fait, qui passe dans les transistors.

Ton programme en C (plus simple pour moi, je ne sais pas si le python a besoin d'un interpréteur comme le Java qui nécessite la VM) est un fichier dont le contenu a été crée par toi avec un clavier mécanique, puis c'est passé par un système complexe pour devenir une suite de 0 et 1 sur un disque. Si tu le compile, il est encore différent, il a une suite de 0 et de 1 que l'OS arrive à lire (un exécutable).

L'OS lis donc cet exécutable, qui est un automatisme (tel que "lever la main droite"), l'OS comprends donc l'exécutable, qui est dans son langage (qui varie selon les OS, un prog en C est compilé différemment sous Linux et WS), puis par le biais des pilotes (qui son des langages supplémentaire comme si tu apprenais l'anglais) traduis cela en un langage compatible avec le matériel. Le cerveau est le CPU, qui travail déjà, il a puisé dans le DD, l'a envoyé à l'OS, l'OS a donc demandé à ce que ce soit traduit, le CPU puise cherche le moyen de traduire dans la mémoire, le trouve et l'OS demande à ce que ce soit envoyé au matériel une fois traduis, le CPU s'exécute par le biais de la carte mère, des câbles et autres au matériel, qui fait ce qu'on lui a demandé. La commande ASM est un courant. Ici, le CPU est le cerveau (il travaille en permanence comme le notre), la carte mère est le réseau nerveux (connecte tout au cerveau), le DD est la mémoire (retiens les données nécessaires au fonctionnement), le matériel est les muscles (quand tu dis "lever la main droite", tu dis actionner tel ou tel muscle), le nom de l'exécutable est le nom de l'action ("lever la main"), et l'OS c'est ta conscience, ce qu'on voit en façade mais en réalité, à l'arrière-plan, le cerveau et les différents composants de ton corps (de l'ordi donc) tournent à plein régime.

Et pour la question "commande logicielle –> commande électrique" la commande logicielle est électrique, ce n'est que des courants, tout ce qui se passe dans l'ordi est du courant. Le CPU est traversé par des milliers de courants, la carte mère aussi, comme ton cerveau et tes nerfs. La seule différence, c'est que quand l'ordi s'éteint, les données sont gardées physiquement, comme écrite sur un papier, alors que nous, tout fonctionne sur la RAM, puisque ne nous éteignons jamais, ou définitivement.

Quant à passer par quels transistors, eh bien ce sont d'autres transistors qui décident selon s'ils ont reçu un 0 ou un 1, imagine que c'est tout un tas de portes logiques (des NON-OU ou NON-ET je pense, pour simplifier la gravure puisqu'elles permettent de reproduire toutes les autres portes logiques), et les portes logiques sont constituées de… transistors.

+0 -0

Qu'entends-tu par "langage compatible avec le matériel" ? Serait-il possible que tu me décrives précisément - sans rentrer dans les détails techniques - ce qui se passe quand on lance un programme, par exemple ?

Merci. =)

+0 -0

Bah tu cherche compliqué là… chaque constructeur interprète la suite de 0 et de 1 différemment donc en passant par le pilote, ça modifie cette suite pour que le matériel comprenne, demande à un constructeur de t'expliquer :p (enfin si il a le droit).

+0 -0

Je pense que ce tuto en beta pourra t'aider a comprendre le lien electronique/informatique.

Pour le reste, ce qu'il faut comprendre c'est qu'il n'y a pas vraiment de passage "monde informatique" -> "monde electronique". Tout ce que tu considère être des instructions "logicielles" sont déjà des impulsions électrique. Ton ordi ne fait que te les présenter de manière plus simple sur un écran.

Les instructions que peut comprendre ton processeur pour faire des calculs ne sont qu'une suite de 1 et de 0, des impulsions électriques et celles-ci sont stockés sous forme de charge électrique dans ta RAM ou ton SSD ou magnétique sur ton disque dur. Bref tout reste toujours sous forme électrique. Simplement tout t'est présenté de manière plus simple.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte