Ограничения 32 разрядной windows. Еще раз про Windows и четыре гигабайта. Пару слов в предисловие

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

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

Ниже приведена подробная информация о том, сколько нужно оперативки для Windows 7, чтобы компьютер мог стабильно и корректно работать.

Какой объем памяти требует «Семерка»?

Чтобы «Виндовс 7» была способна нормально функционировать в ПК, необходимо учитывать, что потребуется ей обеспечить достаточное количество не только оперативной, но и виртуальной памяти, а также определенный ее объем на системном диске.

Минимальные требования к ОЗУ

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

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

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

Сам разработчик «Семерки» предъявляет минимальные требования к необходимому объему RAM не менее 1 гигабайта.

Однако этот параметр «Майкрософт» устанавливает только для 32-разрядной «Виндовс 7». Это значение должно быть вдвое больше, если планируется инсталлировать в ПК 64-битную ОС.

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

Максимальные возможности системы для работы с большими объемами ОЗУ

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

Поэтому, если пользователю требуется работать с ресурсоемкими программами, целесообразнее инсталляция в ПК 64-разрядной Windows 7. На рисунке ниже приведены параметры, указанные на официальном источнике Microsoft.

С целью уточнения модификации «Виндовс 7», функционирующей в ПК, необходимо исполнить следующие несколько шагов:

  1. Кликнуть «Пуск»;
  2. Затем нажать ПКМ на «Компьютер»;
  3. Щелкнуть «Свойства»;

Обычно достаточное количество ОЗУ для выполнения офисных задач составляет 4 гигабайта. Если же пользователь работает с ресурсоемкими графическими приложениями, а также с программами обработки аудио и видео, то обязательным требованием будет использование 64-битной ОС, так как она позволяет задействовать большое количество установленной в компьютере оперативки.

Требования «Виндовс 7» к объему памяти на диске

Одной лишь установкой крупной планки ОЗУ в ПК не обойтись. На винчестере компьютера тоже следует отвести достаточное пространство для функционирования «Семерки».

По данным разработчика системы, требуется не меньше 16 гигабайт памяти на системном томе в случае 32-разрядной системы, а для 64-х этот показатель уже должен быть не ниже 20.

Однако практика доказывает, что вышеуказанные цифры явно занижены. Фактически для обеспечения более или менее нормального функционирования ПК минимум следует отводить 40–50 Gb.

А для комфортной работы целесообразно указанное число еще умножить на два.

Требования «Виндовс 7» к количеству виртуальной памяти

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

Еще его именуют «файлом подкачки». «Семерка» его объем устанавливает в автоматическом режиме, но для более устойчивой работы системы часто требуется самостоятельная регулировка этого параметра.

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

Для этого необходимо сделать:


При необходимости ручной регулировки параметра оптимальным объемом файла подкачки является 2–4 Gb.

Чтобы установить его, потребуется исполнить всего несколько шагов:

Максимальный размер оперативной памяти, который поддерживают 32-разрядные системы

Зададимся вопросом: могут ли 32-разрядные системы работать с физической памятью больше 4 ГБ в принципе и если да, то каким образом.

Главное, что надо сделать в самом начале, это четко разделить между собой три понятия:

Свойства процессора;
32-битная операционная система;
32-разрядное приложение (программа)
Последние два очень часто смешивают в одну кучу, чего в данном случае, делать как раз не следует. Начнем по порядку и издалека – совершим короткий исторический экскурс.

Обратимся к таблице основных характеристик популярных процессоров от Intel:

Эта таблица нужна нам для того, чтобы наглядно показать тот факт, что разрядность адресной шины отнюдь не всегда совпадала с разрядностью архитектуры процессора.
Для начала обратим внимание на 16-разрядные процессоры. Если бы они имели 16-разрядную адресную шину, то максимальный размер доступной им физической памяти составлял бы всего 64 КБ (2 в 16-й степени равно 65536). Однако уже Intel 8086 мог работать с памятью до 1 МБ, а 80286 уже до 16 МБ благодаря 20 и, соответственно, 24 битам шины адреса.
Эпоха процессоров x86 совместимых процессоров с 32-х разряздными регистрами и 4 ГБ ОЗУ началась с Intel 80386 в далеком 1985 году. На протяжении последующих 10 лет 32-х разрядный процессоры архитектуры х86 не имели физической возможности работать с памятью более 4 ГБ.
В 1995 году был представлен процессор Intel Pentium Pro. Наряду с совершенно новой архитектурой ядра этот процессор получил 36-битную адресную шину благодаря чему, как не трудно подсчитать, максимальный размер доступной ему физической памяти увеличился до 64 ГБ (в современных 64-разрядных процессорах используются 37 разрядов, что увеличивает предел адресуемой физической памяти до 128 ГБ).
Кроме того, в процессоре был реализован «хитрый» механизм управления памятью, который отображал физическую память, расположенную за пределами 4 ГБ, в 32-разрядную виртуальную память в диапазоне 0 - 4 ГБ «обманывая» таким образом 32-разрядные приложения. Такой режим управления памятью процессором х86 получил название PAE (Physical Address Extension - расширение физических адресов).
Pentium Pro позиционировался в то время как процессор для серверов и рабочих станций. Действительно, представить себе в 1995 году настольный компьютер с объемом оперативной памяти не то что больше, а хотя бы отдаленно приближающимся к 4 ГБ, было не просто. Память измерялась тогда мегабайтами. К примеру, в 1998 году размер ОЗУ обычного настольного компьютера в 32МБ не считался маленьким. А стоила такая планка памяти от 60$. И в наше то время (2014 год) полным ходом используются компьютеры менее чем с 4 ГБ памяти. Для работы офисных приложений в связке с Windows XP такого объема памяти даже много. Кроме того, процессор Pentium Pro был очень дорогим и имел проблемы с быстродействием при выполнении популярных в то время 16-разрядных приложений.
Можно сказать, что такое решение было новым для 32-разрядных процессоров, однако, в силу того, что ранее подобная практика повсеместно применялась в 16-разрядных процессорах, революционной ее назвать сложно. Ведь еще со времен DOS широко применялся трюк с сегментной адресацией когда вся память была разбита на сегменты в 64КБ и адрес состоял из двух частей: сегмента и смещения внутри сегмента, таким образом удавалось использовать более 64КБ памяти.
Не все, но подавляющее большинство современных процессоров х86 для настольных компьютеров являются 64-разрядными и имеют поддержку PAE. Благодаря этому они не только могут работать с памятью более 4 ГБ, но и предоставляют такую возможность 32-битным операционным системам.

