Наиболее популярным критерием выбора страницы на выгрузку является число обращений к ней за последний период времени. 


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



ЗНАЕТЕ ЛИ ВЫ?

Наиболее популярным критерием выбора страницы на выгрузку является число обращений к ней за последний период времени.



Интенсивность страничного обмена может быть также снижена в результате так называемой упреждающей загрузки, в соответствии с которой при возникнове­нии страничного прерывания в память загружается не одна страница, содержа­щая адрес обращения, а сразу несколько прилегающих к ней страниц. Здесь ис­пользуется эмпирическое правило: если обращение произошло по некоторому адресу, то велика вероятность того, что следующие обращения произойдут по со­седним адресам.

Другим важным резервом повышения производительности системы является пра­вильный выбор размера страницы. Каким же должен быть оптимальный размер страницы? С одной стороны, чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы. С другой стороны, если страница велика, то велика и фиктивная область в последней виртуальной странице каж­дого процесса. Если учесть, что в среднем в каждом процессе фиктивная область составляет половину страницы, то в сумме при большом объеме страницы поте­ри могут составить существенную величину. Из приведенных соображений следует, что выбор размера страницы является сложной оптимизационной задачей.

Размер страницы влияет также на количество записей в таблицах страниц. Чем меньше страница, тем более объемными являются таблицы страниц процессов и тем больше места они занимают в памяти. Выходом в такой ситуации является хранение в памяти только той час­ти таблицы страниц, которая активно используется в данный период времени — так как сама таблица страниц хранится в таких же страницах физической памя­ти, что и описываемые ею страницы, то принципиально возможно временно вы­теснять часть таблицы страниц из оперативной памяти.

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

Для каждого раздела строится собственная таблица страниц. Количество дескрип­торов в таблице и их размер подбираются такими, чтобы объем таблицы оказался равным объему страницы.

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

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

l. Путем отбрасывания k+n младших разрядов в виртуальном адресе определяется номер раздела, к которому принадлежит данный виртуальный адрес.

2. По этому номеру из таблицы разделов извлекается дескриптор соответствую­щей таблицы страниц. Проверяется, находится ли данная таблица страниц в памяти. Если нет, происходит страничное прерывание и система загружает нужную страницу с диска.

3. Далее из этой таблицы страниц извлекается дескриптор виртуальной страни­цы, номер которой содержится в средних n разрядах преобразуемого вирту­ального адреса. Снова выполняется проверка наличия данной страницы в памяти и при необходимости ее загрузка.

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

Страничное распределение памяти может быть реализовано в упрощенном вариан­те, без выгрузки страниц на диск. В этом случае все виртуальные страницы всех процессов постоянно находятся в оперативной памяти. Такой вариант страничной организации хотя и не предоставляет пользователю преимуществ работы с виртуальной памятью большого объема, но сохраняет другое достоинство страничной организации — позволяет успешно бороться с фрагментацией физической памяти.

Такой режим работы системы управления памятью используется в некоторых специализированных ОС, когда требуется высокая реак­тивность системы и способность выполнять переменный набор приложений (пример — ОС семейства Novell NetWare 3-х и 4.х).

Сегментное распределение

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

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

Итак, виртуальное адресное пространство процесса делится на части — сегмен­ты, размер которых определяется с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т. п. Деление виртуального адресного пространства на сегменты осуществляется компилятором на основе указаний программиста или по умолчанию, в соответствии с принятыми в системе соглашениями. Максимальный размер сегмента определяется разрядностью виртуального адреса, напри­мер при 32-разрядной организации процессора он равен 4 Гбайт. При этом мак­симально возможное виртуальное адресное пространство процесса представляет собой набор из N виртуальных сегментов, каждый размером по 4 Гбайт.

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

При загрузке процесса в оперативную память помещается только часть его сегментов, полная копия виртуального адресного пространства находится в дисковой памяти. Для каждого загружаемого сегмента операционная система подыскивает непрерывный участок свободной памяти достаточного размера. Смежные в виртуальной памяти сегменты одного процесса могут занимать в оперативной памяти несмежные участки. Если во время выполнения процесса происходит об­ращение по виртуальному адресу, относящемуся к сегменту, который в данный момент отсутствует в памяти, то происходит прерывание. ОС приостанавливает активный процесс, запускает на выполнение следующий процесс из очереди, а параллельно организует загрузку нужного сегмента с диска. При отсутствии в памяти места, необходимого для загрузки сегмента, операционная система выбирает сегмент на выгрузку, при этом она использует критерии, аналогичные рас­смотренным выше критериям выбора страниц при страничном способе управле­ния памятью.

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

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

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

· правила доступа к сегменту;

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

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



Поделиться:


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

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