
- •19. Динамическое распределение памяти.
- •20. Система двойников.
- •21. Страничная организация памяти.
- •22. Сегментирование.
- •23. Виртуальная память. Принцип локализации.
- •24. Страничная организация и виртуальная память. Таблица страниц. Буфер поиска трансляции.
- •26. Выбор размера страниц. Комбинация сегментации и страничной организации.
- •27. Стратегии выборки и размещения страниц.
24. Страничная организация и виртуальная память. Таблица страниц. Буфер поиска трансляции.
Страничная организация
При использовании виртуальной памяти кроме адреса страницы в основной памяти
в таблицу страниц добавляются некоторые флаги (биты). Это бит присутствия страницы
в основной памяти (показывает, загружена ли страница в память) и бит модификации.
Бит модификации указывает, было ли изменено содержимое страницы с момента ее
последней загрузки из вторичной памяти. Если к тому моменту, когда страница должна
быть выгружена, она не изменялась, то данные во вторичной памяти можно не
перезаписывать, поскольку там уже есть точная копия этой страницы.
Так как таблица страниц имеет переменную длину, зависящую от размера процесса,
ее хранение в регистрах процессора не представляется возможным. В регистре хранится
адрес начала таблицы, а сама таблица находится в основной памяти.
Кроме того, если процесс занимает большой объем памяти, его таблица страниц
может содержать огромное кол-во записей, поэтому таблица также хранится не в
основной, а в виртуальной памяти. Очевидно, что часть таблицы должна быть загружена в
основную память, в том числе запись о странице, выполняющейся в текущий момент.
Некоторые процессоры используют двухуровневую схему хранения таблиц
страниц. В корневой таблице хранятся адреса таблиц страниц, а уже таблицы страниц
содержат адреса страниц в памяти. При этом логический адрес состоит из номера записи в
корневой таблице, номера записи в таблице следующего уровня и смещения относительно
начала страницы.
Буфер поиска трансляции
Каждый виртуальный адрес вызывает обращение к двум физическим адресам: одно
для выборки записи из таблицы страниц, другое – для обращения к нужным данным. Для
увеличения производительности используется специальный высокоскоростной кэш для
записей таблицы, который называют буфером поиска трансляции. Он функционирует,
как обычный кэш памяти, и содержит те записи таблиц, которые использовались
последними.
Получив виртуальный адрес, процессор просматривает кэш. Если нужная запись
найдена, процессор быстро получает адрес кадра. Если в кэше записи не оказалось,
страница ищется в таблице страниц (которая находится в основной памяти). Если в
нужной записи установлен бит присутствия в памяти, процессор просто получает адрес
кадра и вносит его в кэш. Если страница не загружена в основную память, то процесс
прерывается, чтобы ОС загрузила нужную страницу, информация о ней тут же
обновляется в таблице страниц и заносится в кэш.
26. Выбор размера страниц. Комбинация сегментации и страничной организации.
Размер страницы (~ 4Кб – 16Мб)
При выборе размера страницы учитываются различные факторы. Один из них –
внутренняя фрагментация. Чем больше размер страницы, тем больше внутренняя
фрагментация. С другой стороны, чем меньше размер страниц, тем больше их нужно для
хранения процесса, а значит увеличивается таблица страниц, что не есть хорошо,
поскольку часть таблиц будет выгружаться на диск и потребуется 2 раза совершать
операцию ввода-вывода для доступа к данным. Также физические характеристики
устройств вторичной памяти таковы, что передача данных большего объема является
более эффективной.
Комбинация сегментной и страничной организации
При сегментной организации памяти, для использования виртуальной памяти, в
записи таблицы сегментов также добавляются бит модификации и бит присутствия.
Трансляция логического адреса в физический происходит аналогично.
Одним из преимуществ сегментации является то, что она может быть видна
программисту, который сам решает, на какие сегменты будет разбита программа
(возможно разбиение по модулям, например). Упрощается совместное использование кода
и данных разными процессами, улучшается защита с помощью назначения разным
сегментам разных прав доступа.
Страничная организация в свою очередь лишена внешней фрагментации, упрощает
создание эффективных алгоритмов управления памятью ввиду одинаковых размеров
блоков.
Некоторые системы используют достоинства обоих методов. В них адресное
пространство разбивается на ряд сегментов по усмотрению программиста. Каждый
сегмент разбивается на страницы фиксированного размера. Если размер сегмента меньше
размера страницы, он занимает страницу целиком. Логический адрес с точки зрения
программиста представляет собой номер сегмента и смещение в нем. С точки зрения ОС –
это номер