Проще всего определить поддержку режима PAE процессором оказалось в Linux. В Ubuntu, или в любом из ее многочисленных клонов, можно набрать в терминале:
grep -color=always -i PAE /proc/cpuinfo
В результате должно получиться что-то вроде этого:

32-разрядные операционные системы

Первой в ряду 32-разрядных ОС Microsoft стала Windows NT 3.1, выпущенная в 1993 году. Она предназначалась для корпоративного сектора, то есть для серверов и рабочих станций. Двумя годами позже в 1995 году появилась Windows 95 - операционная система для настольных компьютеров и ноутбуков. Между двумя этими событиями в 1994 году была представлена версия 1.0 ядра Linux. 32-разрядная архитектура оказалась столь удачной и «достаточной», что она повсеместно используется до сих пор на протяжении вот уже 2-х десятилетий. Последней 32-битной серверной операционной системой Microsoft стала Windows Server 2008. Однако, новейшая Windows 8 по-прежнему предлагается в двух вариантах. Для реализации дополнительных возможностей режима расширения физических адресов, помимо наличия соответствующего процессора и материнской платы с адекватным чипсетом и нужным количеством разведенных адресных линий, необходима поддержка PAE непосредственно самой операционной системой.
Если у Вас 32-разрядный Linux, то проблем с использованием памяти объемом более 4 ГБ, скорее всего, не возникнет. В операционных системах Linux поддержка PAE появилась в 1999 году в ядре 2.3.23 и используется с тех пор безо всяких ограничений.

Посмотрим таблицу максимально поддерживаемых размеров физической памяти, взятую из статьи 2005 года в msdn.microsoft.com, для Windows 2000, Windows XP и Windows Server 2003 >

Как видно из этой таблицы, режим PAE поддерживается во всех версиях ОС Microsoft начиная с Windows 2000. Вариации размеров максимальной памяти в различных версиях серверных операционных систем объясняются исключительно их позиционированием на рынке компанией Microsoft. Наверное, так проще объяснить их отличающуюся друг от друга стоимость. Для нас особый интерес представляют строки таблицы, которые прямо говорит о том, что во всех версиях Windows XP общее адресное пространство физической памяти ограничено на уровне 4 ГБ. Именно искусственно ограничено в ядре, так как поддержка PAE есть.
Режим PAE может быть включен, может быть выключен. Начиная с Windows XP SP2 PAE включается принудительно для обеспечения работы технологии безопасности DEP (Data Execution Prevention - предотвращение выполнения данных).

DEP – это технология, которая позволяет защитить операционную систему от большого класса вредоносного кода, который изначально внедряется в область памяти, отведенную под данные и маскируется под данные, а затем пытается из нее запуститься. Технология DEP такое выполнение вредоносного кода блокирует. Реализуется технология как программно, так и аппаратно. В последнем случае процессор помечает отдельные страницы памяти как не содержащие исполняемого кода измененным старшим битом в адресной таблице PTE (Page Table Entry) виртуальной памяти, а затем перехватывает и предотвращает запуск исполняемого кода с этих страниц.

