Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 2767

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Deuxième introduction au Plug-and-Play (PnP)</title><link href="style.css" rel="stylesheet" type="text/css" /><meta content="DocBook XSL Stylesheets V1.73.2" name="generator" /><link rel="start" href="index.html" title="Guide pratique du Plug-and-Play" /><link rel="up" href="index.html" title="Guide pratique du Plug-and-Play" /><link rel="prev" href="ar01s02.html" title="Ce que PnP doit faire : allouer des « ressources bus »" /><link rel="next" href="ar01s04.html" title="Configurer un BIOS PnP" /></head><body><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Deuxième introduction au Plug-and-Play (<acronym class="acronym">PnP</acronym>)</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s02.html">Précédent</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ar01s04.html">Suivant</a></td></tr></table><hr /></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title"><a id="N104E1" />Deuxième introduction au Plug-and-Play (<acronym class="acronym">PnP</acronym>)</h2></div></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N104E7" />Introduction à <acronym class="acronym">PnP</acronym></h3></div></div></div><p>Le terme Plug-and-Play (<acronym class="acronym">PnP</acronym>) a différentes
significations. Au sens général, il s'agit de la configuration automatique
lorsqu'une personne connecte un périphérique et que celui-ci se configure
lui-même. Le sens utilisé dans ce livre est tout autre :
<acronym class="acronym">PnP</acronym> signifie la
configuration des ressources bus pour <acronym class="acronym">PnP</acronym> (les configurer au
niveau des périphériques physiques) et la communication de cette information aux pilotes
de périphériques. Dans le cas de Linux, il s'agit souvent d'un pilote
déterminant la façon dont le bus a initialisé les ressources bus et, si
nécessaire, le pilote donnant une commande pour changer (réinitialiser) les
ressources bus. Souvent, « <span class="quote">PnP</span> » ne signifie que <acronym class="acronym">PnP</acronym>
sur le bus <acronym class="acronym">ISA</acronym>  donc le message
d'isapnp, « <span class="quote">No Plug and Play device found</span> », signifie simplement qu'aucun
périphérique <acronym class="acronym">ISA</acronym> <acronym class="acronym">PnP</acronym> n'a été trouvé. Les
spécifications du <acronym class="acronym">PCI</acronym> standard (inventé
avant l'utilisation du terme « <span class="quote">PnP</span> ») apportent l'équivalent de
<acronym class="acronym">PnP</acronym> au
bus <acronym class="acronym">PCI</acronym>.</p><p><acronym class="acronym">PnP</acronym> fait correspondre les périphériques avec leur
pilote et spécifie leurs canaux de communication (en allouant des ressources
bus). Il communique électroniquement avec les registres de configuration situés
à l'intérieur des périphériques physiques en utilisant un protocole standardisé.
Sur le bus <acronym class="acronym">ISA</acronym> et avant le Plug-and-Play, les ressources bus
étaient simplement initialisées au niveau matériel avec des interrupteurs de
différentes sortes. Quelquefois, les ressources bus pouvaient être configurées
sur le matériel par un pilote (généralement écrit seulement pour un système MS
mais dans de rares cas supporté aussi par un pilote Linux). Cela ressemblait à du
<acronym class="acronym">PnP</acronym> mais aucun protocole standardisé n'était utilisé donc il
ne s'agissait pas vraiment de <acronym class="acronym">PnP</acronym>. Certaines cartes contiennent
un paramètrage par cavaliers qui peut être surchargé par un tel pilote. Pour Linux
avant le <acronym class="acronym">PnP</acronym>, les ressources bus étaient affectées aux pilotes
logiciels par des fichiers de
configuration (ou autre chose de ce genre) ou en parcourant le bus aux adresses
où il s'attendait à trouver le périphérique. Mais ces méthodes sont toujours
utilisées de nos jours pour permettre à Linux d'utiliser du matériel non
<acronym class="acronym">PnP</acronym>. Et, quelque fois, ces vieilles méthodes sont toujours
utilisées de nos jours sur du matériel <acronym class="acronym">PnP</acronym> (après que le
<acronym class="acronym">BIOS</acronym> ait affecté des ressources aux matériels par
les méthodes <acronym class="acronym">PnP</acronym>).</p><p>Le bus PCI ressemblait au <acronym class="acronym">PnP</acronym> dès le début mais il n'a
pas été appelé <acronym class="acronym">PnP</acronym> ou « plug and play », ce qui a eu comme
résultat que <acronym class="acronym">PnP</acronym> signifie souvent <acronym class="acronym">PnP</acronym> sur
le bus <acronym class="acronym">ISA</acronym>. Dans la documentation, <acronym class="acronym">PnP</acronym>
signifie habituellement <acronym class="acronym">PnP</acronym> sur le bus <acronym class="acronym">ISA</acronym>
comme sur le bus <acronym class="acronym">PCI</acronym>.</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N1054E" />Comment fonctionne le <acronym class="acronym">PnP</acronym> (explication simplifiée)</h3></div></div></div><p>

Voici comment <acronym class="acronym">PnP</acronym> devrait fonctionner. L'hypothétique 
programme de configuration <acronym class="acronym">PnP</acronym> trouve tous les 
périphériques <acronym class="acronym">PnP</acronym> et demande à chacun les ressources 
bus dont il a besoin. Ensuite, il vérifie quelles sont les ressources 
bus qu'il peut affecter (<acronym class="acronym">IRQ</acronym>, et cætera). Bien sûr, 
s'il a réservé des ressources bus utilisées pour des périphériques non 
<acronym class="acronym">PnP</acronym> (s'il les connaît), il ne les donne pas. Il 
utilise certains critères (ne faisant pas partie des spécifications 
<acronym class="acronym">PnP</acronym>) pour donner les ressources bus de façon à ce 
qu'il n'y ait pas de conflit et de façon à ce que tous les périphériques 
disposent de ce qu'ils ont demandé (si possible). Il indique ensuite 
indirectement à chaque périphérique physique les ressources bus qui lui 
ont été assignées et les périphériques se configurent eux-mêmes pour 
n'utiliser que ces ressources-là. Enfin, les pilotes de périphériques 
trouvent d'une manière ou d'une autre quelles ressources sont utilisées 
par leur périphérique et sont donc capables de communiquer avec les 
périphériques qu'ils contrôlent.

</p><p>Par exemple, prenons une carte ayant besoin d'une <acronym class="acronym">IRQ</acronym>
(d'un numéro d'<acronym class="acronym">IRQ</acronym>) et de 1 Mo de mémoire partagée. Le
programme <acronym class="acronym">PnP</acronym> lit cette requête des registres de
configuration de la carte. Il lui affecte l'<acronym class="acronym">IRQ</acronym> 5 et
1 Mo d'espace mémoire, commençant à partir de l'adresse 0xe9000000. Le
programme <acronym class="acronym">PnP</acronym> lit aussi les informations d'identification de
la carte, indiquant ainsi le type de périphérique, son numéro 
d'identifiant, et cætera. Ensuite,
il informe, directement ou indirectement, le pilote de périphérique convenable
pour ce matériel, de ce qu'il a fait. Si le pilote lui-même gère le
<acronym class="acronym">PnP</acronym>, alors
il n'est pas nécessaire de trouver un pilote pour le périphérique (car le
pilote est déjà en cours d'exécution). Sinon, le bon pilote de périphérique doit
être trouvé et la configuration du périphérique doit lui être
communiquée.</p><p>Ce n'est pas toujours aussi simple car la carte (ou la table de routage
pour le PCI) pourrait indiquer qu'elle ne peut utiliser que certains numéros
d'<acronym class="acronym">IRQ</acronym> ou que les 1 Mo de mémoire doivent résider dans
un certain espace d'adresses. Les détails sont différents pour les bus
<acronym class="acronym">PCI</acronym> et <acronym class="acronym">ISA</acronym>, cette dernière étant la plus
complexe.</p><p>Une façon habituellement utilisée pour allouer des ressources est 
de commencer avec un périphérique et de lui allouer des ressources bus. 
Puis de faire la même chose avec le périphérique suivant, et cætera. Ensuite, 
si finalement tous les périphériques obtiennent les ressources allouées 
sans conflit, alors tout va bien. Mais si allouer une ressource requise 
créait un conflit, alors il serait nécessaire de revenir en arrière et 
d'essayer de faire quelques changements dans les allocations précédentes 
de façon à conserver la ressource bus nécessaire. Ceci s'appelle le 
balancement. Linux ne le fait pas mais MS Windows en est capable dans 
certains cas. Pour Linux, tout ceci est fait par le 
<acronym class="acronym">BIOS</acronym>, le noyau ou les pilotes de périphériques. Avec 
Linux, le pilote du périphérique n'obtient pas son allocation finale de 
ressources tant que le pilote n'est pas lancé, donc une façon d'éviter 
les conflits est de ne pas lancer un périphérique qui pourrait causer un 
conflit. Néanmoins, le <acronym class="acronym">BIOS</acronym> alloue fréquemment des 
ressources au périphérique physique avant que Linux ne soit complètement 
démarré et le noyau vérifie les périphériques <acronym class="acronym">PCI</acronym> 
pour les conflits d'adresse au démarrage.</p><p>Des raccourcis existent et le logiciel <acronym class="acronym">PnP</acronym> peut les
utiliser. Un d'eux est de garder la trace de la façon dont sont assignées les
ressources bus lors de la dernière configuration (lorsque l'ordinateur a été
utilisé pour la dernière fois) et de réutiliser cette information. Les
<acronym class="acronym">BIOS</acronym> le font ainsi que MS Windows mais le Linux standard
ne le fait pas. Mais, d'une certaine façon, il le fait car il utilise souvent
ce que le <acronym class="acronym">BIOS</acronym> a fait. Windows stocke cette information
dans sa base de registres sur le disque dur et un <acronym class="acronym">BIOS</acronym>
PnP/<acronym class="acronym">PCI</acronym> le stocke dans une mémoire non volatile de votre PC
(mémoire appelée
<acronym class="acronym">ESCD</acronym> ; voir <a class="xref" href="ar01s05.html#escd_" title="La base de données ESCD du BIOS">la section intitulée « La base de données <acronym class="acronym">ESCD</acronym> du
<acronym class="acronym">BIOS</acronym> »</a>). Certains disent
que ne pas avoir de registres (ce qui est le cas de Linux) est mieux car,
avec Windows, la base de registres peut être corrompue et elle est de toute
façon difficile à éditer. Mais <acronym class="acronym">PnP</acronym> sur Linux a aussi des
problèmes.</p><p>Alors que MS Windows (sauf en ce qui concerne Windows 3.x et NT4) est un
système	d'exploitation <acronym class="acronym">PnP</acronym>, Linux n'était pas originellement
un système d'exploitation <acronym class="acronym">PnP</acronym> mais l'est devenu
graduellement. Au début, <acronym class="acronym">PnP</acronym> a fonctionné avec Linux parce
qu'un <acronym class="acronym">BIOS</acronym> <acronym class="acronym">PnP</acronym> configurait les ressources
bus et que les pilotes de périphériques récupéraient cette information en
utilisant des programmes apportés par le noyau Linux. Aujourd'hui, la plupart
des pilotes peuvent envoyer des commandes pour réaliser leur propre
configuration et n'ont pas besoin de se reposer toujours sur le
<acronym class="acronym">BIOS</acronym>. Malheureusement, un pilote pourrait utiliser une
ressource bus dont un autre périphérique aurait besoin plus tard. D'autres pilotes
de périphériques enregistrent la dernière configuration dans un fichier de
configuration et l'utilisent la prochaine fois que l'ordinateur est
allumé.</p><p>Si le périphérique physique se rappelle de son ancienne configuration, alors
il n'y aura pas de matériel à configurer au prochain démarrage, mais il
semble oublier sa configuration lors de l'arrêt. Certains périphériques
disposent d'une configuration par défaut (mais pas nécessairement la dernière
utilisée). Donc, un périphérique <acronym class="acronym">PnP</acronym> a besoin d'être
reconfiguré à chaque fois que le PC est allumé. De la même manière, si un
nouveau périphérique est ajouté, alors il a besoin d'être configuré. Allouer
des ressources bus pour ce nouveau périphérique peut nécessiter de récupérer
des ressources données auparavant à un autre et d'affecter à ce dernier de
nouvelles ressources. Actuellement, Linux ne peut pas gérer ce niveau de
sophistication (et MS Windows XP pourrait aussi ne pas en être capable).</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N105C5" />Démarrer le PC</h3></div></div></div><p>Quand le PC est lancé la première fois, le <acronym class="acronym">BIOS</acronym> lance
son programme pour démarrer le PC (la première étape étant de vérifier le
matériel de la carte mère). Si le système d'exploitation est stocké sur disque
dur (ce qui est habituellement le cas), alors le <acronym class="acronym">BIOS</acronym> doit
disposer de certaines informations sur le disque dur. Si ce disque est
<acronym class="acronym">PnP</acronym>, le <acronym class="acronym">BIOS</acronym> peut utiliser des méthodes
<acronym class="acronym">PnP</acronym> pour le trouver.  De même, pour permettre à l'utilisateur
de configurer manuellement le <acronym class="acronym">CMOS</acronym> du <acronym class="acronym">BIOS</acronym>
et de répondre
aux messages d'erreur lors du démarrage, un écran (et donc une carte vidéo) et
un clavier sont aussi requis. Donc, le <acronym class="acronym">BIOS</acronym> doit toujours
configurer via <acronym class="acronym">PnP</acronym> les périphériques nécessaires au
chargement du système d'exploitation à partir du disque dur.</p><p>Une fois que le <acronym class="acronym">BIOS</acronym> a identifié le disque dur, la
carte vidéo et le clavier, il est prêt à commencer le démarrage (charger le
système d'exploitation en mémoire). Si vous avez indiqué au
<acronym class="acronym">BIOS</acronym> que vous disposez d'un système d'exploitation
<acronym class="acronym">PnP</acronym>, il devrait commencer le chargement comme indiqué
ci-dessus et laisser le système d'exploitation finir la configuration
<acronym class="acronym">PnP</acronym>. Autrement, un
<acronym class="acronym">BIOS</acronym>-<acronym class="acronym">PnP</acronym> essaiera de configurer le reste
des périphériques (mais sans en informer leur pilote). peuvent toujours
trouver les informations nécessaires en utilisant les fonctions disponibles
dans le noyau Linux.</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N105F9" />Les bus</h3></div></div></div><p>Pour voir ce qui se trouve sur le bus <acronym class="acronym">PCI</acronym>, exécutez
<span class="command"><strong>lspci</strong></span> ou <span class="command"><strong>lspci -vv</strong></span>. Ou vous pouvez aussi
saisir <span class="command"><strong>scanpci -v</strong></span> pour la même information dans le format
de code numérique où le périphérique est indiqué par numéro (par exemple :
« <span class="quote">device 0x122d</span> ») au lieu du nom, et cætera. Dans de rares cas,
<span class="command"><strong>scanpci</strong></span> trouvera un périphérique que <span class="command"><strong>lspci</strong></span>
n'arrive pas à trouver.</p><p>Les messages au démarrage sur votre écran affichent les périphériques
qui ont été trouvés sur les différents bus (utilisez shift-PageUp pour les voir).
Voir <a class="link" href="ar01s07.html#boot_time_msgs" title="Messages de démarrage">Messages au démarrage</a>.</p><p><acronym class="acronym">ISA</acronym> est l'ancien bus des PC compatibles IBM alors
que <acronym class="acronym">PCI</acronym> est le nouveau bus, plus rapide, d'Intel. Le bus
<acronym class="acronym">PCI</acronym> a été conçu pour ce qui est appelé de nos jours
<acronym class="acronym">PnP</acronym>. Ceci rend facile (comparé à ce qu'il faut faire pour le
bus <acronym class="acronym">ISA</acronym>) la découverte de l'affectation des ressources bus
<acronym class="acronym">PnP</acronym> aux périphériques matériels.</p><p>Pour le bus <acronym class="acronym">ISA</acronym>, il existait un problème réel
avec l'implémentation de <acronym class="acronym">PnP</acronym> car personne n'avait en
tête <acronym class="acronym">PnP</acronym> lorsque ce bus a été conçu et il existe
encore moins d'adresses d'entrées/sorties disponibles pour
<acronym class="acronym">PnP</acronym> pour envoyer des informations de configuration à
un périphérique physique. Du coup, la façon dont <acronym class="acronym">PnP</acronym>
a été réalisé pour le bus <acronym class="acronym">ISA</acronym> est très complexe. Des
livres entiers ont été écrits à ce sujet. Voir notamment <a class="link" href="ar01s05.html#pnp_book">ce livre</a>. Entre autres choses, il requiert
que soit assigné par le programme <acronym class="acronym">PnP</acronym> à chaque
périphérique <acronym class="acronym">PnP</acronym> un point d'ancrage temporaire pour
que tout le monde puisse faire la configuration <acronym class="acronym">PnP</acronym>.
Assigner ces « <span class="quote">points d'ancrage</span> » est appelé
« <span class="quote">isolation</span> ». Voir <a class="xref" href="ar01s13.html#isolation_" title="Isolation ISA">la section intitulée « Isolation <acronym class="acronym">ISA</acronym> »</a> pour des
détails complexes.</p><p>Au fur et à mesure de la disparition du bus <acronym class="acronym">ISA</acronym>,
<acronym class="acronym">PnP</acronym> sera un peu plus facile. Il ne sera pas seulement plus
simple de savoir comment le <acronym class="acronym">BIOS</acronym> a configuré le matériel mais
il y aura aussi
moins de conflits, le <acronym class="acronym">PCI</acronym> pouvant partager des interruptions.
Il y aura toujours besoin de faire correspondre un pilote de périphérique à un
matériel et il y aura toujours besoin de configurer les périphériques ajoutés
lors du lancement du PC. Le sérieux problème des quelques périphériques non
supportés par Linux restera présent.</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="how_linux_pnps" />Comment Linux gère-t-il le
<acronym class="acronym">PnP</acronym></h3></div></div></div><p>Linux a eu de sérieux problèmes dans le passé pour la gestion de
<acronym class="acronym">PnP</acronym> mais la plupart de ces problèmes sont maintenant résolus
(vers mi-2004). Linux est parvenu d'un système non <acronym class="acronym">PnP</acronym> à un
système qui peut être <acronym class="acronym">PnP</acronym> si le noyau est compilé avec
certaines options. Le BIOS peut affecter des IRQ mais Linux peut aussi
affecter certains d'entre eux ou même les refaire ce que le BIOS a déjà
fait. La partie de configuration de <acronym class="acronym">ACPI</acronym> (<span class="foreignphrase"><em class="foreignphrase">Advance
Configuration and Power Interface</em></span>) est conçu pour faciliter
la propre configuration des systèmes d'exploitation. Linux peut utiliser
l'ACPI si le noyau a été compilé avec son support.</p><p>Dans Linux, il est traditionnel qu'un pilote de périphérique fasse
sa propre configuration de bas niveau. C'était difficile jusqu'au moment
où le noyau Linux a fourni le logiciel que les pilotes peuvent utiliser
pour se faciliter le travail. Aujourd'hui (2005), c'est arrivé à un point où
le pilote peut simplement appelé la fonction pci_enable_device() du noyau
et où le périphérique se voit configuré en étant activé et en récupérant
une <acronym class="acronym">IRQ</acronym> (si nécessaire) et les adresses affectées au
périphérique. Cette affectation pourrait être ce qui avait été affecté
auparavant par le <acronym class="acronym">BIOS</acronym> ou ce que le noyau avait
réservé quand le périphérique PCI ou ISAPNP a été détecté par le noyau.
Il existe même une option ACPI pour que le noyau affecte toutes les IRQ
des périphériques lors du démarrage.</p><p>Donc aujourd'hui, d'une certaine façon, les pilotes font toujours la
configuration mais ils peuvent la faire en demandant simplement au noyau de
s'en charger (et Linux pourrait ne pas avoir besoin de faire grand chose
car il est quelque fois capable d'utiliser ce qui a déjà été configuré par
le BIOS ou par lui-même). Donc, c'est vraiment la partie du noyau, hors du
pilote, qui fait la grande partie de configuration. Du coup, il pourrait
être correct d'appeler Linux un système d'exploitation PnP, au moins pour
les architectures communes.</p><p>Ensuite, lorsqu'un pilote découvre son périphérique, il demande à
connaître les adresses et IRQ affectés (par le <acronym class="acronym">BIOS</acronym> ou
par Linux) et, habituellement, les accepte simplement. Mais, si le pilote le
souhaite, il peut essayer de modifier les adresses en utilisant les fonctions
fournies par le noyau. Cependant, le noyau n'acceptera pas d'adresses entrant
en conflit avec d'autres périphériques ou des adresses que le matériel ne peut
pas supporter. Quand le PC démarre, vous pouvez noter les messages à l'écran
montrant que certains pilotes de périphériques Linux ont trouvé leurs
périphériques matériels et quels sont leurs IRQ et adresses.</p><p>Donc, le noyau fournit des fonctions (programmes) que les pilotes
peuvent utiliser pour trouver si leur périphérique est présent, la façon
dont il est configuré et les fonctions qui permettent de modifier la
configuration si nécessaire. Le noyau 2.2 pouvait faire ceci pour
le bus <acronym class="acronym">PCI</acronym> seulement mais le noyau 2.4 contient cette
fonctionnalité pour les bus ISA et PCI (à condition que les options PnP et
PCI appropriés ont été sélectionnées avant la compilation du noyau). Le
noyau 2.6 est arrivé avec une meilleure utilisation de l'ACPI. Ceci ne
garantie en rien que tous les pilotes utilisent complètement et correctement
ces fonctionnalités. Les périphériques propriétaires que le BIOS ne connait
pas pourraient ne pas être configurés tant qu'une configuration manuelle ne
soit effectuée.</p><p>De plus, le noyau tente d'éviter les conflits d'adresses en ne
permettant pas à deux périphériques d'utiliser les même ressources bus
en même temps. Au début, ce n'était valable que pour les IRQ et les DMA
mais, maintenant, cela s'adresse aussi aux adresses.</p><p>Si vous avez un ancien bus ISA, le programme isapnp doit être exécuté au
démarrage pour trouver et configurer les périphériques PnP sur le bus ISA.
Regardez les messages avec « dmesg ».</p><p>Pour voir quelle aide le noyau peut apporter aux pilotes de
périphériques, consultez le répertoire <code class="filename">/usr/…/…/Documentation</code> où un des
« <span class="quote">…</span> » contient le mot « <span class="quote">kernel-doc</span> » ou quelque
chose
d'approchant. Attention : cette documentation a tendance à ne plus être à
jour pour avoir les dernières informations donc vous aurez besoin de lire les
messages des listes de diffusion des développeurs du noyau et peut-être aussi
de lire le code source et les commentaires qu'ils ont écrits. Dans le répertoire
de la documentation du noyau, voir pci.txt (« <span class="quote">How to Write Linux
<acronym class="acronym">PCI</acronym>
Drivers</span> », c'est-à-dire « <span class="quote">Comment écrire des pilotes
<acronym class="acronym">PCI</acronym> pour
Linux</span> ») ainsi que le fichier
<code class="filename">/usr/include/linux/pci.h</code>. Si vous êtes un gourou des
pilotes et si vous connaissez la programmation en C, ces fichiers sont écrits
d'une telle façon qu'il ne vont pas vous permettre d'écrire un pilote. Mais cela
vous donnera une idée des fonctions type <acronym class="acronym">PnP</acronym> disponibles pour
les pilotes.</p><p>Pour le noyau 2.4, voir <code class="filename">isapnp.txt</code>. Pour le noyau
2.6, <code class="filename">isapnp.txt</code> est remplacé par
<code class="filename">pnp.txt</code> qui est totalement différent et gère en plus le bus
PCI. Voir aussi le livre d'O'Reilly : Linux Device Drivers, 3è
édition, 2005. Le texte complet est disponible sur Internet.</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N106C6" />Problèmes avec Linux <acronym class="acronym">PnP</acronym></h3></div></div></div><p>Il existe un certain nombre d'autres points qu'un
système d'exploitation <acronym class="acronym">PnP</acronym> devrait mieux gérer :
<div class="itemizedlist"><ul><li><p>Allouer des ressources bus quand il en existe peu par
    une réallocation des ressources si nécessaire ;</p></li><li><p>Gérer le choix d'un pilote lorsqu'il en existe plus d'un
    par périphérique ;</p></li></ul></div>
