Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АСВТ.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
105.52 Кб
Скачать

Страничная адресация. Адресация в защищенном режиме.

Для любого обращения к памяти процессора Intel используется 16ти битный селектор (указатель) сегмента и 32ух битный адрес внутри сегмента, при этом, если включен режим страничной адресации необходимо преобразование линейного адреса в физический. Если режим страничной адресации отключен, то достаточно преобразования логического адреса в линейный, т.к. он в этом случае совпадает с физическим. Архитектура микропроцессора 386 и выше допускает несоблюдение прямого соответствия между границами страниц и сегментов.

Механизм защиты.

Защитный механизм может действовать как на уровне сегментов, так и на уровне страниц. Ограничивая доступ в зависимости от уровня привилегий. Существует 4 уровня привилегий для сегментов и 2 для страниц. Такая защита предотвращает возможность вносить изменения в области памяти, занятые ОС или более привилегированной программой. Процессор проверяет привилегии непосредственно перед каждым обращением к памяти и если происходит нарушение, вызывает исключение вида: #GP (Grand Protection). Когда процессор находится в защищенном режиме проверки привилегий выполняются всегда, и их нельзя отключить . но можно использовать во всех селекторах и дескрипторах максимальный уровень привилегий (нулевой). Создастся видимость отсутствия защиты.

Уровни привилегий в процессорах Intel:

  1. 0 – максимальный (для ОС)

  2. 1 и 2 – промежуточные уровни (для вспомогательных программ)

  3. 3 – минимальный (для пользовательских приложений)

Перед обращением к памяти процессор выполняет несколько типов проверок:

  1. Проверка лимитов

  2. Проверка типа сегментов

  3. Проверка привилегий

Прерывания и исключения.

В архитектуре процессоров Intel x86 предусмотрены особые случаи, когда процессор прекращает выполнение текущей программы и немедленно передает управление программе обработчику специально написанной для обработки таких ситуаций. Такие особые ситуации делятся на 2 типа:

  1. Прерывания

  2. Исключения

В зависимости от того, вызвало ли эту ситуацию какое-нибудь внешнее устройство или выполняемая команда. Исключения делятся на 3 типа:

  1. Ошибки – появляются перед выполнением команд

  2. Ловушки – происходят сразу после выполнения команд

  3. Остановы – возникают в любой момент и не предусматривают средств возврата управления в команду

для того, чтобы вызвать обработчик прерываний в программах используется команда INT. Практически команда int и подобные ей является исключениями-ловушками, поскольку адрес возврата, который передается обработчику указывает на следующую команду, но традиционно их практически всегда называют командами вызова прерываний

Обработчики прерываний и прерывания от внешних устройств.

Обычно обработчики прерываний применяют с целью обработки прерываний от внешних устройств и с целью обслуживания запросов других программ. При помощи собственных обработчиков можно справиться со многими особыми ситуациями. В реальном режиме есть вероятность столкнуться всего с 6 исключениями:

  1. Деление на 0, команда int 0

  2. Команда Int 1 – ловушка, возникающая после выполнения каждой команды если флаг TF установлен в 1.

  3. Переполнение – команда Int 4, возникает после выполнения команды, если флаг OF установлен в 1.

  4. Команда Int 5 – при адресации за границу сегмента

  5. Недопустимая команда – int 6, ошибка, возникающая при попытке выполнить команду, отсутствующую на данном процессоре

  6. Команда int 7 – ошибка, появляющаяся при попытке выполнить команду FPU, если FPU отсутствует

Рассмотрим прерывания от внешних устройств. Всего их на ПК 15, хотя теоретически архитектура позволяет использовать до 64. Будем рассматривать их в порядке убывания приоритета: прерывание имеет более высокий приоритет, когда другое прерывание ожидает его обработки :

  1. Команда int 8 – прерывание системного таймера, вызывается 18,2 раза в секунду

  2. Команда int 9 – прерывание клавиатуры, вызывается при каждом нажатии клавиш

  3. Команда int 70h – прерывание часов реального времени (всего 1024 раза в секунду)

  4. Команда int 71h-77h – прерывания, использующиеся дополнительными устройствами, например, звуковыми картами, IDЕ контроллерами и т.д.

  5. Int 0Bh-int 0Fh – прерывания, вызываемые, если контроллеры различных портов и дисководов получают данные.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]