2013-06-10 2 views
0

Я читал о сегментации памяти x86, и я думаю, что я что-то упустил, Линейный (виртуальный) адрес построен, взяв 32-битный из записи GDT (базовый адрес), взяв 32-битные из смещать адрес и суммировать их для получения 32-битного виртуального адреса.x86 - сегментация в защищенном режиме служит для какой цели?

Теперь, как я вижу, 32 смещенных бита могут охватывать все пространство VA, поэтому нет необходимости использовать 32-разрядный базовый адрес. Поэтому я пришел к выводу, что базовый адрес действительно не играет роли в процессе перевода, что приносит мне так, что защита памяти с использованием сегментации (в защищенном режиме x86) бесполезна, потому что мы можем получить VA сегментов с кольцом 0 привилегии со своим адресом смещения. (EG. Jump 0x08000001 - к ядру VA, когда наш сегмент имеет привилегию кольца 3)

Итак, вся защита памяти у нас основана на пейджинге?

ответ

0

Ваше наблюдение за тем, что 32-битное смещение может охватывать все пространство VA, является правильным. Но дескрипторы сегментов также включают предел, поэтому любой доступ за пределами этого предела с использованием этого сегмента вызовет #GP (общая ошибка защиты). Кроме того, вы не можете просто использовать сегмент ring-0 в кольцевом коде; что в первую очередь приведет к поражению цели кольцевых уровней.

0

Сегмент селектора и дескриптор сегмента содержит данные о границе сегмента памяти.
В дескрипторе содержится не только граница, но и тип доступа.

0 до 3 привилегия уровень, нет есть больше привилегия. Также читайте-записывайте-выполняйте информацию. Таким образом, каждый отдельный уровень привилегий в сегменте имеет разные полномочия доступа, и является частью фундаментального механизма защищенного режима.

Сегментация Legacy просто предотвращает дублирование каждой области сегмента, иначе сегмент кода будет загрязнен сегментом сегмента или сегментом сегмента памяти приложения (или пользователя).

Недавняя сегментация содержит более определенный способ защиты с селектором сегментов и дескриптором сегмента.

После процедуры загрузки система переходит в режим привилегий пользователя (3) и после этого вы не можете получить доступ к режиму привилегий ядра (0), если только не используете руткит или, возможно, есть другой способ для умелых хакеров. :)

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