Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Работа системы прерываний в защищенном режиме работы процессора



В защищенном режиме работы система прерываний действует совершенно ина­че. Прежде всего, система прерываний микропроцессора 180x86 при работе в за­щищенном режиме вместо таблицы векторов, о которой мы говорили выше, име­ет дело с таблицей дескрипторов прерываний (IDT, interrupt descriptor table). Дело здесь не столько в названии таблицы, сколько в том, что таблица IDT пред­ставляет собой не таблицу с адресами обработчиков прерываний, а таблицу со специальными системными структурами данных (дескрипторами), доступ к ко­торой со стороны пользовательских (прикладных) программ невозможен. Толь­ко сам микропроцессор (его система прерываний) и код операционной системы могут получить доступ к этой таблице, которая представляет собой специальный сегмент, адрес и длина которого содержатся в регистре IDTR (см. рис. 3.2). Этот регистр аналогичен регистру GDTR в том отношении, что он инициализируется один раз при загрузке системы. Интересно заметить, что в реальном режиме ра­боты регистр IDTR так же указывает адрес таблицы прерываний, но при этом, как и в процессоре 18086, каждый элемент таблицы прерываний (вектор) зани-



мает всего 4 байта и содержит 32-битный адрес в формате селекторхмещение (CS:IP). Начальное значение этого регистра равно нулю, но в него можно зане­сти и другое значение. В этом случае таблица векторов прерываний будет нахо­диться в другом месте оперативной памяти. Естественно, что перед тем, как это сделать (занести в регистр IDTR новое значение), необходимо подготовить саму таблицу векторов. В защищенном режиме работы загрузку регистра IDTR может произвести только код с максимальным уровнем привилегий.

Каждый элемент в таблице дескрипторов прерываний, о которой мы говорим уже в защищенном режиме, представляет собой 8-байтовую структуру, более по­хожую на дескриптор шлюза (gate), нежели на дескриптор сегмента.

Как мы уже знаем, в зависимости от причины прерывания процессор автомати­чески индексирует таблицу прерываний и выбирает соответствующий элемент, с помощью которого и осуществляется перенаправление в исполнении кода, то есть передача управления на обработчик прерывания. Однако таблица IDT со­держит только шлюзы, а не дескрипторы сегментов кода, поэтому фактически получается косвенная адресация, но с использованием рассмотренного ранее ме­ханизма защиты с помощью уровней привилегии. Благодаря этому пользователи уже не могут сами изменить обработку прерываний, которая предопределяется системным программным обеспечением.

Дескриптор прерываний может принадлежать к одному из трех типов:

Q коммутатор прерывания (interrupt gate); Q коммутатор перехвата (trap gate); Q коммутатор задачи (task gate).

При обнаружении запроса на прерывание и при условии, что прерывания сейчас разрешены, процессор действует в зависимости от типа дескриптора (коммута­тора), соответствующего номеру прерывания. Первые два типа дескриптора пре­рываний вызывают переход на соответствующие сегменты кода, принадлежащие виртуальному адресному пространству текущего вычислительного процесса. По­этому про них говорят, что обработка прерываний по этим дескрипторам осуще­ствляется под контролем текущей задачи. Последний тип дескриптора — комму­татор задачи — вызывает полное переключение процессора на новую задачу со сменой всегр контекста в соответствии с сегментом состояния задачи (TSS). Рас­смотрим эти варианты.





Дата публикования: 2015-01-23; Прочитано: 871 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...