Лекция: Виртуальная память и ее реализация. Сегментно-страничная организация памяти и динамическое преобразование адресов. Механизм замещения страниц.

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

При подготовке программ используются условные адреса. Позднее в процессе выполнения программы операционная систе­ма выделяет активным частям программы место в памяти, и ус­ловные адреса переводятся в исполнительные. Эта процедура получила название динамического распределения памяти.

Осуществление динамического распределения чисто программным путем привело бы к значительным потерям машинно­го времени. Целесообразнее пользоваться для этой цели аппара­турными средствами.

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

При рассматриваемом способе динамического распределения памяти свободная память может состоять из несвязанных об­ластей (фрагментация памяти) и для ввода нужной программы может понадобиться сдвиг содержимого памяти. На рис. 14.7, а показано распределение памяти между программами А, В, С, D, из которых две (А и D) являются в данный момент наименее активными и следовательно, могут рассматриваться как канди­даты на удаление во внешнюю память. Если вновь вводимая программа Е (рис. 14.7, б) больше любой из программ А и D, то для ее размещения в памяти необходимо, как показано на рис. 14.7, а, сдвигать программы В и С. Это перемещение связа­но с потерей времени. Более того, в ряде систем подобное пере­мещение требует выполнения заново операции редактирования связей в программе и новой загрузки программы.

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

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

Принцип виртуальной памяти предполагает, что пользова­ть при подготовке своей программы имеет дело не с физической ОП, действительно работающей в составе вычислительной установки и имеющей некоторую фиксированную емкость, с виртуальной (т. е. кажущейся) одноуровневой памятью, емкость которой равна всему адресному пространству, определяемому размером адресных полей в форматах команд и базовых регистров. В ЕС ЭВМ это пространство составляет 777 216 байт.

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

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

В мультипрограммной системе страничная организация па­мяти дает определенные преимущества. Когда новая программа загружается в ОП, она может быть направлена в любые свобод­ные в данный момент физические страницы независимо от того, расположены они подряд или нет. Не требуется перемещения информации в остальной части памяти. Страничная организация позволяет сократить объем передачи информации между внеш­ней памятью и ОП, так как страница программы не должна загружаться до тех пор, пока она действительно не понадобится. Сначала в ОП загружается начальная страница программы, и ей передается управление. Если по ходу работы делается попытка выборки слов из другой страницы, то производится автоматическое обращение к операционной системе, которая осуществляет загрузку требуемой страницы.

На рис. 14.8 показано соответствие между виртуальной и фи­зической памятями, устанавливаемое страничной таблицей, при­чем видно, что физические страницы могут содержаться в теку­щий момент времени как в оперативной, так и во внешней памя­ти. Страничная таблица для каждой программы формируется операционной системой в процессе распределения памяти и пе­рерабатывается ею каждый раз, когда в распределении памяти производятся изменения. Процедура обращения к памяти со­стоит в том, что номер виртуальной страницы извлекается из адреса и используется для входа в страничную таблицу, которая указывает номер соответствующей физической страницы. Этот номер вместе с номером байта, взятым непосредственно из виртуального адреса, представляет собой физический адрес, по которому происходит обращение к ОП.

Если страничная таблица указывает на размещение требуе­мой информации во внешней памяти, то обращение к ОП не может состояться немедленно: операционная система должна организовать передачу из внешней памяти в ОП нужной стра­ницы.

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

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

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

Сегментно-страничная организация памяти. До сих пор предполагалось, что виртуальная память, которой располагает программист, представляет собой непрерывный массив с единой нумерацией байт. Однако программа обычно состоит из нескольких массивов — подпрограмм, одной или нескольких секций данных. Так как заранее длины этих массивов неизвестны, то удобно, чтобы при программировании каждый массив имел свою собственную нумерацию байт, начинающуюся с нуля и продолжающуюся в возрастающем порядке. Желательно также, чтобы составленная таким образом программа могла работать при динамическом распределении памяти, не требуя от программиста усилий по объединению различных ее частей в единый массив. Эта задача решается в некоторых вычислительных системах путем использования особого метода преобразования виртуальных адресов в физические, называемого сегментно-страничной организацией памяти.

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

