Как сделать чтоб оперативка работала на всю. Система видит не всю оперативную память. Почему не видна вся оперативная память

Сегодня я расскажу об ограничениях виртуального адресного пространства 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 памяти должны быть соблюдены два условия .

Приветствую, дорогие читатели! К нашей огромной радости цены на комплектующие неуклонно ползут вниз, и сегодня 8 Гб оперативки на домашнем компе – не что‐то из ряда вон выходящее, а «программа‐минимум» для продвинутого геймера.

Однако пользователя может ожидать неприятный сюрприз: независимо от объема установленной ОЗУ и количества планок на компьютере, операционная система видит не всю оперативку.

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

32‐битные ОС

Для понимания сути проблемы следует немного вспомнить историю развития компьютерной техники. Не буду слишком сильно углубляться в детали и постараюсь дать краткую выжимку. На ПК, созданном еще в бородатом 1981 году, команды периферическим устройствам и обращение к оперативной памяти были совмещены. Соотношение объема адресного пространства, отводимого под ОЗУ и BIOS, было принято 5:3.

С появлением в 1985 году процессора 80386 разделение адресов осталось неизменным в целях совместимости с компьютерами‐предшественниками. Устройствам, использующим адресное пространство, выделили целый четвертый гигабайт. Тогда такая величина казалась заоблачной цифрой: сам Билл Гейтс, создатель Windows, заявлял, что 640 килобайт оперативки достаточно для каждого.

Такая архитектура на 32bit стала стандартом, по которому в течение последующих 20 лет развивалась оргтехника. В 32 битной Винде, независимо от объема установленной памяти, пользователю доступно только 3,25 Гб – все остальное отжирают системные ресурсы. Это наблюдается и на устаревшей, но кое‐где еще используемой «Хрюше», и на windows 7, и на windows 10.

То, что юзер может задействовать не весь объем памяти под свои нужды, устранено на 64bit версии Винды. Узнать версию Windows можно, найдя пункт «Компьютер» в меню «Пуск», кликнув по нему правой кнопкой мыши и выбрав «Свойства».

При этом учитывайте, что из‐за разницы в архитектуре, апгрейд с 32‐разрядной версии до 64‐разрядной невозможен: потребуется полная переустановка операционной системы. Драйвера для всех устройств также придется найти 64‐битные.

Аппаратная проблема

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

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

Настройки конфигурации

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

  • Ввести в строке поиска msconfig и запустить найденный файл;
  • В открывшемся окне перейти во вкладку «Загрузка» и выбрать пункт «Дополнительные параметры»;
  • В следующем окне убрать флажок «Максимум памяти».

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

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

Большинство специалистов в области оптимизации операционных систем семейства Windows одной из самых главных проблем этих ОС называют невозможность использования полного объема ОЗУ, установленного на компьютере, причем вне зависимости от архитектуры (32 или 64 бита). Система либо не распознает память выше определенного лимита (обычно это 4 Гб в 32-битных ОС), либо видит память, но работать с ней не может. О том, как задействовать всю оперативную память, далее и будет рассказано. Но сразу следует предостеречь всех пользователей, что применять некоторые приводимые ниже решения можно только на свой страх и риск.

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

И для начала давайте посмотрим, как узнать полный установленный и используемый в данный момент объем ОЗУ. Если посмотреть на раздел свойств системы, вызываемый через меню ПКМ на значке компьютера на «Рабочем столе» или в «Проводнике», сразу же можно заметить, что в описании указан и весь объем, и доступный. Почему доступный размер меньше? Да только потому, что в любом случае система часть оперативной памяти использует под свои нужды (для процессов, как раз и обеспечивающих функционирование самой ОС).

Точно так же просто можно обратиться к системному монитору в «Диспетчере задач», если перейти на вкладку производительности. Однако ситуаций с невозможностью задействования всего объема может быть две:

  • система не видит объем выше 4 Гб;
  • общий объем определяется, но использоваться не может.

Ограничения 32-битных систем

