Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 106

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 100 101 102 103 104 105 < 106 > 107 108 109 110 111 112 .. 528 >> Следующая

выполнять в защищенном режиме все программы, написанные для
микропроцессора 8086, обеспечивая при этом ряд средств защиты и
возможность страничной организации памяти. Такой вариант защищенного
режима называется режимом виртуального процессора 8086 (сокращенно V86) и
реализуется при установке в регистре EFLAGS значения признака VM = 1.
Таким образом, в режиме V86 микропроцессор работает как виртуальный
процессор, состоящий из аппаратных средств процессора Р6, прикладного
программного обеспечения, написанного для 8086, и системного программного
обеспечения (монитор V86).
Все программы, выполняемые в режиме V86, имеют низший уровень привилегий:
CPL = 3. Этим режим V86 отличается от реального режима, при котором всем
программам предоставляется высший уровень привилегий: CPL = 0. При
формировании линейного адреса в режиме V86 не используются дескрипторы,
поэтому правила доступа к сегментам в соответствии с уровнем привилегий в
этом режиме не выполняются. В режиме V86 используются следующие способы
защиты.
• В режиме V86 не осуществляется защита сегментов. Если используется
страничная организация памяти, то ее защита при нарушении правил доступа
к странице реализуется путем исключения типа #PF ("ошибка обращения к
странице").
• Поступление команд, которые выполняются в защищенном режиме только при
уровне CPL = 0, в режиме V86 вызывает исключение типа #GP ("нарушение
защиты"). Это команды LIDT, LGDT, LMSW, CLTS, HLT, а также MOV для
регистров управления, тестирования и отладки.
• Поступление команд, выполняемых только в защищенном режиме, вызывает в
режиме V86 исключение типа #UD ("неразрешенный код команды"). Это команды
LLDT, SLDT, LTR, STR, LAR, LSL, ARPL.VERR, VERW.
• Команды PUSHF, POPF, CLI, STI, INT и IRET в режиме V86 чувствительны к
значению поля IOPL в EFLAGS. Они выполняются только при IOPL = 3, в
противном случае реализуется исключение типа #GP. Отметим, что команды
INTO, INT3, ROUND в режиме V86 (и вообще в защищенном режиме) выполняются
независимо от значения поля IOPL.
• Выполнение команд ввода/вывода IN, OUT, INS, OUTS в режиме V86 не
зависит от значения поля IOPL (отличие от защищенного режима). Однако при
вызове в режиме V86 задачи, имеющей БКВВ в сегменте TSS, данные команды
учитывают значение битов разрешения для соответствующих портов. При
обращении к порту, для которого в БКВВ бит разрешения установлен в "1",
реализуется исключение типа #GP.
С учетом указанных выше особенностей процессор в режиме V86 выполняет
весь набор команд, включая битовые операции, операции над числами с
плавающей точкой и ряд других, не реализуемых микропроцессором 8086.
Допускается использование всех регистров процессора Р6, включая
сегментные регистры FS, GS.
По умолчанию в режиме V86 используются 16-разрядные регистры и
исполнительные адреса. С помощью префиксов размера можно производить
обработку 32-разрядных операндов и формировать 32-разрядные адреса.
Однако значение полученного физического адреса в режиме V86 не должно
превышать 65535, в противном случае возникает исключение типа #GP.
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
При работе в режиме V86 процессор формирует 20-разрядный линейный адрес
таким же способом, как в реальном режиме. Если при этом бит страничной
адресации в регистре управления CR3 имеет значение PG = 1, то
используется страничная организация памяти. В этом случае адресуемая в
режиме V86 память объемом 1 Мбайт делится на 256 страниц по 4 Кбайта.
Младшие 12 разрядов линейного адреса выбирают адресуемый байт в кадре
страницы, а старшие 8 разрядов определяют с помощью таблицы страниц
базовый адрес страницы. Каталог разделов в режиме V86 не используется, и
базовый адрес таблицы страниц задается содержимым регистра CR3. Отдельные
страницы могут быть размещены в любом месте адресного пространства,
имеющего объем 4 Гбайта. Каждая задача в режиме V86 может использовать
свои варианты размещения страниц, так как при переключении задач
загружается заново содержимое регистра управления CR3, определяющее
базовый адрес таблицы страниц. При использовании страничной организации
памяти в режиме V86 реализуются соответствующие способы защиты страниц.
Способ обработки исключений (прерываний) в режиме V86 определяется
значением бита VME в регистре управления CR4 (см. рис. 2.7, в). При
значении VME = 0 обработка исключений производится в защищенном режиме,
если в регистре EFLAGS поле IOPL = 3. Если IOPL < 3, то реализуется
исключение типа #GP. При значении VME= 1 способ обработки программных
прерываний, реализуемых при поступлении команды INTn, зависит от значения
соответствующего бита в таблице, располагаемой в сегменте TSS решаемой
задачи. Если этот бит равен "О", и в регистре EFLAGS значение поля IOPL =
3, то прерывание обслуживается как в процессоре 8086:
• в стек последовательно загружается содержимое регистра EFLAGS, в
котором устанавливаются значения бита NT = 0 и поля IOPL = 0, регистров
Предыдущая << 1 .. 100 101 102 103 104 105 < 106 > 107 108 109 110 111 112 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed