Professional в 64 битной версии. Windows XP x64: обещания и реальность. Как узнать версию операционной системы

Ваш компьютер, вероятнее всего, работает на 64-разрядной версии Windows. Но если открыть «Диспетчер задач», то Вы увидите, что большинство программ в Вашей системе все еще 32-разрядные. Действительно ли это проблема?

Есть много различий между 64-разрядными и 32-разрядными версиями Windows. 64-разрядные версии Windows могут выполнять 32-разрядное программное обеспечение, но 32-разрядные версии Windows не могут выполнить 64-разрядное программное обеспечение.

Как узнать разрядность программы?

Давайте воспользуемся диспетчером задач, чтобы увидеть, какие из ваших программ являются 64-разрядными, а какие 32-разрядными. Щелкните правой кнопкой мыши на панели задач и выберите пункт «Диспетчер задач» или нажмите комбинацию клавиш Ctrl + Shift + Esc, чтобы открыть его.

Посмотрите на столбец с названиями процессов. Если Вы будете использовать 64-разрядную версию Windows 8.1 или 8, то Вы увидите слово «(32-bit)» после каждого имени 32-разрядной версии программы. Если Вы будете использовать 64-разрядную версию Windows 7, то Вы увидите вместо этого «*32».

32-разрядные программы обычно устанавливаются в папку C:\Program Files (x86)\ на 64-разрядных версиях Windows, в то время как 64-разрядные программы обычно устанавливаются в папку C:\Program Files\.
Это - просто правило. Но ни кто не говорит, что нет другого правила, в котором запрещается устанавливать 64-разрядные программы в папку C:\Program Files (x86)\. Например, Steam - 32-разрядная программа, таким образом, она устанавливается в «C:\Program Files (x86)\» по умолчанию. Игры, которые Вы устанавливаете в Steam, установлены в папку C:\Program Files (x86)\Steam по умолчанию, в т.ч. даже 64-разрядные версии игр.

Если Вы сравните две различные папки Program Files, то Вы найдете, что большинство Ваших программ, вероятнее всего, установлены в папку C:\Program Files (x86). И, эти программы в большинстве своём являются 32-разрядными.

Работа 32-разрядного программного обеспечения на 64-разрядной операционной системе

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

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

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

64-битные программы и 32-битные программы: что лучше?

32-битные программы запускаются без проблем на 64-битных версиях операционных систем Windows. Но было бы лучше, если бы все ваши программы были бы 64-битными?

Есть определенно преимущества у 64-битных программ. 32-разрядные программы могут использовать только 2 ГБ памяти, в то время как 64-битные программы могут использовать гораздо больше. Если программа, скорее всего, попала под атаку, дополнительные функции безопасности, применяемые к 64-битных программ, могут помочь. Google Chrome в настоящее время является 32-битным приложением даже на 64-битных версиях ОС Windows, но уже появилась 64-битная бета версия этой программы. И Google обещает, что 64-битная версия Chrome будет быстрее, более безопасной и более стабильной.

Некоторые программы предлагают 64-разрядные версии. Например: Photoshop, Itunes, Microsoft Office, и некоторые из самых популярных программ для Windows, и все они доступны в 64-битном виде. Последние игры тоже часто являются 64-разрядными, чтобы они могли использовать более 2 ГБ памяти.

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

Разработчик, который хочет обеспечить 64-разрядную версию своей программы, должен выполнять много дополнительной работы. Он должен убедиться, что существующий код компилируется и правильно работает как 64-битное программное обеспечение. Он должен обеспечить и поддерживать две отдельные версии программы, так как пользователи под управлением 32-разрядной версии ОС Windows, не могут использовать 64-разрядную версию.

Давайте возьмем, в качестве примера программу Evernote для настольной версии Windows. Даже если они выпустили бы 64-разрядную версию Evernote, пользователи, вероятнее всего, не заметили бы разницы вообще. 32-разрядная программа может прекрасно работать и на 64-разрядной версии Windows, и если нет заметных преимуществ, то нет и смысла в 64-битной версии.

Где найти 64-разрядные приложения

Вы, как правило, не будете способны выбирать между 32-битной и 64-битной версий программного обеспечения. Например, при установке Itunes для Windows, веб-сайт компании Apple автоматически направляет вас к 32-разрядной или 64-разрядной версии установщика в зависимости от версии Windows. При установке Photoshop для Windows, как правило устанавливаются и 32-разрядные, и 64-разрядные исполняемые файлы. Photoshop автоматически выбирает из них. Иногда вы можете увидеть отдельные ссылки для загрузки 32-битных и 64-битных версий программ, но это не так распространено.

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

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

