Как записать большой файл на флешку. Оперативная память доступна не вся: как задействовать ее полный объем

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

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

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

Способ № 1. Форматирование флешки.

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

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

В результате перед вами откроется небольшое окно для форматирования флешки. Здесь в выпадающем меню «Файловая система» будет выбран вариант «FAT32». Вам необходимо открыть это выпадающее меню и выбрать файловую систему NTFS.

Остальные настройки можно оставить без изменений. После смены файловой системы просто нажмите на кнопку «Начать».

После этого вы увидите предупреждение об удалении файлов с флешки. Для того чтобы продолжить вам нужно нажать на кнопку «Ok».

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

Способ № 2. Конвертация файловой системы из FAT32 в NTFS.

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

Для того чтобы конвертировать файловую систему вам нужно открыть «Командную строку» с правами администратора и выполнить команду «convert X: /FS:NTFS ». При этом букву «X» нужно заменить на букву, которая была присвоена вашей флешке при подключении.

После выполнения данной команды система начнет конвертацию файловой системы. Время, которое необходимо для конвертации, зависит от размера флешки, ее быстродействия и количества файлов. Но, в большинстве случаев конвертация проходит менее чем за 1 минуту. После завершения конвертации в «Командной строке» появится сообщение о том, что преобразование завершено.

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

Люди часто задают вопрос: почему из четырех (шести или восьми) гигабайт оперативной памяти, установленных в компьютер, доступно только 2,23 (3,25 или 2,87 и т.д)? Ниже перечислены возможные причины неполного определения ОЗУ.

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

1. Установлена 32-битная операционная система.

Любые 32-разрядные ОС будут «видеть» не более 4 ГБ ОЗУ. Чаще — от 3,15 до 3,5 ГБ. И здесь не так важно, XP это или «восьмёрка». Такое происходит из-за специфики распределения адресного пространства памяти. Соответственно, для того, чтобы не попасть в такую ситуацию, нужно использовать 64-разрядную ОС Windows.

2. В компьютере используется интегрированный видеоадаптер

Часть оперативной памяти для своих нужд может «отрезать» интегрированная (или «встроенная») видеокарта. Очень часто это встречается в ноутбуках. Данная ситуация является нормой. И если для вас недостаточно количества оставшейся оперативки, совет только один: увеличить её объём путём добавления или замены модулей.

Здесь также важно понимать, что:

  • разные интегрированные видеоадаптеры отбирают разный объём ОЗУ;
  • одна и та же видеокарта способна забирать разный объём памяти, в зависимости от объёма RAM, установленного в компьютер. Допустим, когда было 2 ГБ RAM, видеокарта забирала 512МБ. А когда установили 4ГБ — графика стала отрезать 1ГБ.
  • существуют гибридные видеоадаптеры, которые имеют свою собственную память, но также способны расширять её за счёт заимствования памяти из ОЗУ.

Из-за этих двух причин, порой бывает достаточно сложно понять, почему доступен именно такой объём оперативной памяти. Ведь может получиться, что из 6-ти установленных гигабайт 32-битная Windows «увидела» 3,25 ГБ, а видеокарта «отрезала» из этого объёма ещё 512МБ. В итоге, в свойствах системы будет написано 6ГБ (доступно 2,73). Решением такой комбинированной проблемы будет опять же замена операционной системы на 64-битную и, если нужно, наращивание ОЗУ .

3. Ограничения издания ОС на максимальный объём ОЗУ

Младшие издания Windows 7 и Vista имеют ограничения на использование RAM. Например, Windows 7 Starter работает только с 2 ГБ RAM, Домашняя Базовая x64- с 8ГБ, а Домашняя Расширенная x64- с 16ГБ. Естественно, в таком случае выходом будет лишь установить другое издание операционной системы (к примеру, Pro ).

4. Часть модулей памяти неисправна или нет контакта

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

Извлеките все модули памяти, почистите их контакты стирательной резинкой, затем очистите их спиртом. Установите планки на место и проверьте, все ли они определяются системой. Это удобно сделать в бесплатной программе CPU-Z. Перейдите на вкладку SPD. В левой части окна есть выпадающий список, отображающий информацию об установленных планках RAM в каждом слоте:

Если при выборе определённого слота отображаются пустые поля, значит в нём либо нет модуля, либо он не работает.

5. Модули установлены неверно

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

6. Проблема совместимости модулей ОЗУ

Проверьте работу планок по отдельности с помощью Memtest86+ ().

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

Выводы

Ещё раз о самом важном. Для того, чтобы операционная система использовала ОЗУ по максимуму, рекомендуется устанавливать 64-разрядные ОС Windows таких изданий как Professional. Когда речь идет о современных ОС (Windows 7, 8.1 и 10), с установкой 64-битной версии нет никаких проблем. И если у вас есть выбор, смело выбирайте именно такой вариант.

А вот XP x86 и XP x64 — это фактически разные системы с разными версиями ядра. И Windows XP 64 bit edition считается довольно нестабильной. Поэтому, рекомендуется либо установить Windows 7/8.1/10 (если компьютер рассчитан на работу с одной из них), либо оставить XP 32 бит.

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

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

