Как скинуть большой файл на флешку? Преобразование флешки в файловою систему NTFS. Ограничения издания ОС на максимальный объём ОЗУ

03.05.2019 Социальные сети

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

Почему доступна не вся оперативная память?

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

  • установлена 32-разрядная система, не поддерживающая память более 4 Гб;
  • максимальный не поддерживается материнской платой;
  • в параметрах системы установлено ограничение на максимум используемого объема ОЗУ;
  • в BIOS некорректно заданы настройки перераспределения памяти;
  • память частично зарезервирована под встроенные видеоадаптеры;
  • запущено слишком много активных процессов;
  • установленные планки имеют повреждения, их работоспособность нарушена, или они подключены неправильно;
  • использование памяти блокируется вирусами.

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

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

Куда более важными вопросами, когда оперативная память доступна не вся, являются проблемы с подключением планок памяти или их некорректной работой. Для начала убедитесь, что материнская плата рассчитана на устанавливаемый объем, а также проверьте плотность вставки планок в соответствующие слоты. Нелишним будет и выполнить тест памяти, для чего может использовать собственное средство Windows (mdsched) или сторонние программы вроде Memtest86/86+.

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

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

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

В конфигураторе на вкладке загрузки нажмите кнопку дополнительных параметров и проверьте, установлен ли флажок на пункте максимума памяти. Если он есть, снимите его, сохраните установленные опции и перезагрузите систему.

Как уже понятно, частично память может «съедаться» огромным количеством активных фоновых процессов и служб, которые не видны пользователю. Для начала отключите все ненужные компоненты в автозагрузке (в Windows 7 и ниже для этого используется соответствующая вкладка в настройках конфигурации, в версиях выше - «Диспетчер задач»).

На всякий случай просмотрите активные компоненты системы в разделе программ и компонентов и отключите неиспользуемые (модуль Hyper-V, Internet Explorer, если используете другой браузер, службу печати, если нет принтера, и т. д.). Аналогично можно установить отключенный тип запуска и для некоторых других служб (services.msc), но в этом случае нужно точно знать, что можно деактивировать, а что нет.

Доступно мало оперативной памяти: какие настройки можно изменить в BIOS?

Если проблема и после применения вышеописанных решений осталась, зайдите в настройки первичных систем BIOS/UEFI и проверьте настройки памяти, в которых должен присутствовать пункт, содержащий слова Remapping или Remap (перераспределение).

Если у вас установлена 64-битная Windows, а памяти более 4 Гб, установите для него значение Disabled (отключение). В противном случае его нужно активировать.

Если оперативная память доступна не вся по причине резервирования дополнительного объема для видеокарты, встроенной в материнскую плату, выставьте для этого пункта значение, соответствующее объему памяти адаптера (узнать его можно на вкладке монитора при вызове диалога DirectX - dxdiag). Делается это за счет смены автоматического определения (Auto) на один из доступных вариантов (32, 64 или 128 Мб).

Пропатчивание 32-битных систем

Наконец, задействовать всю память свыше объема в 4 Гб можно и в 32-битных системах, используя для этого утилиту ReadyFor4GB. Сначала запускается исполняемый одноименный EXE-файл из папки приложения, а затем нажимаются кнопки Check и Apply. После этого аналогичные действия выполняются для объекта ntkrnlpa.exe. Затем запускается файл AddBootMenu.cmd и дается подтверждение выполнения команды. После перезагрузки в случае появления меню с загрузчиком выбирается Windows .

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

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

Итак, первый и главный вопрос, стоящий перед пользователем – память. Ее всегда не хватает, всегда находится, чем ее занять и всегда хочется еще. Оперативная память не исключение, а так как на быстродействие влияет именно она, то начнем апгрейд именно с оперативки .

Самое главное правильно подобрать необходимую модификацию ОЗУ. Для этого необходимо:

Определиться со своими потребностями.

  • Для работы с документами, для интернета достаточно и 1-2 Гб.
  • Для семейного компьютера, который дополнительно занимается конвертированием видео и используется для игр нужно 4 Гб.
  • Для игрового компьютера, для 3D моделирования или профессионального видеомонтажа необходимо 8 Гб.

Выяснить какое ОЗУ установлено.

Для этого открыть «Мой компьютер», щелчком правой кнопки открыть меню, выбрать «Свойства». На вкладке «Общие» найти данные ОЗУ.

Так это выглядит для Windows XP

Так это выглядит для Windows 7

Проверить сколько система использует памяти.

Для этого сочетанием клавиш Shift+Ctrl+Esc открыть диспетчер задач.

На вкладке «Быстродействие» отражается количество физической памяти и процент ее использования.

Обратить внимание, что для каждой ОС свои требования к оперативке.

