Physics Faculty, Electronic Devices & Systems, 7th semester,2011
Dr. MokhovikovАрхитектура и система команд Intel-совместимых микропроцессоров.
Lection №4
Архитектура и система команд Intel-совместимых микропроцессоров.
Lection №4
Поля Task Status Segment:
● карта разрешения ввода/вывода;
● дескриптор шлюза задачи.
Резюме к лекции и список используемой литературы
Система команд Intel-совместимых микропроцессоров:
● общие понятия;
● описание сегмента состояния задачи;
● обращения процессора к памяти .
Страничное управление памятью:
● понятия свопинга;
● базовый механизм страничного управления.
Переключение задач
осуществляется
Программно
(командами CALL или JMP)
по прерываниям (например, от таймера)
Каждой задаче отводится определенный квант времени, после чего управление передается следующей задаче (и так циклически), в результате чего возникает иллюзия того, что все задачи выполняются враз.
http://x86.migera.ru/text/glava_5.html
команда JMP или CALL может передать управление либо дескриптору TSS, либо шлюзу задачи.
JMP dword ptr adr_sel_TSS(/adr_task_gate)
CALL dword ptr adr_sel_TSS(/adr_task_gate)
Задачей может быть как целая программа, так и ее часть (например, некоторая процедура), или программа обработки прерывания.
При переключении на выполнение новой задачи процессор сохраняет состояние текущей, с тем, что бы потом возобновить ее выполнение.
Поддержка многозадачности обеспечивается за счет следующих аппаратно поддерживаемых структур и элементов:
Сегмент состояния задачи (TSS)
Дескриптор сегмента состояния задачи
Регистр задачи (TR)
Дескриптор шлюза задачи.
Для сохранения состояния задачи определена такая структура, как сегмент состояния задачи
(TSS - Task State Segment),
может располагаться как в отдельном сегменте данных, так и внутри сегмента данных задачи
Поле TYPE для дескрипторов TSS имеет значение:
● 1 - доступный сегмент состояния задачи
● 3 - занятый сегмент состояния задачи
● 9 - доступный сегмент состояния задачи;
● B - занятый сегмент состояния задачи.
Селектор TSS текущей задачи хранится в регистре TR.
Регистр TR имеет "видимую" часть (т.е. часть, которую может считывать и изменять
программное обеспечение) и "невидимую" часть (т.е. часть, обслуживаемую процессором и недоступную программному обеспечению).
. Селектор, находящийся в видимой части, индексирует дескриптор TSS в GDT,
давайте рассмотрим как это происходит
RPL в данном селекторе не используется.
Если бит TI в селекторе сегмента = 1, то происходит выборка сегмента из локальной дескрипторной таблицы.
В этом случае регистр LDTR должен содержать селектор этой таблицы (индекс) – локальная дескрипторная таблица описывается дескриптором глобальной таблицы.
Сам же селектор (в котором TI=1) определяет дескриптор сегмента памяти, описанного в локальной дескрипторной таблице.
В регистре LDTR бит TI всегда нулевой – т.к. дескриптор-описатель локальной таблицы может находиться только в GDT.
Поля TSS делятся на
две основные категории:
Динамические поля, обновляемые
Процессором при каждом
переключении задачи.
В число этих полей входят:
● Регистры общего назначения
(EAX, ECX, EDX, EBX, ESP, EBP, ESI и EDI).
● Сегментные регистры
(ES, CS, SS, DS, FS и GS).
● Регистр флагов (EFLAGS).
● Указатель команд (EIP).
● Селектор для TSS
предыдущей задачи
(обновляется только когда ожидается возврат).
2. Статические поля, которые процессор
считывает, но не изменяет.
Эти поля устанавливаются при создании задачи:
● Селектор для LDT задачи.
● Логический адрес для стеков
привилегированных уровней 0,1,2.
● Бит T (бит отладочной ловушки), который,
будучи установленным, заставляет
процессор устанавливать
при переключении задачи
отладочное исключение.
● Базовый адрес битового массива разрешения
ввода/вывода.
При наличии, данный массив
всегда хранится в TSS по старшим адресам.
Базовый адрес указывает на начало массива.
Поле «Селектор» шлюза задачи индексирует дескриптор TSS.
RPL в данном селекторе не используется.
DPL шлюза задачи управляет доступом к дескриптору для переключения задачи.
Процедура не может выбрать дескриптор шлюза задачи до тех пор, пока RPL селектора и CPL процедуры не будут численно меньше или равны DPL дескриптора.
Тем самым предотвращается переключение задачи менее привилегированными, чем она сама, процедурами.
Отметим, что при использовании шлюза задачи DPL дескриптора TSS назначения не используется.
!
Возможны две модели переключения задач:
● прямое переключение задач;
● переключение задач с использованием шлюзов (косвенное переключение задач).
Переключение программ может производиться командами JMP и CALL типа FAR(так называемый дальний указатель, который определяется моделью памяти), командами вызова прерываний, например, INT n, или командой IRET.
Кроме этого, переключения задач могут инициироваться прерываниями и ловушками.
Модели переключения задач могут использоваться:
для переключения независимых программ при параллельном их выполнении в режиме разделения времени;
для вызова процедур;
для вызова программ обработки прерываний и ловушек;
для возврата из программ обработки прерываний и ловушек.
JMP dword ptr adr_sel_TSS(/adr_task_gate)
CALL dword ptr adr_sel_TSS(/adr_task_gate)
Термин "задача" здесь означает "выполняемая программа", вернее - "программа, находящаяся на стадии выполнения". В многопрограммном (многозадачном) режиме работы в стадии выполнения могут находиться несколько программ. Для каждой из них создается сегмент состояния задачи - TSS. Выполнение этих программ может производиться одним процессором в режиме разделения времени. Основным назначением механизма переключения задач является организация очередных переходов между выполняемыми программами.
http://www.internals.com/articles/protmode/introduction.htm
Отсутствие прямого взаимодействия программ при переходах с использованием механизма переключения задач позволяет значительно смягчить требования к доступности программ по условиям корректности переходов с изменением PL.
Но все проверки, непосредственно не связанные с PL, выполняются в том же объеме.
В случае использования команд JMP и CALL типа FAR селекторы этих команд должны выбирать дескриптор TSS и должно выполняться условие доступа прямого переключения: уровень привилегий TSS программы цели должен быть не выше уровня привилегий текущей программы и запроса, т.е.:
(CPL <= DPLTSS) & (RPL <= DPLTSS)
где DPLTSS - уровень привилегий сегмента TSS (берется из поля уровня привилегий дескриптора TSS).
http://zzak.ru/protection/r_4_28.htm
Загрузка селектора целевого TSS приводит к загрузке регистров процессора контекстом целевой задачи,
т.е. к переключению задач.
Переключение задачи по команде JMP или CALL типа FAR допускается, если уровень привилегий шлюза TSS не выше текущего уровня привилегий и уровня привилегий запроса, т.е.:
(CPL <= DPLШлTSS) & (RPL <= DPLШлTSS)
где DPLШлTSS - уровень привилегий шлюза задачи.
Операционная система, создавая шлюзы задач в глобальной или локальных таблицах дескрипторов с низкими PL, может допускать программы нижнего уровня привилегий к разрешенным сервисным процедурам.
При переключении задач с использованием шлюза дескриптор TSS целевой задачи определяется селектором шлюза задачи.
При этом, PL шлюза TSS и дескриптора TSS могут не совпадать.
=> использование шлюзов TSS допускает любые межуровневые переключения задач.
При использовании команд IRET, команды вызова прерываний, например, INT n или в случаях прерываний и ловушек, как прямое переключение задач, так и переключение задач с использованием шлюзов задач производится вне зависимости от значений, соответственно, DPLTSS или DPLШлTSS, т.е. без проверок условий доступа по уровням привилегий.
Если флаг сброшен, то выполняется обычный возврат из прерывания (через стек). Если флаг установлен, то команда IRET инициирует обратное переключение задач.
В случае использования команды CALL - возврат должен происходить по команде IRET,
которая сохраняет контекст завершаемой задачи и загружает контекст прерванной.
Алгоритм работы команды IRET в случае возврата из прерывания и в случае обратного
переключения задач различен. И определяется значением флага NT (Nested Task)
При выполнении процедуры переключения на новую задачу через шлюз или непосредственно через TSS, процессор сохраняет в TSS текущей задачи слово флагов и устанавливает в регистре флагов бит NT. Команда IRET, завершающая задачу, обнаруживает NT=1 и, вместо осуществления возврата через стек, инициирует механизм обратного переключения задач.
IRET – это POP-аналог
5. Когда в новой исполняемой задаче встретится команда IRET, она будет выполняться как обратное переключение задач (NT=1);
6. Контекст текущей задачи сохранится в ее TSS ;
7. В регистр TR загрузится селектор TSS исходной задачи (из поля связи TSS текущей задачи);
8. Регистры восстановится контекст исходной задачи.
При переключении задачи процессор выполняет следующую последовательность действий:
В то время как селекторы можно рассматривать как логические имена модулей кодов и данных, страницы представляют части этих модулей.
Учитывая обычное свойство локальности (близкого расположения требуемых ячеек памяти) кода и ссылок на данные, в оперативной памяти в каждый момент времени следует хранить только небольшие области сегментов, необходимые активным задачам.
Эту возможность (а следовательно, и увеличение допустимого числа одновременно выполняемых задач при ограниченном объеме оперативной памяти) как раз и обеспечивает страничное управление памятью.
Режимом страничной переадресации управляют биты PG в регистре CR0, флаги PAE и PSE в СR4 и бит размера страницы PS в PDE – элементе каталога страниц
Механизм имеет три части:
Каталог страниц (Page Directory),
Таблицы страниц (Page Table)
Собственно страницы (Page Frame).
Механизм включается установкой бита PG=1 в регистре CRO.
Регистр CR2 хранит линейный адрес отказа (Page Fault Linear Address) — адрес памяти, по которому был обнаружен последний отказ страницы.
Регистр CR3 хранит физический адрес каталога страниц (Page Directory Physical Base Address). Его младшие 12 бит всегда нулевые (каталог выравнивается по границе страницы).
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Используемая литература:
ЭВУ SUPER!!!
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть