Как задействовать всю оперативную память в Windows: самые распространенные ситуации и решения. ОС Windows видит не всю оперативную память

Всем доброго времени суток. Пять лет назад я написал статью с заголовком readyboost на windows xp и когда я писал эту статью я думал, что информация будет не актуальной, так как уже была Windows 7 в которой readyboost работает из коробки, да и вышла оперативная память ddr3 которая продавалась дешевле предыдущих плат памяти. Но к моему удивлению и сейчас человек 10 в день переходят из поисковых систем на страницу, за данный момент статью просматривали примерно 80000 раз, а это получается в среднем 42 раза в сутки – что для моего скромного сайта достаточно много.

Спрашивается, почему я начал с ностальгии и заговорил про readyboost на xp? Все просто, сегодня мы будем рассматривать ситуацию обратную т.е. readyboost используют когда оперативной памяти не хватает для комфортной работы, а мы рассмотрим как заставить работать больше 3,5 гигабайт оперативной памяти в windows xp . Четно признаться мне сложно смоделировать и логически объяснить ситуацию в которой это умение вам может пригодится (и да сегодня будет много комментариев от автора и лирических отступлений, если вам не интересно моё «бла бла бла» можете сразу смотреть скриншоты.). Но пригодилось оно мне когда на работе у меня был старый системник dell с oem’ мной windows xp которую нельзя было переустанавливать, ну и ладно было у меня 2Гб оперативной памяти, что для xp вполне достаточно, но тут я пошарился по складу пораздербанивал старые системники и вуаля у меня уже 6Гб оперативной памяти. Ну и как известно система увидела из них всего 3,5Гб и все получается у меня в простаивает 2,5Гб оперативной памяти что есть – плохо, эта мысль начала мне проедать мозг и однажды более опытный коллега мне посоветовал как это реализовать (по этому на авторство не претендую) и поможет нам в этом технология RAM disk . Что такое RAM disk? Все достаточно просто – это технология позволяющая создать раздел в оперативной памяти (RAM). И как нам это поможет задействовать остальную оперативную память? Мы в созданном разделе создадим файл подкачки! Еще немного справки, когда система распределяет всю оперативную память, то не приоритетные процессы могут быть перемещены в менее быстро действенную паять (файл подкачки) в подавляющем большинстве создаётся на жестких дисках скорость которых значительно медленнее чем оперативной памяти.

Для того чтобы показать вам реализацию данной функции я установил Windows XP в виртуальную машину (Virtual Box, возможно я когда–нибудь напишу статью как пользоваться этой программой) и очень переживал, что может не заработать, но все заработало нормально). Остро стал вопрос с выбором программы (нужно было чтобы и просто и бесплатно) нашел программку VSuite Ram disk (Free Edition) функционала бесплатной версии нам вполне хватит.

Ну и стразу пойдем по пунктам, а то я что-то увлекся со своим «бла бла бла»

– Для начала нам нужно скачать инсталятор и установить, в установке нет ничего сложного, жмем далее и все готово.

– Запускаем программу, видим основное окно программы, в поле «Disk Size» указываете объём памяти который не задействовала система (я выделил для виртуальной машины 4710Мб, а система задействовала 3,5Гб в результате у меня получилось ровно 1024Мб или 1Гб собственно это число я и укажу. P.s. Оставляйте хотябы 2Мб не задействованными (на всякий случай), и владельцы ПК с интегрированными видеокартами память которых выделяется из оперативной памяти пожалуйста учитывайте это!).

В поле «Drive Letter» указывается буква создаваемого диска, Я выбрал чтобы не путаться букву «R», а автоматическом режиме он задаст первую свободную в алфавитном порядке.

В поле «Volume Label» задаем название для раздела.

Жмем кнопку «Add» - готово! Для того чтобы проверить результат переходим в «Мой компьютер» и смотрим что такой раздел появился.

Если все получилось, то задаем файл подкачки на созданный раздел, при этом удаляя файл на других разделах. (Для тех кто не знает или не помнит где задается файл подкачки «Свойства системы\ Дополнительно\ Параметры быстродействия\ Дополнительно»). И после перезагрузки все должно заработать.

Понятно.
Посмотрел спецификацию процессора своего старого компьютера на сайте intel — про него там написано:
Instruction Set 32-bit
http://ark.intel.com/products/27438/Intel-Pentium-4-Processor-2_40-GHz-512K-Cache-533-MHz-FSB

