НЕ ПРОПУСТИТЬ ИНТЕРЕСНОЕ

Свежие обсуждения

Sorry. No data so far.

Почему клиентские версии Windows x86 не хотят работать с оперативной памятью больше 4 ГБ

Здравствуйте уважаемые читатели блога www.ithabits.ru. Продолжаем разговор об особенностях работы 32-битных операционных систем с оперативной памятью большого объема.

В первой публикации цикла мы совершили короткий экскурс в историю появления и развития процессоров и популярных операционных систем в результате которого выяснили, что процессоры с архитектурой IA32 приобрели возможность работать с памятью более 4 ГБ начиная с 1995 года, а через некоторое время использовать эту возможность научились и 32-разрядные операционные системы. Это стало возможным благодаря появлению технологии PAE (Physical Address Extension — расширение физических адресов).

Далее мы обратили внимание на то, что в клиентских версиях операционных систем Microsoft Windows ХР x86 верхний предел доступной физической памяти ограничен на уровне 4 ГБ.

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

Посмотрим сколько оперативной памяти поддерживают другие версии Windows, выпущенных после ХР. Сведения возьмем из Memory Limits for Windows Releases (Windows).

Предел физической памяти в Windows Vista

Vista_memory_limits

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

Предел физической памяти в Windows 7

Windows_7_memory_limits

Как видим, опять никаких изменений – абсолютный предел для x86 остался на уровне 4 ГБ.

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

Предел физической памяти в Windows 8

Windows_8_memory_limits

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

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

Попробуем разобраться откуда взялось это ограничение и почему Windows х86 не видит оперативную память больше 4 ГБ. Вернемся не на долго, как и в первой части, в недалекое прошлое. Впрочем, не такое уж это и прошлое – Windows XP до сих пор очень популярна и активно используется.

Проблемы с безопасностью Windows XP

Windows XP была выпущена осенью 2001 года и за очень короткий срок завоевала огромную популярность среди пользователей во всем мире. А, как известно, где большая популярность, там и большие проблемы. Моментально для нее было создано огромное количество вредоносного кода в виде разнообразных и многочисленных вирусов. При этом оказалось, что новая операционная система имеет ряд уязвимостей и весьма низкую стойкость ко взлому. Своего полноценного клиентского антивирусного пакета в то время у Microsoft не было. Ситуацию в значительной мере исправляли программные продукты сторонних разработчиков, однако, этого было явно недостаточно и, в целом, положение оставалось весьма напряженным.

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

Для того чтобы как-то повысить безопасность Windows XP, в 2004 году был выпущен второй пакет обновлений — SP2.

Проблемы, возникшие после принудительного включение режима PAE в Windows XP SP2

Одной из главных особенностей этого пакета, с точки зрения безопасности, было включение технологии DEP (Data Execution Prevention — предотвращение выполнения данных). Эта технология, повсеместно используемая и сегодня, позволяет отражать целый класс вредоносных атак благодаря запрету запуска исполняемого кода с непредусмотренных для этого страниц памяти.

Однако, как мы уже знаем из предыдущей статьи, для работы DEP должна быть включена поддержка PAE (Physical Address Extension — расширение физических адресов). Включение режима PAE меняет механизм обращения к страницам оперативной памяти и делает возможным работу с  физической памятью размером более 4 ГБ.

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

Особенности адресации памяти в режиме PAE

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

Driver-PAE

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

4 гигабайтный лимит физической памяти как решение проблемы неустойчивой работы драйверов устройств в режиме PAE

Для того чтобы решить эту проблему и не блокировать установку SP2 пользователями из-за возможных проблем, Microsoft приняла командирское решение — PAE включить, но тривиально ограничить верхнюю границу доступной оперативной памяти клиентских версий своей операционной системы на уровне 4 ГБ. Адреса при этом транслируются один в один как в “классической” 32-разрядной системе и “глупые” недоделанные драйверы устройств успешно работают.

О том, что такое решение имело место быть, можно убедиться в более поздней статье Microsoft Operating Systems and PAE Support. Ну что же, дешево и сердито. Дешево потому, что производителям оборудования не нужно было спешно заказывать разработку “правильных” драйверов. Сердито потому, что отложенные таким образом до поры до времени проблемы с использованием физической памяти компьютера, были переложены на конечного пользователя.

Скоро исполнится уже 10 лет с момента выхода SP2, а Windows по-прежнему не видит оперативную память больше 4 ГБ и, как мы видели по таблице “Physical Memory Limits: Windows 8”, изменений в этом плане не предвидится.

Что мне сегодня не понятно, так это почему была упущена возможность исправить ситуацию в момент выхода Windows Vista. Ведь драйверы для работы устройств в этой системе разрабатывались новые, а с момента выхода SP2 к Windows XP до появления Windows Vista прошло 2 года, а это срок не маленький. Большая память была все еще не актуальна, или у Microsoft на этот счет были иные соображения?

По всей видимости и были и есть, коль Windows 8 x86 по-прежнему не видит оперативную память больше 4ГБ. Сегодня уже очень трудно представить себе 32-разрядные драйверы, которые не умеют работать с памятью более 4 ГБ. Возможно причина в том, что Microsoft таким образом хочет подтолкнуть пользователей к переходу на x64? А вы что думаете по этому поводу?

Память больше 4 гигабайт в 32-разрядных серверных версиях Windows

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

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

Проблемы, возникающие из-за 4 гигабайтного ограничения доступной физической памяти в клиентских версиях Windows x86

Одна из них очевидна — это невозможность использования памяти больше 4 ГБ.

Однако, это не все. Оказывается все не очень хорошо уже и при 4 ГБ. Неспроста в самом начале мы определили большую память на уровне около 3 ГБ. Эту проблему мы рассмотрим в следующей части.

Комментарии: 4. Присоединяйтесь к обсуждению!

  1. Лев:

    Поддерживаю, весьма вероятно, что это ограничение тянется реально только для добровольно принудительного перехода к 64-битным ОСям.
    Спасибо!

  2. Константин:

    Спасибо. Очень интересный цикл статей.
    Вот решил добавить опер. памяти в старый комп и возник вопрос : будет ли доступна вся опер. память общим объёмом 3,5 Гб на 32-разрядной Win XP, т.е. хватит ли 0,5 Гб адресного пространства под нужды оборудования?
    Понимаю что зависит от конкретного оборудования, но всё же приблизительно…

  3. Петр:

    Достоверно известно, что встроенное видео Intel HD Graphics конфликтует с PAE. Лично у меня Windows 7 при загрузке зависает, по другим сведениям — может быть BSOD. В режиме Windows safe mode VGA и разрешении 640*480 — ОС видит 6Г (но работать невозможно в 640*480) т.е. проблема однозначно в драйвере видео от Intel. По отзывам на форумах, драйверы видеокарт ATI и nVidia не имеют проблемы с PAE

Написать комментарий

Subscribe without commenting