Si on considère qu'un driver est la seule partie qui intéragie avec le hardware, alors un driver est toujours dans le noyau. Dans l'espace utilisateur y a des "facilités". Le noyau n'exposant que le strict minimum, il faut souvent une couche supérieure. Par exemple la libc offre open/read/write/close comme le fait le noyau, mais la libc ajoute un cache et d'autres facilités (faire read/write sur une connection réseau, etc).
XFree/Xorg est un cas particulier jusqu'à maintenant car il fait/faisait driver (il accédait directement au hardware) et c'est pour ça qu'il doit être root (c'est aussi pour ça qu'il peut planter tout le système même s'il n'y a pas de bug dans le noyau).
Mais ça va changer avec KMS/DRM puisque Xorg ne demandera plus d'être root pour être utilisé.
M'enfin DRI peut/doit être considéré comme un driver puisqu'il tient compte du driver DRM (et donc du hardware). DRI est le driver de haut-niveau et DRM le driver de bas-niveau.
Notons qu'un driver qui accède à du hardware dans un micro-noyau, même s'il tourne en mode non privilégié (dans un service), fait parti du noyau.
DRI ne fait pas parti du noyau. S'il était porté sur un micro-noyau il ne serait pas un service, ni évidemment dans le micro-noyau. Il serait une librairie.
Donc ton précédent "Linux s'achemine visiblement vers un modèle hybride pour les cartes graphiques, avec des bouts dans le noyau (mode-setting, DRM) et des bouts en espace utilisateur (drivers Gallium / DRI / ...)" est faux :-)
NB :
Noyau monolithique : tout ce qui tourne dans le noyau est en mode privilégié (ring 0) et dans le même espace d'adressage (même pour les processus noyau).
Micro-noyau : idem noyau monolithique
Service micro-noyau : en mode non privilégié (ring > 0), chaque service a son espace d'adressage.
On dit souvent (moi aussi) que les services micro-noyau sont dans l'espace utilisateur, mais c'est à tord. Sa particularité est d'avoir son propre espace mémoire et de ne pas utiliser le mode privilégier (en tout cas pas ring 0). Mais ça n'a pas grand chose à voir avec l'espace ou le mode utilisateur (sauf ring != 0).
D'où peut-être ton erreur.
PS: je ne connais pas très bien DRI/DRM/etc. N'hésitez pas à mon corriger.
[^] # Re: L'avis de Linus
Posté par IsNotGood . En réponse à la dépêche MINIX 3 - Google Summer of Code. Évalué à 1.
XFree/Xorg est un cas particulier jusqu'à maintenant car il fait/faisait driver (il accédait directement au hardware) et c'est pour ça qu'il doit être root (c'est aussi pour ça qu'il peut planter tout le système même s'il n'y a pas de bug dans le noyau).
Mais ça va changer avec KMS/DRM puisque Xorg ne demandera plus d'être root pour être utilisé.
M'enfin DRI peut/doit être considéré comme un driver puisqu'il tient compte du driver DRM (et donc du hardware). DRI est le driver de haut-niveau et DRM le driver de bas-niveau.
Notons qu'un driver qui accède à du hardware dans un micro-noyau, même s'il tourne en mode non privilégié (dans un service), fait parti du noyau.
DRI ne fait pas parti du noyau. S'il était porté sur un micro-noyau il ne serait pas un service, ni évidemment dans le micro-noyau. Il serait une librairie.
Donc ton précédent "Linux s'achemine visiblement vers un modèle hybride pour les cartes graphiques, avec des bouts dans le noyau (mode-setting, DRM) et des bouts en espace utilisateur (drivers Gallium / DRI / ...)" est faux :-)
NB :
Noyau monolithique : tout ce qui tourne dans le noyau est en mode privilégié (ring 0) et dans le même espace d'adressage (même pour les processus noyau).
Micro-noyau : idem noyau monolithique
Service micro-noyau : en mode non privilégié (ring > 0), chaque service a son espace d'adressage.
On dit souvent (moi aussi) que les services micro-noyau sont dans l'espace utilisateur, mais c'est à tord. Sa particularité est d'avoir son propre espace mémoire et de ne pas utiliser le mode privilégier (en tout cas pas ring 0). Mais ça n'a pas grand chose à voir avec l'espace ou le mode utilisateur (sauf ring != 0).
D'où peut-être ton erreur.
PS: je ne connais pas très bien DRI/DRM/etc. N'hésitez pas à mon corriger.