Почему приложения не могут напрямую обращаться к аппаратному устройству? Почему нам нужно переключиться на пространство ядра, чтобы сделать это?

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


person Andrei Deatcu    schedule 25.05.2020    source источник
comment
Какой тогда смысл в операционной системе?   -  person Joseph Sible-Reinstate Monica    schedule 25.05.2020


Ответы (2)


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

person Milag    schedule 25.05.2020

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

Причина, по которой он был разработан таким образом, заключается в том, что в основном из-за соображений безопасности. Большинство систем, о которых я знаю, специально не позволяют пользовательским программам выполнять ввод-вывод или получать доступ к памяти пространства ядра. Такие вещи привели бы к крайне небезопасным системам, потому что, имея доступ к ядру, пользовательская программа могла бы изменить разрешения и получить доступ к любым данным в любом месте системы и, предположительно, изменить их.

Ссылки: XATLANTIS STACKEXCHANGE

person Anandaraja_Srinivasan    schedule 14.04.2021