Я запутался об этом заявлении:Почему у ядра есть отдельный виртуальный адрес для пользовательской страницы?
http://web.stanford.edu/class/cs140/projects/pintos/pintos_4.html#SEC63 От:
В Pintos, каждая виртуальная страница пользователя псевдонимов ее ядро виртуальной страницы.
Я думал, что ядро просто сможет использовать виртуальный адрес пользователя, чтобы ссылаться на страницу пользователя, с виртуальными адресами ядра над ним. Например, на приведенном ниже изображении не будет весь VAS всего от 0 до 4 ГБ, а виртуальное адресное пространство пользователя будет ограничено адресами ниже PHYS_BASE, в то время как ядро может также получить доступ к адресам, расположенным над ним?
(от http://web.stanford.edu/class/cs140/cgi-bin/section/10sp-proj3.pdf)
Это не похоже, как это работает, хотя, как документация Pintos продолжает:
Вы должны управлять этими псевдонимами как-то. Например, ваш код может проверять и обновлять доступные и грязные биты для обоих адресов. В качестве альтернативы ядро могло бы избежать этой проблемы, только используя пользовательские данные через виртуальный адрес пользователя.
Это означает, что ядро может получить доступ к пользовательским данным через отдельный виртуальный адрес ядра. Я не уверен, почему два адреса будут разными.
Спасибо за любое разъяснение.
Хм .. это ответ? «Ядро не может напрямую манипулировать памятью, которая не отображается в адресное пространство ядра. Другими словами, ядро нуждается в собственном виртуальном адресе для любой памяти, к которой он должен коснуться напрямую. Таким образом, на протяжении многих лет максимальный объем физической памяти, может быть обработано ядром, это количество, которое может быть отображено в части ядра виртуального адресного пространства, за вычетом места, необходимого для самого кода ядра ». от [http://www.makelinux.net/ldd3/chp-15-sect-1](http://www.makelinux.net/ldd3/chp-15-sect-1) – newt
Но как же могло бы ядро «избежать проблемы, только обращаясь к пользовательским данным через виртуальный адрес пользователя»? – newt