Защищенный режим процессоров Intel 80286 80386 80486

         

Защищенный режим процессоров Intel 80286 80386 80486

ВХОДИМ В ЗАЩИЩЁННЫЙ РЕЖИМ
Подготовка к переключению в защищённый режим

Возврат в реальный режим
Пример простой программы переключения режима
Адресация памяти в защищённом режиме
Преобразование адресов в защищённом режиме
Детальное описание схемы преобразования адресов

Защита в процессоре i6
Кольца защиты
Тип сегментов

Границы сегментов


Привилегированные и чувствительные команды
Межсегментная передача управления
Команды CALL и JMP
Команды RET и IRET
Виртуальная память в процессоре i6
ОБРАБОТКА ПРЕРЫВАНИЙ В ЗАЩИЩЁННОМ РЕЖИМЕ
Прерывания в реальном режиме

Прерывания защищённого режима
Таблица прерываний защищённого режима
Исключения в защищённом режиме
Обработка аппаратных прерываний
Программа, которая работает с прерываниями

ОСОБЕННОСТИ ПРОЦЕССОРОВ IИ I6
Преобразование адресов
Обработка прерываний

Мультизадачность
Режим виртуального процессора i
Виртуальные машины
Переключение в защищённый и реальный режимы
Процессор i6
..Что дальше?
МУЛЬТИЗАДАЧНОСТЬ В ПРОЦЕССОРЕ I6

Задача и сегмент состояния задачи
Переключение задач
Синхронизация задач и семафоры
Пример мультизадачного монитора

ОПЕРАЦИОННАЯ СИСТЕМА MICROSOFT WINDOWS
Использование функций DPMI

Драйверы, резидентные программы и WINDOWS
Связь с WINDOWS CLIPBOARD
Получить версию WinOldAp
Открыть CLIPBOARD
Очистить CLIPBOARD
Записать данные в CLIPBOARD
Получить размер CLIPBOARD

Прочитать данные из CLIPBOARD
Закрыть CLIPBOARD
Установить размер данных, записанных в CLIPBOARD
Критическая секция
Пример программы для работы с CLIPBOARD
ОБЗОР ЛИТЕРАТУРЫ

ИЕРАРХИЯ СРЕДСТВ ДЛЯ РАБОТЫ В ЗАЩИЩЁННОМ РЕЖИМЕ
Интерфейс BIOS
Определить размер расширенной памяти
Переслать блок расширенной памяти
Установить защищённый режим работы процессора
Пример использования интерфейса BIOS

Интерфейс HIMEM.SYS
Интерфейс EMS/VCPI
Проверка наличия в системе интерфейса VCPI
Получить адрес интерфейса VCPI
Определить максимальный физический адрес памяти
Определить количество свободных страниц памяти
Получить страницу памяти
Освободить страницу памяти

Получить физический адрес страницы памяти, располагающейся в пределах первого мегабайта
Прочитать содержимое системного регистра CR0
Прочитать содержимое отладочных регистров
Установить отладочные регистры
Получить отображение векторов прерываний для контроллеров прерываний
Установить отображение векторов прерываний для контроллеров прерываний
Переключить процессор в защищённый режим
Переключить процессор в виртуальный режим
Пример программы
Интерфейс DPMI

Получить адрес перехода в защищённый режим
Вход в защищённый режим
Определение текущего режима работы
Создать дескриптор в таблице LDT
Освободить дескриптор в таблице LDT
Преобразование сегмента в дескриптор
Получить значение инкремента для вычисления следующего селектора в массиве
Зарезервированные функции
Получить базовый адрес сегмента
Установить базовый адрес сегмента

Установить предел сегмента
Установить поле прав доступа в дескрипторе
Создание алиасного дескриптора для сегмента кода
Получить дескриптор
Установить дескриптор
Получить конкретный дескриптор в таблице LDT
Получить блок памяти из пула свободной памяти DOS
Освободить блок памяти, взятый из пула DOS

Защищенный режим процессоров Intel 80286 80386 80486

Изменить размер блока памяти, полученного из пула DOS
Получить вектор прерывания реального режима
Установить вектор прерывания реального режима
Получить адрес обработчика исключения с заданным номером
Установить адрес обработчика исключения с заданным номером
Получить вектор прерывания защищённого режима

Установить вектор прерывания защищённого режима
Эмуляция прерывания реального режима
Вызов процедуры реального режима, заканчивающейся командой RET FAR
Перехват передачи управления программе реального режима
Отмена перехвата передачи управления процедуре реального режима.
Получить адреса процедур сохранения/восстановления состояния.
Получить адрес процедуры переключения режима
Получить версию спецификации DPMI
Получить информацию о свободной памяти

Получить блок памяти
Освободить блок памяти
Изменить размер блока памяти
Зафиксировать линейную область памяти
Расфиксирование блока памяти
Отмена фиксации страниц для области памяти виртуального режима
Фиксация страниц для области памяти виртуального режима
Получить размер страницы памяти
Отметка страницы для свопинга

Отвергнуть содержимое страниц
Преобразование физического адреса в линейный
Запретить виртуальные прерывания
Разрешить виртуальные прерывания.
Получить состояние флага виртуальных прерываний
Получить адрес для использования расширений DPMI
Установить точку останова для отладки
Отмена отладочной точки останова
Получить состояние отладочной точки останова
Сброс точки останова

DOS-экстендеры
Phar Lap DOS-экстендер
Виртуальная машина WINDOWS
Защищенный режим процессоров Intel 6
Оглавление
ВВЕДЕНИЕ

ПРИЛОЖЕНИЕ
Регистр EFLAGS
Управляющие регистры процессора i6
Формат регистра CRпроцессора i6
Системные команды процессоров iii6
ARPL Коррекция поля привилегий инициатора запроса в селекторе
CLTS Сброс флага TS переключения задачи в регистре CR0

LAR Загрузка байта прав доступа
LGDT Загрузка регистра GDTR
LIDT Загрузка регистра IDTR
LLDT Загрузка регистра LDTR
LMSW Загрузка слова состояния процессора
LSL Загрузка предела сегмента
LTR Загрузка регистра задачи
MOV Загрузка системных регистров
SGDT Запись в память содержимого регистра GDTR
SIDT Записать в память содержимое регистра IDTR

SLDT Записать в память содержимое регистра LDTR
SMSW Записать слова состояния процессора
STR Запись регистра задачи
VERW Проверить сегмент на возможность записи
Недокументированная команда LOADALL
Утилита MEMOSCOP
Защита программ от отладки