GNU/Linux >> Tutoriels Linux >  >> Linux

Le matériel est-il accessible directement depuis l'espace utilisateur ?

Oui, mais c'est rarement utile. Sur les systèmes x86 32 bits, vous pouvez utiliser le ioperm(2) appel système pour configurer le processus actuel afin de lui permettre d'effectuer directement des E/S de port. Je crois que cela ne fonctionne pas sur les systèmes 64 bits. Vous pouvez également faire lseek/read/write combinaisons contre /dev/port et je pense que ce n'est pas non plus très portable. Voir http://tldp.org/HOWTO/IO-Port-Programming-2.html pour plus de détails. Ces deux approches sont bien sûr beaucoup plus lentes et moins flexibles que l'écriture d'un pilote de périphérique (/dev/port le plus lent de tous). Aucun de ces mécanismes de l'espace utilisateur ne vous permet de gérer les interruptions ou quoi que ce soit de ce genre, bien sûr. Si les performances sont un problème, vous finirez par écrire un pilote de périphérique.


Votre supposition est correcte. Le noyau est le seul logiciel capable d'envoyer des requêtes matérielles. Cela ne vaut pas seulement pour Linux. Pratiquement aucun système d'exploitation plus récent que DOS ne vous permet d'accéder directement au matériel, car, comme vous le soupçonnez également, c'est assez dangereux.

Cependant, l'écriture de votre propre pilote ne pose aucun problème et une documentation abondante est disponible. Par exemple, ce tutoriel sur xatlantis semble être une source récente (c'est important !) et de bonne qualité.


Linux
  1. Comment accéder (si possible) à l'espace noyau depuis l'espace utilisateur ?

  2. Comment accéder aux adresses physiques depuis l'espace utilisateur sous Linux ?

  3. pile du noyau et pile de l'espace utilisateur

  4. Supprimer les espaces blancs des noms de fichiers sous Linux

  5. Impossible de suivre l'utilisateur jenkins après l'installation de Jenkins

Mon histoire Linux :d'utilisateur Linux à contributeur

Comment supprimer Swap Space de Centos 7.x ?

RdRand de /dev/aléatoire

Comment puis-je empêcher un utilisateur de copier des fichiers sur un autre disque dur ?

Puis-je détecter des informations RAID matérielles depuis Linux ?

Que peut-on apprendre sur un utilisateur d'une tentative SSH infructueuse ?