Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Переключение задач




Переключение задач осуществляется командами межсегментной передачи управления, при обработке прерываний и возврате из обработчиков. Если при этом управление передается дескриптору сегмента состояния задачи или шлюзу задачи, то происходит переключение задач. В соответствии с содержимым обязательной части TSS производится загрузка регистров МП, и он начинает выполнение поступившей задачи.

Шлюз задачи имеет следующий формат (рис. 6.5):


Рис. 6.5. Формат шлюза задачи

Он имеет статус системного объекта, и его тип, определенный в байте доступа, имеет значение 0101.

Переключение задач похоже на вызов процедуры, но при этом сохраняется больше информации. Информация о состоянии процессора сохраняется в TSS, а не в стеке.

Обращение к TSS осуществляется путем загрузки в регистр TR селектора, который адресует размещенный в GDT дескриптор TSS соответствующей задачи. Обычно команда LTR загрузки TR используется только при инициализации системы для установки начального содержимого TR.

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

При переключении задач проверяются привилегии, установленные для доступа к данным:

DPL' max (CPL, RPL),

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

Как правило, поле DPL дескриптора TSS равно 0, поэтому переключение задач могут производить только привилегированные программы.

Для переключения на задачи с большим приоритетом используется механизм шлюзов задач, аналогичный шлюзам вызова. При этом необходимо сохранение стеков более привилегированных задач, что и осуществляется с помощью сохранения SSi, ESPi в сегменте состояния задачи.

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

Рассмотрим теперь переключение задач более подробно на примере механизма прямого переключения (рис. 6.6).


Рис. 6.6. Механизм прямого переключения задач

В общем случае команда межсегментного перехода содержит 3 поля:

  • поле кода операции (JMP - безусловный переход, CALL - переход с возвратом),
  • селектор нового сегмента команд, который заносится в сегментный регистр CS, и
  • поле смещения, содержимое которого заносится в регистр - указатель команд EIP.

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

  1. В случае, когда тип дескриптора, определяемого вторым полем команды перехода, указывает, что данный дескриптор является дескриптором TSS и новая задача не занята (В = 0), запускается механизм переключения задач. В этом случае поле смещения в команде игнорируется.
  2. В теневом регистре регистра задач TR микропроцессора к данному моменту содержится дескриптор TSS исполняемой задачи. Его поле адреса указывает на область памяти, где должно быть сохранено состояние текущей задачи. Микропроцессор записывает в этот сегмент необходимую информацию.
  3. Дескриптор TSS новой задачи переписывается из глобальной таблицы дескрипторов в теневой регистр регистра задач микропроцессора. Этот дескриптор определяет положение в памяти сегмента состояния новой задачи.
  4. Информация о новой задаче переписывается из своего TSS в регистры микропроцессора.
  5. Если команда, вызвавшая переключение задач, предполагает последующий возврат к старой задаче (CALL), то в поле селектора возврата TSS входящей задачи заносится содержимое регистра TR снимаемой с обработки задачи. При этом устанавливается значение бита вложенной задачи NT = 1 в регистре флагов EFLAGS.
  6. В регистр TR микропроцессора из второго поля команды заносится селектор дескриптора TSS новой задачи.

Использование флага вложенной задачи NT и бита занятости B позволяет организовать корректную обработку вложенных задач. Порядок установки этих бит в зависимости от типа команды, вызвавшей переключение задач, указан в табл. 6.3.

Таблица 6.3. Модификация флагов занятости и вложенности при переключении задач  
Тип команды Входящая задача Выходящая задача  
Флаг NT в EFLAGS Бит в дескрипторе TSS Флаг NT в EFLAGS Бит в дескрипторе TSS  
CALL     X    
JMP     X    

Команда JMP при переключении на новую задачу не сохраняет в TSS селектор возврата и устанавливает NT = 0,а также B = 0 в дескрипторе старой задачи и B = 1 в дескрипторе новой задачи.

Команда CALL устанавливает B = 1 для новой задачи, но сохраняет B = 1 для предыдущей. Таким образом, каждая задача в цепи вызовов оказывается занятой, что запрещает применение рекурсивных процедур и реентерабельных программ.

Возврат из задачи осуществляется по команде IRET, которая анализирует флаг NT и при NT = 1 осуществляет переключение на задачу, задаваемую селектором возврата в TSS текущей задачи. При NT = 0 осуществляется обычная процедура возврата из процедуры с восстановлением из стека содержимого CS, EIP, EFLAGS.

Обычная команда RET возврата из подпрограммы не учитывает вложения задач.

Краткие итоги. В лекции рассмотрены принципы организации мультипрограммного режима обработки информации, представлены аппаратные средства микропроцессора, используемые для поддержки мультипрограммирования, разобран механизм переключения задач.

 




Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 1097; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.04 сек.