32-разрядные приложения
Благодаря диспетчеру памяти процессора, осуществляющему ее распределение в режиме PAE независимо от работы приложений, и поддержке такого режима работы операционной системой, 32-разрядные приложения отделены от физической памяти и не имеют сведений о ее реальном размере. Каждому приложению, так как для них сохраняется 32-битное адресное пространство, по-прежнему доступны только 4 ГБ виртуальной памяти. В Windows под нужды самого приложения из этих 4 ГБ отдается ровно половина, в Linuх - 3 ГБ. В Windows существует возможность принудительно отдать приложению 3 ГБ, но, в большинстве случаев, это является нецелесообразным.
Необходимо иметь в виду, что включение режима PAE отнюдь не эквивалентно переходу на 64-битную систему, в которой каждому приложению выделяется несравнимо больший объем памяти. Если за счет PAE попытаться непосредственно удовлетворить непомерный аппетит некого современного приложения, например, пакета инженерного или графического моделирования, то ничего хорошего не получится. А вот если требуется одновременно запустить несколько требовательных к памяти (но не супертребовательных) приложений, то польза от PAE будет прямая. В первую очередь это касается серверов.
Например, требуется одновременная работа двух виртуальных машин, каждой из которых отведено по 2 ГБ памяти. Что будет без PAE понятно - вторая виртуальная машина, скорее всего, просто не запустится, ну или в системе начнется такой интенсивный обмен со swap-файлом, что процесс перейдет в категорию «пошаговая стратегия». С включенным PAE, при условии достаточного объема физического ОЗУ хостовой машины, обе виртуальные машины смогут благополучно работать.
К недостаткам PAE обычно относят возможное снижение производительности системы из-за уменьшения скорости доступа к памяти, связанной с дополнительными операциями на переключение отображаемых страниц памяти, и плохую работу некоторых драйверов устройств в 36-битном адресном пространстве.

Максимально поддерживаемые различными версиями Windows объемы физической памяти

Посмотрим сколько оперативной памяти поддерживают другие версии Windows, выпущенных после ХР.

В версиях Windows Vista х86 по сравнению с ХР практически ничего не изменилось.

Как видим, опять никаких изменений – абсолютный предел для x86 остался на уровне 4 ГБ. 1 ГБ в Windows Vista Starter и 2 ГБ в Windows 7 Starter только подкрепляют вывод об искусственном характере этих ограничений.

То же для Windows 8

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

И тут самое время рассмотреть причины, по которым Microsoft ограничивает верхний предел доступной физической памяти в клиентских версиях Windows x86.

Одна из главных причин - Проблемы с безопасностью Windows XP.

Windows XP была выпущена осенью 2001 года и за очень короткий срок завоевала огромную популярность среди пользователей во всем мире. А, как известно, где большая популярность, там и большие проблемы. Моментально для нее было создано огромное количество вредоносного кода в виде разнообразных и многочисленных вирусов. При этом оказалось, что новая операционная система имеет ряд уязвимостей и весьма низкую стойкость ко взлому. Своего полноценного клиентского антивирусного пакета в то время у Microsoft не было. Ситуацию в значительной мере исправляли программные продукты сторонних разработчиков, однако, этого было явно недостаточно и, в целом, положение оставалось весьма напряженным.
Для того чтобы как-то повысить безопасность Windows XP, в 2004 году был выпущен второй пакет обновлений - SP2. И тут возникли проблемы. Одной из главных особенностей этого пакета, с точки зрения безопасности, было включение технологии DEP (Data Execution Prevention - предотвращение выполнения данных). Эта технология, повсеместно используемая и сегодня, позволяет отражать целый класс вредоносных атак благодаря запрету запуска исполняемого кода с непредусмотренных для этого страниц памяти. Но для работы DEP должна быть включена поддержка PAE (Physical Address Extension - расширение физических адресов). Включение режима PAE меняет механизм обращения к страницам оперативной памяти и делает возможным работу с физической памятью размером более 4 ГБ. Однако при подготовке и тестировании Windows XP со вторым пакетом обновлений обнаружились большие проблемы, приводившие к фатальным ошибкам и аварийным отказам в работе операционной системы. Очень быстро причины неприятностей были найдены. Ими оказались драйверы устройств, написанные без учета возможности их работы в режиме PAE.

Небольшое отступление.
В режиме PAE любая страница памяти 32-разрядного виртуального адресного пространства приложений на самом деле может быть расположена в любом месте доступной физической памяти. Обычные приложения это обстоятельство никак не затрагивает, им все равно. А вот для драйверов устройств все значительно хуже – им то надо работать с конкретными физическими адресами, а не с виртуальными. Условно ситуацию можно представить так:

Драйвер пытается считать или записать некую информацию по адресам, которые отведены для работы с устройством. Если драйвер “глупый”, не понимает в каком окружении он работает и не может “договориться” с операционной системой, то, как показано на рисунке, вместо портов ввода/вывода своего устройства он начнет общаться с некими ячейками физической памяти. Результат такого “общения” для работы системы непредсказуем, вплоть до полного "зависания" и перезагрузки.