А вообще, почитал в инете ещё по этой теме — пришёл к выводу, что для того, чтобы Windows увидела и начала использовать 4 Гб оперативной памяти — недостаточно одного только софта. То есть даже серверные версии Windows, в которых есть полноценный PAE (и хоть какие патчи туда устанавливай) — всё равно не смогут взаимодействовать со всей памятью, если чипсет в материнской плате не имеет дополнительных линий для взаимодействия с памятью. Т.е. для того, чтобы всё это заработало — помимо программной поддержки необходима ещё и аппаратная. Вот опять же на примере своего старого компа — там мат.плата на чипсете i945 — в инструкции к материнке заявлено, что памяти можно поставить до 4-х Гб. Но на деле — чего не придумывай, всё равно использовать все 4 Гб полностью там невозможно. Можно сказать, чипсет 32-х битный и он никак не сможет воспринимать адреса более 2^32 (это 4 Гб), т.е. физически в микросхеме нету столько ячеек для записи адреса или чего там, нет столько линий на плате… А поскольку всё общее адресное пространство (32-битное получается) уходит не только на оперативную память, но также и на все устройства — видео, звук там, контроллеры всякие и т.п. — то определённая часть оперативки остаётся без адресов и система не может с ними взаимодействовать. Получается, чтобы задействовать все 4 Гб памяти на 32 бит чипсете — нужно, чтобы на плате больше не было ничего кроме процессора, памяти и чипсета — никакого другого оборудования. Но зачем тогда такая система может быть нужна? :-)
А вот, к примеру, уже на чипе G31 (вроде) есть дополнительные 4 линии для работы с памятью, адресное пространство увеличивается до 2^(32+4) = 2^36, то есть до 64-х Гб (хотя тут тоже на самом деле получится не 64, а 64 минус объём адресного пространства, которое займёт оборудование).

В общем в итоге получается, что для того, чтобы Windows взаимодействовала со всей памятью нужно, чтобы
1. Набор микросхем мат. платы физически позволял использовать адресное пространство больше 32-х бит.
2. Набор микросхем мат. платы умел делать «переадресацию памяти» (memory mapping) — это когда ячейкам памяти с адресами, которые заняты оборудованием — присваиваются другие свободные адреса из пространства выше первых 32 бит
3. Операционная система умела использовать эту фичу мат. платы (на сколько я понял, умение ОС использовать эту фичу мат. плат — называется PAE — Physical Address Extensions).

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

Все пользователи персональных пк добиваются того, чтобы увеличить свою оперативную память. Если вы собираетесь установить дополнительную планку, то это может помещать вашим планам, так как компьютер может попросту не увидеть её.Так почему же доступна не вся оперативная память в разных версиях Windows?
Компьютер не увидит оперативную память по нескольким причинам. Разрядность системы может играть большую роль. Компьютер, с 32-разрядной операционной системой, не увидит более 3 гб ОЗУ, потому что он так устроен. Чтобы решить эту проблему нужно установить 64-разрядную операционную систему.
Может возникнуть такая ситуация, что система и вправду показывает такое количество оперативной памяти, которая должна быть, но доступна она в меньших объёмах памяти. Это объясняется тем, что память зарезервирована встроенной видеокарте, но при наличии дискретной такой проблемы не будет выявлено. Но всё же стоит убедиться в этом и проверить в BIOS включена она или же нет и какое количество памяти она в данный момент использует.
Также при выборе такого параметра, как «Максимум памяти», вы не сможете воспользоваться ей в полной мере. При помощи конфигурации системы возможно это проверить.

Вероятные проблемы

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

Устаревшее железо тоже может быть помехой. Материнские платы старого поколения могут не видеть больше, чем 4 гб. Для этого нужно посмотреть характеристики самой материнской платы и узнать о максимальном объёме памяти, которую она может поддерживать.

Возможно и то, что, если планка новая, можно попробовать установить оперативную память в различные разъёмы, это может решить проблему. Может быть, перестановка поможет системе увидеть их.
Если эти способы не помогли решить проблему, то рассмотрим следующие варианты, которые могут вам помочь.
Неправильная настройка BIOS тоже может быть всему виной.

Включить перераспределение памяти

Проверьте BIOS на наличие включения перераспределения памяти в его параметрах. Если перераспределить память, то для windows её огромный объём может стать доступен. Тот, кто поставляет оборудование, сам решает, как обозвать функцию, которая будет ответственна за перераспределение памяти. Она может иметь такие названия, как расширение памяти, перераспределение памяти или другие похожие названия. Но также и исключать и тот факт, что такая функция, как перераспределение памяти, может отсутствовать у компьютера.

Изменить размеры видеоаппаратуры AGP при помощи параметров BIOS