Нажмите на картинку для увеличения.

Разница между 32- и 64-битными системами

Когда мы говорим о 64-битных или 64-разрядных операционных системах, нам нужно различать 64-битные вычисления, которые важны для высокой производительности, а также 64-битную адресацию для поддержки больших объёмов памяти. У 64-битной операционной системы используются регистры шириной 64 бита, 64-битные типы данных, и система внутри себя может адресовать данные с помощью 64-битной адресации (что даёт поддержку максимального объёма памяти 16 экзабайт вместо 4 гигабайт). Впрочем, внешняя адресация и шины могут отличаться. В качестве примера можно привести адресацию памяти, которая обычно ограничена 40 или 48 битами.

64-битная ОС для своей работы требует использование 64-битного процессора. Большинство 64-битных систем могут выполнять 32-битное программное обеспечение в так называемом "режиме совместимости", который важен по причине того факта, что "родные" 64-битные приложения всё ещё встречаются довольно редко. Процессор при необходимости переключается в 32-битный режим. Запуск же 32-битной ОС на 64-битном CPU обычно приводит к тому, что процессор всё время работает в наследственном режиме. Если 64-битное программное обеспечение может на 64-битной ОС работать быстрее (если оно должным образом оптимизировано), то 32-битные приложения на 64-битных ОС обычно дают прежний уровень производительности.

Преимущества 64 бит

У 64-битных операционных систем есть несколько преимуществ. Во-первых, 32-битная версия Windows ограничена поддержкой максимум 4 Гбайт памяти, и даже при этом она не будет отдавать весь объём вашим приложениям - система Windows будет использовать часть памяти для собственных нужд, в результате вы получите 3 Гбайт или чуть больше. Поэтому максимальный объём памяти 32-битной Windows на самом деле ограничен 3+ Гбайт. 64-битная версия Windows будет поддерживать любой объём памяти, доступный сегодня.

Во-вторых, 64-битные ОС с большим количеством памяти лучше работают с большими файлами. Представьте себе 5-Гбайт файл под 32-битной версией Windows, где доступно всего 3 Гбайт памяти: системе придётся работать с файлом, загружая его в память по частям.

Наконец, есть научные приложения, которые не дают достаточно точных результатов, если не получают достаточное количество битов в операциях с плавающей запятой. Они могут работать только в виде 64-битных приложений под 64-битной ОС.

Недостатки 64 бит

Недостатком 64-битных вычислений является другая модель памяти, которая позволила увеличить максимальную ёмкость, а также отсутствие 64-битных приложений в целом. С одной стороны, не все приложения выигрывают от перехода на 64 бита. С другой стороны, низкоуровневые компоненты, такие как драйверы, доступны не для всех устройств, с которыми вы планируете работать. Драйверы являются прослойкой между операционной системой и "железом", то есть почти все они не могут выполняться в 32-битном режиме совместимости. Другими словами, если для сканера, принтера, звуковой карты или любого другого устройства нет 64-битного драйвера, то вы не сможете использовать его в 64-битном окружении.

Детали и проблемы операционных систем

Розничные версии Windows обычно доступны как в 32-, так и в 64-битных версиях. Есть специальные диски для разработчиков, которые содержат обе версии системы: например, Vista DVD для подписчиков Microsoft MSDN. Однако при установке уделите внимание тому, правильную ли версию Windows вы устанавливаете, поскольку после установки изменить версию не получится.

Сколько памяти вам нужно?

Переход на 64-битную операционную систему и большой объём памяти даст не только дополнительное "жизненное пространство", но и позволит операционным системам, таким как Windows Vista, работать более эффективно. Во-первых, операционная система будет реже записывать данные в медленный файл подкачки на жёстком диске, что она выполняет при нехватке оперативной памяти. Во-вторых, Vista может использовать дополнительную память с помощью функции SuperFetch , предварительно загружающей данные приложений в порядке значимости: то есть самые популярные приложения уже будут буферизованы в памяти после загрузки ОС. В итоге приложения будут запускаться практически мгновенно. Комплекты памяти на 4 или даже 8 гигабайт сегодня стоят вполне доступно, поэтому мы рекомендуем оснастить компьютер, по крайней мере, 4 Гбайт памяти. Опытным пользователям и энтузиастам сегодня можно рекомендовать уже 8 Гбайт памяти для 64-битной системы. 2 Гбайт памяти - тоже популярный объём, но при этом вы не получите особого выигрыша от возможностей адресации 64-битной системы (фактически, 64-битная ОС занимает чуть больше места в памяти, чем 32-битная, поэтому ставить 64-битную ОС на компьютер с памятью 3, 2 или 1 Гбайт можно только с точки зрения будущего апгрейда).

