Сегментная организация виртуальной памяти. Сегментно-страничная организация виртуальной памяти
При страничной организации памяти все виртуальное адресное пространство делится на страницы механически, без учета характера данных, расположенных в памяти. В одной странице могут оказаться и коды команд, и исходные данные, и таблицы констант, и т. д.
Такой подход не позволяет обеспечить дифференцированный доступ к различным частям программы (например, запретить операцию записи в части ОП, где хранятся коды команд). Кроме того, некоторые участки данных, относящихся к программе, могут расти при компиляции и выполнении – возникают сложности с распределением памяти.
Все эти проблемы могут быть решены, если обеспечить программиста множеством независимых адресных пространств.
Эти множества независимых адресных пространств получили название сегментов. Каждый сегмент содержит линейную последовательность адресов от 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. При каком типе отображения данных достигается минимальное количество перезагрузки строк?