Сегментная организация виртуальной памяти. Сегментно-страничная организация виртуальной памяти

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

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

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

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

Для определения адреса данных в сегментированном адресном пространстве необходимо указать номер сегмента и адрес (смещение) внутри сегмента.

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

Сегменты не упорядочиваются друг относительно друга, т. е. общего для сегментов линейного виртуального адреса не существует.

При загрузке процесса ОС помещает в ОП только часть его сегментов (полная копия всех сегментов находится на HDD).

Для каждого загружаемого сегмента ОС находит в ОП непрерывный участок свободной памяти необходимого размера.

Если при выполнении процесса происходит обращение к отсутствующему в ОП сегменту, то происходит прерывание.

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

Если в ОП отсутствует место для загрузки сегмента, то ОС выбирает в ОП сегмент на выгрузку.

На этапе создания процесса ОС создает таблицу сегментов (аналогичную таблице страниц).

В этой таблице для каждого сегмента указывается:

· базовый физический адрес начала сегмента в ОП;

· размер сегмента;

· правила доступа к сегменту (только чтение и др.);

· служебная информация (признаки модификации, присутствия, обращения и др.).

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

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

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

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

Но главным недостатком сегментного распределения памяти является фрагментация памяти (из-за непредсказуемого размера сегментов).

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

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

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

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

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

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

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

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

2. По начальному адресу страниц, с учетом номера страницы, заданного в виртуальном адресе, определяется дескриптор данной страницы для текущего сегмента. Из дескриптора страницы считывается номер физической страницы.

3. К номеру физической страницы пристыковывается указанное в виртуальном адресе смещение. В результате формируется физический адрес ячейки, из которой необходимо считать информацию или произвести её запись.

Вопросы для самопроверки по теме 4.3

1. В чем отличие страницы виртуальной памяти от сегмента?

2. Чем таблица страниц отличается от таблицы сегментов?

3. Что является единицей обмена между ОП и HDDпри сегментной организации памяти?

4. Что такое дескриптор сегмента?

5. Какие недостатки сегментной организации памяти позволяет устранить переход к сегментно-страничному распределению памяти?

КЭШ-память

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

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

КЭШ часто называют не только способ организации работы ЗУ, но и одно из ЗУ, а именно – быстрое ЗУ. Обычно оно имеет сравнительно небольшой объем.

Использование КЭШ – это универсальный способ, пригодный для ускорения доступа процессора к ОП, к HDD и другим видам памяти.

Содержание КЭШ-памяти представляет собой совокупность записей. В каждой записи содержатся:

· элемент данных, который является копией данных из ОП;

· адрес, по которому расположен элемент данных в ОП;

· служебная информация (признак модификации, признак актуальности данных идр.).

При каждом обращении к ОП по физическому адресу просматривается содержимое КЭШ с целью определения факта содержания в КЭШ нужных данных.

КЭШ-память не является адресуемой, поэтому поиск нужных данных осуществляется по значениям поля адреса в ОП, который берется из запроса (определение производится одновременно для всех ячеек КЭШ по схемам совпадения адреса из поля адресов и адреса из запроса).

Далее возможны следующие варианты действий ВС:

1. Данные обнаруживаются в КЭШ. Этот факт называют КЭШ-попаданием (cache-hit). Эти данные считываются из КЭШ и передаются ЦП.

2. Данные не обнаруживаются в КЭШ. Произошел КЭШ-промах (cache-miss). В этом случае данные считываются из ОП, передаются в ЦП и одновременно с этим копируются в КЭШ.

Эффективность кэширования зависит от вероятности такого события, как КЭШ-попадание.

Опыт использования ВС с КЭШ показывает, что при решении стандартных задач программирования процент КЭШ-попаданий достаточно высок (более 90 %).

Наличие в ВС двух копий данных – в ОП и в КЭШ, порождает проблему согласования данных.

Например, если происходит запись данных в ОП, а содержимое этой ячейки находится в КЭШ, то, если не принимать дополнительных мер, информация в КЭШ становится недостоверной.

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

1. Сквозная запись (writethrough). В этом случае при записи данных в ОП просматривается КЭШ. Если адрес ячейки ОП, по которому производится запись в КЭШ отсутствует, то запись осуществляется только в ОП. Если адрес этой ячейки значится в КЭШ, то запись данных осуществляется одновременно и в КЭШ, и в ячейку ОП.

2. Обратная запись (writeback). В этом случае при записи данных в ОП просматривается КЭШ. Если адрес ячейки ОП, по которому производится запись в КЭШ, отсутствует, то запись осуществляется только в ОП. Если адрес этой ячейки значится в КЭШ, то запись данных осуществляется только в КЭШ, при этом в служебной части записи КЭШ делается отметка (признак модификации). Эта метка указывает, что при вытеснении этой записи из КЭШ ее надо записать в ОП, чтобы актуализировать устаревшее содержание ОП.

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

Можно выделить три основных типа отображения:

· полностью ассоциативный КЭШ (случайное отображение);

· КЭШ прямого отображения (детерминированное отображение);

· множественно-ассоциативный КЭШ (совместное использование случайного и детерминированного отображения).

Далее необходимо изучить особенности построения и функционирования блоков КЭШ-памяти указанных типов.

Вопросы для самопроверки по теме 4.4

1. За счет чего уменьшается время доступа к данным при кэшировании?

2. В чем заключается проблема согласования данных при кэшировании?

3. В чем отличие метода сквозной записи от метода обратной записи при кэшировании данных?

4. Каким образом осуществляется поиск данных в блоке КЭШ-памяти?

5. При каком типе отображения данных достигается минимальное количество перезагрузки строк?

Наши рекомендации