Конечно, если на компьютере установлена операционная система с архитектурой 32 бита, все проблемы можно было списать исключительно на ее разрядность, ведь такие модификации Windows с объемами памяти выше 4 Гб работать просто «не приучены» изначально. Поэтому единственно правильным решением для исправления ситуации станет самая обычная замена системы х86 (32 бита) на 64-разрядную.

Но ведь иногда можно встретить и случаи, когда в той же Windows 7 х86 память 8 Гб видна, а доступным оказывается размер до 4 Гб. А вот это как раз и связано с ограничениями, которые подразумевает 32-битная архитектура. Впрочем, ситуация может быть еще банальнее, поскольку и материнская плата не всегда дает разрешение на использование полного объема ОЗУ. Чтобы не менять «железо», можно обратиться к некоторым скрытым программным инструментам, которые помогут решить такую проблему если не в полной мере, то хотя бы частично.

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

Итак, первым делом необходимо запустить конфигуратор системы, вызываемый командой msconfig, но обязательно с правами администратора. Если в консоли «Выполнить» такой пункт отсутствует, сначала необходимо активировать «Диспетчер задач», а затем, используя файловое меню, задать выполнение новой задачи, вписать указанную команду и отметить пункт создания задачи с правами администратора. Как задействовать всю оперативную память, вне зависимости от архитектуры?

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

Действия в BIOS

Теперь давайте посмотрим, как задействовать всю оперативную память (снять лимит ограничения), используя для этого настройки первичной системы ввода/вывода BIOS. Иногда это тоже помогает, хотя, как уже, наверное, понятно, разрядность установленной операционной системы здесь также не учитывается.

В меню разделов необходимо найти параметр, содержащий что-то вроде RAM Remapping (over 4 Gb) или Memory Hole, и активировать его, выставив для него значение Enabled. Если такого пункта в настройках нет, по всей видимости, версия BIOS изменение таких опций не поддерживает. Однако получить к ним доступ можно за счет установки обновленной прошивки для самой первичной системы. Но без специальных знаний заниматься такими вещами самостоятельно не рекомендуется, поскольку последствия могут быть совершенно непредсказуемыми.

Пропатчивание системных файлов

Наконец, рассмотрим решение, касающееся именно систем с архитектурой х86. Как раз о его использовании на свой страх и риск было сказано в самом начале. Для того чтобы обойти ограничения и задействовать оперативную память в 32-битных ОС Windows, можно воспользоваться утилитой ReadyFor4GB, которая подходит и для случаев, когда система более 4 Гб не видит, и для ситуаций, когда полный объем памяти определяется, но использовать его не представляется возможным.

После старта программы путем запуска от имени администратора одноименного исполняемого файла формата EXE из папки самого портативного приложения последовательно нажать кнопки Check и Apply. После этого появится сообщение, в котором нужно дать согласие на установку патча для файла ntkrnlpa.exe, нажав соответствующую кнопку (при этом будет сохранен файл ntkr128g.exe). Теперь из той же папки следует запустить файл сценария AddBootMenu.cmd (опять же, от имени администратора), а затем нажать клавиши «Y» и «Ввод». По завершении выполнения скрипта остается закрыть командную консоль, выполнить аналогичные действия с файлом RemoveWatermarkX86.exe и перезагрузить компьютер. Если в процессе рестарта появится меню «Диспетчера загрузки», в нем нужно выбрать строку для системы Microsoft Windows .

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

Примечание: если с установкой патча в Windows 7 возникли проблемы, возможно, сначала в разделе программ и компонентов придется удалить системные пакеты обновлений (KB) с номерами 3147071, 3146706 и 3153171, задать повторный поиск обновлений и исключить указанные апдейты из списка установки.

Заключение

Как задействовать всю оперативную память, думается, немного понятно. Остается добавить, что вышеописанные методы более ориентированы именно на 32-битные системы, поскольку в Windows с архитектурой 64 бита появление таких ситуаций встречается нечасто, а настройки, установленные по умолчанию, обычно таковы, что предпринимать какие-то дополнительные действия не нужно. Если уж на то пошло, для освобождения дополнительного объема ОЗУ уберите ненужные элементы из раздела автозагрузки или отключите неиспользуемые службы и компоненты системы.

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

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

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

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

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

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

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

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

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

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