32-битные проблемы Windows

Как мы уже упоминали выше, 32-битная версия Windows не даст вам полный объём 4 Гбайт памяти, которую вы установили в систему, поскольку компоненты и устройства Windows требуют выделенного адресного пространства в пределах первых 32 бит (4 Гбайт) оперативной памяти. Видеокарта с 512 Мбайт памяти требует привязки этой памяти к оперативной, что снижает доступную ёмкость на 512 Мбайт. Windows Vista обычно ограничивает доступную память 3,12 Гбайт, но, в зависимости от "железа", эффективный доступный объём может быть ещё ниже. Добавления, такие как оснастка Microsoft .NET, могут потреблять 200 Мбайт или больше. Linux делает всё несколько по-иному, поскольку ядро никогда не требует больше 1 Гбайт; поэтому процессам можно отводить до 3 Гбайт памяти.

Physical Address Extension вместо 64-битной Windows?

Некоторые версии Windows поддерживают функцию под названием Physical Address Extension (PAE), позволяющую использовать больше 4 Гбайт памяти благодаря специальной технологии переадресации. Но Windows при этом использует систему переадресации с тремя уровнями страниц, а не с двумя. Технология PAE успешно зарекомендовала себя в серверах, но в настольных системах её поддержка сталкивалась с проблемами совместимости драйверов из-за недостаточной стандартизации.

Проблемы с драйверами

Поскольку драйверы работают между "железом" и операционной системой, вы не сможете установить 32-битные драйверы на 64-битную операционную систему, пусть даже почти все 32-битные приложения будут работать под вашей 64-битной Windows. Поэтому первым шагом при подготовке перехода на 64-битную версию является тщательная проверка доступности драйверов в 64-битных вариантах. Если вы просто хотите познакомиться и поработать с версией x64 Windows, то можете временно установить её на компьютер - Microsoft даёт 30-дневный ознакомительный период, который позволяет поработать с системой, протестировать её и проверить появление проблем с драйверами. А уже потом активируйте вашу копию Windows.

XP и Vista

Вы обычно можете использовать многие драйверы Windows XP под Windows Vista, но это не касается 64-битных версий. 32-битный драйвер Windows XP для звуковой карты или игрового контроллера обычно работает под Vista-32. Но для Vista x64 и драйверов вы такого исключения не получите, поскольку Vista не будет устанавливать драйвер, если он не подписан должным образом.

Некритичные драйверы

Вам не потребуются драйверы чипсета или видеокарты, если им насчитывается несколько лет. В таком случае Windows Vista x64 сможет поддержать вашу систему благодаря встроенным драйверам, пусть даже их производительность будет чуть хуже. AMD и Intel обычно быстро выпускают драйверы платформы для важных операционных систем, да и AMD/ATI и Nvidia вовремя предоставляют драйверы для актуальных видеокарт Radeon и GeForce. Причём сегодня они поддерживают концепцию унифицированного драйвера, когда в одном комплекте вы получаете набор всех необходимых драйверов, то есть искать и скачивать драйверы по отдельности не нужно.

Windows от компании Microsoft поставляется во многих вариантах с едва заметными отличиями. Они видны лишь в тот момент, когда нам нужно выбирать между 32-разрядной или 64-разрядной системой. Когда дело доходит до выбора соответствующей версии, недостаток знаний об этих типах ОС приводит нас в недоумение.

Microsoft начала выпускать 64-битные системы вскоре после запуска любимой многими Windows XP. Она имела самый продолжительный срок службы - около 14 лет.

Историческая справка подтверждает тот факт, что самой первой реализацией 64-битных систем была UNICOS - Unix-подобная система, созданная в 1985 году суперкомпьютером Cray Inc. Сегодня многие ОС - Mac OS X, Windows, Solaris и свеженькая Android от Google - созданы на основе 64-битной версии.

