Вопросы к защите лабораторной работы



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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!