</p><p>Comme chaque pilote s'occupe de lui mais pas des autres, un pilote
pourrait récupérer les ressources bus nécessaires à d'autres périphériques (et
non encore alloués à ceux-ci par le noyau). Donc un noyau Linux
<acronym class="acronym">PnP</acronym> plus
perfectionné serait bien mieux, un noyau qui pourrait s'occuper de l'allocation
une fois toutes les requêtes envoyées. Une alternative serait d'essayer
de réallouer les ressources déjà affectées quand un pilote n'obtient pas toutes
les ressources qu'il a demandées.</p><p>Le problème de la « <span class="quote">rareté des ressources bus</span> » devient de
moins en moins
réel pour deux raisons : la première est que le bus
<acronym class="acronym">PCI</acronym>
est en train de remplacer le bus <acronym class="acronym">ISA</acronym>. Le bus
<acronym class="acronym">PCI</acronym> n'a pas ce type de problème pour les
<acronym class="acronym">IRQ</acronym> car celles-ci peuvent être partagées (bien que ce
partage rende le système un peu moins efficace). De plus, le
<acronym class="acronym">PCI</acronym>
n'utilise pas les ressources <acronym class="acronym">DMA</acronym> (bien qu'il dispose d'un
équivalent sans avoir besoin des ressources).</p><p>La deuxième raison est que plus d'espace d'adresses est disponible pour
les entrées/sorties des périphériques. Alors que l'espace d'adresses
conventionnel du bus <acronym class="acronym">ISA</acronym> était limité à 64 Ko, le bus
<acronym class="acronym">PCI</acronym> dispose de 4 Go. Comme plus de périphériques
physiques utilisent les adresses en mémoire principale au lieu de l'espace
d'adresses des entrées/sorties, il existe toujours un peu de place disponible,
y compris sur le bus <acronym class="acronym">ISA</acronym>. Sur les PC 32
bits, il y a un espace d'adressage de 4 Go en mémoire principale et la
plupart de ces ressources bus est disponible pour les entrées/sorties des
périphériques (à moins que vous ayez 4 Go de mémoire principale
installée).</p><p>Il y a eu au moins une tentative pour faire de Linux un vrai système
d'exploitation PnP. Voir <a class="ulink" href="http://www.astarte.free-online.co.uk" target="_top">http://www.astarte.free-online.co.uk</a>.
Bien que développé dès 1998, elle n'a jamais été intégrée au noyau (mais aurait
certainement dûe l'être).</p></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s02.html">Précédent</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ar01s04.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">Ce que <acronym class="acronym">PnP</acronym> doit faire : allouer des
« <span class="quote">ressources bus</span> » </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> Configurer un <acronym class="acronym">BIOS</acronym>
<acronym class="acronym">PnP</acronym></td></tr></table></div></body></html>