Максимум из ОЗУ объемом 4 Гб в Windows XP.
В середине 80-х объема conventional (обычной) памяти вполне хватало для драйверов, резидентных программ и нормальной работы системы.Ещё пять лет назад в домашней системе вполне адекватно смотрелись две планки по 128 Мб, то сейчас и двумя гигами никого не удивишь. Windows Vista дала понять, что памяти много не бывает, и ставить ее стоит столько, на сколько у тебя хватит денег.
Начал расти спрос, а вслед за ним и предложение – производители памяти увеличили ассортимент четырех гигабайтных Dual-Channel Kit’ов, которые вдруг резко перестали казаться таким уж излишеством. И вот тут-то и появились первые проблемы – далеко не у всех системы соглашались принять все предоставленное им богатство.Чем же грозит установка четырех гигабайт памяти и как побороть возможные проблемы.
Установка четырех и более гигов памяти в систему может быть чревата проблемами – далеко не весь ее объем будет виден и, тем более, доступен приложениям. Причина этих неудобств давно известна и, в общем-то, банальна – 32-битные операционки попросту не могут адресовать более четырех гигабайт памяти (2^32=4294967296 – вот предел адресного пространства для такой среды без дополнительных ухищрений. 64-битные редакции, как правило, работают с предоставленным им объемом без проблем – их такие проблемы не затрагивают за счет куда большего адресного пространства. Итак, проблема касается объемов более четырех гигабайт, но как же быть тем, кто установил, скажем, четыре планки по 1 Гб, а получает в лучшем случае 3.5-гигабайта.По идее 4 Гб детище Microsoft должно с легкостью поддерживать! На деле не все так просто. И, возможно, для того чтобы задействовать весь потенциал оперативки,придется пойти на определенные жертвы в лице стабильности, производительности или кардинальной смены ОС.И так перейдём к делу.И начнем с проблем, которые могут тебя настигнуть еще до загрузки операционки.
BIOS
Первое – это неправильное определение ее объема в BIOS’е. Как правило, в этом случае отображается от чуть менее 3 Гб до примерно 3.8 Гб – в зависимости от системы и ее конфигурации. В этом случае с чего стоит начать, – это проверка материнской платы на совместимость. Загляни в мануал к плате – объем поддерживаемой памяти должен составлять не менее 4 Гб. Давайте выясним, куда же деваются «лишние» мегабайты. Дело в том, что все 32-битное адресное пространство невозможно отдать только лишь под приложения. Ресурсы системы, будь то чипсет, PCI-устройства и особенно видеокарта, также нуждаются в «месте под солнцем», то есть им необходимо присвоить определенный диапазон адресов. И если масштаб, в котором может действовать BIOS, составляет всего 4 Гб, то объем памяти, зарезервированный под оборудование, приходится отделять от оперативки. В противном случае неизбежно могут возникнуть конфликты между приложениями и системными устройствами.
Современные материнские платы решают эту проблему несколькими способами. Некоторые модели изначально правильно определяют объем памяти без каких-либо ухищрений – в этом случае тебе повезло . Другие решения требуют нашего вмешательства – как правило, в их BIOS’ах присутствует настройка «Memory Remap Feature» (название может варьироваться). Эта функция переназначает сегмент памяти, выделяемый устройствам, за пределы четырех гигабайт – таким образом, система начинает видеть твою память целиком уже на этапе загрузки. Если же подобной функции или ее вариантов в BIOS’е нет, а система упорно не желает видеть всю память, нам остается только посочувствовать – в этом случае «медицина бессильна». Впрочем, всегда остается возможность обновить прошивку материнской платы до последней версии – вполне вероятно, что это исправит проблему или хотя бы добавит в BIOS вожделенный пункт. Заметим, что в случае с Windows XP SP2 включение данной опции не только не принесет пользы, но и усугубит ситуацию, хотя об этом мы поведаем чуть ниже.
Если матплата не имеет в настройках BIOS Memory Remap Feature, это еще не значит, что она не работает с увеличенным объемом памяти. К примеру, когда мы установили четыре планки по 1 Гб в Gigabyte GA-965P-S3, плата сразу определила ровно 4 гигабайта, при этом в BIOS’е никаких настроек по перемещению выделяемого под устройства диапазона адресов не было.Когда система определила всю доступную ей память, наступает момент перейти к следующему пункту – поддержке на уровне операционных систем. Но еще одно отступление…
PAE и AWE
Вот теперь ты знаешь, что адресное пространство для 32-битной операционки ограничено четырьмя гигабайтами.Более того, о ее решении позаботились задолго до того, как ты впервые подумал о возможности установки в систему четырех гигов – в 1995 году. Именно тогда на арену вышел процессор Intel Pentium Pro с поддержкой технологии PAE – Physical Address Extension…
Что означает эта аббревиатура — вкратце, то данная технология позволяет процессору работать не с 32-битной, а с 36-битной адресацией, теоретически расширяя доступные ему адреса до 2^36 = 68719476736 байт (64 Гб). При этом само адресное пространство остается 32-битным, то есть равным 4 Гб, но за счет измененного отображения на него физической памяти становится возможным использование куда большего ее объема.
Разумеется, поддержка PAE имеется и в Windows – в этом и содержится ключ к детектированию полного объема оперативной памяти. Проблема в том, что не всегда технология включена по умолчанию – для ее использования должна загружаться специальная версия ядра. На данный момент поддержка PAE имеется у следующих операционок:
Windows 2000 Advanced Server
Windows 2000 Datacenter Server
Windows XP (все версии)
Windows Server 2003 (and SP1), Standard Edition
Windows Server 2003, Enterprise Edition
Windows Server 2003, Datacenter Edition
Windows Server 2003 SP1, Enterprise Edition
Windows Server 2003 SP1, Datacenter Edition
Windows Vista (все версии, кроме Starter Edition – у нее поддержка памяти ограничена 1 Гб)
Если твой процессор поддерживает аппаратную антивирусную защиту NX-bit, то, вполне вероятно, что PAE в системе уже включена. Дело в том, что поддержка NX-bit со стороны Windows может работать только при включении данной опции, причем Windows XP SP2 и 2003 Server SP1 в большинстве случаев сами определяют наличие этого бита и устанавливают, какое ядро необходимо загружать. Если же PAE отключена (об этом можно узнать в окне «Свойства системы» или же с помощью утилиты вроде Everest), то ее необходимо активировать. Как это сделать, мы поясним ниже на примере различных операционок.
И о плохом: даже если Windows определит всю доступную память, пользу это принесет, в лучшем случае, твоему самолюбию. Причина в том, что область памяти за пределами 4 Гб в 32-битной среде может быть доступна только приложениям, написанным с использованием интерфейса AWE (Address Windowing Extension). Проще говоря, если PAE – это поддержка большого объема памяти со стороны железа и операционки, то AWE – это ее поддержка со стороны софта. И вся проблема в том, что такой поддержкой обладает разве что софт, оперирующий огромными объемами данных – к примеру, СУБД или программы, выполняющие сложные научные расчеты. Играм или офисному софту это попросту не нужно, соответственно, и прироста производительности в них ты не увидишь. А вот какой-нибудь Microsoft SQL Server получит очень даже ощутимую пользу!
Есть еще один способ «хака» памяти, доступной приложениям. Далеко не все знают, что виртуальное адресное пространство, которое, как ты помнишь, составляет 4 Гб, делится системой ровно пополам: 2 Гб на приложения и 2 Гб под системное ядро. Фактически, ни один процесс не может заполучить в свое распоряжение более 2 Гб памяти – еще одно доказательство того, что рядовому пользователю большой объем оперативки попросту ни к чему. Впрочем, есть способ обойти и это ограничение. Если добавить в файл C:\boot.ini к параметрам загрузки команду /3GB, то память перераспределится следующим образом: объем, выделяемый под ядро, ужмется до 1 Гб, а на процесс станет выделяться уже три гигабайта! Но и здесь мы натыкаемся на пресловутую поддержку со стороны софта – большинство приложений предоставленной им радости попросту не поймет. А поймет ее только софт, скомпилированный со специальным ключом /LARGEADDRESSAWARE – это, опять же, далеко не игры, и даже не любимый «Фотошоп». Заметим, что при использовании операционной системы с поддержкой большого количества памяти (к примеру, до 32 Гб) ключ /3GB сократит количество доступной памяти до 16 гигов. То есть, если в твоем сервере отображается 16 Гб, а установлено гораздо больше – ищи проблему в boot.ini и безжалостно удаляй.
Теперь рассмотрим, что могут предложить нам текущие операционки от Microsoft…
Windows 2000
С этой операционной системой не все гладко: старовата она для работы с большими объемами памяти, и с PAE работают только две версии: Advanced Server и Datacenter Server. Они, впрочем, поддерживают до 8 и 32 Гб памяти соответственно, а это весьма неплохая перспектива для 32-битной среды! Итак, чтобы увидеть четыре и более гига в данной системе (при условии того, что BIOS видит весь объем), достаточно добавить в boot.ini ключ «/PAE» (без кавычек) – после этого ОС должна увидеть всю имеющуюся память. Использовать ее она, разумеется, будет только при наличии соответствующего софта, но ведь если ты используешь такие операционки, то и софт найдется, правда?
Windows XP
Самое интересное в нашем рассказе то, что наиболее популярная ОС от Microsoft хуже всего оснащена поддержкой большого количества памяти. Если не сказать большего – вообще не оснащена. А обиднее всего, что так было не всегда, а лишь до появления пакета обновлений Service Pack 2 – именно в нем возможности PAE были значительно урезаны. Если быть точнее, то во избежание конфликтов доступное адресное пространство было ужато с 36 бит до стандартных 32 бит, а сама PAE стала использоваться разве что для поддержки NX-бита. В результате это приводит к забавным казусам – при включении опции «Memory Remap Feature» BIOS начинает видеть больше памяти, а Windows, наоборот, меньше! К примеру, если до включения опции BIOS определял 3.5 Гб, то после он видит уже 4 Гб, в то время как в Windows определяется всего 3 Гб! А дело все в том, что Memory Remap Feature переносит память за пределы четырех гигабайт блоками по гигабайту. То есть если после выделения памяти под железо BIOS определял 3.5 Гб, то после «выноса» этой памяти за пределы адресного пространства остается всего 3 Гб. Соответственно, если первоначально было видно, к примеру, 2.8 Гб, то «передислоцировалось» уже 2 Гб, и столько же оставалось Windows, которая без нормальной поддержки PAE попросту не могла видеть то, что находилось за пределами ее восприятия.
Отсюда неутешительный вывод: Memory Remap Feature для Windows XP SP2 применять бесполезно – это принесет лишь вред. Только два варианта могут заставить XP видеть 4 Гб памяти – использование версии Service Pack 1 (на что вряд ли кто-то пойдет), либо же установка 64-битной версии операционки.
Windows Server 2003
В сравнении с Windows XP, это детище Microsoft гораздо лучше обучено использованию больших объемов памяти. Единственный представитель линейки, у которого, насколько нам известно, имеются проблемы с режимом PAE – это Windows Server 2003 Standard Edition SP1, причем он не только «болен» той же проблемой, что и XP, но и «заразился» ей точно так же – с выходом последнего сервис-пака. Соответственно, на всех остальных версиях 4 Гб памяти должны определяться элементарно – сразу после включения Memory Remap Feature в BIOS и добавления параметра «/PAE» в boot.ini (последний, возможно, уже будет выставлен).
Windows Vista
Вот мы и дошли до операционной системы, не очень актуальной пока, но претендующей на лидирующую роль в самое ближайшее время. Пользователей Vista проблема поддержки 32-битной версией 4 Гб памяти беспокоит особенно сильно – ведь, по сути, такой объем дорогущей оперативки приобретается именно ради нее. Но здесь мы наблюдаем все то же самое: от 2 до 3.5 Гб видимой памяти вместо четырех, как того требует справедливость. Есть ли решение у данной проблемы? В отличие от Windows XP, действительно есть, и довольно тривиальное!
Файла boot.ini в Vista нет – вместо него конфигурацию загрузки можно редактировать специальной утилитой BCDEdit.exe. Итак, все, что требуется сделать, это войти в командную строку (cmd) и набрать там следующее:
BCDEdit /set PAE forceenable
BCDEdit /set nolowmem on
Первый пункт здесь форсирует поддержку PAE, ну а второй загружает системные файлы и драйвера в область за пределами 4 Гб, высвобождая место в адресном пространстве. После перезагрузки ОС должна увидеть все 4 Гб памяти, ну а стоило ли это затраченных усилий, решай сам. А заодно и протестируй систему на стабильность – вполне возможно, что теперь ее поубавится.
Выводы
Ты уже понял, установка большого объема памяти в систему – не такая уж тривиальная задача, особенно в случае с использованием «домашних» операционок XP и Vista. Инаиболее правильный способ задействовать весь объем оперативки – установка 64-битной операционной системы. Все остальные методы, рассмотренные в статье, можно воспринимать лишь как «хаки», и не удивляйся, если научившись использовать всю доступную память, винда вдруг начнет нещадно глючить. В любом случае , какую версию ОС использовать, – это решать тебе самому, в зависимости от потребностей и целей. Да и 4 Гб памяти, для домашней системы пока многовато …
Редактирование boot.ini, файла с конфигурацией загрузки Windows, осуществляется так:
1) Включи отображение скрытых файлов и папок.
2) Найди boot.ini в корневом каталоге системного диска (обычно C:\) и сними с него атрибут «только чтение».
3) Открыв файл, ты увидишь примерно следующее (в зависимости от ОС):
[boot loader]
;timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=»Microsoft Windows XP Professional RU» /noexecute=optin /fastdetect
4) Изменения вносятся в пункт, касающийся необходимой операционки (в данном случае она одна). Если необходимо внести параметр /3GB, то результат должен выглядеть так:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=»Microsoft Windows XP Professional RU» /noexecute=optin /fastdetect /3GB
5) Сохрани файл и выставь параметр «только чтение» обратно.
У ключа /3GB есть аналог и в Windows Vista. Более того, ты можешь гораздо более гибко регулировать, сколько памяти выделять пользовательским процессам, а сколько оставлять ядру. Для этого используй команду «BCDEdit /set IncreaseUserVa МБ», где МБ – число, лежащее в пределах от 2048 до 3072 и составляющее количество памяти, выделяемой на процесс. 4096 минус это число – столько мегабайт будет выделено ядру операционной систем.