Возникает определенная иерархия в организации программ, состоящая из четырех ступеней: 1) программа, 2) сегмент, 3) страница, 4) байт. Этой иерархии программ соответствует иерархия таблиц, служащих для перевода виртуальных адресов в физические. Программная таблица для каждой программы, загруженной в систему, указывает начальный адрес соответству­ющей сегментной таблицы. Сегментная таблица перечисляет сегменты данной программы с указанием начального адреса страничной таблицы, относящейся к данному сегменту. Странич­ная таблица определяет расположение каждой из страниц сег­мента в памяти. Страницы сегмента могут располагаться не подряд, часть страниц данного сегмента может находиться в оперативной памяти, остальные — во внешней.

Рассмотрим с некоторыми упрощениями организацию сегментно-страничной виртуальной памяти, реализованной в маши­нах ЕС ЭВМ II очереди.

В этой системе работа с виртуальной памятью возможна только в режиме расширенного управления (ССП [12] =1).

Сегмент представляет собой блок последовательных адресов размером 64 Кбайт или 1 Мбайт, размер страницы 2 или 4 Кбайт. Начальные адреса сегментов и страниц кратны их размерам. Размеры сегментов и страниц виртуальной памяти активной в данный момент программы задаются значениями соответствующих разрядов управляющего регистра 0.

Виртуальный адрес (как и физический) имеет длину 24 раз­ряда, причем поле номера сегмента занимает 8 или 4 старших разряда соответственно для сегментов размером 64 Кбайт и 1 Мбайт, поле номера байта занимает 11 или 12 младших разрядов для страниц размером 2048 и 4046 байт. Промежуточ­ные разряды адреса занимает поле номера страниц, которое может иметь 4, 5, 8 или 9 разрядов в зависимости от размеров сегмента и страницы.

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

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

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

Второй этап. Полученный адрес начала страничной таблицы суммируется с номером страницы из виртуального адреса, при этом образуется адрес, по которому из ОП считыва­ется строка страничной таблицы. Если эта страница оказывает­ся в ОП, то в старшие разряды регистра физического адреса передается ее номер, а в младшие заносится номер байта из регистра виртуального адреса. Формирование физического адре­са на этом завершается.

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

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

Ассоциативная память (ББП) хранит указанные данные для небольшого числа недавно использовавшихся страниц. Так, в ЭВМ ЕС-1045 ББП представляет собой память на интег­ральных микросхемах емкостью 128 слов с временем выборки 25—30. Блок быстрой переадресации может обслужи­вать одновременно до 3 программ, другими словами, до трех виртуальных памятей.

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

Преобразование адресов всегда начинается с просмотра ассоциативной памяти (ББП), и если оказывается, что в одной из ее строк (ассоциативном регистре) хранится информация о странице, к которой должно произойти обращение, то из этой строки непосредственно выбирается номер физической страницы и дополнительные обращения к ОП (к сегментной и страничной таблицам) не производятся (рис. 14.9,6).

Если нужной информации нет в ассоциативной памяти (ББП), то делается попытка сократить время преобразования путем исключения одного дополнительного обращения к ОП (первый этап на рис. 14.9, а). Может оказаться, что страница, к которой происходит обращение, принадлежит сегменту преды­дущего обращения к ОП. В аппаратуре преобразования адресов сохраняются номер сегмента и адрес начала его страничной таблицы для предыдущего обращения. Если совпадают номера сегментов текущего и предыдущего обращений, первый этап преобразования исключается, используется сохраненный адрес начала сегментной таблицы и выполняется только второй этап преобразования, т. е. производится только одно дополнительное обращение к ОП. Если номера сегментов не совпадут, реализуется полная процедура преобразования адресов, показанная на рис. 14.9, а.

Дополнительные обращения к ОП сопровождаются зане­сением информации о текущей странице в ассоциативную па­мять (ББП). Если в ассоциативной памяти (ББП) не оказывает­ся свободного регистра (строки), данные о новой странице записываются на место данных, которые дольше других не использовались в процессе преобразования адресов.


еще рефераты
Еще работы по информатике