Представьте себе, что Вы решили записать на свою флешку, образ какой-нибудь программы, или игрушки (кстати, я уже писал статью, что такое образ, подробнее можете прочитать ). Представим, что объем вашей флешки составляет 16 ГБ, причем ваша флешка абсолютна пуста и отформатированная. В свою очередь объем записываемого образа составляет порядка 6 ГБ. В тот момент, когда Вы пытаетесь записать образ на USB-носитель появляется уведомление такого характера «Не достаточно места на диске». Согласитесь, что появление уведомления такого рода ставит Вас в некую тупиковую ситуацию, ведь сама флешка совершенна пуста и имеет 16 ГБ свободного пространства.

А если мы просто копируем на USB носитель файл объем которого менее 4 ГБ, то в этом случае сам файл успешно помещается на флешку и никакие ошибки связанные с нехваткой свободного пространства не возникают. Возникает вопрос, ?

В свое время мне тоже приходилось сталкиваться с подобным явлением, когда файл объемом 5,7 ГБ не записывался на съемный диск, причем другой файл объем которого примерно был 4,3 ГБ без каких-либо проблем записывался на флеш-диск. Так в чем же вообще собственно проблема тогда, спросите Вы?

В этой статье, мы с Вами постараемся понять по какой причине, файлы, объем которых свыше 4-5 ГБ могут не записаться на Вашу флешку. А вы сами знаете, почему такие объемные файлы не записываются на флеш-носитель? Вообще все чаще многие пользователи, кто сталкивается с такой проблемой, задаются вопросам: как записать на флешку файл больше 4 ГБ . По существующему вопросу могу Вам сказать, что мне приходилось слышать разные ответы или точнее доводы, рассуждения пользователей, которые раньше не встречались с подобным явлением.

Например, на одном из форумов пользователь предполагал такие варианты ответа: файлы не записываются на флешку, поскольку там находится вирус, который и занимает весь свободный объем дискового пространства флеш-носителя, либо флешка повреждена или сгорела.
Скажу Вам, что в подобной ситуации, когда файлы больших объемов (более 4-5 ГБ) не записываются на флешку, это вовсе не означает, что она повреждена, или на ней присутствует какой-нибудь вирус, вредоносная программа. А причиной всему служит тот факт, что флешка имеет файловую систему FAT32.
Кстати рекоменду Вам еще прочитать мою статью:

Отсюда Вам следует раз и навсегда запомнить, что данная файловая система не способна поддерживать для работы большие объемы файлов (более 4-5 ГБ).

Поэтому если Вы хотите чтобы файлы объемом свыше 4 ГБ успешно копировались на USB-носитель и дальше применялись Вами по определенному назначению, то в этом случае Вам в первую очередь необходима флешка с файловой системой NTFS. Вообще говорят, что файловая система NTFS имеет возможность контактировать с такими файлами, объем которых может достигать до 16ТБ. Из всего выше сказанного следует, что для того, чтобы записать на флешку файл больше 4 ГБ, Вам потребуется флешка с файловой системой NTFS. Специально бежать в первый попавшийся магазин компьютерной техники для приобретения такой флешки не стоит.

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

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

Первый Вариант:

Итак, после того, как Вы подключили флеш-носитель к компьютеру, и последний успешно определил и распознал USB-носитель, теперь Вам потребуется зайти в свойства съемного устройства.

Для этого откройте «Мой компьютер» и нажмите правой кнопкой мыши по съемному устройству.

В появившемся контекстном меню выберите «Форматировать». В результате откроется специальное окно, в котором нужно будет нажать на выпадающее меню в строке «Файловая система» и выбрать NTFS.

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

Затем остается лишь нажать на кнопку «Начать». После не продолжительного времени произойдет форматирование съемного носителя, по окончании которого съемный носитель будет иметь файловую систему NTFS. Однако здесь следует отметить один нюанс. Если на Вашем компьютере по-прежнему используется операционная система Windows XP, то в этом случае сразу отформатировать флешку в файловой системе NTFS не получится.

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

В завершение Вам следует снова открыть свойства флешки и произвести форматирование.

После того, как флеш-носитель будет отформатирован, не забудьте установить значение параметра во вкладке «Политика» в первоначальное значение.

Второй Вариант:

Второй вариант предполагает изменение файловой системы съемного устройства, за счет операции «Конвертирования».

Для начала Вам потребуется запустить командную строку, нажав на кнопку «Пуск» и в строке поиска набрав «cmd» с последующим нажатием «Enter».

Теперь в открывшемся окне следует задать специальную команду, которая и будет выполнять преобразования файловой системы Вашей флешки. Команда выглядит следующим образом:

Затем остается нажать «Enter». Однако Вам следует знать, что перед выполнением конвертирования съемного устройства нужно будет скопировать все данные на винчестер, ибо Вы рискуете потерять их.

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

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

На сегодня это все, о чем я хотел Вас сегодня рассказать в плане переноса данных посредством съемных устройств. А Вам приходилось видеть ошибки такого рода при копировании файла большого объема и задаваться вопросом, как записать на флешку файл больше 4 ГБ? Надеюсь, сегодняшняя статья для Вас была полезной. Всем до встречи в следующей статье уважаемые читатели!

P.S Напоследок предлагаю посмотреть нарезку видео падение метеорита на Челябинск!

Знакомы многим пользователям. При вызове окна свойств системы полный объем отображается, но после него почему-то указывается, что доступно памяти чуть меньше. Еще хуже, когда пользователь точно знает, сколько у него установлено оперативной памяти, а доступно 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 .

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

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

Понравилась статья? Поделиться с друзьями: