Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен по ОС_Ответы.doc
Скачиваний:
51
Добавлен:
24.09.2019
Размер:
926.72 Кб
Скачать

24) Свопинг. Кэширование. (назначение, принцип работы механизма)

Свопинг

Виртуализация памяти может быть осуществлена на основе двух подходов – это виртуальная память и свопинг. Свопинг (swapping) – способ управления памятью, при котором образы процессов выгружаются на диск и возвращаются в оперативную память целиком. Свопинг представляет собой частный случай виртуальной памяти и, следовательно, более простой в реализации способ совместного использования оперативной памяти и диска. Однако подкачке свойственна избыточность.

Чтобы загрузить процессор вычислительными задачами, задачи ввода/вывода целесообразно сбросить на диск.

Кэш-память

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

Цель: увеличить скорость, понизить стоимость за счет размещения часто используемой информации в более быстром ЗУ.

Механизм кэша прозрачен для пользователя.

Кэш одновременно с памятью «прослушивает» запрос ЦП, но ответить (если данные есть) успевает быстрее.

Тег – адрес нескольких последовательно расположенных ячеек.

Последствия такой организации памяти для программиста: память разбивается на кэш-линии (несколько последовательных ячеек), следовательно, требуется выравнивание по границе кэш-линии.

Работа кэша основана на принципах пространственной и временной локальности, обеспечивающих высокий процент «попадания» в кэш.

tдоступа =p·tкэш + (1-p)·tпамяти; p~90%

Пространственная локальность: если обращение происходит по адресу At , то с большой долей вероятности в момент времени (t+1) происходит обращение по адресу (А±1).

Временная локальность: существует большая вероятность того, что в следующий момент времени (t+τ) произойдет обращение к этой же области с адресом А: Аt→A t.

25) *Реализация сегментного механизма управления памятью в процессорах семейства x86.

Средства аппаратной поддержки управления памятью Intel i386

Микропроцессоры семейства i386 имеют два режима работы: реальный (real mode) и защищенный (protected mode).

В защищенном режиме доступны сегментный и страничный механизмы виртуальной памяти.

В реальном режиме процессор работает, как и 8086, с расширенным набором команд.

Для работы в адресном пространстве 1МБ надо сформировать адрес определенным образом:

Этот режим (реальный) устанавливается по сбросу и используется для начальной инициализации системы. Путем записи управляющих битов в регистры командой MOV процессор переводится в защищенный режим. В защищенном режиме всегда включен сегментный механизм, и может быть установлен режим v86 (virtual 86), при котором процессор работает как несколько процессоров 8086 с общей памятью. Кроме того, в защищенном режиме может быть включен режим страничной адресации.

Лекция №14

Сегментный механизм

Структуры данных

а) Селектор

GDT – глобальная дескрипторная таблица

LDT – локальная дескрипторная таблица

б) Регистр GDTR

в) Дескриптор сегмента (данных/кода)

  • Регистр GDTR описывает положение глобальной дескрипторной таблицы в физической памяти. В нем указывается размер таблицы в байтах.

Поскольку в сегментном регистре на указание индекса дескриптора сегмента отводится 13 бит, всего сегментов 213 = 8192.

Размер дескриптора 8 байт; с учетом 8192 возможных сегментов, размер дескрипторной таблицы составит 8·8192 = 216 = 64 КБ.

  • Бит G определяет способ изменения размера сегмента (в байтах – G=0, или в страницах – G=1).

Если G=0, то размер сегмента 220 = 1 МБ (совместимость с 8086, используется в режиме v86).

Если G=1, то при 4КБ страницах, 4КБ·220 = 4 ГБ.

  • Бит D определяет выравнивание сегментов по 32-битной (D=1) или 16-битной границе (D=0).

  • Бит P – бит присутствия сегмента в физической памяти.

  • Бит DPL – уровень привилегий дескриптора, определяет, можем ли мы пользоваться дескриптором. Если CPL≤DPL – доступ разрешен.

  • Тип сегмента:

·S=0 – системные сегменты (LDT – локальная дескрипторная таблица; TSS – сегмент состояния задачи, в который отображается содержимое контекста при переключении задач; ловушки (шлюзы) вызова – специальные регистры, предназначенные для вызова высшего уровня привилегий с низшего, и т. д.).

·S=1 – пользовательские сегменты:

E=0 – сегмент данных;

Е=1 – сегмент кода;

ED – бит распространения сегмента:

ED=0 – в сторону старших адресов,

ED=1 – в сторону младших адресов (стек);

W – бит, указывающий, была ли запись в сегмент с момента последней очистки (устанавливается аппаратно, сбрасывается программно);

А – бит доступа к сегменту (А=1 – произошел доступ с момента загрузки);

С – бит подчинения (если C=1, то проверка CPL≤DPL игнорируется, и мы можем вызвать более привилегированный код);

R – возможность чтения кодового сегмента.

Если используется адресация из таблицы GDT, то индекс сдвигается влево на 3 разряда (т.к. дескриптор имеет размер 8 Б = 23), получается смещение в таблице GDT. Проверяем, не выходит ли смещение за границы таблицы (смотрим на младшие 16 разрядов GDTR, хранящих ее размер). Далее берем 32-битный адрес GDT и складываем с этими смещением. В итоге получается 32-битный адрес дескриптора в физической памяти. При этом определяется, присутствует ли сегмент в физической памяти и разрешен ли доступ к нему. Если доступ разрешен, то берется базовый адрес сегмента из дескриптора (“база”) и складывается со смещением из команды. Также на этой стадии производится контроль выхода за границу сегмента. Результатом является 32-битный адрес в физической памяти.

Если обращение идет через локальную дескрипторную таблицу LDT (см. соответствующий признак в селекторе), то используется регистр LDTR, который указывает на дескриптор LDT в глобальной дескрипторной таблице GDT. С использованием этого дескриптора вычисляется базовый адрес LDT в физической памяти. Далее преобразование происходит аналогичным способом.

Для увеличения скорости преобразования адреса каждому (из 6) сегментному регистру соответствует теневой 8-байтный (64 бита) регистр, хранящий дескриптор, соответствующий значению сегментного регистра.

Таким образом, для инициализации системы в защищенном режиме необходимо как минимум создать дескрипторную таблицу с одним входом и проинициализировать GDTR.

Если включен страничный механизм, то вычисленный 32-битный адрес подвергается дальнейшему преобразованию блоком управления страничной памятью.