Для того чтобы решить эту проблему и не блокировать установку SP2 пользователями из-за возможных проблем, Microsoft приняла командирское решение - PAE включить, но тривиально ограничить верхнюю границу доступной оперативной памяти клиентских версий своей операционной системы на уровне 4 ГБ. Адреса при этом транслируются один в один как в “классической” 32-разрядной системе и “глупые” недоделанные драйверы устройств успешно работают.
Ну что же, дешево и сердито. Дешево потому, что производителям оборудования не нужно было спешно заказывать разработку “правильных” драйверов. Сердито потому, что отложенные таким образом до поры до времени проблемы с использованием физической памяти компьютера, были переложены на конечного пользователя.
Много уже гигабайт утекло с момента выхода SP2 для XP, а Windows по-прежнему не видит оперативную память больше 4 ГБ и, как мы видели по таблице “Physical Memory Limits: Windows 8”, изменений в этом плане не предвидится.
И это не совсем понятно: для Windows Vista все равно пришлось писать новые драйвера, значит была возможность переписать их корректно для работы с PAE, но ограничение в 4 ГБ так и осталось.
Сегодня уже очень трудно представить себе 32-разрядные драйверы, которые не умеют работать с памятью более 4 ГБ. Возможно причина в том, что Microsoft таким образом хочет подтолкнуть пользователей к переходу на x64?

А как же серверные версии Windows?
Можно предположить, что для них драйверы устройств сразу разрабатывались с учетом работы в режиме PAE, то есть были “умными” и тщательно тестировались. Этому способствовало и то обстоятельство, что в серверных конфигурациях оборудования не было такого “зверинца” встроенных устройств.
До недавнего времени, например, до появления технологии виртуализации рабочих мест, которая, в том числе, предполагает возможность обработки графики самим сервером, последнему совершенно не нужна была серьезная видеокарта, так как вполне хватало видео, встроенного в материнскую плату. Кроме того, 32-разрядные серверные версии Windows закончили свою историю на Windows Server 2008.

Во второй части секреты распределения памяти в 32-х разрядной Windows и как бороться с ограничением.

Максимальный объем оперативной памяти для Windows 7 x86 (32 битная):Windows 7 Ultimate — 4 GB

Windows 7 Enterprise — 4 GB
Windows 7 Professional — 4 GB
Windows 7 Home Premium — 4 GB
Windows 7 Home Basic — 4 GB
Windows 7 Starter — 2 GB

Максимальный объем оперативной памяти для Windows 7 x64: Windows 7 Ultimate — 192 GB
Windows 7 Enterprise — 192 GB
Windows 7 Professional — 192 GB
Windows 7 Home Premium — 16 GB
Windows 7 Home Basic — 8 GB
Windows 7 Starter — 2 GBДругими словами — максимальный объем оперативной памяти зависит от разрядности и от версии.максимальный объем оперативной памяти для других версий Windows можно посмотреть здесь:
http://msdn.microsoft.com/en-us/library/aa366778.aspxПочему системе доступно меньше памяти, чем реально установлено в системном блоке? Это связано с тем, что часть адресного пространства (начиная с конца 4-го гигабайта в обратном направлении и небольшая часть с начала 1-го гигабайта) зарезервирована для адресации памяти видеокарты и других устройств. Поэтому при наличии более 3 GB оперативной памяти, не вся она может использоваться операционной системой. В свойствах системы это будет выглядеть так: Как позволить системе использовать всю установленную память?

Это можно сделать с помощью функции перераспределения памяти (Memory Remapping). Включить ее позволяют большинство BIOS’ов. В этом случае адреса устройств переносятся из первых 4-х гигабайт за пределы установленного в системе объема оперативной памяти.

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

Самый очевидный способ повысить производительность компьютера - закрыть ненужные программы. Второй - установить побольше планок (плат) оперативной памяти, чтобы программы «чувствовали себя более вольготно» и работали пошустрее. Других способов ускорения компьютера, непосредственно связанных с оперативной памятью, нет.

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

Так каков максимальный объем оперативной памяти в современных операционных системах? Ответ не прост — свободная память отводится под кэш. Это происходит преимущественно благодаря функции SuperFetch. Благодаря кэшу программы запускаются быстрее, так как вместо обращения к жесткому диску данные загружаются из оперативной памяти (см. картинку выше, разница в скорости работы жесткого диска и ОЗУ написана жирным шрифтом). Если какой-то программе понадобиться больше оперативной памяти - кэш моментально сократит свой размер, уступив ей место.

Максимальный объем оперативной памяти в Windows.

Интернет буквально завален рассуждениями пользователей о том, почему в битной Windows доступно 3,5 Гб оперативно памяти вместо, например, установленных 4 Гб. Было придумано множество теорий, мифов, легенд. Например, считают, что это ограничение, сделанное Microsoft, которое можно снять. На самом деле это отчасти правда - принудительные ограничения действительно есть. Только снять их никак нельзя. Это обусловлено тем, что в 32-разрядных системах драйвера и программы могут нестабильно работать при использовании системой больше четырех гигабайт оперативной памяти. Для 64-битных Windows драйвера очень тщательно тестируют, чтобы такой нестабильности не было, поэтому вышеупомянутого ограничения там нет.

