![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
При этом происходит полное переключение на новую задачу с вложением, то есть выполняются следующие действия: |
Совершенно иначе осуществляется обработка прерываний в случае, если дескриптором прерываний является коммутатор задачи. Формат коммутатора задачи (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; Прочитано: 564 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!