Так для Windows XP не мене 64 Мб, для Windows 7,8 в зависимости от разряда системы: для 32-разрядной – 1-3 Гб, для 64-разрядной – 2-4 Гб. Но так же необходимо помнить, что 32-разрядная система просто не увидит память в 4 Гб и использовать ее не сможет.

Выяснить сколько гигабайт памяти поддерживает материнская плата.

Для этого сначала узнать какая материнка стоит:

В командной строке ввести «dxdiag», нажать «Enter»

В строке модель компьютера указана информация о материнской плате

Бывает, что стандартными методами не удается определить модель материнской платы, тогда можно использовать небольшую утилиту CPU-Z. Тут же сразу видно, какой тип памяти поддерживает данная материнская плата.

Существует несколько типов оперативной памяти DDR (или PC), DDR2 (PC-2), DDR3 (PC-3) и DDR4 (PC-4). Из них DDR и DDR2 – устаревшие модели, DDR3 – самая распространенная, DDR4 – последняя модификация, которая так же начинает широко использоваться. Каждый тип памяти совместим только с материнской платой, имеющей соответствующие разъемы. DDR3 будет работать на DDR Материнские платы для DDR и DDR2 уже не выпускаются, а для DDR4 стоят еще дорого.

Тут видно различное расположение ключей на планках памяти

Следующий немаловажный параметр – частота карты памяти. Она оказывает большое внимание на быстродействие. Сейчас выпускаются материнские платы, поддерживающие диапазон частот от 1333 до 2000 мегагерц (МГц). И тут необходимо чуть отступить от темы, и посмотреть на процессор. Проблема в том, что процессоры средней ценовой категории могут поддерживать частоту лишь 1333 МГц, но даже самые процессоры с максимальной мощностью и высокой ценой могут потянуть лишь 1866 МГц. То есть слегка недотягивают до возможностей материнской платы. Все это необходимо учитывать при выборе оперативной памяти.

Понятие тайминга.

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

Значение имеет первая цифра. Чем она меньше, тем лучше.

Конструкция модуля памяти.

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

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

Так выглядит модуль памяти с радиатором охлаждения

Режимы работы.

Сразу стоит отметить, что нет никакой целесообразности в установлении двух модулей памяти вместо одной, если устаревшая материнская плата не поддерживает двухканальный режим записи. Но практически все современные материнские платы поддерживают двухканальную или даже трехканальную запись. Речь идет о том, что запись может производиться параллельно в два или три модуля, что очень увеличивает быстродействие. И в этом случае, конечно же, лучше устанавливать две планки по 2 Гб, чем одну 4 Гб, соответственно два модуля по 4 Гб, чем один 8 Гб и т.д. Единственный недостаток работы в двухканальном режиме – стоимость. Две планки стоят дороже одной с таким же объемом.

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

Оперативная память для ноутбука Elpida на 2 Гб

Примерный выбор модулей памяти

  • Для игрового компьютера, для видео монтажа, для 3D моделирования необходимо как минимум две планки DDR3 1866 МГц по 4 Гб. И лучше с радиаторами.

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

Использование флешки как ОЗУ

Самый быстрый способ добавить оперативки — использовать простую флешку

А теперь бонус для пользователей Windows 7 и выше – если на данный момент нет возможности доставить память, а есть свободная ненужная флешка, то ее можно использовать как оперативку. Для этого ее необходимо отформатировать и далее пошагово:

  • Открыть флешку, щелчок правой кнопкой, выбрать «Свойства».
  • Открыть вкладку «Ready Boost». Тут предлагается «Ускорить работу системы за счет использования свободного места на этом устройстве».
  • Отмечаем строчку «использовать это устройство».
  • Передвигая ползунок, указать какое количество памяти флешки необходимо использовать как оперативную память. Можно смело указать весь объем.
  • Нажать «Применить», «Ок».

После этого компьютер будет воспринимать флешку как дополнительную оперативку , открыв «Мой компьютер» сразу можно увидеть, что система ее уже чем-то заполнила. Физически это еще не так, но логически она уже предполагает сбрасывание туда каких-либо кешей и т.д.

Пользователям Windows ХР не так повезло. Эта операционная система не предполагает такой возможности. Для того чтобы ее получить существуют только платные программы. Можно конечно скачать пробную версию, например, а потом решить, необходима ли она до такой степени, чтобы платить за нее деньги.

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

Меня этот вопрос тоже волновал. Хотя, казалось бы, можно поставить 64 битную систему, или даже Windows Server (как известно он даже в 32-битной версии видит всю память), но я хотел пользоваться Windows XP. Два раза за последние 3 года я переходил на Windows 7, в первый раз на 64-битную, второй раз на 32-х битную, но в итоге оба раза вернулся назад на XP, которая живёт у меня без переустановки с 2007 года.
Последний раз я отказался от семёрки в пользу старушки буквально две недели назад. Притом, надо отметить, что семёрка была хоть и 32-х битная, но в ней была разблокирована возможность видеть всю доступную память. Способ разблокировки доступен в Интернет. И теперь мне с новой силой захотелось решить этот вопрос и в XP.

