Is there any difference between kernel space & user space MEMORY ALLOCATIONS? From which region of memory they get allocated.
Может ли кто-нибудь дать несколько советов по этому вопросу?
Спасибо.
С наилучшими пожеланиями,
Сандип Сингх
Области памяти для обеих областей регулируются соответствующими диапазонами адресного пространства. Граничное значение сохраняется в регистре ограждения.
Память пользователя и ядра имеет различия: в том смысле, что ей помечены разные физические атрибуты:
https://unix.stackexchange.com/questions/87625/what-is-difference-between-user-space-and-kernel-space
Но для самого алгоритма распределения: память пользовательского пространства всегда падаетв памяти ядра для его окончательной реализации.
И поскольку память в режиме ядра намного мощнее, чем пользовательский режим, существует аппаратный механизм, называемый SMEP для предотвращения выполнения памяти пользовательского режима изнутри режима ядра:
https://www.ncsi.com/nsatc11/presentations/wednesday/emerging_technologies/fischer.pdf
А аппаратные функции, такие как бит NX, всегда управляются из режима ядра (кольцо 0): как обычный пользователь (кольцо 3) вы не сможете получить доступ к биту.
Дополнительные аппаратные функции:
http://hypervsir.blogspot.sg/2014/11/page-structure-table-corruption-attacks.html