32-х и 64-разрядные операционки поддерживают определенный тип архитектуры процессора и названы так соответственно. 32-разрядная ОС использует ресурсы, поддерживаемые 32-разрядным процессором (например, Intel x86). То же самое относится к 64-разрядной системе.

Что означает «бит»? Самая маленькая часть данных известна как бит или двоичный код. Именно его понимает компьютер, поэтому каждый бит может иметь только одно значение - 0 или 1. Устройство хранит данные в виде наборов таких битов, называемых байтами. 8 бит составляют один байт или октет.

Кое-что о 32-х и 64-битных процессорах

Процессор или ЦП содержит регистры и логические схемы. Он также называется мозгом компьютера. Размер регистра процессора — 32-бит в 32-битном ЦП и аналогичный в 64-битном:

  • количество значений, которое ЦП хранит в регистрах, равно 2 32. Эти значения используются для сопоставления адреса ячеек памяти, присутствующих в физической памяти. Итак, 2 32 = 4 гигабайта - это объем оперативки, к которой может получить доступ 32-битный процессор;
  • 64-битный регистр хранит значения 2 64. Они соответствуют 16 ЕБ (ексабайтам) ОП. В сравнении с 4 ГБ памяти это намного больше.

Более того, 32-разрядный процессор может обрабатывать 4 байта данных за один цикл, поскольку 8 бит равны 1 байту. Таким образом, если размер обрабатываемых данных превышает 4 байта, для перехода к оставшимся данным ЦП должен начать другой цикл.

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

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

Отличия 64-битной от 32-битной Windows

Теперь вы знаете, что 64-разрядные ОС предназначены для поддержки большего объема оперативной памяти, поэтому 32-разрядные им в этом значительно уступают. Тяжелые приложения, такие как программы для редактирования изображений, AutoCAD и игры, будут намного лучше работать на компьютере с 16 ексабайтами ОП, по крайней мере теоретически. Предел физической памяти, доступ к которой может получить система, также зависит от разновидности материнской платы и ее функциональных ограничений. На самом деле, вам не нужны сотни гигов ОЗУ, чтобы играть в игры.

В сравнении с 32-разрядной Windows, для которой требуется 1 ГБ оперативной памяти, минимальный объем ОП, необходимый для 64-разрядной версии, составляет 2 ГБ. Это очевидно, поскольку для поддержки большего числа регистров требуется соответствующая память.

Компьютер должен иметь ОП не менее 4 ГБ, если вы хотите, чтобы на нем работала 64-битная Windows. Домашняя версия десятки поддерживает память до 128 ГБ, в то время как Pro - до 2048 ГБ! Таким образом, вы можете увеличить виртуальную память до максимума. Пользователям Windows 10 корпорация Microsoft рекомендует не менее 8 ГБ оперативной памяти.

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

На заметку! Единственное, что вам нужно иметь в виду, так это то, что , при этом не ждите чудес. Чтобы в полной мере насладиться мощью 64-разрядного вычислителя вам необходимо установить соответствующую версию Windows. Кроме того, используемые драйверы и приложения также должны поддерживать новую архитектуру.

Windows для 64-разрядного процессора имеет функцию Kernel Patch Protection, которая блокирует неподдерживаемые изменения в ядре, а также предотвращает обработку данных на аппаратном уровне. Для всех драйверов является обязательной цифровая подпись. Так система блокирует установку модифицированных версий, которые могут быть использованы для встраивания вредоносных программ.

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

Mozilla реализовала 64-разрядную версию браузера Firefox еще в декабре 2015 года. Частота внедрения более производительной Windows значительно увеличилась за последнее десятилетие.

Как проверить, является ли моя ОС 32-х или 64-битной?

Вы легко можете это узнать.


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

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

Преимущества и недостатки

Преимущества 64-битных систем:

  • возможность использовать больше оперативной памяти;
  • улучшенная эффективность. Когда установлена дополнительная ОП, 32-разрядные системы не могут ею воспользоваться из-за ограничений адресуемого пространства. Но 64-битные системы на это способны, что часто приводит к значительному повышению производительности компьютера;
  • больше виртуальной памяти. 64-разрядная архитектура Windows теоретически может предложить 8 ТБ виртуальной памяти для одного приложения. 32-разрядная ограничена 2 ГБ. Современные программы, особенно игры, видео и редакторы фотографий, требуют больше ОП. Благодаря более эффективному распределению памяти при наличии 64-разрядного процессора, оптимизированные под эту архитектуру приложения могут использовать новое пространство в полной мере;
  • дополнительные функции безопасности. 64-битная версия обеспечивает дополнительную безопасность в виде аппаратного обеспечения D.E.P, функции защиты ядра и улучшенных драйверов.