Поиски привели на этот сайт: Patch Vista’s Kernel to Address more than 4 GB of Memory
Статья посвящена разблокировке Windows Vista, зато в комментариях, пара человек описывает аналогичный способ для Windows XP. Я решил последовать их советам и опробовать эту методику на практике.

Для начала нужен дистрибутив Windows XP SP1. Возможно, подойдёт и просто первый сервиспак, не знаю, у меня его нет. В общем-то, там нужен только один файл. А именно файл библиотеки Hardware Abstraction Layer. Начиная со второго сервиспака эта библиотека работает с PAE «фиктивно», т.е. даже если режим расширенной трансляции адресов включён – он ничего не делает и не выходит за пределы четырёх гигабайт. А вот библиотека от первого сервиспака работает полноценно и может адресоваться ко всей доступной памяти, аналогично тому, как работает с памятью 32-битный Windows Server. В установленной Windows XP данный файл называется hal.dll, но в дистрибутиве имеется несколько HAL-файлов, и только один из них инсталлируется в систему под именем hal.dll в процессе установки. Необходимо было узнать, какой из файлов нужно использовать на моём конкретном оборудовании. Делается это просто, надо вызвать Свойства в контекстном меню проводника на файле hal.dll в установленной Windows. Файл находится в папке %systemroot%\system32, и вот что я увидел:

В дистрибутиве Windows XP SP1 в папке I386, я взял файл HALMACPI.DL_. Это архив, в котором находится один файл, искомый мной halmacpi.dll. Я его извлёк WinRAR’ом, но можно обойтись и командной строкой:
expand HALMACPI.DL_ HALMACPI.DLL
Полученный файл надо поместить в папку %systemroot%\system32, что я и сделал. Хочу ещё раз обратить внимание, что если кто-то захочет повторить мои шаги, файл надо брать с именем, указанном в свойстве «Исходное имя файла» в свойствах hal.dll из установленной Windows XP.

Второе, что необходимо сделать, это получить пропатченную версию ядра Windows. Как известно, существует 4-ре версии ядра:

  • ntoskrnl.exe - однопроцессорное ядро Windows.
  • ntkrnlmp.exe- многопроцессорное ядро Windows.
  • ntkrnlpa.exe - однопроцессорное ядро Windows с более чем 3 ГБ оперативной памяти.
  • ntkrpamp.exe - многопроцессорное ядро Windows с более чем 3 ГБ оперативной памяти.
В той инструкции, которую я использовал, говорилось про ядро ntkrnlpa.exe и в моей инсталляции Windows стоит именно оно. Что делать, если попадётся другое ядро – я, честно говоря, не знаю.
Первым делом, я сделал копию ядра, назвал его krnl16.exe, в принципе название неважно. Далее HEX-редактором (я использовал DOS-Navigator, по старой памяти) надо найти последовательность
  • BB 00 00 10 00 33 FF 6A 07 8B F0 и заменить её на
  • BB 00 00 40 00 33 FF 6A 07 8B F0
Здесь 1000h = 4096 Мб, заменяем на 4000h = 16384 Мб. Т.е. поднимаем ограничение до 16Гб. В принципе, можно вписать и большее число. Пропатченный файл также должен располагаться в system32.

Теперь осталось отредактировать boot.ini. Нужно скопировать имеющуюся строчку и дописать пару параметров. У меня была строка:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS.XP=«Microsoft Windows XP Professional RU» /FASTDETECT /USEPMTIMER /NOSERIALMICE /NOEXECUTE=OPTIN

Я добавил в неё /KERNEL=KRNL16.EXE /HAL=HALMACPI.DLL /PAE и в результате получилось:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS.XP=«Microsoft Windows XP Professional RU 16Gb» /FASTDETECT /USEPMTIMER /NOSERIALMICE /NOEXECUTE=OPTIN /KERNEL=KRNL16.EXE /HAL=HALMACPI.DLL /PAE
Теперь есть возможность загружаться как в стандартный Windows с присущим ему ограничением на память, так и в пропатченный, так как я не заменял ни одного системного файла, а только добавил два, которые включаются в работу с помощью вышеописанных параметров boot.ini

