категории | RSS

Компьютерные мифы: \\\"оптимизация памяти\\\"

Автор:Канер Ян
Компьютерные мифы: "оптимизация памяти"

Человеческая фантазия неистощима. Особенно, когда это касается способа заработать денег из воздуха. Основной рецепт прост - запускается и раскручивается какой-нибудь миф, затем либо предлагается способ решения высосанной из пальца проблемы, либо чудодейственное средство, позволяющее из ничего получить некую выгоду. Подробности же в красках разрисовывает воображение творцов этих легенд.
В компьютерной области за примерами таких надувательств далеко ходить не надо - о "проблеме 2000 года" не слышал только человек, проведший последние 10 лет вдали от цивилизации. Из той же оперы и чудесные программы "увеличивающие скорость передачи данных через аналоговые модемы на 300%".
Но здесь будет рассматриваться еще один способ заработка денег "из воздуха" для программистов-системщиков - "оптимизаторы памяти".
Программы эти достаточно широко распространены, также они могут включаться отдельными модулями в программы-настройщики для Windows. Просят за них от 10$ до бесконечности (зависит от жадности разработчиков), и обещают "катастрофическое увеличение производительности системы памяти". Но что происходит на самом деле? Для этого придется углубиться в принципы работы ОС Windows...
Windows отводит для каждого процесса (грубо говоря, программного модуля) запрашиваемое им количество "виртуальной памяти". Эта память может частично находится в физической (оперативной) памяти компьютера - RAM, частично в файле подкачки (swap или paging file), а также в кэш-памяти (cache), причем с точки зрения процесса, все это - одна непрерывная область памяти.
Одновременный доступ ко всей виртуальной памяти, выделенной процессу, невозможен. Виртуальная память разбивается на "страницы" (page) - области размером 4 килобайта. Одновременно доступна для чтения или записи только одна область. Всем механизмом виртуальной памяти ведает "Менеджер памяти" (Windows memory manager), который входит в ядро операционной системы.
Менеджер памяти ведёт несколько списков состояния страниц, которые используют процессы и операционная система. Это "Рабочий Список" (Working Set) - страницы, которые используются операционной системой, драйверами, процессами и программами. Если процесс пытается обратиться к странице, которой нет в Рабочем Списке, то генерируется "ошибка страницы" (Page Fault) и Менеджер памяти может отвести ему новую страницу в Рабочем Списке.
Когда процесс заканчивает работу с текущей страницей и переходит к следующей, то Менеджер памяти убирает её из Рабочего Списка и, если она была изменена, то помещает её в "список Модифицированных Страниц" (Modified Page List) для дальнейшей обработки, а после неё - в "Отстойник" (Standby List, "Список Ожидания"). Если страница не изменялась, то она сразу отправляется в "Отстойник".
Менеджер памяти ведёт ещё два списка - "Список Свободных Страниц" (Free List) и "список Обнуленных Страниц" (Zeroed Page List). Первый список помещаются страницы, которые освободились после окончания процесса. В список Обнуленных Страниц помещаются страницы, которые заполнила нулями специальная подпрограмма Менеджера памяти (Zero Page Thread).
Теперь рассмотрим работу "оптимизатора". Все они построены на одном принципе - заставить Менеджер памяти отдать оптимизатору как можно больше оперативной памяти. Если оптимизатор - очень настырный, а его разработчик достаточно хорошо разбирается во внутренностях Windows, то ему удастся заполучить и место, занимаемое в оперативной памяти страницами из "Отстойников" и списками Модифицированных Страниц процессов и даже Рабочими Страницами операционной системы. После чего оптимизатор торжественно рапортует доверчивому пользователю о проделанной работе и закрывается, освобождая всё захваченное место в памяти.
После этого в лучшем случае производительность не изменится, а в худшем - упадёт. Как только Менеджер памяти дойдет до некоего предела в выделении памяти оптимизатору, он начинает сбрасывать страницы других процессов в файл подкачки на диске. А некоторые из этих страниц надо будет потом вернуть с диска в память, если в них находятся необходимые запущенным процессам данные или программный код. Особенно это актуально для серверных приложений. Тем более что всё равно после закрытия оптимизатора Менеджер памяти перекроит всё по-своему. Тратится время, увеличивается нагрузка на жесткий диск, производительность системы падает.
Некоторые "оптимизаторы" могут еще "висеть" в системном трее, постоянно пытаясь поддерживать заданный пользователем объем свободной памяти. Эти "собаки на сене" только замедляют работу компьютера, не делая ничего полезного. Ведь задать, для какого процесса все время высвобождаются заветные мегабайты, совершенно невозможно.
Особенно же знающего человека веселят "оптимизаторы", грозящиеся произвести дефрагментацию виртуальной памяти - выстроить области памяти процессов едиными блоками без разбиения на куски. Интересно, как это можно сделать, если только Менеджер Памяти "знает", на каком физическом устройстве располагается тот или иной адрес памяти процессов. А Microsoft (из соображений безопасности) постоянно закрывает лазейки, позволяющие залезть в память другой программы и что-то там передвигать...
А что до "оптимизации памяти" - рецепт ее прост: не запускать "висеть" ненужные приложения. Удаление ненужных программ из автозагрузки и отключение неиспользуемых служб (для Windows 2000/XP) с помощью входящей в Windows программы msconfig.exe позволит освободить больше памяти, чем самый лучший "оптимизатор".



Источник новости: zhurnal.lib.ru

prommo1975
2010-01-25T16:03:58Z
Здесь находятся
всего 0. За сутки здесь было 0 человек

Комментарии 8

#8   registrashka    

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


0 ответить

#8   westking1    

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


0 ответить

#8   Dark_angelll    

westking1, для етого существует диспетчер задач))


0 ответить

#8   RpRICE    

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


0 ответить

#8   westking1    

Есть одна хорошая прога от отечественного производителя smile никаких файлов подкачки чисто выгружает ненужные процессы . Я в играх добивался прироста лишних 10 фпс ! Если кому нужно название пишите в лс


0 ответить

#8   Ganzic    

Давно уже подобными вещами не пользуюсь, ибо как следствие всех этих оптимизаторов-перестановка винды


0 ответить

#8   crazy-pavel    

да-да. Например в набор Auslogics BoostSpeed входит подобный оптимизатор. Помню как еще давно, после запуска увеличился объем свободной памяти, я даже глазам не поверил, но после проверки файла подкачки - понял что чудес не бывает. Вся память была \\"сброшена\\" в файл подкачки. С тех пор подобными вещами не пользуюсь.)))


0 ответить

Яндекс.Метрика