Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Настройка параметров виртуальной памяти и дискового кэша




Адресация в Windows

Статическое распределение страниц

П.

Процессоры i386 и выше могут работать в 32-разрядном режиме (размер регистра >= 32!) с так называемой страничной адресацией. С появлением реальной 32-разрядной адресации естественно было уменьшить размер сегмента оперативной памяти одновременно сделав его фиксированным. Использование небольшого размера страницы = 4 Кб сократило неиспользуемые «хвосты», а фиксирование размера страницы упростило алгоритм распределения страниц.

Итак, в Windows программа оперирует логическим адресом, состоящим из 16-разрядного селектора и 32-разрядного смещения. С помощью глобальной или локальной таблицы дескрипторов логический адрес преобразуется в линейный 32-разрядный адрес. На следующем этапе этот адрес разбивается на компоненты: 10-разрядный индекс в таблице страниц, 10-разрядный номер страницы и 12-разрядное смещения в странице.

  10-разр таблица   10-разр страница   12-разр смещение   16 селектор   32 смещение
                     
  Каталог Таблиц страниц   Таблица страниц   +   Таблица дескрипторов   +  
          Физический       Линейный
          Адрес       Адрес

 

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

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

Но самое главное то что, начиная с процессора i386, появилась возможность организации так называемой виртуальной памяти. Концепция виртуальной памяти предполагает, что часть страниц можно расположить на диске в специальном файле (файл для выгрузки, SWAP) и загружать в оперативную память по мере необходимости, замещая старые, не нужные страницы. Для программиста виртуальная память создает иллюзию практически неограниченной ОП.

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

Ниже приводится несколько таких советов с обычно даваемыми к ним пояснениями. Затем рассказано о том, как Windows 98 использует виртуальную память и даны рекомендации по ее оптимизации. Положения, лежащие в основе этих рекомендаций, справедливы для подавляющего большинства пользователей. Существуют некоторые очевидные исключения, например редактирование графических или видеофайлов размером во многие десятки и сотни мегабайт. Или, наоборот, выполнение на компьютере задач расчетного характера, производящих большие объемы вычислений с не очень большим количеством исходных данных (большинство игр типа "убей все, что движется" относится именно к этому классу задач). В этих случаях оптимальные настройки могут оказаться другими, но если вы поймете, как Windows использует виртуальную память, то легко сможете сделать необходимые изменения сами.

Итак, вот несколько распространенных советов (с обычно даваемыми пояснениями). Применяя некоторые из них, вы c легкостью можете ухудшить работу Windows 98.

Совет 1. Установите файлу подкачки минимальный размер примерно в три раза больше, чем объем ОЗУ, и разместите его в самом начале диска. Поскольку скорость обмена с диском наивысшая именно в начале диска, загрузка страниц из виртуальной памяти выполняется быстрее, и производительность повышается.

Примечание: вторая часть совета правильная, а первая - нет.

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

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

Совет 3. Сделайте минимальный и максимальный размер файла подкачки примерно в три раза больше, чем объем ОЗУ. Windows не будет тратить время на его увеличение или уменьшение, и скорость работы повысится за счет этого и за счет исключения фрагментации файла подкачки.

Примечание: при большом объеме ОЗУ приводит к неэкономному расходованию места на диске. При малом объеме ОЗУ – препятствует запуску новых задач, если вся виртуальная память уже распределена. С объемом ОП размер файла для выгрузки, вообще говоря, не связан!

Совет 4. Ограничьте максимальный размер файла подкачки, чтобы Windows не "раздувала" его попусту.

Примечание: может препятствовать запуску новых задач. Кроме того, Windows не стремится к неограниченному увеличению файла подкачки

Совет 5. Ограничьте размер дискового кэш с помощью параметров в файле System.ini, задав минимальный размер 2 МБ, а максимальный - 4-6 МБ. Windows не будет расходовать на кэш много оперативной памяти, что уменьшит потребность в использовании файла подкачки.

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

Особенности работы виртуальной памятью в Windows (начиная c 95)

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

Размер страницы памяти определяется аппаратной реализацией процессора. В процессорах семейства х86 этот размер равен 4 килобайтам.

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

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

В однопользовательской же операционной системе, которой преимущественно является Windows, такой алгоритм работы оказывается неоптимальным. Цель, стоящая перед Windows 95/98, совсем иная: не обеспечение максимальной загрузки процессора для наиболее полного использования его вычислительной мощности, а создание наибольших удобств для пользователя, то есть в первую очередь минимизация времени, требующегося на переключение между задачами, естественно, не за счет существенного замедления работы задач.

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

Чтобы ускорить переключение между приложениями и запуск новых задач, в Windows 95/98 используются следующие приемы.

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

После того, как потребность в виртуальной памяти уменьшилась и можно уменьшить размер файла подкачки, Windows 95 выжидает 45 секунд, а Windows 98 - две минуты, прежде чем начать действовать. Ведь за это время пользователь, скорее всего, запустит новое приложение, которому также потребуется виртуальная память.

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

Учтите при этом еще одну особенность Windows 95/98 (и Windows NT 4 тоже), неизвестную подавляющему большинству пользователей. Программы, имеющие формат LE (Linear Executable линейно выполнимые) и хранящиеся на локальном диске с несменяемым носителем, запускаются особым образом. Их запуск начинается не с загрузки программного кода в память, а с распределения памяти и сопоставления страниц виртуальной памяти участкам файла программы. То есть с точки зрения Windows 95/98 непосредственно перед запуском программа оказывается как бы выгруженной на диск, причем не в файл подкачки, а в свой собственный файл, который становится частью файла подкачки. Затем по обычным правилам идет обращение к странице, находящейся в виртуальной памяти. Остальные страницы подгружаются в память только при необходимости. Участки программы, которые в данный момент не используются, в память не загружаются. Тем самым достигается минимально необходимый расход оперативной памяти (ОП) и существенная ее экономия по сравнению с обычной процедурой считывания в память всей программы и лишь затем ее запуска. К тому же программа начинает выполняться раньше на время, почти равное требующемуся на ее загрузку в память. И код программы не переписывается в файл подкачки, то есть не располагается на диске фактически в двух экземплярах.

