Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СПО (Корнилов) / Лекции / вар2 / Операционные системы (Корнилов)

.pdf
Скачиваний:
55
Добавлен:
17.04.2013
Размер:
2.11 Mб
Скачать

СПО Лекция 1 [23.12.04]

 

71

Номер

Номер

Атрибуты

виртуальной

физической

 

 

страницы

страницы

 

 

0

0x7

 

 

1

 

 

 

0x2

 

 

2

 

 

 

0xF

 

 

 

 

 

 

 

 

N

 

 

 

0x5

 

 

Например, виртуальному адрес 0x2120 соответствует физический адрес 0xF120.

Если в виртуальном адресном пространстве есть промежутки между страницами, то в таблице страниц для них должны быть сформированы «пустые» элементы, т.е. элементы, для которых нет физических страниц.

Размер страницы? Если страница маленькая, то будет большая таблица страниц. Если страница большая, то часть страницы не используется (внутренняя фрагментация).

Преимущества:

-простое распределение, нет фрагментация памяти

-легко организовать общую разделяемую память на уровне отдельных страниц

-легко увеличивать размер памяти процесса

Недостатки:

-«дырявое» виртуальное адресное пространство приводит к большой таблице страниц

Сегментно-страничная схема организации памяти

Сочетает в себе преимущества двух предыдущих схем организации памяти. Цена за этодвухуровневая трансляция виртуального адреса. Адресное пространство процесса описывается двухуровневым деревом таблиц: на нижнем уровне – таблицы страниц, на верхнем – таблица сегментов.

Таблица сегментов описывает положение в памяти и размер всех таблиц страниц процесса. Каждая таблица страниц, как и ранее, содержит ссылки на номера физических страниц памяти.

СПО Лекция 1 [23.12.04]

72

 

 

 

 

 

 

 

 

 

Виртуальный адрес делится на три части: номер сегмента (индекс в таблице сегментов), номер страницы (индекс в таблице страниц соответствующего сегмента), смещение внутри страницы.

Сегмент – непрерывная область виртуальной памяти, состоящая из нескольких страниц. В физической памяти страницы сегмента могут быть разбросаны произвольно.

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

Преимущества:

-все преимущества страничной и сегментной схемы

Недостатки:

-сложная схема вычисления адреса (для вычисления адреса требуется два обращения к памяти)

Странично - страничная схема организации памяти

Другой подход к решению проблемы промежутков в виртуальном адресном пространстве состоит в странично – страничной схеме организации памяти.

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

СПО Лекция 1 [23.12.04]

73

Пусть m=10, n=10, k=12. Размер страницы – 4096 байт.

Каталог таблиц страниц должен быть полным, т.е. содержать все 2m-1 элемента. Максимальный размер каталога в данном случае – 1024 элемента или 4096 байт.

Таблицы страниц создаются только для «непустых» участков виртуальной памяти. Максимальный размер таблицы страниц – 1024 x 4096, т.е. 4Mb.

Преимущества:

Инвертированные таблицы страниц

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

Преимущества:

-быстрое определение номера физической страницы

-размер таблицы страниц пропорционален размеру используемой памяти

Недостатки:

-разрешение коллизий, свойственных хэш-функции

Лекция 14. Управления виртуальной памятью. Кэширование. Методы загрузки и замещения страниц

9Кэш транслированных адресов

СПО Лекция 1 [23.12.04]

74

9Методы поиска в TLB

9Кэширование памяти и TLB

9Методы загрузки страниц

9Методы замещения страниц

9Реализации LRU стратегии

Кэш

Копия данных, к которой доступ осуществляется быстрее, чем к оригинальным данным. Ускоряет доступ к часто используемым данным и не влияет на время доступа к редко используемым данным.

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

Кэш транслированных адресов

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

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

Устройство управления памятью современных процессоров поддерживает небольшой аппаратный буфер для хранения недавно транслированных номеров страниц: TLB (Translation Lookaside Buffer). Время выборки из этого буфера 5-10 наносекунд. время выборки из памяти -сотни наносекунд.

Пример TLB для простой страничной памяти

Номер виртуальной

Номер физической

Флажки

страницы

страницы

 

2

1

valid, rw

-

-

invalid

0

4

valid, rw

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

Методы поиска в TLB

1.Последовательный поиск по TLB. Долго.

2.Прямое отображение. Номеру виртуальной страницы ставится в соответствие (хэш функция) слот TLB. Если два номера отображаются на один слот, то могут возникнуть проблемы. например, если выполняемая страница кода конфликтует со страницей стека. Хэш функция призвана минимизировать вероятность такого рода конфликтов.

СПО Лекция 1 [23.12.04]