Ребут!
И… BSOD.
В принципе, такое может быть. Как следует из обзора истории проблемы на ixbt причиной, по которой Microsoft отключила адресацию верхней памяти, было существование кривых драйверов под различное оборудование, кривизна которых, впрочем, проявлялась только в полноценном режиме PAE. Вполне вероятно, у меня сбоит один из них, за 6 лет в системе накопилось много всего, но какой? Пробую запуститься в безопасном режиме, и УРА! Вот они, мои гигабайты:

Но как определить сбойный модуль? Погуглив, я нашёл для этого методику, которая заключается в анализе малого дампа памяти, создаваемого Windows при BSOD. Анализ производится программой Blue Screen View, но вот все найденные мной способы включения режима записи дампа к успеху не привели: дамп не создавался, поэтому пришлось использовать научный метод тыка. Для начала я деинсталлировал то ненужное, что нашлось в системе. А именно драйвер защиты Guardant и драйвера ATI от старой видеокарты.
Ребут.
Результат превзошёл мои ожидания. Честно говоря, я не ожидал, что метод тыка даст такие результаты, и попробовал его просто, чтобы сделать хоть что-нибудь. Который из драйверов вызывал проблему, я точно не знаю, но думаю, что, скорее всего Guardant.
Но главное: цель достигнута, и теперь я подумываю о расширении памяти до 8-ми Гб.

  • Примечание 1. Поскольку в методике используется dll из первого сервиспака, есть вероятность, что в ней имеются какие-либо уязвимости, закрытые последующими сервиспаками. Я не изучал этот вопрос.
  • Примечание 2. Некоторые драйверы в пропатченой Windows XP могут вызывать BSOD. Впрочем, их крайне мало в природе.
  • Примечание 3. сообщают, что на некоторых системах имеются проблемы с USB при использовании данной методики. У меня пока проблем нет. По крайней мере, клавиатуры, мышки и флешки работают в штатном режиме.

Здравствуйте дорогие посетители. Задали мне вчера вопрос, мол что делать, не могу скинуть большой файл на флешку ? Система говорит что не хватает места на диске, но места на флешке то хватает. Нужно было скопировать фильм размером около 9 Гб на флешку размером в 16 Гб. Если подумать логично, то все должно бы поместится, но система отказывалась закидывать такой большой файл на флешку и все.

Я то знал в чем дело, и пока объяснял что нужно сделать, в голове у меня появилась светлая мысль, что нужно бы об этом в блоге написать, вот собственно и пишу:). Давайте сначала поясню, почему большие файлы, а если быть точным, то файлы более 4 Гб не хотят записываться на флешку и появляется сообщение, что не хватает места на диске.

Дело в том, что когда вы покупаете флешку, то она уже отформатированная в файловою систему FAT32 , а файловая система FAT32 не поддерживает файлы более 4 Гб . Вот в чем дело, все очень просто. Нам нужно сменить файловою систему флешки с FAT32 на NTFS . Потому что файловая система NTFS поддерживает если я не ошибаюсь файлы до 16 Гб.

Этот вопрос с каждым днем становится все более актуальным, потому что размер памяти на флешках растет и они дешевеют с каждым днем. Уже можно купить флешку на 16 Гб, за такие же деньги, что год назад можно было купить только на 4 Гб.

Нам просто нужно изменить файловою систему нашей флешки с FAT32 на NTFS. Я сейчас напишу два способа, которыми можно это сделать.

Форматируем флешку в файловою систему NTFS

О том как , я уже писал. Но думаю не лишним будет еще раз повторить, и обратить особое внимание на то, что мы форматируем ее в NTFS систему.

Внимание! Форматирование флешки уничтожит всю информацию которая находится на ней. Убедитесь в том что на вашей флешке нет нужных вам файлов. Если есть, то скопируйте их на компьютер.

Подключаем флешку к компьютеру, ждем пока компьютер ее опознает, заходим в “Мой компьютер” и нажимаем правой кнопкой мыши на нашу флешку, выберите “Форматировать” .

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

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

Конвертируем флешку в NTFS для записи больших файлов

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

Наша флешка подключена и опознана компьютером. Заходим в “Пуск” , “Все программы” , “Стандартные” и выбираем “Выполнить” . Или просто нажмите Win+R . Откроется окно, в котором пишем команду cmd и нажимаем “Ok” .

Откроется окно, в котором нам нужно прописать команду для конвертирования флешки в NTFS:

convert k : /fs:ntfs /nosecurity /x

Где k , это буква, которую компьютер присвоил вашей флешке, зайдите в “Мой компьютер” и посмотрите какая буква у вас. Вводим эту команду и нажимаем “Enter” .

После завершения появится отчет:

Как скинуть большой файл на флешку? Преобразование флешки в файловою систему NTFS. обновлено: Декабрь 27, 2012 автором: admin

Прошло несколько лет с тех пор, как была написана статья «Четыре гигабайта памяти - недостижимая цель? », а вопросов, почему 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.