Вопросы к защите лабораторной работы
1. Задачи, решаемые с помощью WMI
2. Архитектура и назначение основных компонент WMI
3. Способы работы с WMI
4. Методы подключения к WMI в скриптах
5. Работа с параметрами, передаваемыми в скрипт
Лабораторная работа № 12 Защищенный режим
Исследование защищенного режима CPU.
Цель работы:Исследование организации перехода процессора из реального режима в защищенный и осуществление обратного перехода. Организация универсального метода вывода на экран сообщений, работающего в обоих режимах.
Теоретические сведения
Режим реальных адресов (R-Mode)
После аппаратного сброса процессор переходит в этот режим и начинает выполнять программную инициализацию из BIOS.
Вообще говоря, режим реальных адресов в современных процессорах предназначен для запуска компьютера и подразумевается, что операционная система будет работать в защищённом режиме (поэтому оптимизация по производительности для процессоров IA-32 производится для защищённого режима).
В режиме реальных адресов не доступны основные достоинства процессора - виртуальная память, мультизадачность, уровни привилегий, работа с кэшами, буферами TLB, буфером ветвлений и некоторыми другими технологиями, обеспечивающими высокую производительность.
Для обращения к памяти используется пара 16-разрядных регистров - сегментный регистр и смещение.
В сегментном регистре находится адрес сегмента. Сегмент - это область памяти размером в 64 Кб, которая должна начинаться на границе параграфа или, другими словами, на 16-байтной границе. Адресное пространство процессора 8086 равно 1Мб.
|
|
Каждый раз, перед тем как процессор обратится к памяти по адресу, указанному в паре регистров сегмент:смещение, он вычисляет адрес памяти по следующей схеме:
физический_адрес = сегмент * 10h + смещение.
Защищенный режим (Р-Mode)
При работе в защищённом режиме процессор контролирует практически все действия программ и позволяет разделить операционную систему, драйвера и прикладные программы разными уровнями привилегий. Благодаря этому ОС может ограничить области памяти, выделяемой программам, запретить или разрешить ввод/вывод по любым адресам, управлять прерываниями и многое другое. При попытке программы выйти за допустимый диапазон адресов памяти, выделенной ей, либо при обращении к "запрещённым" для неё портам процессор будет генерировать исключения. В защищённом режиме максимально доступны все ресурсы процессора. Максимальный диапазон адресов памяти расширен до 4 Гб для процессоров 386 и 486 и 64 Гб для Pentium-ов.
Логический адрес также определяется парой сегмент:смещение. При этом в сегментном регистре располагается селектор, являющийся индексом в служебной структуре (таблице) GDT.
|
|
Структура селектора может быть представлена в следующем виде:
где,
- двухбитовое поле RPL (Requested Privilege Level) содержит номер уровня привилегий, которое имеет текущая программа.
- бит TI (Table Indicator) определяет таблицу, из которой выбирается нужный дескриптор. Если бит TI = 0, то обращение производится к глобальной дескрипторной таблице GDT, если TI = 1 - то к текущей локальной дескрипторной таблице LDT.
- index - это собственной номер дескриптора, от 0 до 8191. Т.к. поле индекса состоит из 13 бит, то максимальное число дескрипторов, одновременно существующих в системе равно 2 13, т.е. 8192.
ОС должна иметь одну таблицу GDT. Таблицу используют все программы и задачи системы.GDT состоит из дескрипторов и находится в оперативной памяти (где и программы).Дескриптор – это структура, описывающая сегмент. Сегментный дескриптор занимает 8 байт. Структура дескриптора может быть представлена в следующем виде:
Дескриптор состоит из следующих полей.
ü Адрес (базы) - адрес нулевого байта описываемого сегмента в 4 Гб линейном адресном пространстве (т.е. адрес, с которого начинается сегмент). Процессор образует единый 32-х битный адрес.
|
|
ü Лимит сегмента определяет размер сегмента.
ü Реальный лимит сегмента зависит от бита гранулярности (G-granularity);
- если бит гранулярности сброшен (0), то 20-битное значение и будет тем самым лимитом сегмента, байт ;
- если бит гранулярности установлен (1), то всё 20-битное значение автоматически увеличивается в 1000h раз, т.е. при G=1 лимит сегмента измеряется в 4Кб единицах. Например, если G=1 и поле «Лимит сегмента» = 0000Fh (15 байт), то реальный лимит (размер) данного сегмента равен 0Fh*1000h=0F000h.
ü Тип - определяет тип сегмента, права доступа к сегменту и направление роста сегмента (бит B).
ü S (descriptor type) – флаг «типдескриптора». Если сброшен (0), то описуемый сегмент – системный, если установлен (1) – это сегмент данных или кода.
ü DPL (descriptorprivilegelevel) – уровень привилегий дескриптора, определяет уровень привилегий (от 0 до 3) сегмента.
ü P (segmentpresentflag) – флаг присутствия сегмента. Если установлен - сегмент присутствует в памяти; если сброшен – нет.
Первый дескриптор в GDT не используется и называется «нулевой дескриптор» (nulldescriptor). НАЧАЛО таблицы GDT храниться В РЕГИСТРЕ GDTR! Регистр GDTR – это регистр, как EAX, EIP, ES. Его функция заключается в хранении фиксированного числа – НАЧАЛА ТАБЛИЦЫ GDT. Начало таблицы GDT в памяти должно быть кратно 8.
Загрузить/считать значение регистра GDTR можно командами LGDT/SGDT. По умолчанию (т.е. после нажатия на кнопку Reset или включения компа) база GDT равна нулю, а лимит – FFFFh, т.е. фактически по умолчанию выделено максимум места, под FFFFh/8 = 8191 дескрипторов (минус один, учитывая nulldescriptor).
Дата добавления: 2018-04-05; просмотров: 386; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!