К типу LE относится подавляющее большинство программ написанных для 32-разрядных операционных систем семейства Windows (NT, 95, 98). Программа Where.exe, имеющаяся на компакт-диске Windows 98 сообщает о них, как об имеющих тип "NT" (а не LE!).

Заметим, что работа с LE – задачами очень похожа на отображение файлов в оперативную память (см. ниже).

Дополнительную экономию памяти можно получить, скомпоновав файл программы так, чтобы все секции кода начинались на границе, кратной 4 КБ. Для файлов Windows 98 и Office 2000 это условие выполнено еще при компиляции. Более старые программы необходимо обработать программой WinAlign.

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

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

Системный монитор может показать количество таких двояко используемых страниц и тем самым помочь определить, какая часть дискового кэш занята программами. Обычно этот показатель колеблется от 300 до 800 страниц, обычное значение - 500-600 страниц (т.е. 1,2-3,2 МБ и 2-2,4 МБ соответственно). В ваших условиях количество таких страниц может быть другим. Но очевидно, что уменьшение минимального размера кэш до двух мегабайт почти наверняка сделает кэш неэффективным.

Итак, в результате совокупности мер, принятых при разработке Windows 95 и, особенно, Windows 98 и последующих версий, в большинстве случаев запись в файл подкачки выполняется довольно редко и небольшими порциями. К тому же выполняется она преимущественно в то время, когда диск не загружен другой работой. Интенсивность чтения данных из файла подкачки, как правило, также невысока и редко превышает несколько сотен килобайт в секунду, а размер считываемого за один прием блока обычно не превышает несколько десятков килобайт.

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

Размещение большого файла подкачки в начале диска может увеличить скорость работы в основном из-за того, что оно совмещается с расположением программных файлов в начале диска. Такое размещение обеспечивается дефрагментаторами и несколько уменьшает время, требующееся для перемещения головок диска от программных файлов к файлу подкачки и обратно. А вот расположение файла подкачки на отдельном разделе того же диска, на котором установлена Windows, гарантированно снижает скорость работы Windows, поскольку требует перемещения головок на довольно большое расстояние.

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

Несколько слов о том, как определить, какой размер файла подкачки вам нужен. Часто предлагаемая формула "трехкратный размер оперативной памяти" основана на особенностях использования виртуальной памяти в Windows 3.x, но не в Windows 95/98. Поэтому поступите следующим образом. Запустите системный монитор, добавьте показатель «Размер файла подкачки» и установите интервал времени обновления в 10 минут. Проработайте с запущенным монитором весь день и посмотрите, какой размер принимал файл подкачки. Теперь установите для файла подкачки такой минимальный размер, который оказался бы достаточен для работы в течение 90-95 процентов времени. Максимальный размер не устанавливайте (укажите размер, соответствующий количеству свободного места на диске), чтобы не столкнуться с сообщением о нехватке памяти для запуска программ.

Такой настройкой вы избавите Windows от необходимости часто менять размер файла подкачки и не лишитесь возможности запустить столько программ, сколько вам нужно. А файл подкачки не будет занимать на диске лишнего места.

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

Существует еще одно различие между Windows 95 и 98. Первая из них при завершении работы уменьшает размер файла подкачки до минимума, а после запуска вновь его увеличивает. Windows 98 этого не делает. Причина достаточно очевидна. Во время разработки Windows 95 программы для ДОС были еще весьма распространены, а размеры дисков - не слишком велики. Чтобы при работе в режиме ДОС (или в старой версии ДОС) место на диске не терялось напрасно, файл подкачки решили уменьшать. К моменту появления Windows 98 необходимость в экономии места на диске для режима ДОС отпала. Как из-за того, что размеры дисков значительно выросли, так и из-за того, что на подавляющем большинстве компьютеров режим ДОС уже не использовался. Поэтому для уменьшения времени загрузки и завершения работы было решено отказаться от уменьшения размера файла подкачки при выходе из Windows. Зачем делать лишнюю работу, ведь этот файл все равно потребуется увеличить при следующем включении компьютера.

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

Если вам остро не хватает места на диске, то, возможно, вы сталкивались с ситуацией, когда файл подкачки занимал все свободное место и некуда было сохранить результаты работы. В этом случае вам поможет строка, добавленная в раздел [386Enh] файла System.ini:

MinUserDiskSpace=количество_килобайт

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

Итак, особенности:

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

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

3. LE (Linear Executable) – задачи. Их запуск начинается не с загрузки программного кода в память, а с распределения памяти и сопоставления страниц виртуальной памяти участкам файла программы.

4. Windows 98 же может выполнять программный код непосредственно из кэш.

5. Windows 98 увеличивает файл подкачки ступенями по 4 МБ, стремясь при этом, чтобы каждый такой участок был непрерывным.

6. Windows 95 при завершении работы уменьшает размер файла подкачки до минимума, а после запуска вновь его увеличивает. Windows 98 этого не делает.

7. Windows 95 выжидает 45 секунд, а Windows 98 - две минуты, прежде чем уменьшить размер файла подкачки.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 671; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.