Скачать 1.73 Mb.
|
Система прерываний 32-разрядных микропроцессоров i80x86. Работа системы прерываний в реальном режиме Вопросы
Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы. Т.е. это процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возвратом к прерванной программе. Нажимая клавишу на клавиатуре, мы инициируем немедленный вызов программы, которая распознает клавишу, заносит ее код в буфер клавиатуры, из которого он считывается другой программой. Т.е. на некоторое время микропроцессор прерывает выполнение текущей программы и переключается на программу обработки прерывания, так наз. обработчик прерывания. После того, как обработчик прерывания завершит свою работу, прерванная программа продолжит выполнение с точки, где было приостановлено ее выполнение. Адрес программы-обработчика прерывания вычисляется по таблице векторов прерываний. Механизм прерываний поддерживается на аппаратном уровне. Классификация прерываний В зависимости от источника, прерывания делятся на
Общая классификация прерываний
(по существу - это группа аппаратных прерываний) Вложенных прерываний нет!
Внешние прерывания возникают по сигналу какого-нибудь внешнего устройства. Внешние прерывания подразделяются на немаскируемые и маскируемые. В связи с тем, что существуют два специальных внешних сигнала среди входных сигналов процессора, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (no mask interrupt, немаскируемое прерывание) и INTR (interrupt request, запрос на прерывание). Маскируемые прерывания генерируются контроллером прерываний по заявке определенных периферийных устройств. Контроллер прерываний (выполнен в виде специальной микросхемы i8259A) поддерживает восемь уровней (линий) приоритета; к каждому уровню “привязано” одно периферийное устройство. Именно маскируемые прерывания часто называют аппаратными прерываниями. В ПК, начиная с IBM PC AT, построенных на базе микропроцессора i80286, используются два контроллера прерываний i8259A; они соединяются последовательно каскадным образом, что увеличивает количество внешних источников прерываний до 15 (каждая по 8). Обратим внимание. Микросхема i8259А является программируемой. Немаскируемые прерывания (говорят, что оно одно, т.к. подается на вывод микропроцессора NMI) инициируют источники, требующие безотлагательного вмешательства со стороны микропроцессора. ! В реальном и защищенном режиме работы микропроцессора обработка прерываний осуществляется принципиально разными методами. Система прерываний. Аппаратные и программные средства системы прерываний Система прерываний - это совокупность программных и аппаратных средств, реализующих механизм прерываний. К аппаратным средствам системы прерываний относятся:
К программным средствам системы прерываний Реального режима относятся:
Занимает первый килобайт ОП (адреса 00000h-003FFh). Она содержит адреса (векторы - «векторы», т.к. два значения для указания адреса) обработчиков прерываний и состоит из 256 (0..255) элементов по 4 байта каждый: - 2 байта - новое значение для регистра IP - 2 байта - новое значение для регистра CS. Расположение таблицы векторов прерываний в процессорах i80286 и старше определяется значением регистра IDTR. Таблица векторов прерываний инициализируется при запуске системы, но в принципе может быть изменена и перемещена. Каждый вектор имеет свой номер и называется номером прерывания.
Обработка прерывания в реальном режиме производится в три этапа:
Должно произойти так, чтобы потом вернуться и продолжить работу. Для этого необходимо сохранить содержимое регистров, так как они являются ресурсами, разделяемыми между программами. Обязательными для сохранения являются регистры cs, ip, flags (пара CS:IP содержит адрес команды, с которой необходимо начать выполнение после возврата, flags - состояние флагов после выполнения последней команды прерванной программы). !!! Эти регистры сохраняются микропроцессором автоматически. Сохранение остальных регистров - должно обеспечиваться программистом !!! Наиболее удобным местом хранения регистров является стек. После сохранения регистров в стеке микропроцессор сбрасывает бит флага IF (т.е.=0) (!!! В стеке при этом записан регистр flags с еще установленным IF!!!) Этим предотвращается возможность возникновения вложенных внешних прерываний и порча регистров исходной программы вследствие неконтролируемых действий со стороны программы - обработчика вложенного прерывания. После того как необходимые действия по сохранению контекста завершены, обработчик аппаратного прерывания может разрешить вложенные прерывания командой sti.
Здесь определяется источник прерывания и вызывается соответствующий обработчик прерывания. В реальном режиме микропроцессора допускается 256 источников - по кол-ву элементов таблицы векторов прерываний. Структура элемента:
Как определить адрес, по которому находится вектор прерывания с номером N ? смещение эл-та таблицы векторов прерываний = N * 4 Полный размер таблицы ? 4*256=1024 Итак на втором этапе микропроцессор
Далее выполняется сама программа обработки прерывания. (Она тоже может быть прервана поступлением запроса от более приоритетного источника. Все источники прерывания имеют приоритеты.) 3) возврат управления прерванной программе. Необходимо привести стек в состояние, в котором он был сразу после передачи управления данной процедуре. Для этого программист должен указать необходимые действия по восстановлению регистров и очистке стека. !! Этот участок необходимо защитить от возможного искажения содержимого регистров (в результате появления аппаратного прерывания) с помощью команды cli. Последние команды в в обработчике прерывания - sti, iret sti - разрешить аппаратные прерывания (устанавливает флаг IF=1, не имеет операндов). iret - извлечь последовательно три слова из стека и поместить их соответственно в регистры ip, cs, flags. Лекция №13 Система прерываний 32-разрядных микропроцессоров i80x86. Работа системы прерываний в защищенном режиме Вопросы
Обработка прерываний в защищенном режиме отличается от обработки в реальном режиме так же сильно, как и защищенный режим отличается от реального. Потому что:
Классификация прерываний в защищенном режиме Прерывания и исключения можно разделить на несколько групп:
Это деление производится в соответствии со следующими признаками:
Исходя из этих признаков, можно дать следующие характеристики вышеперечисленным группам: Сбой (ошибка) — прерывание или исключение, при возникновении которого в стек записываются значения регистров cs: ip, указывающие на команду, вызвавшую данное прерывание. Это позволяет, получив доступ к сегменту кода, исправить ошибочную команду в обработчике прерывания и, вернув управление программе, фактически осуществить ее рестарт (вспомните, что в реальном режиме при возникновении прерывания в стеке всегда запоминается адрес команды, следующей за той, которая вызвала это прерывание). Ловушка — прерывание или исключение, при возникновении которого в стек записываются значения регистров cs: ip, указывающие на команду, следующую за командой, вызвавшей данное прерывание. Так же, как и в случае ошибок возможен рестарт программы. Для этого необходимо лишь исправить в обработчике прерывания соответствующие код или данные, послужившие источником ошибки. После этого перед возвратом управления нужно скорректировать значение ip в стеке на длину команды, вызвавшей данное прерывание. Механизм ловушек похож на механизм прерываний в реальном режиме, хотя не во всем. Здесь есть один тонкий момент. Если прерывание типа ловушки возникло в команде передачи управления jmp, то содержимое пары cs: ip в стеке будет отражать результат этого перехода, то есть соответствовать команде назначения. Аварийное завершение — прерывание, при котором информация о месте его возникновения недоступна или неполна и поэтому рестарт практически невозможен, если только данная ситуация не была запланирована заранее. Þ соответствующие программы-обработчики ошибок, ловушек и аварий будут отличаться алгоритмами работы. Микропроцессор жестко определяет, какие прерывания являются ошибками, ловушками и авариями. Замечания. Для некоторых номеров прерываний в реальном режиме возможны 2 источника прерывания (развитие микропроцессоров). Некоторые прерывания при своем возникновении дополнительно генерируют и записывают в стек так называемый код ошибки. Этот код может впоследствии использоваться для установления источника прерывания. Код ошибки записывается в стек вслед за содержимым регистров eflags, cs и eip. Þ можно распознать истинный источник прерывания (если есть неоднозначность). Таблица дескрипторов прерываний IDT Вместо таблицы векторов прерываний система прерываний имеет дело с таблицей дескрипторов прерываний (IDT, interrupt descriptor table) Таблица IDT связывает каждый вектор прерывания с дескриптором процедуры или задачи, которая будет обрабатывать это прерывание. Элементами таблицы IDT являются дескрипторы - Размер дескриптора = 8 байтам. (Т.е. формат таблицы IDT подобен формату GDT и LDT.) Дескрипторы в таблице прерываний обычно называются шлюзами (иногда коммутаторами). Шлюзы предназначены для указания точки входа в программу обработки прерывания. В дескрипторной таблице прерываний IDT могут содержаться шлюзы трех типов:
Физически микропроцессор отличает шлюзы по содержимому полей. Особенности таблицы IDT:
(в таблице GDT отсутствует)
В таблицах GDT и LDT порядок описания дескрипторов роли не играет, хотя и допускается наличие некоторых соглашений по их упорядоченности;
В отдельных случаях есть смысл описывать все 256 дескрипторов этой таблицы, формируя для неиспользуемых номеров прерываний шлюзы-заглушки. Это позволит корректно обрабатывать все прерывания, даже если они и не планируются к использованию в данной задаче. Если этого не сделать, то при незапланированном прерывании с номером, превышающим пределы IDT для данной задачи, будет возникать исключительная ситуация общей защиты (с номером 13 (ODh)). Адрес и длина таблицы IDT содержатся в регистре idtr. Заметим, что в реальном режиме регистр idtr также содержит адрес таблицы прерываний, но при этом каждый вектор занимает 4 байта и содержит 32-разрядный адрес в формате CS:IP. Начальное значение этого регистра равно нулю, но внего можно занести и другое значение. !Þ Возможно произвольное размещение в памяти этой таблицы не только в защищенном режиме, но и реальном. В защищенном режиме произвести загрузку регистра idtr может только код с максимальным уровнем привилегий. ! Доступ к таблице IDT со стороны пользовательских (прикладных) программ невозможен. |
Техническое задание на разработку программного обеспечения, используемого... Государственное образовательное учреждение высшего профессионального образования Академия народного хозяйства |
Инструкция по установке программного обеспечения ас «Поликлиника» «Поликлиника» поставляется в виде исполняемых модулей и дополнительного программного обеспечения сторонних производителей на компакт-диске.... |
||
Программа дисциплины «Системное программное обеспечение» для специальности... Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 230101. 65 «Вычислительные... |
Программа дисциплины «Системное программное обеспечение» для специальности... Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 230101. 65 «Вычислительные... |
||
Программа дисциплины «Системное программное обеспечение» для специальности... Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 230101. 65 «Вычислительные... |
Инструкция программное обеспечение для лазерного гравера Qualitech rdca 0 Система управления лазерным гравером включает в себя материнскую плату, lcd дисплей и программное обеспечение. Данная инструкция... |
||
1. Коммерческие условия поставки программного обеспечения Программное обеспечение Adobe, графические и видео редакторы, издательские системы, средства web-разработки 6 |
1. Коммерческие условия поставки программного обеспечения Программное обеспечение Adobe, графические и видео редакторы, издательские системы, средства web-разработки 7 |
||
Техническое задание Предмет закупки: продление лицензий Программное обеспечение для защиты рабочих мест пользователей от вредоносного программного обеспечения |
Лекция 1 Молчанов А. Ю. Системное программное обеспечение. Лабораторный практикум: – спб.: Питер, 2005. – 284 с |
||
Вопросы для подготовки к экзамену по профессиональному модулю пм.... Дисциплины: мдк. 09. 01 Установка и настройка системного программного обеспечения компьютерных систем и комплексов |
2 2 Ключевые вопросы сопровождения программного обеспечения 152 Программная инженерия и сущность инженерного подхода к созданию программного обеспечения 9 |
||
Задачах программирования лабораторный практикум по дисциплине «Системное... Методические указания предназначены для подготовки дипломированных специалистов направления 230100 «Информатика и вычислительная... |
Порядок действий при утрате/повреждении ключа шифрования программного обеспечения ViPNet Client Рением «. dst») программного обеспечения ViPNet Client производится в случае утраты ключевого носителя с записанным ключом шифрования... |
||
Методические рекомендации по выполнению внеаудиторной самостоятельной... ПМ. 01 Разработка программных модулей программного обеспечения для компьютерных систем |
Расчетов за услуги связи «Fastcom» версия 12 Руководство системного... Бпо – Базовое программное обеспечение программное обеспечение фирмы oracle, необходимое для функционирования ппо |
Поиск |