Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АСВТ ответы.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
36.62 Кб
Скачать
  1. Режимах работы 32-х разрядных процессоров, привилегии, шлюзы.

7.Функции арифметико-логических устройств и группы операций, выполняемых на алу.

АЛУ выполняет операции по преобразованию поступающей в него информации. В машинах малой и средней мощности, не имеющих отдельного блока для формирования физических адресов ОП, на АЛУ также возлагаются операции адресной арифметики.

Алгоритмы операций, выполняемых на АЛУ, включают определенную последовательность элементарных действий (микроопераций), среди которых различают прием кода операнда, преобразование этого кода, суммирование кодов двух операндов, сдвиг кода, логические операции над кодами и ряд других. Для выполнения этих действий в АЛУ имеются следующие функциональные узлы:

- регистры для временного хранения операндов;

- сдвигатели;

- преобразователи прямого кода в дополнительный и наобророт;

- сумматор, на котором реализуются арифметические и логические операции.

8. Механизм переключения задач. Формат сегмента tss.

Как отмечалось ранее, размер сегмента TSS должен быть не менее 104 байт. При обращении к дескриптору TSS МП проверяет записанный в дескрипторе размер, и если он меньше 104 байт, то генерируется прерывание. Однако сегмент TSS может иметь больший размер.

В этой дополнительной области сегмента TSS может, например, располагаться битовая карта ввода-вывода input-output map (см. ниже). Эту дополнительную область может использовать в своих целях системный программист. Например, в этой области системный программист может сохранять содержимое регистров арифметического сопроцессора. Переключая задачи, МП, для экономии времени, не сохраняет контекст сопроцессора. Если задача А переключилась на задачу В и обе они работают с сопроцессором, то очевидно, что задача В (если не принять мер) испортит контекст задачи А. Поэтому, переключаясь на новую задачу, МП автоматически устанавливает бит TS (задача переключена) в регистре CR0. При выполнении любой команды сопроцессора МП проверяет бит TS, и, если он установлен, то будет прерывание. Обработчик этого прерывания должен сохранить контекст сопроцессора, сбросить бит TS и обеспечить рестарт команды.

Далее рассмотрим формат сегмента TSS (рис. 3.19).

Дадим необходимые пояснения к рис. 3.19. Формат рисунка 4 байта по горизонтали. Слева от полей приведено смещение (0h, 4h и.т.д) относительно начала сегмента TSS. Назначение таких полей как EIP EDI и ES GS очевидно и их рассматривать не будем. Остальные поля либо неочевидны, либо имеют свою специфику.

Поле «обратной связи» (previous task link). Пусть задача А вызвала задачу В в качестве подпрограммы (командой call far). Естественно предполагать, что когда-нибудь потребуется возврат в задачу А. Чтобы куда-нибудь вернуться, нам потребуется адрес возврата. Адресом возв-рата будет селектор дескриптора сегмента TSS задачи А.

Однако задачи А и В ничем между собой не связаны и в общем случае задаче В этот селектор неизвестен. Поэтому, когда задача А вызывает задачу В командой call far, то МП автоматически загружает в поле обратной связи задачи В (входящей задачи) селектор дескриптора TSS задачи А.

31 16 15 0

0h Поле обратной связи

4h esp0

8h ss0

0ch esp1

10h ss1

14h esp2

18h ss2

1ch cr3

20h Eip

24h Ef

28h eax

2ch ecx

30h edx

34h ebx

38h esp

3ch ebp

40h esi

44h edi

48h es

4ch cs

50h ss

54h ds

58h fs

5ch gs

60h ldtr

64h База битовой карты ввода-вывода T

Рис. 3.19

Этот селектор МП берет из видимой части регистра tr. Тем самым обеспечивается возможность возврата в задачу А. Если переключение задач идет по команде jmp far, поле обратной связи входящей задачи заполняется нулями, так как возврат куда-либо не предполагается.

Назовите основные функциональные узлы АЛУ.

- регистры для временного хранения операндов;

- сдвигатели;

- преобразователи прямого кода в дополнительный и наобророт;

- сумматор, на котором реализуются арифметические и логические операции.

Форматы таблиц GDT, LDT, IDT

В архитектуре x86 есть три вида дескрипторных таблиц:

  • Глобальная дескрипторная таблица (англ. Global Descriptor Table, GDT);

  • Локальная дескрипторная таблица (англ. Local Descriptor Table, LDT);

  • Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT);

