- •Регистры общего назначения
- •Сегментные регистры
- •Регистр флагов
- •Регистры управления процессором
- •Поколения эвм
- •Архитектура фон Неймана и гарвардская архитектура
- •Режимы адресации мп i80386 (реальный, защищённый, v86, страничной адресации)
- •Организация памяти в мп i80386 (физический, логический, линейный адрес, сегментированная память, сплошная память, разбиение на страницы)
- •Адресация в защищённом режиме
- •Страничная адресация
- •Механизм защиты в защищённом режиме (уровни привилегий, какие биты и поля используются механизмом защиты, какие проверки выполняются)
- •Прерывания и исключения
- •Обработчики прерываний в реальном режиме
- •Контроллер прерываний
- •Прерывания в защищённом режиме
- •Порты ввода-вывода
- •Доступ к портам под Windows nt/2000/xp.
- •Simd-расширения команд (mmx, sse, sse2, sse3) simd-расширения архитектуры x86
- •Расширение mmx (Multimedia Extension)
- •Расширение sse (Streaming simd Extension)
- •Расширение sse2
- •Расширения sse3
- •Основы дизайна процессоров (препроцессор, постпроцессор, конвейер, суперскалярность)
- •Предсказание ветвлений
- •Иерархия оперативной памяти
- •Принцип работы обычной dram-памяти (Conventional dram)
- •Ядро микросхемы динамической памяти
Механизм защиты в защищённом режиме (уровни привилегий, какие биты и поля используются механизмом защиты, какие проверки выполняются)
Защита может действовать как на уровне сегментов, так и на уровне страниц, ограничивая доступ в зависимости от уровня привилегий (4 уровня привилегий для сегментов и два для страниц). Защита предотвращает возможность для программ вносить изменения в области памяти, занятые операционной системой или более привилегированной программой. Процессор проверяет привилегии непосредственно перед каждым обращением к памяти и, если происходит нарушение защиты, вызывает исключение #GP.
Если процессор находится в защищенном режиме, проверки привилегий выполняются всегда и их нельзя отключить, но можно использовать во всех дескрипторах и селекторах один и тот же максимальный уровень привилегий — нулевой, и создастся видимость отсутствия защиты (DPL и RPL инициализируются нулями).
За механизм защиты отвечают следующие биты и поля:
В дескрипторах сегментов:
Бит S (означает, что бит системный)
Поле типа
Поле лимита (размер сегмента)
Поле DPL (уровень привилегий сегмента)
В селекторах сегментов:
RPL (уровень запрашиваемых привилегий)
поле RPL селектора, загруженного в CS, называется CPL и является текущим уровнем привилегий программы
В элементах таблиц страниц:
Бит U (определяет уровень привилегий страниц)
Бит W (разрешает запись в страницу)
Уровни привилегий в процессорах Intel определены как:
0 — максимальный (для операционной системы);
1 и 2 — промежуточные (для вспомогательных программ);
3 — минимальный (для пользовательских приложений).
Процессор выполняет несколько типов защиты
Проверка лимита (необходима для запрета выхода за рамки)
Проверка типа сегмента
Проверка привилегий
Защита на уровне страниц
Выполнение привигилированных команд
Прерывания и исключения
В архитектуре процессора х86 предусмотрены следующие случаи , когда процессор прекращает выполнение текущей программы и немедленно передает управление программе обработчику, специально написанному для подобной ситуации. Эти ситуации делятся на 2 типа: прерывания и исключения, в зависимости от того, что вызвало эту ситуацию, внешнее устройство или программа. Исключения делятся на 3 типа:
Ошибки
Ловушки
Остановы
В зависимости от того, когда по отношению к вызываемой команде они происходят. Ошибки появляются перед выполнением команды, поэтому обработчик такого исключения получит в качестве возврата адрес ошибочной команды.
Ловушки происходят после выполнения команды, и обработчик получает в качестве адреса возврата адрес следующей команды.
Остановы могут возникнуть в любой момент, и не предусматривает средств возврата.
Когда в реальном режиме выполняется команда int, управление передается по адресу, который считывается из массива, начинающегося в памяти с 0го адреса. Этот массив по-другому называется таблицы векторов прерывания.
Каждый элемент массива имеет размер 4Кб, если обработчика нет, то в массив 4е нулевых байта.
Стандартные исключения реального режима:
#DE int 0 – Деление на 0 (ошибка)
#DB int – прерывание трассировки (ловушка, возникающая после выполнения каждой команды, если флаг TF=1)
#OF int 4 – прерывание переполнения (ловушка, возникающая после выполнения команды INTO, если флаг OF=1)
#BR int 5 – прерывание для проверки границ
#UD int 6 – недопустимая команда (ошибка)
#NM int 7 – сопроцессор отсутствует (ошибка)