75

 

 

 

 

 

 

3. Ассоциативные таблицы. Поиск проводится параллельно по всем таблицам и если искомый элемент находится в одной из таблиц, то трансляция не выполняется. Чем больше уровень ассоциативности (больше параллельных таблиц), тем меньше вероятность конфликта, т. к. два требуемых одновременно элемента могут быть размещены в разных буферах.

virtual page #

4. Полностью ассоциативные таблицы. Размер буфера = одному элементу.

Методы работы с TLB и с другими видами кэшей очень похожи. Разница состоит в уровне ассоциативности и методах замещения элементов в кэше. TLB обычно реализуются в виде полностью ассоциативных таблиц.

СПО Лекция 1 [23.12.04]

76

Методы замещения для TLB.

Если применяется прямое отображение, то выбора для замещения нет. Замещается тот элемент на который

осуществлено отображение.

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

TLB часто применяют метод случайного замещения. Этот метод прост и не требует хранения дополнительной информации об обращениях к элементу.

Примечание. При переключении контекста между процессами необходимо полностью сбрасывать TLB (Виртуальные номера страниц разных процессов могут совпадать). Однако. если при вызове хэш функции добавить к номеру страницы идентификатор процесса, то можно избежать сброса TLB при переключении контекста.

Кэширование памяти и TLB

При кэшировании памяти вводится кэш значений для виртуальных адресов. Этот кэш располагается в памяти. В современных системах оперативная память рассматривается как кэш виртуальной памяти, которая распределяется на диске. Таким образом имеем следующую схему.

Две стратегии поведения при замещении модифицированных значений.

write-through - измененные значения сразу записываются на свое место

write-back - запись измененных значений задерживается на время или до момента замещения. Обеспечивает большую эффективность, но опасно применять к ненадежным системам. Например, отложенная запись при кэшировании файловой системы может привести к потере данных или разрушению файловой системы.

Методы загрузки и замещения страниц

СПО Лекция 1 [23.12.04]

77

Методы загрузки страниц

Статистика выполнения программ такова: 90% времени используется 10% кода программы. Нет необходимости держать в памяти всю программу. Поэтому виртуальная память распределяется на диске, а оперативная память используется в качестве кэша.

Существуют две стратегии загрузки страниц в память: с опережением и по запросу.

Механизм загрузки страниц в память по требованию описывается следующей последовательностью шагов:

1.При трансляции виртуального адреса по таблице страниц анализируется бит присутствия страницы. Если страницы нет в памяти, то генерируется прерывание по отсутствию страницы.

2.ОС выбирает страницу в памяти для замещения.

3.Если замещаемая страница была модифицирована, ее содержимое записывается на диск.

4.Изменяется элемент таблицы страниц и элемент TLB замещаемой страницы.

5.В память загружается новая страница.

6.Изменяется элемент таблицы страниц для загружаемой страницы

7.Управление передается процессу, вызвавшему прерывание по отсутствию страницы.

Методы замещения страниц

MIN. Замещение страницы, которая дольше всего не потребуется. Если бы можно было реализовать этот метод, то это оптимальная стратегия.

RANDOM. Случайным образом. Прост и обычно применяется для кэширования TLB.

FIFO. Замещается страница загруженная раньше других. Метод плохо работает для страниц, к которым часто обращаются.

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

Примеры поведения разных стратегий

Пусть имеется три страничных фрейма и следующая последовательность обращения к страницам: A B C D A B E A B C D E.

MIN (7 замещений)

 

 

 

 

 

 

 

 

 

 

Слот

A

B

C

D

A

B

E

A

B

C

D

E

1

A

 

 

 

 

 

 

 

 

C

 

 

2

 

B

 

 

 

 

 

 

 

 

D

 

3

 

 

C

D

 

 

E

 

 

 

 

 

FIFO (9 замещений)

 

 

 

 

 

 

 

 

 

 

Слот

A

B

C

D

A

B

E

A

B

C

D

E

1

A

 

 

D

 

 

E

 

 

 

 

 

2

 

B

 

 

A

 

 

 

 

C

 

 

3

 

 

C

 

 

B

 

 

 

 

D

 

СПО Лекция 1 [23.12.04]

 

 

 

 

 

 

 

 

78

LRU (10 замещений)

 

 

 

 

 

 

 

 

 

 

Слот

A

B

C

D

A

B

E

A

B

C

D

E

1

A

 

 

D

 

 

E

 

 

C

 

 

2

 

B

 

 

A

 

 

 

 

 

D

 

3

 

 

C

 

 

B

 

 

 

 

 

E

LRU плохо себя ведет, в случае, когда происходит обращение к только что выгруженной странице.