Прошло несколько лет с тех пор, как была написана статья «Четыре гигабайта памяти - недостижимая цель? », а вопросов, почему Windows не видит все четыре гигабайта, меньше не стало. К числу вопрошающих добавились и обладатели 64-разрядных систем, которых эта проблема, казалось бы, не должна была коснуться. И стало ясно, что пора писать новую статью на эту же тему. Как и раньше, речь пойдет только об операционных системах Windows, причем в основном клиентских, то есть Windows XP, Windows Vista, Windows 7 и грядущей Windows 8. В некоторых случаях намеренно будут использоваться несколько упрощенные описания тех или иных аспектов. Это даст возможность сосредоточиться на предмете данной статьи, не вдаваясь в излишние подробности, в частности, внутреннего устройства процессоров и наборов микросхем (чипсетов) для системных плат. Рекомендуем предварительно прочитать указанную выше статью, так как не всё, сказанное в ней, будет повторено здесь.

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

Рис. 1. Если оперативная память в адресах, используемых устройствами, не отключена, возникает конфликт

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

В середине девяностых годов прошлого века для расширения доступного объема ОЗУ была разработана технология PAE (Physical Address Extension), увеличивающая число линий адреса с 32 до 36 - тем самым максимальный объем ОЗУ вырастал с 4 до 64 ГБ. Эта технология первоначально предназначалась для серверов, однако позже появилась и в клиентской Windows XP. Некоторые особенности реализации этой технологии в современных контроллерах памяти дают возможность не только использовать PAE по ее прямому назначению, но и «перекидывать» память в другие адреса. Таким образом, часть памяти, которая ради предотвращения конфликтов не используется, может быть перемещена в старшие адреса, например в пятый гигабайт - и снова стать доступной системе.

В обсуждении первой статьи было высказано замечание, что некорректно отождествлять наличие в контроллере памяти системной платы поддержки PAE - и способность платы переадресовывать память; что это вполне могут быть вещи, друг с другом не связанные. Однако практика показывает, что в «железе» для настольных систем это понятия взаимозаменяемые. К примеру, Intel в документации к своему набору микросхем G35 ни слова не говорит о возможности (реально существующей) переадресации памяти, зато подчеркивает поддержку РАЕ. А не поддерживающий PAE набор i945 не имеет и переадресации памяти. С процессорами AMD64 и последними моделями процессоров Intel дело обстоит еще проще: в них контроллер памяти встроен в процессор, и поддержка PAE (и ОЗУ размером более 4 ГБ) автоматически подразумевает поддержку переадресации.

Рис. 2. Переадресация

Рисунок достаточно условный, переадресация совсем не обязательно выполняется блоками именно по одному гигабайту, дискретность может быть другой и определяется контроллером памяти (который, напомним, является либо частью оборудования системной платы, либо частью процессора). В программе BIOS Setup компьютера обычно бывает настройка, разрешающая или запрещающая переадресацию. Она может иметь различные наименования - например, Memory remap, Memory hole, 64-bit OS и тому подобное. Ее название лучше всего выяснить в руководстве к системной плате. Необходимо отметить, что если используется 32-разрядная система, то на некоторых системных платах, преимущественно достаточно старых, переадресацию необходимо отключать - в противном случае объем доступного системе ОЗУ может уменьшиться.

По умолчанию в Windows XP режим РАЕ был отключен, поскольку реальной надобности в нем не было (напомним, что в 2001 году типичный объем памяти настольного компьютера составлял 128-256 МБ). Тем не менее, если его включить, то ХР могла бы использовать все четыре гигабайта памяти - при условии, конечно, что системная плата поддерживала бы РАЕ. Но, повторим, реальной надобности включать этот режим в те годы не было. При желании читатель может для пробы установить на современный компьютер Windows XP или Windows XP SP1 (делать это для работы, конечно, не стоит), включить режим PAE и своими глазами убедиться, что системе доступны четыре гигабайта ОЗУ.

В 2003 году «Майкрософт» начала разрабатывать второй пакет исправлений для Windows XP (вышедший в 2004 году), поскольку столкнулась с необходимостью существенно снизить число уязвимостей в компонентах ОС. Одним из путей было использование предотвращения выполнения данных (Data Execution Prevention, DEP) - набора программных и аппаратных технологий, позволяющих выполнять дополнительные проверки содержимого памяти и в ряде случаев предотвращать запуск вредоносного кода. Эти проверки выполняются как на программном уровне, так и на аппаратном (при наличии соответствующего процессора). AMD назвала эту функцию процессора «защита страниц от выполнения» (no-execute page-protection, NX), а Intel использовала термин «запрет на выполнение» (Execute Disable bit, XD).

Однако использование такой аппаратной защиты требует перевода процессора в режим PAE, поэтому Windows XP SP2 при обнаружении подходящего процессора стала включать этот режим по умолчанию. И вот тут «Майкрософт» столкнулась с довольно серьезной проблемой: оказалось, что не все драйверы могут работать в режиме PAE. Попробуем пояснить эту особенность, не слишком углубляясь в устройство процессоров и механизмы адресации.

