Давайте думать логично.
Для перехода из RM в PM, и нормальной работы CPU в РМ, нужна GDT, остальное не важно для кратковременного перехода туда-обратно. Минимальный размер GDT, это 8-ть байт = "0" + 8-мь байт для описания сегмента кода. Прыгнули, присели пару раз, вернулись. Не нужно данных, таймер, тоже не успеет сработать.
Т.е. нужно всего 128 бит(2*8*8), сам регистр GDTR = 48-мь бит. Другими словами, он хранит в себе ссылку на таблицу GDT, где она определена? Угадали? В RM, т.е. 1-ый метр.
Да, с помощью LGDT, можно переместить(GDT, и сформировать новые LDT, IDT, TSS, . . . . ) в другую область памяти, отличную от первого метра.
А теперь вопрос к Вам:
- LGDT RM и LGDT РM, сообщают CPU, что GDT, уже не там, где была раньше(т.е. первый метр).
- CPU безразлично, что записано в GDTR, ему важно, что некоторое количество бит, указывают адрес на саму GDT, где этот адрес находится - безразлично.
- О том, что перенесли GDT, он не знает, т.к. сравнивать интервалы от .. до .., ему нет времени, поэтому он считает, что GDT в первом метре.
И сам вопрос: CPU позволит Вам портить первый метр?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.