Требуется выяснить о выделенной памяти конкретно для видеоаппаратуры AGP. Система делится этой памятью с видеоадаптером, который используется, чтобы отображать текстуры и отрисовки. Параметры BIOS помогут в настройке размера видеоаппаратуры. Её размер обычно 32,64,128 или задаётся автоматически. Затем следует перезагрузить компьютер и проверить объём оперативной памяти.

Сегодня я расскажу об ограничениях виртуального адресного пространства Windows и о том, как бороться с ошибками «Недостаточно памяти», возникающие у 32-битных программ и игр, когда объем используемой ими памяти достигает 2 Гигабайт. Несколько простых способов обойти это ограничение и заставить приложения использовать более 2ГБ памяти.

Архитектура x86

Все современные десктоп процессоры Intel или AMD (и не только) основаны на x86 архитектуре, которая была впервые реализована в процессорах Intel 8086, вышедших в 1978 году. Вплоть до Intel 80386 (i386) процессоры были 16-bit и могли использовать лишь до 16 MB ОЗУ. Вышедшие в 1985 году i386 процессоры стали 32-bit , что дает возможность адресации до 4 GB оперативной памяти (до 64 GB в режиме PAE, но при этом приложения могут использовать так же только до 4 GB).

Понятное дело, что в те годы 4 GB выглядело практически недостижимым. Но ничто не стоит на месте и со временем этого оказалось мало. В 2003 году компания AMD (ага, уже не Intel ) в своих новых процессорах линейки Opteron внедрила расширение x86-64 (другие названия: AMD64, Intel64, x64, EM64T). Это расширение имело ряд улучшений: 64 битные основные регистры, дополнительные регистры и расширение адресного пространства. Текущая реализация позволяет использовать до 256 TB виртуального адресного пространства, при теоретическом максимуме в 16 EB (ExbiByte — 2 64 байт ). Процессоры Intel поддерживают расширение x86-64 (AMD64) со старших моделей Pentium 4 (Prescott и далее).

x86 и x64 операционные системы

Применимо к ОС (Операционные Системы) используется обозначения x86 (в обиходе часто обозначается как x32 ) и x64 , являющиеся 32-разрядными и 64-разрядными соответственно. Их различие в том, что x64 поддерживают AMD64, давая возможность использовать его преимущества, а x86 его не поддерживает (и не использует). На практике это дает определенные особенности и ограничения.

  • 64-разрядная ОС требует процессора с поддержкой AMD64 (все современные процессоры от Intel или AMD )
  • 32- разрядная ОС может работать, как на процессоре с поддержкой AMD64, так и без нее (но такую древность еще найти нужно)
  • 64-разрядные приложения работают только на 64-разрядной ОС
  • 32-разрядные приложения полноценно работают и на x32 и на x64 ОС, но преимуществ AMD64 они использовать не могут

На данный момент идет постепенный отказ от x86 операционных систем в пользу x64. Например, серверные версии Windows, начиная с 2008 R2, выпускаются только 64-разрядными. То же Microsoft частенько грозят сделать и для новых десктопных версий, но пока не делают.

Ограничения виртуальной памяти в Windows

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

Нас же интересует только виртуальная память , так как именно с ней взаимодействуют приложения. Если не вдаваться в подробности, то технология виртуальной памяти позволяет каждому процессу иметь свою собственную память – адресное пространство, которое виртуально не пересекается с адресными пространствами других процессов. То есть приложение «считает», что память принадлежит только ему одному и может даже использовать больше имеющегося объема физической ОЗУ, а уже распределением и согласованием занимается ОС.

И так, для 32-разрядных Windows общее ограничение виртуальной памяти – 4 GB (как и для 32-разрядных процессоров). 64-разрядные имеют ограничение от 15 до 256 TB в зависимости от версии. Но, любая редакция Windows делит общее адресное пространство на две части: user mode (пользовательский режим) – память, доступная приложениям и kernel mode (режим ядра) – память, используемая системой. И, если на х64 приложениям достается 8 – 128 GB, то для x32 это всего лишь 2 GB (фактически ~1.7-1.8 GB). При достижении этого лимита, приложение выдаст ошибку и будет закрыто, или просто «вылетит» без каких либо предупреждений.


Как устроена память в Windows, подробно расписано в Марка Руссиновича.

Функция настройки памяти 4GT

Для Windows x86 существует официальный «костыль», позволяющий перераспределить виртуальную память, давая приложениям до 3 GB, при этом уменьшая системное пространство до 1 GB. Называется это 4-Gigabyte Tuning . Как это выглядит, продемонстрированно на следующей схеме (слева – по-умолчанию, справа – с применением 4GT):


