O hardware pode ser acessado diretamente do espaço do usuário?

O hardware pode ser acessado diretamente do espaço do usuário?

No trabalho temos alguns dispositivos embarcados controlados por software DOS. Recebi a responsabilidade de avaliar o uso do Linux como um sistema operacional substituto para o DOS em uma próxima geração de hardware. Minha pesquisa me leva à conclusão de que o DOS é simplesmente um tipo totalmente diferente de sistema operacional que permite fazer coisas potencialmente perigosas se você quiser. Pelo que entendi, se você deseja acessar o hardware diretamente, você terá que escrever um driver personalizado. O que preciso saber para satisfazer a curiosidade do meu chefe é o seguinte:é possível acessar o hardware diretamente do espaço do usuário??

Meu palpite é que não, mas gostaria de solicitar a opinião de quem tem um conhecimento muito superior ao meu.

Responder1

Sim, mas raramente é útil. Em sistemas x86 de 32 bits, você pode usar a ioperm(2)chamada do sistema para configurar o processo atual para permitir que ele execute E/S de porta diretamente. Acredito que isso não funciona em sistemas de 64 bits. Você também pode fazer lseek/read/writecombinações /dev/porte acho que isso também não é muito portátil. Verhttp://tldp.org/HOWTO/IO-Port-Programming-2.htmlpara mais alguns detalhes. Ambas as abordagens são muito mais lentas e menos flexíveis do que escrever um driver de dispositivo ( /dev/porta mais lenta de todas). Nenhum desses mecanismos de espaço de usuário permite lidar com interrupções ou algo parecido, é claro. Se o desempenho for um problema, você acabará escrevendo um driver de dispositivo.

Responder2

Seu palpite está correto. O kernel é o único software que pode enviar solicitações de hardware. Isso não se aplica apenas ao Linux. Praticamente nenhum sistema operacional mais recente que o DOS permite acessar o hardware diretamente, porque, como você também suspeita, é bastante perigoso.

No entanto, não há problema em escrever seu próprio driver e há muita documentação disponível. Por exemplo,este tutorial no xatlantisparece uma fonte recente (isso é importante!) e boa.

Responder3

Definitivamente é possível acessar o hardware do espaço do usuário. Especialmente se os registros de hardware estiverem mapeados na memória. Veja, por exemplo,UIO.

informação relacionada