Страничная организация памяти. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Страничная организация памяти.



Основная память разделяется на одинаковые блоки небольшого фиксированного

размера – кадры (фреймы). Процесс делится на блоки, называемые страницами, такого

же размера, как кадры. Каждый кадр может содержать одну страницу данных.

Распределение страниц

ОС поддерживает список свободных кадров. Пусть в память загружается 3 процесса,

для каждого выделяется необходимое кол-во кадров. Затем 2 процесс выгружается из

памяти, после чего необходимо загрузить 4-й процесс из 5 страниц. Несмотря на то, что

непрерывной области памяти нужного размера нет, процесс загружается в не смежные

кадры.

В этом случае для использования логических адресов одного базового регистра

недостаточно, поэтому применяется таблица страниц. Она указывает расположение

каждой страницы процесса. Логический адрес состоит из номера страницы и смещения

относительно ее начала. Процессор транслирует логический адрес в физический,

определяя адрес нужной страницы и прибавляя к нему смещение (относительный адрес

внутри страницы).

Для каждой страницы процесса хранится адрес соответствующего кадра, если

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

Данная схема распределения памяти похожа на фиксированное распределение, но

используются небольшие разделы, которые могут быть не смежными. Внутренняя

фрагментация присутствует только в последних кадрах процессов (когда последняя

страница процесса меньше размера кадра, т.е. размер процесса не кратен размеру кадра).

 

 

Сегментирование.

Программа и связанные с ней данные разделяются на сегменты. Сегменты не обязаны

быть одинакового размера. Логический адрес также состоит из номера сегмента и

смещения внутри него. Сегменты могут занимать несколько разделов, которые не

обязательно являются смежными. В остальном этот подход похож на динамическое

распределение, ему также свойственна внешняя фрагментация, однако ее степень

снижается за счет разбиения процесса на небольшие части (сегменты). Главный

недостаток – нужно следить, чтобы размер сегмента не превысил максимально

возможный.

В таблице сегментов кроме адреса сегмента в памяти, хранится и его длина (если

смещение больше длины, адрес некорректен). Также хранится список свободных блоков

памяти. Физический адрес – это сумма физического адреса начала сегмента и смещения.

Виртуальная память. Принцип локализации.

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

или сегментов процесса в основной памяти одновременно не является обязательным.

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

ОС размещает в памяти только один или несколько блоков процесса, в том числе блок,

содержащий начало программы.

Часть процесса, располагающаяся в некоторый момент времени в основной памяти,

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

сегментов процессор может определить, загружен ли запрашиваемый блок в основную

память. Если в основной памяти нет нужного логического адреса, ОС необходимо

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

операцию ввода-вывода (загружает нужный блок), после чего переводит процесс в

состояние готовности.

При использовании виртуальной памяти отмечаются следующие положительные

моменты:

1. В основной памяти ожжет находится большее кол-во процессов, что приводит к

повышению эффективности использования процессора, т.к. повышается

вероятность наличия активных процессов в памяти.

2. Процесс может быть больше, чем вся основная память. Таким образом,

программисту доступен огромный объем памяти.

Т.к. процесс выполняется только в основной памяти, она также называется реальной.

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

виртуальной памятью.

 

 

Локализация

Почему использование виртуальной памяти является эффективным, несмотря на

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

небольшой промежуток времени выполнение программы сосредоточено, как правило, в

малой части кода, которая обращается к одному или двум массивам данных – это явление

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

достаточно блоков, к которым вероятнее всего будет обращаться программа в ближайший

промежуток времени.

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

освобождения места другим процессам, нужно выбрать блок, который с наименьшей

вероятностью нужен будет в ближайшее время. Такие алгоритмы основаны также на

принципе локализации (как правило, выгружаются блоки, к которым дольше всего не

обращались).

 

 

Страничная организация и виртуальная память. Таблица страниц. Буфер поиска трансляции.

Страничная организация

При использовании виртуальной памяти кроме адреса страницы в основной памяти

в таблицу страниц добавляются некоторые флаги (биты). Это бит присутствия страницы

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

Бит модификации указывает, было ли изменено содержимое страницы с момента ее

последней загрузки из вторичной памяти. Если к тому моменту, когда страница должна

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

перезаписывать, поскольку там уже есть точная копия этой страницы.

Так как таблица страниц имеет переменную длину, зависящую от размера процесса,

ее хранение в регистрах процессора не представляется возможным. В регистре хранится

адрес начала таблицы, а сама таблица находится в основной памяти.

Кроме того, если процесс занимает большой объем памяти, его таблица страниц

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

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

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

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

страниц. В корневой таблице хранятся адреса таблиц страниц, а уже таблицы страниц

содержат адреса страниц в памяти. При этом логический адрес состоит из номера записи в

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

начала страницы.

Буфер поиска трансляции

Каждый виртуальный адрес вызывает обращение к двум физическим адресам: одно

для выборки записи из таблицы страниц, другое – для обращения к нужным данным. Для

увеличения производительности используется специальный высокоскоростной кэш для

записей таблицы, который называют буфером поиска трансляции. Он функционирует,

как обычный кэш памяти, и содержит те записи таблиц, которые использовались

последними.

Получив виртуальный адрес, процессор просматривает кэш. Если нужная запись

найдена, процессор быстро получает адрес кадра. Если в кэше записи не оказалось,

страница ищется в таблице страниц (которая находится в основной памяти). Если в

нужной записи установлен бит присутствия в памяти, процессор просто получает адрес

кадра и вносит его в кэш. Если страница не загружена в основную память, то процесс

прерывается, чтобы ОС загрузила нужную страницу, информация о ней тут же

обновляется в таблице страниц и заносится в кэш.



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 219; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.219.217 (0.011 с.)