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

Поддержка мультизадачности в МП i386. Сегмент состояния задачи



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

Мультизадачность однопроцессорной среды реализуется через механизм разделения времени, т.е. каждой задаче выделяется квант времени и создаётся иллюзия параллельности выполняющихся программ. Переключение задач в общем случае похоже на вызовы, но при этом хранится больше информации. Для поддержки мультизадачности в МП i386+ используется: TSS, дескриптор TSS, регистр задач и дескриптор шлюза задач. TSS служит для сохранения информации о задаче. Это сегмент данных для считывания и записи, к которому может обратиться только МП (доступ программы к нему запрещен). TSS определяется дескриптором.

U – User. B – бит занятости (Busy) – активна ли задача в данный момент. Предел-процессор может интерпретировать это поле двумя способами в зависимости от значения поля G (гранулярность).Если G = 0, то предел задает размер сегмента в байтах (от 1 байта до 1 Мбайта).Если G = 1, то предел задает размер сегмента в 4-Кбайтных параграфах (от 4 Кбайт до 4 Гбайт). DPL определяет того, кто имеет возможность переключения задач (обычно = 0). Бит присутствия сегмента в физической памяти. В-Бит размерности присутствует в дескрипторах сегментов данных. Он управляет следующими аспектами операций.Размерностью регистра указателя для стековых сегментов. Если B = 1, используется 32-битный указатель ESP. Если B = 0 — 16-битный указатель SP. База-задает положение сегмента в 4 Гбайтном (16М для Intel286) адресном пространстве.

Верхней границей расширяемого вниз сегмента. В расширяемых вниз сегментах нижняя граница задается полем LIMIT, а верхняя равна FFFFFFFFh, если B = 1, и FFFFh, если B = 0. Дескрипторы TSS размещается только в GDT и выбирается селектором, который находится в регистре TR.

Одновременно реализуется одна задача (процесс). Ей соответствует контекст (среда). Специальных команд переключения задач нет. Используются команды межсегментного перехода (JMP) или межсегментного вызова (CALL), а также прерывания, в том числе, особые случаи. JMP и CALL могут быть прямые — сразу с выходом на дескриптор TSS (сегмента состояния задачи) в GDT или косвенные — черезшлюз задачи ШЗ (в IDT). Переключение задач по прерываниям — только косвенное — через ШЗ. Обычный вызов подпрограммы CALL сохраняет содержимое нужных регистров в стеке, программы могут быть реентрантными (обладающими свойством повторной входимости). При переключении задач по CALL создается новая среда, содержимое EFLAGS сохраняется, но не в стеке, а в сегменте TSS. Задачи нереентрантны.

Различают два варианта сегмента TSS — 16- и 32-битный. В 16-битном размещается содержимое 8 регистров общего назначения (AX, BX, CX, DX, BP, SP, SI, DI), 4 сегментных регистров (CS, SS, DS, ES), 2 регистров IP, FLAGS, системного регистра LDT (LDTR), селектора адреса возврата («Обратная связь»), 3 пары (SS, SP) для 3 стеков. Три стека используются в связи с четырьмя уровнями (кольцами) привилегий так называемой защиты памяти по привилегиям — 0, 1, 2, 3.

Процедура переключения задач («выходящая» задача сменяется «входящей» задачей) связана с изменением содержимого системного регистра TR. Там будет находиться селектор виртуального адреса TSS. Индекс из этого селектора адресует дескриптор TSS (в GDT), сначала старый, потом — новый. Под управлением старого DTSS происходит выгрузка регистрового контекста в сегмент TSS выходящей задачи, а затем — под управлением нового DTSS — загрузка в регистры содержимого соответствующих элементов сегмента TSS входящей задачи.





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



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