Почему приложения не могут напрямую обращаться к аппаратному устройству? Почему для этого нам нужно переключиться в пространство ядра? - PullRequest
0 голосов
/ 25 мая 2020

Мне интересно, зачем нам нужно переключаться в пространство ядра, когда мы хотим получить доступ к аппаратному устройству. Я понимаю, что иногда для определенных действий, таких как выделение памяти, нам необходимо выполнять системные вызовы, чтобы переключиться из пользовательского пространства в пространство ядра, потому что операционной системе необходимо все организовать и разделить процессы и то, как они используют память и другие. Но почему мы не можем напрямую получить доступ к аппаратному устройству?

1 Ответ

0 голосов
/ 25 мая 2020

Драйвер устройства может выбрать предоставление доступа из пользовательских процессов к регистрам устройства, памяти устройства или к обоим. Распространенный метод - это специфичная для устройства служба c, связанная с запросом mmap (). Рассмотрим встроенную память фрейм-буфера и эффективность того, что пользовательский процесс может напрямую читать / записывать это пространство. Для устройств в целом особенно важны соображения безопасности, и драйверы, обеспечивающие прямой доступ, часто устанавливают ограничения для процессов с достаточными учетными данными. Файлы в / dev обычно устанавливаются с аналогичным ограничением прав доступа владельца / группы.

...