- Lektsia - бесплатные рефераты, доклады, курсовые работы, контрольные и дипломы для студентов - https://lektsia.info -

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



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

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

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

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

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

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

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

 
 

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

 

Рис.3.14. Схема передачи управления при прерывании с переключением на новую задачу

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

ГЛАВА 4 Управление