В Windows используется так называемая плоская модель памяти. Тридцать два разряда адреса обеспечивают обращение к пространству размером четыре гигабайта. Таким образом, каждой ячейке ОЗУ или ячейке памяти другого устройства соответствует определенный адрес, и никаких двусмысленностей тут быть не может. Включенный режим PAE дает возможность использовать 36 разрядов адреса и увеличить количество ячеек памяти в 16 раз. Но ведь система команд процессора остается той же самой и может адресовать только 4 миллиарда (двоичных) байтов! И вот, чтобы обеспечить возможность доступа к любому из 64 миллиардов байтов, указав только 32 разряда адреса, в процессоре включается дополнительный этап трансляции адресов (те, кого интересуют подробности, могут обратиться к специальной литературе - например, книге Руссиновича и Соломона «Внутреннее устройство Windows»). В результате 32-разрядный адрес в программе может указывать на любой из байтов в 36-разрядном пространстве.

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

Однако поскольку исторически сложилось так, что до того времени в клиентских компьютерах PAE не использовался, некоторые компании не считали нужным поддерживать этот режим в написанных ими драйверах. Ведь оборудование, которое они выпускали (звуковые платы, к примеру), не предназначалось для серверов, и драйверы не имели серверной версии - так зачем без необходимости эти драйверы усложнять? Тем более, что для тестирования работы в режиме PAE раньше требовалось устанавливать серверную ОС и использовать серверное оборудование (системные платы для настольных компьютеров лишь относительно недавно стали поддерживать PAE). Так что разработчикам драйверов проще и выгоднее было просто забыть про этот PAE и обеспечить работоспособность на обычных клиентских компьютерах с обычными персональными, а не серверными ОС.

И вот с такими драйверами и возникли проблемы в XP SP2. Хотя количество фирм, драйверы которых переставали работать или даже вызывали крах системы, оказалось невелико, количество выпущенных этими фирмами устройств исчислялось миллионами. Соответственно, и количество пользователей, которые могли бы после установки SP2 получить неприятный сюрприз, оказывалось весьма значительным. В результате многие пользователи и сами отказались бы устанавливать этот пакет, и разнесли бы о нем дурную славу, что повлияло бы и на других пользователей. Они, хоть и без каких-либо веских причин, тоже отказались бы его устанавливать.

А необходимость повышения безопасности ХР компания «Майкрософт» ощущала очень остро. Впрочем, рассуждения на тему, почему мы увидели Windows XP SP2 и не увидели чего-то наподобие Windows XP Second Edition, выходят за рамки данной статьи.

Главное, что нас интересует, это то, что для обеспечения совместимости с плохо написанными драйверами функциональность PAE в SP2 для Windows XP была обрезана. И хотя сам этот режим существует и, более того, на компьютерах с современными процессорами включается по умолчанию, никакого расширения адресного пространства он не дает, просто передавая на выход те же адреса, которые были поданы на вход. Фактически система ведет себя как обычная 32-разрядная без PAE.

То же самое поведение было унаследовано Windows Vista, а затем перешло к Windows 7 и будущей Windows 8. Конечно, 32-разрядным. Причина, по которой это поведение не изменилось, осталась той же самой: обеспечение совместимости. Тем более что необходимость выгадывать доли гигабайта отпала: те, кому нужны большие объемы памяти, могут использовать 64-разрядные версии ОС.

Иногда можно услышать вопрос: если именно этот обрезанный режим PAE мешает системе видеть все четыре гигабайта - так, может, отключить его вовсе, чтобы не мешал, и, вуаля, системе станут доступны 4 ГБ? Увы, не станут: для этого требуется как раз наличие PAE, притом полноценного. Другой не так уж редко задаваемый вопрос звучит так: если устройства действительно мешают системе использовать всю память и резервируют ее часть под свои нужды, то почему же они ничего не резервировали, когда в компьютере стояло два гигабайта ОЗУ?

Вернемся к первому рисунку и рассмотрим ситуацию подробнее. Прежде всего отметим, что нужно четко различать два понятия: размер адресного пространства и объем ОЗУ. Смешение их воедино препятствует пониманию сути вопроса. Адресное пространство - это набор всех существующих (к которым может обратиться процессор и другие устройства) адресов. Для процессоров семейства i386 это 4 гигабайта в обычном режиме и 64 ГБ с использованием PAE. У 64-разрядных систем размер адресного пространства составляет 2 ТБ.

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

Адресное пространство может быть реальным, в котором работает сама операционная система, и виртуальным, которое ОС создает для работающих в ней программ. Но особенности использования памяти в Windows будут описаны в другой статье. Здесь же отметим только, что к реальному адресному пространству программы доступа не имеют - по реальным адресам могут обращаться только сама операционная система и драйверы.

Рассмотрим, как же в компьютере используется адресное пространство. Сразу подчеркнем, что его распределение выполняется оборудованием компьютера («железом») и операционная система в общем случае не может на это повлиять. Есть только один способ: изменить настройки оборудования с помощью технологии Plug&Play. О ней много говорили в середине 90-х годов прошлого века, но теперь она воспринимается как что-то само собой разумеющееся, и всё увеличивается число людей, которые о ней даже не слышали.

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

