Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vse_otvety_bakalavry.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.58 Mб
Скачать
  1. Сегментно-страничная структуризация памяти

Исходное непрерывное адресное пространство сначала подвергается структурированию фиксированными страницами. Далее сегмент рассматривается уже как некоторая непрерывная последовательность номеров страниц в промежуточном странично-структурированном адресном пространстве. Размер сегмента — это количество страниц, входящих в состав сегмента. Каждый сегмент также имеет свой уникальный номер s. Затем в пределах каждого сегмента происходит перенумерация страниц, начиная с нуля в возрастающем порядке. Поскольку размеры сегментов (в количестве страниц) различны, то по номеру сегмента (если проводить нумерацию сегментов в возрастающем порядке) невозможно определить его базовый адрес. Поэтому при формировании сегмента в адресном пространстве ему должен быть назначен базовый адрес As0. Адрес в полученном сегментно-структурированном адресном пространстве задается с помощью четырех координат: s — номер сегмента; Аs0 — базовый адрес сегмента; R' — номер страницы в пределах сегмента; R — смещение в пределах страницы.

Для перехода от такого структурного адреса к непрерывному необходимо сначала выполнить операцию соответствия, т. е. назначить сегменту базовый адрес Аs0. Затем, используя операцию «база — плюс — смещение», найти базовый адрес страницы в составе сегмента: AR’=As0 + R'L. Далее, к найденному базовому адресу страницы необходимо применить операцию конкатенации — присоединить значение смещения, если размер страницы был кратен 2.

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

  1. Поддержка мультизадачности в мп 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 входящей задачи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]