К аппаратным средствам можно получить доступ непосредственно от пространства пользователя?

Я предполагаю, Ubuntu для рабочего стола, и CentOS и Ubuntu для серверов

6
18.03.2019, 05:30
3 ответа

Ваше предположение корректно. Ядро является единственным программным обеспечением, которое может отправить аппаратные запросы. Это не только сохраняется для Linux. Фактически никакая операционная система, более новая, чем DOS, не позволяет Вам аппаратные средства доступа непосредственно, потому что, поскольку Вы также подозреваете, это вполне довольно опасно.

Однако нет никакой проблемы в записи Вашего собственного драйвера, и много документации доступно. Например, это учебное руководство в xatlantis кажется недавним (это важно!) и хороший источник.

2
27.01.2020, 20:28

Да, но это редко полезно. В 32-разрядных x86 системах можно использовать ioperm(2) системный вызов для установки текущего процесса, чтобы позволить этому выполнять порт I/O непосредственно. Я полагаю, что это не работает над 64-разрядными системами. Можно также сделать lseek/read/write комбинации против /dev/port и я думаю, что это аналогично не очень портативно. См. http://tldp.org/HOWTO/IO-Port-Programming-2.html еще для некоторых деталей. Оба из этих подходов намного медленнее и менее гибки, чем запись драйвера устройства, конечно (/dev/port самый медленный из всех). Ни один из этих механизмов пространства пользователя не позволяет Вам обрабатывать прерывания или что-либо как этот, конечно. Если производительность является проблемой, Вы собираетесь закончить тем, что писали драйвер устройства.

4
27.01.2020, 20:28
  • 1
    , Но работа с прерываниями и DMA все еще невозможна в пространстве пользователя (AFAIK), Таким образом, доступ к устройствам от пространства пользователя ограничен для передачи через расширенную память устройства или порты. –  Netch 15.07.2012, 13:33
  • 2
    Да, который является, почему я упомянул это в своем ответе. –  James Youngman 16.07.2012, 01:18

Определенно возможен доступ к оборудованию из пользовательского пространства. Особенно, если аппаратные регистры отображаются в память. См., например, UIO .

1
27.01.2020, 20:28

Теги

Похожие вопросы