Системное программное обеспечение

Вид материалаДокументы

Содержание


Вопрос №8 Страничный способ организации виртуальной памяти и схема нахождения физического адреса
Дескриптор страницы
Подобный материал:
1   2   3   4   5   6   7   8   9   10

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


ВИРТУАЛЬНАЯ ПАМЯТЬ - способ организации памяти вычислительной системы, при котором каждая программа может оперировать с адресным пространством, превышающим емкость физической оперативной памяти (ОП). Пользователю при подготовке программы доступно все прямо-адресуемое пространство виртуальной одноуровневой памяти независимо от реальной емкости областей памяти, занятых другими программами. Создание системы виртуальной памяти возможно на базе сегментной, страничной и сегментно-страничной организации памяти. В таких системах части программ (сегменты или страницы) размещаются в памяти ЭВМ таким образом, что используемые в данный момент части программ должны находиться в ОП, а неиспользуемые - во внешней памяти. При обращении программы к сегменту или странице, находящимся во внешней памяти, из ОП удаляется какая-либо часть программы, а на ее место переписывается из внешней памяти требуемый сегмент или страница. Преобразование математического (виртуального) адреса в физический осуществляется непосредственно при обращении к нему в память. В мультипрограммном режиме система виртуальной памяти позволяет увеличить число одновременно выполняемых заданий и повысить эффективности использования ОП, но при этом увеличиваются непроизводительные затраты машинного времени на преобразование.

При страничном способе организации виртуальной памяти она разбивается на части одинаковой длины. Это страницы. В этом случае принято, что память разбита на физические страницы, а задача на виртуальные. Часть страниц размещается в ОП, часть во внешней памяти, обычно на винчестерах в файлах подкачки или страничном файле. Задача может занимать несколько полных страниц и только последняя может содержать меньше информации. Разбиение памяти осуществляется на страницы одинаковой величины, кратной степени 2, часто 4К. Для того чтобы обратится к какой-либо ячейке, должен быть образован двумерный адрес: а) номер страницы; б) номер ячейки внутри страницы (называется индексом). Количество битов, отведенное под нумерацию индекса, определяет размер страницы, а количество битов, отводимое под номер страницы, определяет объем возможной виртуальной памяти.

Для каждой задачи операционная система создает таблицу дескрипторов, в которой каждый дескриптор соответствует странице, занимаемой задачей. Так как все страницы имеют одинаковую длину, то поле длины в дескрипторе страниц отсутствует, а бит присутствия в нем сообщает ОС, где находится в настоящий момент страница. Если бит присутствия равен 1, то страница в ОП, если 0, то на винчестере.


Регистр таблицы страниц Виртуальный адрес команды

(из дескриптора задачи) P I


64000

20 624






64020


Таблица страниц текущей задачи Страница № 25


По этому адресу находится команда иди данное
№ страниц Права доступа 624 25000

(физический)










25 25624




25000

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

Адрес таблицы страниц (дескрипторов страниц задачи) находится в поле дескриптора задачи (в примере – 64000), виртуальный адрес исполняемого данного или исполняемого кода состоит из двух полей – Р (страницы) и I (индекса). При трансляции программы каждой команде (или данному) был определен виртуальный адрес – номер страницы и смещение команды на этой странице, например, 20 и 624. Когда программа операционной системой устанавливается для выполнения процессором (или в очередь на выполнение), то операционная система в таблицу дескрипторов страниц этой задачи записывает реальные адреса начала этих страниц в оперативной памяти (или на винчестере, если страница находится там). Но, для того, чтобы найти место расположение дескрипторов страниц данной задачи, в дескрипторе задачи находим адрес их начала.

Например, в дескрипторе задачи находится запись, что таблица дескрипторов страниц этой задачи начинается с адреса 64000. Виртуальный адрес указывает, например, в нашем случае, что команда (или данное) находится на 20 виртуальной странице этой задачи. По этим данным операционная система находит ячейку, где записан номер физической страницы в ОП – 64000+20= 64020. Допустим, 20-й странице задачи ОС выделила 25-ю физическую страницу в ОП. Теперь ОС рассчитывает реальный адрес нашей команды – 25000+624=25624.

При обращении к странице, которой не оказалось в данный момент в оперативной памяти, возникает прерывание, по которому управление передается диспетчеру памяти. Диспетчер памяти находит свободное место (первая свободная страница). Может случиться, что свободного места нет. Тогда по одной из дисциплин замещения страниц (FIFO – first in first out -первый пришёл первый выбывает, LRU – least recently used - замещается последняя из недавно используемых, LFU – least frequently used - замещается тот, который реже остальных используется, или по случайному выбору замещаемого сегмента) происходит ротация страниц.

В подавляющем большинстве операционных систем используют дисциплину замещения LRU, как наиболее эффективную. Но она требует соответствующих аппаратных средств, иначе работа вычислительной системы сильно замедляет свою работу. Разработчики Windows NT, чтобы максимально не зависеть от аппаратных возможностей ЭВМ, применили правило замещения страниц FIFO.


№ страницы (адрес страничного кадра)

Для ОС




“Грязный”

Обращения




Защиты памяти

Присутствия

31





12

11

10

9

8

7

6

5

4

3

2

1

0

Дескриптор страницы

Для описания каждой страницы создается соответствующий дескриптор длиной 32 бита.

20 битов (12 – 31) определяют № страницы. Если добавить к этому номеру 12 нулей, то получается физический адрес начала страницы в памяти.

0-й бит – это бит присутствия. Если он равен 0, то эта виртуальная страница находится на винчестере и, для ее передачи в оперативную память необходимо прерывание и передача её в ОП. Если бит равен 1, то страница уже находится в оперативной памяти.

1-й и 2-й биты используются операционной системой для защиты памяти.

5-й бит – бит обращения. Эта страница уже работала в ОП и она может участвовать при замещении страниц диспетчером.

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

3, 4, 7 и 8 биты содержат 0 и не используются.

9 – 11 биты зарезервированы для использования системными программистами при разработке подсистемы виртуальной памяти (если будут разрабатывать что-нибудь новенькое).

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

Но страничный способ организации памяти имеет два существенных недостатка:

Первый: Страничный способ требует больших накладных расходов:
  • таблицы страниц нужно размещать в памяти;
  • время процессора тратится на обработку этих таблиц.

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

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