Увеличим число страничных слотов на 1

 

 

 

 

 

 

 

LRU (8 замещений)

 

 

 

 

 

 

 

 

 

 

Слот

A

B

C

D

A

B

E

A

B

C

D

E

1

A

 

 

 

 

 

 

 

 

 

 

E

2

 

B

 

 

 

 

 

 

 

 

 

 

3

 

 

C

 

 

 

E

 

 

 

D

 

4

 

 

 

D

 

 

 

 

 

C

 

 

FIFO (10 замещений)

 

 

 

 

 

 

 

 

 

 

Слот

A

B

C

D

A

B

E

A

B

C

D

E

1

A

 

 

 

 

 

E

 

 

 

D

 

2

 

B

 

 

 

 

 

A

 

 

 

E

3

 

 

C

 

 

 

 

 

B

 

 

 

4

 

 

 

D

 

 

 

 

 

C

 

 

Этот эффект известен как аномалия FIFO (Belady)

Для стратегий LRU и MIN содержимое памяти из Х страниц является подмножеством содержимого памяти в случае Х+1 страниц при одинаковой последовательности обращения к страницам. (Для стратегии FIFO это свойство не выполняется)

Реализации LRU

Точная

Требует строго упорядочивать страницы по времени обращения к ним. Сложно.

На основе бита обращения к странице

Для каждой страницы поддерживается бит использования(R). Этот бит аппаратно устанавливается при каждом обращении к странице (может размещаться в таблице страниц).

Номера загружаемых страниц размещаются в кольцевом буфере.

СПО Лекция 1 [23.12.04]

79

Когда происходит прерывание по отсутствию страницы, указатель кольцевого буфера смещается на 1. Анализируется бит R текущей страницы буфера

-если равен 0, страница замещается

-если равен 1, то очищается и переходим к следующему элементу буфера

Если бит R установлен для всех страниц, то метод вырождается в FIFO.

N-й шанс (2-й шанс)

Поддерживается счетчик просмотров для каждой страницы.

Когда происходит прерывание по отсутствию страницы, указатель кольцевого буфера смещается на 1. Анализируется бит R текущей страницы буфера

-если равен 0, то счетчик увеличивается и если <N переходим к следующей позиции, иначе страница замещается

-если равен 1, то очищается счетчик и бит R и переходим к следующему элементу буфера

При больших N может происходить многократный просмотр буфера с наращиванием счетчика до величины

N.

Обычно N=1 для чистых (не модифицированных) страниц и N=2 для «грязных» страниц.

Многие процессоры поддерживают до 4 битов, связанных со страницами:

use (R) - устанавливается при каждом обращении к странице и очищается алгоритмом LRU

modified (W) - устанавливается при каждой записи в страницу и очищается при записи страницы на диск

valid (P) – бит присутствия страницы в памяти

read-only – бит защиты страницы от записи

Заметим, что первые два могут эмулироваться на основе двух последних.

Например, VAX/VMS не поддерживает R и M биты Поддерживаются два списка страниц:

FIFO - помечены как read-write и доступны для обращения

LRU (второй шанс) - помечены как invalid, но находятся в памяти

При обращении к странице:

Если в списке FIFO, то обращаемся к ней иначе прерывание по отсутствию страницы

По прерыванию:

Если в списке LRU, то переместить в список FIFO,

первую страницу из FIFO переместить в конец LRU

иначе

удалить первую из LRU,

СПО Лекция 1 [23.12.04]

80

переместить в конец LRU первую страницу из FIFO, загрузить требуемую страницу в конец FIFO

Явление «пробуксовки» (thrashing)

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

Например, пусть время обращения к странице – 200нс, а время обработки прерывания по отсутствию страницы – 10 мс, вероятность прерывания 0.2.

Тогда среднее время обращения к странице составит ~2мс, т.е. ухудшение на 4 порядка.

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

Как определить текущие потребности процессов?

Лекция 15. Управления виртуальной памятью на основе рабочих множеств. Виртуальная память в Win32.

9Рабочее множество

9Виртуальная память Win32

9Трансляция адреса в процессорах x86

9Буфер транслированных адресов (TLB)

9Механизм загрузки страниц

9Рабочие множества

9Адресное пространство процесса

Рабочие множества

Механизм управления виртуальной памятью на основе рабочих множеств предложен Деннингом (Denning) в 60хгодах.

Рабочее множество – это множество страниц, к которым осуществлялось обращение в последние w единиц времени. Обозначается как W(t,w), где t - текущее время, а w - интервал (окно) на котором отслеживается рабочее множество.

Пример. w=4

Соседние файлы в папке вар2