Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Операционные системы -> Windows -> Оптимизаторы памяти для Windows NT/2000/XP


Оптимизаторы памяти для Windows NT/2000/XP: мысли вслух


Автор: Clone99
Источник: www.fcenter.ru
Компьютеры в современной жизни заняли своё твёрдое место, и уже трудно вспомнить, как без них обходились лет десять назад. Но компьютер без программного обеспечения - это только груда железа, из которого можно извлечь немного драгоценных металлов.

Я уверен, что программный рынок гораздо больше рынка компьютерного железа. Наряду с действительно полезными программами, пользователям предлагают и абсолютные пустышки. Но, разумеется, денег за них просят. Можно понять, если какой-нибудь молодой да ранний набрался поверхностных знаний из популярных книжек и начал выдавать программы "на гора". Может быть, со временем наберётся мастерства...

Но довольно часто для того, чтоб пользователи отдавали за пустышки деньги добровольно и с "чувством глубокого удовлетворения", запускается и раскручивается какой-нибудь миф. Самым большим таким надувательством в компьютерных технологиях, конечно же, была "проблема" 2000 года. Но и более мелкие "утки" продолжают летать и приносить деньги.

Первое, что из таких пернатых мне приходит на ум, это программы, "увеличивающие скорость передачи данных через аналоговые модемы на 300%". Даже комментировать не хочется...

Вот и программы, оптимизирующие память компьютера - из той же стаи. И просят за них от 10$ и до бесконечности (в зависимости от жадности и технических знаний). Не вдаваясь в подробности, на процессорах х86 под управлением Windows, программа, более точно - процесс, работает с виртуальной памятью, которую ему отводит операционная система. Фрагменты виртуальной памяти могут находиться в физической памяти компьютера (RAM), занимать часть файла подкачки (swap, он же paging file) и располагаться в кэш-памяти (cache).

Виртуальная память процесса, хотя и имеет непрерывную адресацию, разбивается на Страницы (page). Обычно, на 32-битных процессорах х86, размер Страницы равен 4096 байт. Размер 4096 байт определён архитектурой железа. В специальных случаях размер может быть и 4 Мбайта.
В качестве аналогии доступа к физической памяти: RAM можно представить, как ленту (а ещё лучше - логарифмическую линейку :), а страницу - как окно (визир), которое перемещается по ленте.


Прочитать или записать можно только в то место, над которым располагается окно и только страницу целиком. Управлением страницами виртуальной памяти занимается Менеджер памяти (Windows Memory Manager). Он входит в ядро операционной системы.


Менеджер памяти ведёт несколько списков состояния Страниц, которые используют процессы и операционная система. Это список Рабочих Страниц (Working Set) - тех, которые используются операционной системой, драйверами, процессами и программами. Если процесс пытается обратиться к странице, которой нет в списке Рабочих Страниц процесса, то генерируется ошибка на уровне железа (Page Fault) и Менеджер памяти может отвести ему новую страницу.

Если процесс освобождает Страницу, то Менеджер памяти убирает её из списка Рабочих Страниц и, если она была изменена, то помещает её в список Модифицированных Страниц (Modified Page List) для дальнейшей обработки, а после неё - в "Отстойник" (Standby List). В противном случае, Страница сразу отправляется в "Отстойник". Список Модифицированных Страниц и "Отстойник" могут выполнять функции кэша для процесса, но это отдаётся на усмотрение Менеджера памяти.

Менеджер памяти ведёт ещё два списка - Список Свободных Страниц (Free List) и список Пустых Страниц (Zeroed Page List). В список Свободных Страниц помещаются Страницы, которые освободились после окончания процесса. В список Пустых Страниц помещаются Страницы, которые заполнила нулями специальная подпрограмма Менеджера памяти (Zero Page Thread).

Теперь стоит обратить внимание на числа, которые показывает Task Manager.


Available - свободное место RAM. Это сумма объёмов "Отстойника", Пустых Страниц и Свободных Страниц. System Cache - RAM, занятая системным кэшем. Это сумма "Отстойника" и Рабочих Страниц операционной системы (System working set), которые управляются специальным кэш-менеджером (Cache Manager), входящим в ядро операционной системы.

Все оптимизаторы RAM построены на одном принципе. Заставить Менеджер памяти отдать оптимизатору как можно больше памяти. Если оптимизатор - очень настырный, то ему удастся заполучить и Страницы из "Отстойников" процессов и Рабочие Страницы операционной системы. После чего оптимизатор торжественно рапортует о проделанной работе и закрывается, освобождая всё захваченное место в памяти.

После чего в лучшем случае производительность не изменяется, а в худшем - упадёт. Как только Менеджер памяти дойдет до некоего предела в выделении памяти оптимизатору, он начинает сбрасывать Страницы в файл подкачки на диске. А некоторые из этих Страниц надо будет потом вернуть с диска в память, если в них кэшировались данные или программный код. Особенно это актуально для серверных приложений. И всё равно Менеджер памяти всё перекроит по-своему.

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

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

В общем, оптимизаторы RAM - сплошная маниловщина...

P.S. Окончательным толчком к появлению этого материала послужила статья одного из самых сведущих в операционных системах Windows людей в мире Марка Руссиновича (Mark Russinovich) "The Memory-Optimization Hoax. RAM optimizers make false promises", опубликованной в январском номере "Windows & .NET Magazine", January 2004.
И я не могу не согласиться с ним в том, что как бы не относились к Microsoft, но если бы эти оптимизаторы работали как надо, их алгоритмы уже давно бы включили в ядра операционных систем Windows...
 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100