Включается опция следующим образом:

Для Windows XP/2003 – добавлением ключа /3GB в файле Boot.ini


Для Windows Vista/7/8 – команда BCDEdit /set increaseuserva 3072 (Пуск > Стандартные (Start > Accessories ), правой кнопкой по Командная строка (Command Prompt ) – Запуск от имени администратора (Run as Administrator ), ввести и запустить команду).


Включение данной опции может привести к некорректной работе некоторых драйверов, программ или Windows в целом.

Флаг IMAGE_FILE_LARGE_ADDRESS_AWARE

Приложение сможет использовать свыше 2 GB виртуального адресного пространства, только если оно скомпилировано с параметром IMAGE_FILE_LARGE_ADDRESS_AWARE . Все 64-разрядные приложения по-умолчанию имеют этот параметр (в этом их суть), а вот 32-разрядные могут иметь его или не иметь – тут все зависит от программиста, который поставил эту опцию при компиляции или не поставил.

Этот флаг – это то, что нам нужно, чтобы заставить 32 битное приложение использовать больше 2 GB памяти. Запуск такого 32-bit приложения на Windows x32 с применением 4GT даст ему до 3 GB памяти (фактически ~2.8 GB), а на Windows x64 все 4 GB.

К счастью, выставить этот флаг для любого приложения можно самостоятельно . Для этого есть несколько способов.

Перед тем, как приступить убедитесь , что приложение, которое вы хотите изменить, в данный момент закрыто .

4GB Patch

Самый простой способ.

Для начала скачайте программу с сайта автора или отсюда:

После запуска 4gb_patch.exe откроется стандартное диалоговое окно «Открытие файла», где вам нужно указать.EXE файл, который вы собираетесь изменить.

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

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

CFF Explorer

Для тех, кто точно знает, что делает.

CFF Explorer – бесплатная и довольно мощная программа для работы с PE заголовками от автора 4 GB Patch . Скачать можно с сайта автора .

  1. Установив и запустив программу, открываем нужный.EXE файл.
  2. Переходим к пункту File Header .
  3. Щелкаем в правом нижнем углу появившейся таблицы (так и написано – Click here ).
  4. В открывшемся окне выставляем галочку напротив App can handle >2gb address space .
  5. Применяем и сохраняем файл.

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

Обратное действие – то же самое, с той разницей, что галочку мы убираем .

EDITBIN.EXE

Небольшая утилита EDITBIN.EXE , которая есть в комплекте Microsoft Visual Studio.

Действия следующие (запускается из командной строки):

Выставить: EDITBIN.EXE /LARGEADDRESSAWARE name.exe

Убрать: EDITBIN.EXE /LARGEADDRESSAWARE:NO name.exe

С помощью этого же параметра (/LARGEADDRESSAWARE) задается использование памяти для проектов Visual Studio.

Заключение

Суммируя вышесказанное – для того, чтобы 32-разрядное приложение могло использовать более 2 GB памяти должны быть соблюдены два условия .

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

Как проверить используемый объем памяти?

Запускаем «Диспетчер задач». Переходим во вкладку «Быстродействие» и кликаем «Монитор ресурсов».

Переходим во вкладку «Память» и смотрим данные.

Причины некорректного использования оперативной памяти

Если Windows видит планку оперативной памяти, значит, проблема заключается в следующих моментах:

  1. Неправильная установка операционной системы. Для владельцев ПК с ОЗУ в 4 Гб подходит 64-битная версия системы, так как 32-битная использует максимум 3,15 Гб памяти.
  • Встроенная видеокарта потребляет ресурсы оперативки динамично, а не фиксировано. Это значит, что если ей понадобится определённый объём оперативной памяти, она его получит.
  • Предел материнской платы. На всех материнских платах есть определённое количество слотов под планки ОЗУ. Если на ней имеется свободный, это ещё не значит, что материнка сможет использовать дополнительную планку.
  • Старая версия БИОСа, которая не имеет возможности получить полный доступ ко всем ресурсам.
  • Механическая поломка слота или самой карты ОЗУ. Если у вас есть возможность поменять местами планки, сделайте это. Также ОЗУ можно проверить на работоспособность через программу «Memtest86+».

Как задать максимальное использование оперативной памяти?

Чтобы оперативная память использовалась полностью, стоит выполнить ряд несложных действий. Запускаем «Диспетчер задач». Жмём «Файл», «Новая задача (Выполнить)».

Вводим «msconfig» и кликаем «ОК».