Ограничения 32 разрядной windows

Секреты большой памяти в 32-битных операционных системах

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

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

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

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

Впервые я реально столкнулся с проблемой большой памяти когда ко мне в руки попал ноутбук с 4 ГБ оперативки и Windows 7 Professional x86. Захотелось выяснить что к чему. А именно, — куда “исчезла” часть установленной памяти и нельзя ли ее как-нибудь вернуть? Ведь объем доступной физической памяти самым непосредственным образом влияет на быстродействие системы.

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

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

Сегодняшняя статья является первой, и ее название «Секреты большой памяти в 32-битных операционных системах» можно смело отнести ко всему циклу. Я очень советую ознакомиться с этим циклом не только тем, кто работает с 32-разрядными операционными системами, но и тем, кто уже перешел на 64-разрядные ОС. Поверьте, вы значительно лучше начнете понимать свой компьютер.

На первый взгляд в силу того, что математическим пределом для 32-разрядной адресной шины является 4 ГБ и именно такой максимальный размер официально заявлен Microsoft, как поддерживаемый в клиентских версиях Windows x86, названный выше рубеж в

3 ГБ может показаться странным. Однако, как вскоре станет понятно, ничего странного в этом нет, а Microsoft слегка вводит народ в заблуждение.

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

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

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

  1. Свойства процессора;
  2. 32-битная операционная система;
  3. 32-разрядное приложение (программа)

Последние два очень часто смешивают в одну кучу, чего в данном случае, делать как раз не следует. Начнем по порядку и издалека – совершим короткий исторический экскурс.

Процессор

Обратимся к таблице основных характеристик процессоров (чуть было не написал х86, что было бы ошибкой – эта система команд впервые появилась у процессора 8086) >

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

Для начала обратим внимание на 16-разрядные процессоры. Если бы они имели 16-разрядную адресную шину, то максимальный размер доступной им физической памяти составлял бы всего 64 КБ (2 в 16-й степени равно 65536). Однако уже Intel 8086 мог работать с памятью до 1 МБ, а 80286 уже до 16 МБ благодаря 20 и, соответственно, 24 битам шины адреса.

Эпоха процессоров IA-32 и 4 ГБ ОЗУ началась с Intel 80386 в 1985 году. На протяжении последующих 10 лет процессоры архитектуры IA-32 не имели физической возможности работать с памятью более 4 ГБ.

Читайте также:  Windows 10 журнал событий вход

В 1995 году был представлен процессор Intel Pentium Pro. Наряду с совершенно новой архитектурой ядра этот процессор получил 36-битную адресную шину благодаря чему, как не трудно подсчитать, максимальный размер доступной ему физической памяти увеличился до 64 ГБ (в современных 64-разрядных процессорах используются 37 разрядов, что увеличивает предел адресуемой физической памяти до 128 ГБ).

Кроме того, в процессоре был реализован «хитрый» механизм управления памятью, который отображал физическую память, расположенную за пределами 4 ГБ, в 32-разрядную виртуальную память в диапазоне 0 — 4 ГБ «обманывая» таким образом 32-разрядные приложения. Такой режим управления памятью процессором х86 получил название PAE (Physical Address Extension — расширение физических адресов).

Pentium Pro позиционировался в то время как процессор для серверов и рабочих станций. Действительно, представить себе в 1995 году настольный компьютер с объемом оперативной памяти не то что больше, а хотя бы отдаленно приближающимся к 4 ГБ, было не просто. Память измерялась тогда мегабайтами. И в наше то время 4 ГБ памяти в настольном компьютере или ноутбуке нужны далеко не всем. Кроме того, этот процессор был очень дорогим и имел проблемы с быстродействием при выполнении популярных в то время 16-разрядных приложений.

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

Коль уж заговорили о процессорах, то отметим, что первый 64-разрядный процессор х86 появился не у Intel, а у ее главного конкурента – компании AMD в 2003 году. К этому моменту у Intel уже был, выпущенный в 2001 году, 64-разрядный процессор Itanium совершенно новой архитектуры IA-64, не совместимой с х86. В том числе по причине последнего, процессор не получил распространения на настольных компьютерах. В 2003 году специально для Itanium была выпущена единственная версия Windows XP 64-Bit Edition Version 2003 (Itanium 2). Проект был прекращен в 2005 году за ненадобностью.

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

Проще всего определить поддержку режима PAE процессором оказалось в Linux. В Ubuntu, или в любом из ее многочисленных клонов, можно набрать в терминале:

grep —color=always -i PAE /proc/cpuinfo

В результате должно получиться что-то вроде этого >

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

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

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

Если у Вас 32-разрядный Linux, то проблем с использованием памяти объемом более 4 ГБ, скорее всего, не возникнет. В операционных системах Linux поддержка PAE появилась в 1999 году в ядре 2.3.23 и используется с тех пор безо всяких ограничений.

Можно отметить, что, например, популярный Linux Mint вообще поставляется сегодня исключительно с ядром PAE и требует его обязательной поддержки процессором. Кстати, как в Windows 8. Не все этому обстоятельству рады, так как очевидно все еще сохранились процессоры без поддержки PAE.

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

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

