2016-02-25 2 views
1

Одно из моих друзей Raj, сказал мне, что есть только одна глобальная таблица страниц для процессов ядра, и они не используют vm_area_struct для памяти. vm_area_struct используется только для отслеживания памяти пользовательских процессов, а не процессов ядра.Есть ли указатель vm_area_struct для процессов ядра?

Итак, я хочу знать, что такое настоящая история? Может ли кто-то пролить свет, на котором память vm_area_struct указывает на пользователя или ядро?

ответ

1

Захватите книгу об операционных системах типа «UNIX Internals: новые границы».

Уверены ли вы, что вы не имеете в виду mm_struct, что является фактическим описанием адресного пространства?

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

Таким образом, когда ядро ​​переключается между задачами, оно также меняет использование mm_struct. Но есть хак. Поскольку все сопоставления включают в себя все ядро, нет необходимости переключать миллиметр, если новая запланированная вещь является потоком ядра.

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