Важно учитывать недостатки, к которым относятся следующие:

  • возможная несовместимость драйверов. Несмотря на то, что 64-разрядная ОС поддерживает все больше программ, для тех, кто все еще использует старые, надежные и часто функциональные аппаратные средства, переезд на новую архитектуру может оказаться весьма болезненным. Маловероятно, что 64-разрядные драйверы доступны для более старых систем и оборудования;
  • некоторые ограничения ОП материнской платы. Чаще всего последняя поддерживает ранние 64-разрядные процессоры, но не предлагает использовать больше 4 ГБ ОП. Вы можете испытать некоторые преимущества 64-битного процессора, хотя и без доступа к большему количеству оперативной памяти. Возможно, пришло время обновить ОС;
  • проблемы со старыми приложениями. Программное обеспечение, скорее всего, не сделает переход на 64-битную архитектуру. Старые средства, включая 16-разрядные, требуют виртуализации. В противном случае, на их обновление вам понадобится время.

Почему была разработана 64-разрядная архитектура?

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

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

Запуск 32-разрядных приложений на 64-разрядном компьютере

Если мы посмотрим, что происходит при запуске 32-разрядного приложения на 64-разрядном устройстве, то увидим, что ЦП переключился на так называемый 32-разрядный режим совместимости, в котором он ведет себя как любой 32-разрядный процессор.

Однако, система постоянно скачет между приложениями несколько тысяч раз в секунду. Такое перескакивание называется «расписанием». Каждый раз, когда планировщик переходит с одного приложения на другое, ему также необходимо переключать режим ЦП между разрядностью 64-бит и 32-бит, что неизменно занимает некоторое время. Это дополнительное время кажется незначительным, но все же влияет на работоспособность устройства.

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

Не бойтесь открывать 32-разрядные приложения на 64-разрядной операционной системе. Если произойдет какое-либо замедление, оно будет минимальным.

Видео — Какой Windows установить 32 или 64 битной и в чем разница


Прежде чем приступить к тематике разработки кода 64-битных программ, остановимся на вопросе обратной совместимости 64-битных версий Windows с 32-битными приложениями. Обратная совместимость осуществляется за счет механизмов, реализованных в .

WoW64 (Windows-on-Windows 64-bit) - подсистема операционной системы Windows, позволяющая запускать 32-битные приложения на всех 64-битных версиях Windows.

Подсистема WoW64 не поддерживает следующие программы:

  • программы, скомпилированные для 16-разрядных операционных систем;
  • программы режима ядра, скомпилированные для 32-разрядных операционных систем.

Накладные расходы

Существуют различия WoW64 в зависимости от архитектуры процессора. Например, 64-битная версия Windows разработанная для процессора Intel Itanium 2 использует WoW64 для эмуляции инструкций. Такая эмуляция весьма ресурсоемка по сравнению с WoW64 для архитектуры , так как происходит переключение с 64-битного режима в режим совместимости при выполнении 32-битных программ.

WoW64 на архитектуре Intel 64 (AMD64 / x64) не требует эмуляции инструкций. Здесь подсистема WoW64 эмулирует только 32-битное окружение за счет дополнительной прослойки между 32-битным приложением и 64-битным Windows API. Где-то эта прослойка тонкая, где-то не очень. Для средней программы потери в производительности из-за наличия такой прослойки составят около 2%. Для некоторых программ это значение может быть больше. Два процента - это немного, но следует учитывать, что 32-битные приложения работают немного медленнее под управлением 64-битной операционной системы Windows, чем в 32-битной среде.

Компиляция 64-битного кода не только исключает необходимость в WoW64, но и дает дополнительный прирост производительности. Это связано с архитектурными изменениями в микропроцессоре, такими, как увеличение количества регистров общего назначения. Для средней программы можно ожидать в пределах 5-15% прироста производительности от простой перекомпиляции.

Преимущество 64-битной среды для 32-битных программ

