Merci au spécialistes de me corriger si je fais erreur:
Pilotes:
A quoi sert un pilote?
La question à se poser, c'est pourquoi un pilote de périphérique est implémenté du coté de l'OS et pas dans le matériel lui-même.
En y réfléchissant un peu, on peut trouver soi-même la réponse.
Dans le cas ou le pilote serait implémenté directement dans l'OS, cela signifirait que l'OS doive connaitre tous les types de matériel qui existent, car
comment savoir les données (commandes et données) qu'il faut envoyer via un port, sans savoir à qui on les envoie? Si c'était le cas, l'OS serait responsable
de la programmation de centaines de milliers de pilotes, ce qui n'est pas envisageable.
Si à la place d'un pilote, on décideait d'implémenter la couche de "traduction" des ordres dans le matériel, cela signifierait que les ordres doivent
toujours être passés de la même façon par l'OS vers le périphérique. Au moindre changement, il faudrait changer le matériel. Il est plus simple de modifier
quelques lignes de code dans le pilote...
De plus, le fait que les pilotes soient logiciels permet de les "imbriquer" (pilotes de filtres) afin de modifier, corriger leur comportement.
Un exemple:
Exemple
Mais alors pourquoi on utilise pas un langage "générique" pour dialoguer avec le matériel, ce qui éviterait de devoir à chaque fois écrire un pilote?
C'est pour des raisons d'optimisation. En effet, il existe pour certains types de matériel, ce langage "générique" qui sont en fait les commandes de base
qu'implémente le matériel. Il sait donc les comprendre et les exécute de la même façon peu importe le matériel.
Si on demande à un disque dur d'écrire ou de lire une série d'octets, basiquement, il va savoir le faire, peu importe le disque, car c'est sa raison d'être.
Mais il y a une grande différence entre les disques, au niveau de leur architecture interne. De façon logicielle, on peu demander au disque dur d'écrire ou
de lire une série d'octets, mais plus de façon basique, mais d'une façon qui lui est propre, et qui est soit optimisée, soit sécurisée, soit autre chose.
POur cela, c'est le pilote qui va lui passer cet ordre. Le système d'exploitation va demander au pilote d'écrire ou de lire une série d'octets de façon
basique, mais derrière, le pilote, suivant comme il est configuré parfois par l'utilisateur, va demander au disque de faire cette action, mais de telle ou
telle façon, qui est différente de la façon standard, soit plus rapide, soit plus sécurisée.
A présent on se rend compte qu'il est très important d'installer les bons drivers pour le matériel, afin de gagner considérablement en performances, plutôt
que de se contenter des fonctions génériques (qui sont en fait appelées depuis des drivers génériques, souvent écrits par l'éditeur de l'OS).
Cette philosophie est valable pour tous les types de matériel, y comprise les circuits intégrés tels que les Chipsets, qui peuvent utiliser des mécanismes de
mise en cache ou autres afin d'aller plus vite.