2013-11-30 2 views
2

Если ядро ​​может получить доступ к пользовательскому пространству, зачем нам нужно copy_from_user копировать данные в память ядра, почему он просто не может получить доступ к данным о пространстве пользователя? это для производительности?Что нужно copy_from_user

ответ

2

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

Другим важным моментом является то, что ядру необходимо получить доступ к пользовательскому пространству с разрешениями пользователя, то есть если программа пространства пользователя, обращающаяся к этому адресу, потерпит неудачу, то copy_from_user() также потерпит неудачу, даже если ядро ​​сможет получить доступ к этому адресу самостоятельно.

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

+0

не могли бы вы рассказать подробнее 2-й и 3-й пункты – debonair

+1

Это уже объяснено здесь http://stackoverflow.com/questions/12666493/why-do-you-have-to-use-copy-to-user-copy -из-пользователь-доступ, пользовательское пространство-из – knare

Смежные вопросы