Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО-Вопросы к экзамену-2014 (Восстановлен).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
1.16 Mб
Скачать
  1. Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.

Организация виртуальной памяти. Суть концепции: адреса, к которым обращается выполняющаяся программа (процесс), отделяются от адресов, реальной памяти, существующей в ВС. Для выполнения программы необходимо реализовать отображение адресов, используемых в

программе, на адреса реальной физической памяти, связать их. При написании программ программист работает с именами. Те адреса, на которые делает ссылки процесс во время выполнения, являются виртуальными адресами, а диапазон всех виртуальных адресов, к которым может обратиться процесс, называется пространством виртуальных адресов этого процесса. Адрес физической памяти - номер ее реально существующей ячейки – называется реальным или физическим адресом. Диапазон физических адресов компьютера называется пространством реальных адресов. То есть, для выполнения программы необходимо отобразить пространство имен на физическую память. Это выполняется в два этапа: 1) перевод логических имен в виртуальные (логические) адреса, используемые программой: отвечают системе программирования (перевод осуществляется на этапе транслятора). Транслятор в качестве виртуального адреса вырабатывает относительный адрес (смещение) и информацию для настройки базового адреса. 2) отображение виртуальных адресов на физические адреса реальной памяти: выполняет обычно ОС через программы управления памятью при аппаратной поддержке. Настройка базовых адресов осуществляется при загрузке программы на выполнение, а собственно отображение - при каждом обращении к памяти с помощью специальных таблиц. Если содержимое таблиц может изменяться динамически, то этот механизм может быть использован для построения виртуальной памяти. То есть в основе виртуальной памяти лежат средства: 1) относительная адресация памяти (обеспечивает возможность создания перемещаемого кода (программа во время выполнения настраивается на произвольные адреса распределяемых ей блоков памяти)). 2) разрывное распределение памяти (возможность разбиения всего пространства памяти, отведенного программе, на несколько несмежных разделов.) 3). возможность динамической настройки адресов (обеспечивает преобразование виртуальных адресов в реальные во время выполнения процесса, причем общим свойством таких механизмов является то, что смежные адреса виртуального адресного пространства не обязательно будут смежными в реальной памяти).

Управление виртуальной памятью. При организации виртуальной памяти ОС решает несколько задач: 1) Выполнять начальную загрузку информации в ОС (подкачку) определяет, когда следует “втолкнуть” очередной блок кода или данных в основную память (то есть в какой момент времени выполнения программы страница или сегмент должны быть переписаны из вспомогательной памяти в первичную).

- стратегия по максимуму загружает все, что можно, в ОП. Возникает проблема, какие блоки должны быть загружены (нужно спрогнозировать). В первую очередь загружается фрагмент

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

- Не использовать опережающую загрузку (вообще ничего не загружать в память. Это загрузка по требованию. Обращение-прерывание - обработчик прерывания (загрузка)).

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

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

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

При выталкивании случайной страницы (блока) все страницы могут использоваться для замещения с равной вероятностью. Эта стратегия не требует никаких дополнительных расходов для своей реализации, но в реальных системах она применяется редко, так как не может обеспечить эффективное управление памятью. Дисциплина выталкивания FIFO (First In First Out) также не может обеспечить эффективное использование памяти, так как долгое присутствие блока (страницы) в памяти может означать его постоянное использование, следовательно, замещенную страницу снова придется загрузить в память, затратив время на ее выгрузку и повторную подкачку. Стратегии LRU (Least Recently Used), LFU (Least Frequently Used), NUR (Non Used Recently) приближаются к оптимальной стратегии. Для их реализации также нужны дополнительные средства: для каждого блока необходимо хранить информацию или о времени последнего обращения к нему, или о количестве обращений, выполненных за единицу времени, или о длительности промежутка времени, в течение которого к блоку не было обращений со стороны процесса. Эта информация может находиться в строке таблицы, описывающей блок. Кроме того, при прочих равных условиях первыми кандидатами на замещение в памяти являются блоки, информация в которых не модифицировалась при обращении к ним, так как в этом случае нет необходимости их сохранения во внешней памяти (при последующем обращении к такому блоку можно использовать существующую копию из вспомогательной памяти). Следовательно, каждая строка таблицы, описывающая блок, должна содержать признак модификации соответствующего блока.