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

При работе ОС в мультипрограммном режиме и, в частности, в многопользовательских системах, встречаются ситуации, когда разные пользователи или разные процессы используют в своей работе одни и те же программы. Если каждому пользователю предоставлять в распоряжение индивидуальные копии программ, то это привело бы к значительным затратам памяти, поэтому в системах со страничной организацией памяти используется принцип совместного разделения, то есть раздельного использования тех страниц памяти, которые требуются одновременно нескольким пользователям. Такая возможность обеспечивается тем, что при выполнении процессов можно выделить их части, которые являются постоянными для всех процессов, и части, которые меняются в каждом отдельном процессе. Все неизменяемые части, например, некоторые системные таблицы, могут быть использованы совместно в разных процессах. Изменяемые части такому использованию не подлежат. Это означает, что все множество страниц памяти каждого процесса может быть разделено на две категории:

1. Страницы, которые могут совместно использоваться в нескольких процессах;

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

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

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

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

Другим резервом повышения производительности системы при страничной организации памяти является выбор оптимального размера страниц. При его определении должны учитываться следующие факторы:

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

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

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

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