
- •Процессор Intel в реальном режиме.
- •Регистры процессора.
- •Сегментные регистры.
- •Регистр флагов.
- •Способы адресации.
- •Архитектура компьютера.
- •Основные блоки процессора.
- •Организация памяти в микропроцессоре.
- •Страничная адресация. Адресация в защищенном режиме.
- •Механизм защиты.
- •Прерывания и исключения.
- •Обработчики прерываний и прерывания от внешних устройств.
- •Контроллер прерываний.
- •Прерывания в защищенном режиме.
- •Программирование на уровне портов ввода-вывода.
- •Маскирование и размаскирование.
- •Получение доступа к портам в Windows 2000/xp
- •Оперативная память.
- •Устройство и принципы функционирования озу
- •Типы микросхем памяти.
Страничная адресация. Адресация в защищенном режиме.
Для любого обращения к памяти процессора Intel используется 16ти битный селектор (указатель) сегмента и 32ух битный адрес внутри сегмента, при этом, если включен режим страничной адресации необходимо преобразование линейного адреса в физический. Если режим страничной адресации отключен, то достаточно преобразования логического адреса в линейный, т.к. он в этом случае совпадает с физическим. Архитектура микропроцессора 386 и выше допускает несоблюдение прямого соответствия между границами страниц и сегментов.
Механизм защиты.
Защитный механизм может действовать как на уровне сегментов, так и на уровне страниц. Ограничивая доступ в зависимости от уровня привилегий. Существует 4 уровня привилегий для сегментов и 2 для страниц. Такая защита предотвращает возможность вносить изменения в области памяти, занятые ОС или более привилегированной программой. Процессор проверяет привилегии непосредственно перед каждым обращением к памяти и если происходит нарушение, вызывает исключение вида: #GP (Grand Protection). Когда процессор находится в защищенном режиме проверки привилегий выполняются всегда, и их нельзя отключить . но можно использовать во всех селекторах и дескрипторах максимальный уровень привилегий (нулевой). Создастся видимость отсутствия защиты.
Уровни привилегий в процессорах Intel:
0 – максимальный (для ОС)
1 и 2 – промежуточные уровни (для вспомогательных программ)
3 – минимальный (для пользовательских приложений)
Перед обращением к памяти процессор выполняет несколько типов проверок:
Проверка лимитов
Проверка типа сегментов
Проверка привилегий
Прерывания и исключения.
В архитектуре процессоров Intel x86 предусмотрены особые случаи, когда процессор прекращает выполнение текущей программы и немедленно передает управление программе обработчику специально написанной для обработки таких ситуаций. Такие особые ситуации делятся на 2 типа:
Прерывания
Исключения
В зависимости от того, вызвало ли эту ситуацию какое-нибудь внешнее устройство или выполняемая команда. Исключения делятся на 3 типа:
Ошибки – появляются перед выполнением команд
Ловушки – происходят сразу после выполнения команд
Остановы – возникают в любой момент и не предусматривают средств возврата управления в команду
для того, чтобы вызвать обработчик прерываний в программах используется команда INT. Практически команда int и подобные ей является исключениями-ловушками, поскольку адрес возврата, который передается обработчику указывает на следующую команду, но традиционно их практически всегда называют командами вызова прерываний
Обработчики прерываний и прерывания от внешних устройств.
Обычно обработчики прерываний применяют с целью обработки прерываний от внешних устройств и с целью обслуживания запросов других программ. При помощи собственных обработчиков можно справиться со многими особыми ситуациями. В реальном режиме есть вероятность столкнуться всего с 6 исключениями:
Деление на 0, команда int 0
Команда Int 1 – ловушка, возникающая после выполнения каждой команды если флаг TF установлен в 1.
Переполнение – команда Int 4, возникает после выполнения команды, если флаг OF установлен в 1.
Команда Int 5 – при адресации за границу сегмента
Недопустимая команда – int 6, ошибка, возникающая при попытке выполнить команду, отсутствующую на данном процессоре
Команда int 7 – ошибка, появляющаяся при попытке выполнить команду FPU, если FPU отсутствует
Рассмотрим прерывания от внешних устройств. Всего их на ПК 15, хотя теоретически архитектура позволяет использовать до 64. Будем рассматривать их в порядке убывания приоритета: прерывание имеет более высокий приоритет, когда другое прерывание ожидает его обработки :
Команда int 8 – прерывание системного таймера, вызывается 18,2 раза в секунду
Команда int 9 – прерывание клавиатуры, вызывается при каждом нажатии клавиш
Команда int 70h – прерывание часов реального времени (всего 1024 раза в секунду)
Команда int 71h-77h – прерывания, использующиеся дополнительными устройствами, например, звуковыми картами, IDЕ контроллерами и т.д.
Int 0Bh-int 0Fh – прерывания, вызываемые, если контроллеры различных портов и дисководов получают данные.