Из-за наличия прослойки WoW64 32-битные программы работают менее эффективно в 64-битной среде, чем в 32-битной. Но все-таки простые 32-битные приложения могут получить одно преимущество от их запуска в 64-битной среде. Вы, наверное, знаете, что программа, собранная с ключом /LARGEADDRESSAWARE:YES, может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Так вот, эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB).

Перенаправления

Подсистема WoW64 изолирует 32-разрядные программы от 64-разрядных путем перенаправления обращений к файлам и реестру. Это предотвращает случайный доступ 32-битных программ к данным 64-битных приложений. Например, 32-битное приложение, которое запускает файл DLL из каталога %systemroot%\System32, может случайно обратиться к 64-разрядному файлу DLL, который несовместим с 32-битной программой. Во избежание этого подсистема WoW64 перенаправляет доступ из папки %systemroot%\System32 в папку %systemroot%\SysWOW64. Это перенаправление позволяет предотвратить ошибки совместимости, поскольку при этом требуется файл DLL, созданный специально для работы с 32-разрядными приложениями.

Подробнее с механизмами перенаправления файловой системы и реестра можно познакомиться в разделе MSDN "Running 32-bit Applications ".

Почему невозможно использовать в 64-битной программе 32-битные DLL? Можно ли это обойти?

Загрузить 32-битную DLL из 64-битного процесса и выполнить код из неё невозможно. Невозможно в силу дизайна 64-битных систем. В принципе, невозможно. Не помогут ни хитрости, ни недокументированные пути. Для этого нужно загрузить и проинициализировать WoW64, не говоря уже о структурах в ядре. Фактически нужно будет на лету превратить 64-битный процесс в 32-х битный. Подробнее эта тема рассмотрена в посте "Недокументированные функции; Загрузка 32-х битных DLL в 64-х битный процесс ". Единственное, что можно порекомендовать, - это создание суррогатного процесса и взаимодействия с ним посредством технологии COM. Об этом рассказывается в статье "Accessing 32-bit DLLs from 64-bit code ".

А вот загрузить ресурсы из 32-битной DLL в 64-битный процесс совсем несложно. Это можно сделать, если при вызове LoadLibraryEx указать флаг LOAD_LIBRARY_AS_DATAFILE.

Постепенный отказ от поддержки 32-битных программ

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

Многие администраторы знают про относительно новый режим установки и работы серверной версии операционной системы под названием Server Core. Это тот режим, о котором участники войн "Windows vs Linux" говорили очень давно. Одним из аргументов сторонников использования Linux на сервере была возможность установить серверную ОС без графического интерфейса (GUI). Но вот и в Windows Server появилась такая возможность. Установка в этом режиме позволяет получить только командную строку без пользовательского интерфейса.

Эта возможность (установка Server Core) появилась в Windows Server 2008. Но в Windows Server 2008 R2 появилось нововведение, приближающее 64-битное будущее. При установке Windows Server 2008 R2 (Server Core) поддержка запуска 32-битных приложений стала опциональной . Причем по умолчанию эта поддержка выключена. И при попытке запуска 32-битного приложения в режиме Server Core пользователь получит сообщение о невозможности запуска. Конечно, можно добавить поддержку 32-битных программ:

start /w ocsetup ServerCore-WOW64

В обычном (Full Installation) режиме 32-битные приложения по умолчанию запускаются, а вот в Server Core уже нет.

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

Дополнительная информация

Интересным источником информации по системе WoW64 является блог Алексея Пахунова: http://blog.not-a-kernel-guy.com/ . Алексей является сотрудником компании Microsoft и принимает непосредственное участие в разработке подсистемы WoW64.

Появление 64-разрядных Windows вызвало немало вопросов. Поддержка 32-битных приложений, драйверов и всего того, что рассчитано на архитектуру x86. Установка и особенности использования программ. Вводимые ограничения для 32-разрядных приложений. Поддержка старых режимов и многое другое. Все это никак не могло остаться в стороне. Ведь, пласт 32-разрядного наследия слишком велик, и в 64-битной среде его мало чем можно заменить, даже сейчас.

В этой статье приводится обзор подсистемы Windows на Windows 64 (WOW64) и ее методов, которые позволяют Windows поддерживать 32-битные приложения на 64-битной системе.

