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

Как именно пользовательская память и память ядра различаются внутри ядра Linux(с точки зрения обеспечения безопасности пространства ядра)?

Какими способами я могу писать в адресное пространство ядра из пользовательского пространства?

Один из известных мне способов — системный вызов. Мы можем использовать несколько системных вызовов, но, в конце концов, все они являются системными вызовами. Даже в системных вызовах мы отправляем данные в пространство ядра, где они (драйвер или соответствующий модуль) вызывают такие функции, как copy_from_user() для копирования данных из пространства пользователя в пространство ядра. Здесь мы точно не пишем в адресное пространство. мы просто передаем указатель пользователя, который содержит данные, которые необходимо скопировать в буферы ядра.

Мой вопрос: можем ли мы каким-либо образом получить доступ к физическому адресу, существующему в пространстве ядра, и выполнять над ним операции?

Во-вторых, Помимо системных вызовов, есть ли другие способы записи в пространство ядра из пользовательского приложения?

Я ссылался на эту ссылкуиз stackoverflow. Но я думаю, что на мой вопрос нет ответа там и с другой точки зрения. Поэтому я подумал задать другой вопрос.

Пожалуйста, поделитесь своими знаниями... Спасибо.

20
задан mk.. 22 May 2019 в 00:26
поделиться