Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АВМиС - бывшее АПЭВМ / apvem / всякаявсячина.doc
Скачиваний:
42
Добавлен:
15.09.2014
Размер:
670.72 Кб
Скачать

44.Многозадачный режим. Статические и динамические наборы

Для эффективной работы по защите многозадачности в МП 80386/80286 применяются специальные структуры данных. Для этого не требуется использование новых команд, управляющих многозадачностью. Используются обычные команды передачи управления, которые обращаются к специальным структурам данных. Регистры и структуры данных, которые поддерживают многозадачность, включают в себя сегмент состояния задачи (TSS);

дескриптор сегмента состояния задачи;

регистр задачи (TR);

дескриптор шлюза задачи.

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

1) при переключении задач может возникнуть прерывание и исключительная ситуация (если этого требует система). Микропроцессор не только автоматически переключается на программу обработки прерывания или исключительной ситуации, но и осуществляет автоматический возврат, когда прерывание или исключительная ситуация будут обслужены. Задачное прерывание может прервать выполнение менее приоритетных задач любой глубины;

2) с каждым переключением на другую задачу МП 80386/80286 могут также переключаться на иную LDT и на иное оглавление страницы. Задача также может иметь разное логико-линейное и линейно-физическое распределение памяти. Есть еще и другие средства защиты, с помощью которых задачи могут быть изолированы и защищены одна от другой.

В многозадачных операционных системах для обозначения задач - участников процесса переключения - приняты следующие термины:

1) задача, сменяющая текущую (выполняемую в данный момент), называется входящей;

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

45.Шлюз задач

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

Рис. 16. шлюз задачи.

Шлюзы задач, вызываемых по команде CALL, могут располагаться в таблицах GDT или LDT.

Существенное различие между вызовом подпрограммы и вызовом задачи. После возврата из подпрограммы при её повторном вызове мы войдём в процедуру в начальной точке входа. В аналогичном случае при возврате из задачи и её повторном вызове управление будет передано команде, находящейся сразу за командой IRET.

Это происходит потому, что при переключении задачи в сегменте TSS записывается содержимое регистров CS:IP на момент переключения задачи. Если задача была вызвана при помощи команды CALL и возврат (обратное переключение) было выполнено по команде IRET, в TSS записывается адрес CS:IP, указывающий на следующую после IRET команду. Вы можете поместить там команду безусловного перехода JMP на начало задачи и таким образом зациклить задачу. После этого вызов задачи станет похож на вызов подпрограммы.

Существует ещё одна очень интересная возможность для переключения задач - переключение задач по прерыванию.

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