Примечание : Первая попытка внедрить 64-разрядные системы была достаточно провальной. Жесткие ограничения и отсутствие реальных преимуществ давало о себе знать. На тот момент, даже драйвера под 64-разрядные системы было достаточно сложно найти. Не говоря уже о программах, на которых хоть как-либо была бы заметна разница. Снятие ограничения на 3Гб оперативной памяти, безусловно, сегодня сильное преимущество, но на тот момент это больше напоминало красивый слоган.

Устройство поддержки 32-битных приложений в 64-разрядной Windows

Windows 32 на Windows 64 (WOW64)

WOW64 эмулирует 32-битную Windows

В Windows 64, 32-битные приложения выполняются в эмулированной 32-разрядной операционной системе, которая называется Windows 32 на Windows 64, или WOW64 для краткости. Основной задачей WOW64 является перехват и обработка всех системных вызовов от 32-разрядных приложений.

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

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

Тот факт, что WOW64, как и 32-битное приложение, выполняется в режиме пользователя, объясняет причину отсутствия поддержки 32-битных драйверов. Если говорить другими словами, то, для корректного запуска, драйверам требуется режим ядра, который не может обеспечить WOW64. Поэтому, если у вас 64-разрядная Windows, то все драйвера должны быть 64-битными.

Эмулятор WOW64 состоит из следующих 64-разрядных библиотек:

Примечание : Это единственные 64-разрядные библиотеки, которые загружаются в 32-разрядный процесс.

  • Wow64.dll - ядро инфраструктуры системы эмуляции. Линкует вызовы в точки входа Ntoskrnl.exe
  • Wow64Win.dll - линкует вызовы в точки входа Win32k.sys
  • Wow64Cpu.dll - переключает процессор между 32-битным и 64-битным режимом
  • Ntdll.dll - 64-битная версия Wow64.

Wow64.dll загружает 32-битную версию (x86) Ntdll.dll и все необходимые 32-битные библиотеки, которые в основном остались без изменений. Однако, некоторые их этих 32-разрядных библиотек все же были изменены, чтобы корректно исполняться в WOW64. Как правило, такие изменения были сделаны из-за того, что они используют оперативную память вместе 64-разрядными компонентами системы

Управление файлами и настройками реестра в WOW64

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

Перенаправление файлов

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

Файлы 32-разрядных приложений, по умолчанию, устанавливаются в:

  • C:\Program Files(x86)

32-разрядные системные файлы устанавливаются в:

  • C:\WINDOWS\SysWOW64

Для 64-разрядных приложений, файлы устанавливаются в:

  • C:\Program Files
  • C:\WINDOWS\SYSTEM32

Механизм перенаправления WOW64 гарантирует, что запросы от 32-разрядных приложений к каталогам "C:\Program Files" и "C:\WINDOWS\SYSTEM32" будут перенаправлены на соответствующие каталоги для 32-битных версий.

Однако, существует одна проблема с перенаправлением файлов. Пользователи и разработчики должны быть в курсе этой особенности.

Многие 64-разрядные приложения все еще используют 32-битный режим и процедуры. И не учитывают это при создании инсталлятора . Для того, чтобы приложение было установлено правильно. т.е. в "C:\Program Files", программа установки должна сделать системный вызов к операционной системе, чтоб система приостановила механизм перенаправления файлов Wow64. А после установки сделать другой системный вызов, чтобы снова включить перенаправление. Если производить установку без остановки перенаправления, то программа будет установлена в "C:\Program Files (x86)". Классическим примером данной ошибки является 64-разрядная версия FireFox 3.5 под кодовым названием "Shiretoko", которая устанавливается в "C:\Program Files(x86)\Shiretoko". Конечно, Firefox по-прежнему будет нормально функционировать. Единственное, что вы не сможете сделать, так это изменить иконку приложения .

Примечание : Возможно, сейчас эту ошибку в Shiretoko уже исправили. Тем не менее, в ранних версиях было именно так.

Перенаправление реестра

Ключи реестра, специфические для 32-разрядных приложений, будут перенаправлены из ветки:

  • HKEY_LOCAL_MACHINE\Software
  • HKEY_LOCAL_MACHINE\Software\WOW6432Node

Так же, иногда, можно встретить записи реестра в другой ветке (хотя это необычно):

  • HKEY_CURRENT_USER\Software\WOW6432Node

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

Дублирование реестра

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

  1. Установите 32-битное приложение, которое ассоциирует себя с расширением XYZ
  2. Установите 64-разрядную версию приложения, которая связывает себя с расширением файла XYZ
  3. Установите другое 32-битное приложение, которое ассоциирует расширение XYZ с собой

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

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

