![¿Se puede acceder al hardware directamente desde el espacio del usuario?](https://rvso.com/image/23938/%C2%BFSe%20puede%20acceder%20al%20hardware%20directamente%20desde%20el%20espacio%20del%20usuario%3F.png)
En el trabajo tenemos algunos dispositivos integrados controlados por software DOS. Se me ha encomendado la responsabilidad de evaluar el uso de Linux como sistema operativo de reemplazo de DOS en una próxima generación de hardware. Mi investigación me lleva a la conclusión de que DOS es simplemente un tipo de sistema operativo totalmente diferente que te permite hacer cosas potencialmente peligrosas si así lo deseas. Según tengo entendido, si desea acceder al hardware directamente, deberá escribir un controlador personalizado. Lo que necesito saber para satisfacer la curiosidad de mi jefe es lo siguiente:¿Es posible acceder al hardware directamente desde el espacio del usuario???
Supongo que no, pero me gustaría solicitar la opinión de aquellos con conocimientos mucho mayores que el mío.
Respuesta1
Sí, pero rara vez resulta útil. En sistemas x86 de 32 bits, puede utilizar la ioperm(2)
llamada al sistema para configurar el proceso actual y permitirle realizar E/S de puerto directamente. Creo que esto no funciona en sistemas de 64 bits. También puedes hacer lseek/read/write
combinaciones en contra /dev/port
y creo que esto tampoco es muy portátil. Verhttp://tldp.org/HOWTO/IO-Port-Programming-2.htmlpara más detalles. Ambos enfoques son, por supuesto, mucho más lentos y menos flexibles que escribir un controlador de dispositivo ( /dev/port
el más lento de todos). Ninguno de estos mecanismos del espacio de usuario le permite manejar interrupciones ni nada por el estilo, por supuesto. Si el rendimiento es un problema, terminará escribiendo un controlador de dispositivo.
Respuesta2
Tu suposición es correcta. El kernel es el único software que puede enviar solicitudes de hardware. Esto no sólo es válido para Linux. Prácticamente ningún sistema operativo más nuevo que DOS le permite acceder al hardware directamente porque, como también sospecha, es bastante peligroso.
Sin embargo, no hay ningún problema en escribir su propio controlador y hay mucha documentación disponible. Por ejemplo,este tutorial en xatlantisParece una fuente reciente (¡eso es importante!) y buena.
Respuesta3
Definitivamente es posible acceder al hardware desde el espacio del usuario. Especialmente si los registros del hardware están mapeados en memoria. Véase por ejemplo,UIO.