Базовая программа в системной плате, часто обобщенно называемая BIOS (хотя на самом деле BIOS (базовой системой ввода-вывода) она не является) при включении компьютера опрашивает устройства. Она определяет, какие диапазоны адресов каждое устройство может использовать, потом старается распределить память так, чтобы ни одно устройство не мешало другому, а затем сообщает устройствам свое решение. Устройства настраивают свои параметры согласно этим указаниям, и можно начинать загрузку ОС.

Раз уж об этом зашла речь, заметим, что в ряде системных плат есть настройка под названием «P&P OS». Если эта настройка выключена (No), то системная плата выполняет распределение адресов для всех устройств. Если включена (Yes), то распределение памяти выполняется только для устройств, необходимых для загрузки, а настройкой остальных устройств будет заниматься операционная система. В случае Windows XP и более новых ОС этого семейства данную настройку рекомендуется включать, поскольку в большинстве случаев Windows выполнит требуемую настройку по крайней мере не хуже, чем BIOS.

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

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

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

Иногда задают вопрос: а можно ли повлиять на распределение адресов, чтобы сдвинуть все устройства в адресном пространстве как можно выше и сделать как можно больше памяти доступной системе. В общем случае без вмешательства в конструкцию или микропрограммы самих устройств это сделать невозможно. Если же руки все-таки чешутся, а времени не жалко, можно попробовать следующий метод: в BIOS Setup включить настройку «PnP OS» (она может или вовсе отсутствовать или называться по-другому), чтобы адреса для большинства устройств распределяла Windows, а затем переустанавливать драйверы, используя отредактированные файлы inf с удаленными областями памяти, которые, на ваш взгляд, расположены слишком низко.

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

Может возникнуть также вопрос: а что будет, если установить видеоадаптер с четырьмя гигабайтами памяти. Ведь тогда получается, что система останется совсем без ОЗУ и работать не сможет. На самом деле ничего страшного не произойдет: видеоадаптеры уже довольно давно используют участок адресного пространства размером 256 МБ, и доступ ко всему объему памяти видеоускорителя осуществляется через окно такого размера. Так что больше 256 мегабайт видеоадаптер не отнимет. Возможно, в каких-то моделях размер этого окна увеличен вдвое или даже вчетверо, но автору в руки они пока не попадали.

64 разряда

Итак, с 32-разрядными системами мы разобрались. Теперь перейдем к 64-разрядным.

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

А это означает, что адреса устройств должны оставаться в пределах первых четырех гигабайт. И значит, все ограничения, накладываемые на объем памяти, доступный 32-разрядной системе, оказываются применимыми и к 64-разрядной - конечно, в том случае, если системная плата не поддерживает переадресацию или если эта переадресация отключена в настройках.

Не поддерживают переадресацию системные платы на наборах микросхем Intel до 945 включительно. Новыми их, конечно, не назовешь, но компьютеры на их базе еще существуют и используются. Так вот, на таких платах и 64-разрядная, и 32-разрядная системы смогут увидеть одинаковое количество памяти, и оно будет меньше 4 ГБ. Почему меньше - описано выше.

С 64-разрядными процессорами AMD дело обстоит проще: у них контроллер памяти уже довольно давно встроен в процессор, и переадресация отсутствует только в устаревших моделях. Все процессоры для 939-контактного гнезда и более новые поддерживают больше 4 ГБ и, соответственно, умеют выполнять переадресацию памяти. То же самое относится к процессорам Intel семейств Core i3, i5, i7.

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

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

Например, если системная плата поддерживает до 8 ГБ ОЗУ (скажем, использующая набор микросхем G35), и установить все эти 8 ГБ, то использоваться будут только ≈7-7,25 ГБ. Причина заключается в следующем: на такой системной плате разведены 33 линии адреса, что, с точки зрения изготовителя, вполне логично - зачем усложнять конструкцию, если больше 8 ГБ плата все равно не поддерживает? Поэтому даже если контроллер памяти сможет перекинуть неиспользуемый участок ОЗУ в девятый гигабайт, обратиться к нему все равно будет невозможно. Для этого потребуется 34-разрядный адрес, который физически нельзя сформировать на 33-разрядной системной шине. Точно так же на платах, поддерживающих 16 ГБ, Windows сможет использовать ≈15-15,25 ГБ и так далее.

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

Рис. 3. Эта настройка ограничивает верхнюю границу адресов, а не размер памяти

То есть если задать эту величину равной 4096 МБ, то память, расположенная выше этой границы (переадресованная в пятый гигабайт, например), использоваться не будет, и фактически объем памяти будет ограничен примерно тремя гигабайтами. Эту особенность в некоторых случаях удается использовать для диагностики того, работает переадресация или нет. Например, автору встретился случай, когда на ноутбуке Windows использовала 3,75 ГБ из четырех, и было неясно: то ли не работает переадресация, то ли память используется на какие-то нужды. Установка флажка и ограничение размера памяти четырьмя гигабайтами привели к тому, что стали использоваться только 3,25 ГБ. Из этого можно сделать вывод, что переадресация работала, а четверть гигабайта, следовательно, использовалась для видеоадаптера или каких-то других целей.

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

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