Существует ряд ограничений подсистемы WOW64

Некоторые, но не все, 64-битные функции доступны 32-разрядным приложениям

Wow64 позволяет 32-разрядным приложениям использовать некоторые функции и возможности 64-битных систем. Например, при правильной настройке, такие приложения смогут использовать до 4Гб оперативной памяти. Доступ к другим функциям ограничен из-за особенности устройства 64-битных систем. Например, 64-битная ОС Windows поддерживает 64-битные логические операции. Тем не менее, 32-битные приложения не будут иметь доступ к ним, они смогут использовать только 32-битные логические операции.

Примечание : Основной причиной ограничений служит разница в представлении данных 32- и 64-битных приложений. 32-разрядное приложение попросту не рассчитано на 64-разрядные типы данных.

Нельзя смешивать между собой код (Code Injection) 32-битных и 64-битных приложений

В 64-битной ОС Windows нельзя запускать 32-битный код в 64-разрядном процессе, как и нельзя запускать 64-битный код в 32-разрядном процессе. Приложения, использующие инъекции кода (Code Injection) для добавления функциональности в существующие приложения, как правило, будут выдавать ошибки.

Этот факт объясняет, почему большинство 32-битных расширений оболочки Windows не запускаются под 64-разрядной Windows. Большинство таких расширений используют инъекцию кода (Code Injection) для встраивания в проводник Windows

WOW64 не поддерживает 16-разрядные инсталляторы

WOW64 обеспечивает поддержку 16-битных инсталляторов Microsoft, путем замены инсталлятора на совместимую 32-битную версию. Тем не менее, эта поддержка не распространяется на сторонние продукты. Так что, если вам нужно использовать старую программу, то, скорее всего, придется искать эмулятор или портативную версию.


Дополнительные возможности для запуска 32-битных приложений в Windows 64

Windows Virtual PC

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

Системные требования и набор функциональности существенно различается между версиями Virtual PC и версиями Windows. Так что, прежде чем пытаться использовать Virtual PC, необходимо проверить, что программа поддерживает как вашу операционную систему, так и те ОС, которые будут на ней запущены. Например, одна из последних версий уже не поддерживает версии Windows ниже Windows XP SP3.

Режим Windows XP (XPM)

Режим Windows XP это конкретная и урезанная реализация Windows Virtual PC, которая поставляется с предустановленной копией Windows XP Professional SP3. Этот режим доступен только в версиях Enterprise, Ultimate и Professional Windows 7 64-бит.

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

Примечание : К некоторым более дательным настройкам режима совместимости все же можно обратиться. Более подробную информацию вы можете найти в обзоре Как запустить старые программы на Windows 7 / Vista? (см. Microsoft Application Compatibility Toolkit).

Мультизагрузка ОС Windows

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

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

Подытоживая сказанное о поддержке 32-бит в 64-разрядной Windows

Большинство 32-разрядных приложений будут вполне счастливо себя чувствовать в Windows 64. Основными исключениями будут:

  1. 32-разрядные драйверы устройств
  2. Приложения, которые не могут функционировать без 32-битных драйверов устройств, которые они используют. Яркими примерами являются антивирусы и другие программы для обеспечения безопасности.
  3. Расширения, которые используют инъекцию кода (Code injection). Например, оболочки для проводника Windows

Некоторые приложения смогут запускаться с ограничениями. Это так же касается деинсталляторов , программ для очистки реестра и программ для тюнинга , так как они имеют доступ только к той части реестра, которую им показывает Wow64.

Если вы никак не можете запустить 32-битное приложение, то рассмотрите вариант с виртуализацией или мультизагрузкой нескольких операционных систем.

Какие приложения быстрее 32-битные или 64-битные?

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

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

Кроме того, необходимо помнить, что запуск 32-битного приложения на 64-разрядной Windows означает запуск Wow64, поэтому анализ производительности на 32-битном процессоре можно отложить в сторону. Запуск Wow64 означает не только затраты на преобразование вызовов, но и учет механизмов перенаправления и дублирования, которым требуются не только процессорное время, но и оперативная память. Поэтому, возможно, 32-разрядное приложение будет выполняться быстрее 64-битного, но оно однозначно будет выполняться медленнее, чем при эквивалентном запуске на 32-битном процессоре.

Рейтинг 5.00 (6 Голосов)




Просмотров