Читайте также:  Конвертировать pdf jpg linux

Режим PAE может быть включен, может быть выключен. Начиная с Windows XP SP2 PAE включается принудительно для обеспечения работы технологии безопасности DEP (Data Execution Prevention — предотвращение выполнения данных).

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

Переходим к нашему последнему сегодняшнему пункту.

32-разрядные приложения

Благодаря диспетчеру памяти процессора, осуществляющему ее распределение в режиме PAE независимо от работы приложений, и поддержке такого режима работы операционной системой, 32-разрядные приложения отделены от физической памяти и не имеют сведений о ее реальном размере. Каждому приложению, так как для них сохраняется 32-битное адресное пространство, по-прежнему доступны только 4 ГБ виртуальной памяти. В Windows под нужды самого приложения из этих 4 ГБ отдается ровно половина, в Linuх — 3 ГБ. В Windows существует возможность принудительно отдать приложению 3 ГБ, но, в большинстве случаев, это является нецелесообразным.

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

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

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

На этом пока остановимся и подведем итоги:

  • Практически все современные 32-битные операционные системы умеют работать с оперативной памятью размером более 4 ГБ. Такая возможность появилась в 1995 году благодаря внедрению в процессоры технологии PAE (Physical Address Extension — расширение физических адресов);
  • Не смотря на то, что поддержка PAE позволяет задействовать физическую память объемом до 64 (128) ГБ, работа ядра операционной системы в таком режиме совершенно не эквивалентна переходу на 64-битную ОС. Приложения продолжают выполняться в обычном для них 32-разрядном адресном пространстве, но при этом, если установленная физическая память превышает 4 ГБ, самих приложений может быть одновременно запущено больше;
  • В режиме PAE может наблюдаться снижение скорости доступа к памяти и проблемы с драйверами устройств;
  • В операционных системах Microsoft Windows верхний предел доступной физической памяти ограничен программно на уровне ядра ОС.

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

Сколько «оперативки» видит Windows 7 32 bit: с чем связаны ограничения и как освободить память?

Пользователи Windows 7 все еще остается одной из самых популярных и востребованных во всем мире ОС даже после заявлений корпорации Microsoft о прекращении ее поддержки. Однако очень часто неудобство ее использования на домашних и офисных ПК состоит в том, что далеко не всегда система с разрядностью х86 корректно воспринимает апгрейд «железа» в плане увеличения планок ОЗУ для повышения производительности. О том, сколько «оперативки» видит Windows 7 32 bit, далее поговорим более предметно. И тут нужно четко ориентироваться в архитектуре, поскольку ответ на основной вопрос в большинстве случаев зависит как раз от таких знаний.

Сколько памяти может использовать 32-битная операционная система: общие сведения

Начнем с того, что на всевозможных форумах можно встретить посты несведущих пользователей, утверждающих, что памяти можно поставить на компьютер, сколько угодно, система ее распознает, но использовать не сможет. Это не совсем так. Архитектура х86 или 32 бита такова, что более определенного лимита, который составляет 4 Гб, она может и не распознать.

Читайте также:  Readonly file system linux

Связано это только с принципами работы 32-битных систем в плане использования доступного адресного пространства. Но если разбираться сколько оперативной памяти видит Windows 7 32 bit разных модификаций, и тут можно найти массу ограничений. В основном это касается построения структуры самих модификаций системы.

Сколько «оперативки» видит Windows 7 32 bit «Начальная»

Так, например, версия Starter, которая в иерархии ОС всего этого семейства является самой простой и, если можно так сказать, ограниченной, не способна работать с установленными планками ОЗУ с объемами, превышающими 2 Гб (хотя тех же установленных 4 Гб и определяет).

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

Ограничения на установку ОЗУ в остальных версиях Windows 7 (х86)

Если же говорить о том, сколько «оперативки» видит Windows 7 32 bit остальных версий, как уже понятно по тому, что было сказано применительно ко всем 32-битным ОС, для нее максимальное ограничение составляет именно 4 Гб.

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

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

Вероятно, многие пользователи, просматривая данные в разделе свойств системы, который вызывается через меню ПКМ на значке компьютера, расположенном на «Рабочем столе», достаточно часто замечали, что даже при наличии 4 Гб ОЗУ доступный объем существенно уменьшается.

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

Как использовать ОЗУ по максимуму?

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

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

Наконец, можете воспользоваться разделом служб (services.msc) и отключить ненужные апплеты и процессы именно там, однако без необходимых знаний такими вещами лучше не заниматься. Если хотите, можете деактивировать автоматическую инсталляцию апдейтов. По крайней мере, в «семерке» (в отличие от той же «десятки») сделать это можно.

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

Выводы

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

Например, неплохо работает приложение Advanced SystemCare. В нем есть специальный встроенный инструмент, который при активации может отслеживать состояние ОЗУ в реальном времени и освобождать память для пользовательских процессов путем выгрузки из нее ненужных или неиспользуемых системных модулей и компонентов. Однако такая функция доступна только в версии Pro, а в бесплатной модификации Free ее вы не найдете (а если и найдете, то она будет неактивной и использовать ее будет невозможно).

Оцените статью