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

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



При этом происходит полное переключение на новую задачу с вложением, то есть выполняются следующие действия:

Совершенно иначе осуществляется обработка прерываний в случае, если деск­риптором прерываний является коммутатор задачи. Формат коммутатора задачи (task gate) отличается от коммутаторов interrupt gate и trap gate, прежде всего, тем, что в нем вместо селектора сегмента кода, на который передается управле­ние, указывается селектор сегмента состояния задачи (TSS). Это иллюстрирует­ся с помощью рис. 3.14. В результате осуществляется процедура перехода на но­вую задачу с полной сменой контекста, ибо сегмент состояния задачи полностью определяет новое виртуальное пространство и адрес начала программы, а теку­щее состояние прерываемой задачи аппаратно (по микропрограмме микропро­цессора) сохраняется в ее собственном TSS.


1. Сохраняются все рабочие регистры процессора в текущем сегменте TSS, базо­
вый адрес этого сегмента берется в регистре TR (см. раздел «Адресация в 32-
разрядных микропроцессорах 180x86 при работе в защищенном режиме»).

2. Текущая задача отмечается как занятая.

3. По селектору из Task Gate выбирается новый TSS (поле селектора помещается
в регистр TR) и загружается состояние новой задачи. Напомним, что загру­
жаются значения регистра LDTR, EFLAGS, восемь регистров общего назна­
чения, указатель команды регистр EIP и шесть сегментных регистров.

4. Устанавливается бит NT (next task).

5. В поле обратной связи TSS помещается селектор прерванной задачи.

6. Значения CS:IP, взятые из нового TSS, позволяют найти и выполнить пер­
вую команду обработчика прерывания.

Таким образом, коммутатор task gate дает указание процессору произвести пере­ключение задачи, и обработка прерывания осуществляется под контролем от­дельной внешней задачи. В каждом сегменте TSS имеется селектор лока\льной дескрипторной таблицы LDT, поэтому при переключении задачи процессор за­гружает в регистр LDTR новое значение. Это позволяет обратиться к сегментам кода, которые абсолютно не пересекаются с сегментами кода любых других за­дач, поскольку именно локальные дескрипторные таблицы обеспечивают эффек­тивное изолирование виртуальных адресных пространств. Новая задача начина­ет свое выполнение на уровне привилегий, определяемом полем RPL нового содержимого регистра CS, которое загружается из сегмента TSS. Достоинством этого коммутатора является то, что он позволяет сохранить все регистры процес­сора с помощью механизма переключения задач, тогда как коммутаторы trap gate и interrupt gate сохраняют только содержимое регистров IFLAGS, CS и IP и со­хранение других регистров возлагается на программиста, разрабатывающего со­ответствующую программу обработки прерывания.

Справедливости ради следует признать, что, несмотря на возможности коммута­тора task gate, разработчики современных операционных систем достаточно ред­ко его используют, поскольку переключение на другую задачу требует сущест­венно больших затрат времени, а полное сохранение всех рабочих регистров часто и не требуется. В основном обработку прерываний осуществляют в контексте те­кущей задачи, так как это приводит к меньшим накладным расходам и повышает быстродействие системы.

Контрольные вопросы и задачи

Вопросы для проверки

1. Как в реальном режиме работы микропроцессоров 180x86 осуществляется
преобразование виртуального адреса в физический?

2. Какие механизмы виртуальной памяти используются в защищенном режиме
работы микропроцессоров 180x86?


3. Для чего в микропроцессоры 180x86 введен регистр-указатель задачи TR? Ка­
кой он разрядности?

4. Как в микропроцессорах i80x86 реализована поддержка сегментного способа
организации виртуальной памяти?

5. Что понимается под термином «линейный адрес»? Как осуществляется пре­
образование линейного адреса в физический? А может ли линейный адрес
быть равным физическому?

6. Что дало введение двухшаговой страничной трансляции в механизме стра­
ничного способа реализации виртуальной памяти? Как разработчики микро­
процессора i80386 решили проблему замедления доступа к памяти, которое
при двухшаговом преобразовании адресов очень существенно?

7. Что дало введение виртуального режима? Как в этом режиме осуществляется
вычисление физического адреса?

8. Что имеется в микропроцессорах i80x86 для обеспечения защиты адресного
пространства задач?

9. Что такое «уровень привилигий»? Сколько уровней привилегий имеется в
микропроцессорах 180x86? Для каких целей введено такое количество уров­
ней привилегий?

10. Что такое текущий уровень привилегий? Что такое эффективный уровень
привилегий?

11. Объясните правила работы с уровнями привилегий для различных типов сег­
ментов.

12. Поясните механизм шлюзования: для чего он предназначен, как осуществля­
ется передача управления на сегменты кода с другими уровнями привилегий.

13. Расскажите о работе системы прерываний микропроцессоров 180x86 в реаль­
ном режиме.

14. В чем заключаются основные принципиальные отличия работы системы пре­
рываний микропроцессоров 180x86 в защищенном режиме по сравнению с ре­
альным режимом?

15. Как осуществляется переход на программу обработки прерываний, если деск­
риптор прерываний является коммутатором прерываний?

16. Как осуществляется переход на программу обработки прерываний, если деск­
риптор прерываний является коммутатором перехвата?

17. Как осуществляется переход на программу обработки прерываний, если деск­
риптор прерываний является коммутатором задачи?





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



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