Всем привет, в этой статье блога Компьютер76 продолжаем рассматривать полезные преобразования ОС Windows, и сейчас мы попробуем с вами модернизировать систему так, чтобы можно было использовать всю оперативную память, установленную на компьютере, преодолевая порог 3 Гб. Если повезёт, вплоть до 64 Гб RAM (если это вообще может ваша материнская плата).

ВНИМАНИЕ. Способ безусловно “прокатывает” в ОС Vista и 7. Начиная с Windows 8 и моложе, действуйте на свой страх и риск.

Пару слов в предисловие

Даже не самый продвинутый пользователь замечал, что порой установленная оперативная память физически не используется системой в её 32 -х битной версии полностью. Если вы обладатель 64 -х битной версии Windows, статью можно не читать.

изначально у меня потерялся почти гигабайт памяти…

Обратимся к переменной напрямую через vbs скрипт – всё то же самое:

StrComputer ="." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem") For Each objItem In colItems WScript.Echo "TotalPhysicalMemory: " & objItem.TotalPhysicalMemory/1024/1024 Next

Вобщем, можно прогнать информацию по установленным планкам и видимому объёму RAM вдоль и поперёк. В статье об этом есть всё. Но всегда для владельцев 32-х битных версий результаты неутешительны, как и в моём случае: из двух планок DDR3 оперативной памяти объёмами 2 Гб каждая почти 1 Гиг куда-то исчез.

Почему так?

Да, архитектура 32-х битных операционных систем по умолчанию не позволяет использовать больше 4 Гбайт оперативной памяти. Каждый байт оперативной памяти имеет свой физический адрес, который система использует для доступа к определённой ячейке RAM. А вот кто-то взял и ограничил доступный объём адресов для RAM и других компонентов. Так что, если вы обладатель 32-х битной версии Windows, вы не можете априори использовать всю оперативную память, установленную на компьютере. Немного подробнее вопрос рассматривается в статье . И дело-то не в том, что памяти не хватает – на крайний случай можно недорого приобрести дополнительные планки оперативной памяти. Просто как-то нечестно…

Теперь к делу

Существует техника, или если хотите, способ под названием physical address extension (PAE ), которая и позволит 32-х битной версии “рассмотреть” всю установленную на компьютере RAM. Она работает просто: объём ячейки расширяется с 32 бит до 36. А вот в срезе общего объёма параметры установленной памяти эта цифра разрастается до гигантской. Ну… не до гигантской, но прирост заметен становится сразу.

Все эти манипуляции сформированы в PAE-патчи, которые я вам и предложу.

Как использовать всю оперативную память в Windows 7/8.1/10

Для каждой версии системы он свой. Однако принцип установки или избавления (вдруг что не так пойдёт) одинаков.

Противопоказания.

Нет. Доносились слухи о некорректной работе системы и даже последующей переустановке. Я склонен относить такие случаи только к криворукости пользователей. Использование файлов безопасно. Однако…

ИСПОЛЬЗУЙТЕ СОВЕТЫ НА СВОЙ СТРАХ И РИСК. ТАК ЧТО ПОЗВОЛЬТЕ СРАЗУ САМОУСТРАНИТЬСЯ ОТ ВСЯКИХ ПОСЛЕДСТВИЙ.

А вот и сами PAE-патчи:

(процесс установки в архивах)

Windows 8.1 и Windows 10

(кстати, подойдёт и для Windows 7)

Установка (показываю на 7-ке)

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

  • запускаете патч и пусть антивирус ему не мешает. Пару мгновений будете смотреть на окно PowerShell и патч сообщит об успешном изменении в конфигурации
  • наберём в строке поиска команду msconfig и во вкладке убедимся, что патч прописался в загрузочной записи и запись “при его помощи” будет использоваться по умолчанию; время отображения вариантов ОС можно выставить на минимум:

  • уходим в перезагрузку и смотрим, что получилось…

Стало немного теплее. Однако в моём случае все 4 Гб памяти система не может использовать: это ноутбук с интегрированной картой, так что увы… Однако, если у вас объём RAM больше, чем у меня, и видеокарта дискретная, разницу вы сразу почувствуете.

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

Вопросов у вас не должно возникнуть. И всё же…

  • всё можно удалить. Ехе-шник патча из папки , оттуда же файлы (если найдёте, конечно) ntkrnlpx.exe и winloadp.exe ; в msconfig сотрите строчку из загрузочной записи с патчем (вы видели на фото сверху);
  • если при установке патча возникли проблемы, возможно придётся удалить несколько файлов обновлений Windows. Вот они (предположительно)

KB3153171

KB3146706

KB3147071

у меня были только 2 из 3-х

  • повторите запуск патча для регенерации некоторых создаваемых им файлов (если первый раз не получилось)
  • опять же с некоторыми видеокартами есть проблемы. Опять же это связано с завязкой потребляемых системой и установленным оборудованием ресурсов: так. оперативная память полностью становится видна лишь в безопасном режиме. Что ж… обновите на всякий случай драйверы к видео.

Отписывайтесь и успехов нам всем.

Прочитано: 1 125