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

8

СПО Лекция 13 [15.07.19]

Лекция 13. Управления виртуальной памятью. Трансляция адресов

  • Виртуальное адресное пространство и трансляция адресов.

  • Метод «База и граница»

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

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

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

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

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

Требования к системе управления памятью

  • Эффективное управление памятью (быстро и с минимальными накладными расходами)

  • Защита адресных пространств

  • Возможность разделять часть адресного пространства

Управление памятью в современных ОС опирается на механизм виртуализации адресных пространств прикладных программ.

Виртуальная память и трансляция адресов

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

Разрядность адреса

Размер адресного пространства

16

64 Kb

20

1 Mb

32

4 Gb

64

17179869184 Gb

В мультипрограммных системах каждому процессу должна быть выделена часть памяти и обеспечено отображение виртуальных адресов процесса в реальные адреса памяти. Преобразование (трансляция) виртуальных адресов в физические адреса памяти выполняется устройством управления памятью процессора (MMU Memory Management Unit). Механизм трансляции не позволяет программе залезть в область памяти других программ или ОС и таким образом надежно решает проблему защиты адресных пространств.

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

Метод «База и граница»

Впервые реализован в CRAY-I. Используются два регистра процессора: base и bound. Программа загружается в непрерывную область памяти.

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

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

  • простота и скорость

Недостатки:

  • сложное распределение памяти непрерывными участками, фрагментация памяти

  • сложности с общей разделяемой памятью для процессов

  • проблемы с увеличением пространства памяти, если возникает такая потребность (стек, куча)

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

Сегмент – непрерывный участок памяти. Метод является обобщением предыдущего, память выделяется процессу сегментами, для каждого сегмента указывается адрес начала (база) и размер (граница). Полный перечень сегментов и их атрибутов хранится в таблице сегментов процесса. Таблица сегментов хранится или в памяти или в специальных регистрах процессора. Таблица сегментов доступна только в привилегированном режиме работы процессора. Если таблица сегментов расположена в памяти, то адрес активной таблицы хранится в специальном регистре процессора.

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

Пример:

Виртуальный адрес – 16 разрядов. Номер сегмента – 4 разряда, смещение – 12 разрядов (максимальный размер сегмента – 4096 байт).

Сегменты

Размер

Виртуальный адрес сегмента

0. Код

0x700

0x0

1. Данные

0x200

0x1000

2. Стек

0x500

0x2000

Таблица сегментов:

Физический адрес

Размер

Атрибуты

0x2000

0x700

--Код--

0x100

0x200

--Данные--

0x800

0x500

--Стек--

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

Заметим, что в виртуальном адресном пространстве есть промежутки между сегментами и если происходит обращение к таким адресам (0x1201), то процессор установит флаг ошибки обращения к памяти.

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

  • хорошо справляется с «дырами» в виртуальном адресном пространстве

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

Недостатки:

  • сложное распределение памяти непрерывными участками, фрагментация памяти

  • проблемы с увеличением размера сегмента во время работы (стек, куча)

Как упростить распределение памяти и устранить фрагментацию? Распределять память блоками фиксированной длины.

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

Физическая и виртуальная память условно делится на страницы фиксированного размера (1K – 4K). Полный перечень виртуальных страниц и их атрибутов хранится в таблице страниц процесса. Таблица страниц располагается в памяти, адрес активной таблицы и ее размер хранятся в специальных регистрах процессора.. Таблица страниц доступна только в привилегированном режиме работы процессора.

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

Пример:

Виртуальный адрес – 16 разрядов. Номер страницы – 4 разряда, смещение – 12 разрядов, размер страницы – 4096 байт.

Номер страницы

Виртуальный адрес

0

0x0

1

0x1000

2

0x2000

N

0xN000

Таблица страниц:

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

Номер физической страницы

Атрибуты

0

0x7

1

0x2

2

0xF

N

0x5

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

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

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

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

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

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

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

Недостатки:

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

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

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

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

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

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

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

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

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

Недостатки:

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

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

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

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

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

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

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

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

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

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

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

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

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

Недостатки:

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

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