Как потоки ядра могут запрашивать страницы только для себя?
Как вы знаете, все потоки ядра разделяют одно пространство памяти ядра. Поле mm структуры task_struct, описывающее поток ядра, является нулевым. Использует поле mm задачи "priv".
Я думаю, что любой поток ядра получает доступ к частной области памяти другого потока ядра. Например, одному из драйверов устройств была выделена страница размером 4 КБ для его собственного буфера, но нет способа предотвратить доступ к нему других потоков. Потому что все потоки ядра разделяют одно адресное пространство памяти.
Итак, у меня есть вопрос. Есть ли способ спросить страницы, которые должны быть использованы в частном порядке?
1 ответ
Есть ли способ спросить страницы, которые должны быть использованы в частном порядке?
Нет, любой процесс, выполняющий код ядра, имеет доступ ко всему в операционной системе.
Это зависит от операционной системы и ее политик, предотвращающих загрузку драйверов вредоносных программ в ядро, если для этого требуются некоторые гарантии безопасности.