Дескриптор — это символическое имя, которое используется в программе Perl для представления файла, устройства, сокета или программного канала.

Глобальная дескрипторная таблица является общей для всех процессов. Её размер и расположение в физической памяти определяются регистром GDTR.

В отличие от GDTLDT может быть много (соответственно количеству задач (потоков), но не обязательно). Каждая задача может иметь свою. На расположение таблицы текущей задачи указывает регистр LDTR.

Таблица прерываний глобальна. Размещение в физической памяти определяется регистром IDTR.

Шлюзы

Шлюз ‑ структура, подобная дескриптору. Так же, как и дескрипторы, шлюзы занимают в памяти по 8 байт и располагаются в дескрипторных таблицах.

Шлюзы бывают четырех типов.

1. Шлюз вызова. Может располагаться в таблицах GDT и LDT. Предназначен для вызова привилегированных подпрограмм.

2. Шлюз задачи. Может располагаться в GDT, LDT и IDT (interrupt descriptor table) (дескрипторная таблица прерываний). Предназначен для переключения на привилегированную задачу.

3. Шлюз прерываний. Может располагаться только в IDT. Служит для вызова обработчика внешнего прерывания. При переходе через этот шлюз флаг if сбрасывается в ноль, т.е. запрещаются внешние прерывания.

4. Шлюз ловушки. Может располагаться только в IDT. Служит для вызова обработчика внутреннего прерывания (особого случая). Практически аналогичен шлюзу прерываний, только внешние прерывания не запрещаются.

TLB - буффер.

Буфер ассоциативной трансляции (англ. Translation lookaside buffer, TLB) — это специализированный кэш центрального процессора, используемый для ускорения трансляции адреса виртуальной памяти в адрес физической памяти. TLB используется всеми современными процессорами с поддержкой страничной организации памяти. TLB содержит фиксированный набор записей (от 8 до 4096) и является ассоциативной памятью. Каждая запись содержит соответствие адреса страницы виртуальной памяти адресу физической памяти. Если адрес отсутствует в TLB, процессор обходит таблицы страниц и сохраняет полученный адрес в TLB, что занимает в 10—60 раз больше времени, чем получение адреса из записи, уже закешированной TLB. Вероятность промаха TLB невысока и составляет в среднем от 0,01 % до 1 %.

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

Получение селектор TSS новой задачи либо как операнда в командах CALL, JMP, либо из дескриптора шлюза задачи, либо из поля LINK сегмента состояния текущей задачи (если переключение задач инициализировано командой IRET).

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

Проверка дескриптора TSS новой задачи (сегмент присутствует и имеет корректный предел, не менее 67h для 32-битного TSS).

Проверка того, что новая задача своботна (CALL, JMP, особая ситуация или прерывание) или занята (IRET).

Проверка того, что TSS текущей (старой) задачи, TSS новой задачи и все дескрипторы, используемые при переключении задач, отображены страничным механизмом на физическую память (т.е. присутствуют в памяти).

Очистка бита занятости задачи в TSS старой задачи, если переключение задач инициировано командами JMP или IRET (для CALL, особой ситуации или прерывания бит занятости остается установленным).

Производится сохранение контекста старой задачи. Процессор определяет базовый адрес TSS текущей задачи по значению в регистре TR и затем последовательно сохраняет дянные из всех регистров общего назначения, селекторы из сегментных регистров, значение регистра EFLAGS (причем, если переключение задач инициировано командой IRET, процессор очищает флаг NT в сохраняемой копии регистра EFLAGS), значение указателя команд EIP и т.д.

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

Если переключение задач было инициировано командой CALL, прерыванием или особой ситуацией, то процессор копирует селектор TSS старой задачи в поле LINK сегмента TSS новой задачи и устанавливает флаг NT в образе регистра EFLAGS, хранимом в TSS новой задачи.

Если переключение задач было инициировано командами CALL, JMP, прерыванием или особой ситуацией, процессор устанавливает флаг занятости B в дескрипторе TSS новой задачи.

Устанавливается флаг TS в регистре CR0.

Производится запись в регистр TR значений селектора и дескриптора (в скрытую часть) TSS новой задачи.

Производится чтение контекста новой задачи из TSS. Считываются значения всех регистров общего назначения, сегментных регистров, регистра флагов EFLAGS, указателя команд EIP и др. (в т.ч. значения для регистров LDTR, CR3).

Начинается выполнение команд новой задачи

Битовая карта ввода-вывода.