Лекции по Вычислительным машинам, системам и сетям   

3. Тридцатидвухразрядные процессоры фирмы Intel

3.10. Механизм V86

Пусть надо выполнить на 32-разрядном МП программу, написанную для МП 8086. Это можно сделать в реальном режиме, но на практике это оказывается крайне неудобно. Представьте себе, что надо покидать Windows при запуске любого DOS-приложения. Кроме того, в реальном режиме теряются такие преимущества защищенного режима, как многозадачность и защита сегментов. Все это привело к тому, что начиная с МП 386, был введен механизм V86, как бы эмулирующий в защищенном режиме работу МП 8086.

МП, работая в режиме V86, формирует физический адрес таким же способом, что и МП 8086. Берется содержи-мое сегментного регистра (его видимой части), умножается на 16, к полученному числу прибавляется Аэф, в результате получается Аф (это не совсем так, здесь используется несколько иная схема с тем же конечным результатом).

При смене содержимого сегментного регистра ни к каким дескрипторным таблицам МП не обращается, а просто загружает в видимую часть сегментного регистра новое число, которое задает начальный адрес нового сегмента. В то же время режим V86 представляет собой подмножество защищенного режима и позволяет использовать многозадачность, защиту сегментов и даже включать страничный механизм.

МП переходит в режим V86, если установить в единицу флаг VM в регистре флагов (ef). Однако сделать это совсем непросто, поскольку ни одна команда на состояние этого флага не влияет. Существует всего два способа переключения в режим V86 (из обычного защищенного режима) и всего один способ выхода из этого режима в обычный защищенный режим.

Первый способ входа предполагает смену задачи. Когда из TSS входящей задачи в регистры МП загружается новая информаци, то она загружается и в регистр флагов. Если при этом в новом образе ef бит VM будет установлен, новая задача будет выполняться в режиме V86. Для переклю-чения на новую задачу надо обратиться к ее сегменту TSS (напрямую или через шлюз) в дескрипторной таблице GDT. Это можно сделать командами jmp far или call far.

Выйти из режима V86 в обычный защищенный режим таким способом невозможно. Как уже говорилось выше, в режиме V86 МП не обращается в дескрипторные таблицы, следовательно, нельзя обратиться к TSS и сменить задачу. Единственный способ выхода из режима V86 заключается в следующем. При любом прерывании МП, как и в любом другом режиме, автоматически сохраняет содержимое регистра в стеке, а затем сбрасывает флаг VM. Таким образом, после любого прерывания автоматически оказываемся в защищенном режиме. Отметим также, что хотя МП в режиме V86 работает так же, как и МП 8086, в качестве таблицы прерывания он использует таблицу IDT!

Из сказанного выше вытекает второй способ входа в режим V86. Команда iret (возврат из прерывания) автоматически восстанавливает из стека содержимое регистра флагов, в том числе и флаг VM, при этом если VM становится равен единице,то попадаем в режим V86. Здесь надо отметить, что такой возврат в режим V86 возможен только, если команда iret выполняется на нулевом уровне привилегий.

Итак, можно сделать следующие выводы. В режиме V86 МП формирует физический адрес по схеме МП 8086. Единственным серьезным отличием от МП 8086 является использование таблицы прерываний IDT (имеется еще ряд очень мелких отличий, но здесь они не рассматриваются). Так же, как МП 8086, 32-разрядный МП в режиме V86 адресует младший мегабайт ОП, однако если использовать страничный механизм, этот мегабайт можно транслировать в любое место ОП. Более того, используя многозадачность, можно запустить сразу несколько задач V86, выделив каждой свой мегабайт памяти, и переключаться между этими задачами.

Обычно для обслуживания режима V86 в системе создается специальная программа, называемая «монитор V86». Как правило, монитор является частью обработчика прерывания типа 13 – «общая защита» (#GP). Важным является тот факт, что в режиме V86 текущий уровень привилегий задачи (CPL) всегда равен 3!



*****
Новосибирск © 2009-2017 Банк лекций siblec.ru
Лекции для преподавателей и студентов. Формальные, технические, естественные, общественные, гуманитарные, и другие науки.