Можно ли использовать программу для 32 бит в 64

Содержание статьи

Как перейти с 32-бит на 64-бит Windows

Некоторые пользователи ищут ответ на вопрос о том, как перейти с 32 на 64 бита в операционной системе Windows. Дело в том, что начиная с Windows 7, стала выпускать редакции системы одновременно в 32 bit (x86) и 64 bit (x64) версиях операционной системы.

Ранее операционная система Windows имела 32 битную разрядность. Постепенно, с развитием архитектуры процессоров, появилась возможность поддержки 64 битной разрядности системы (начало было положено с выпуска Windows XP Professional x64 Edition).

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

Microsoft предоставляет возможность смены 32 разрядной системы на 64 разрядную Windows. При смене разрядности системы, активация Windows не слетит, потому что лицензия не зависит от разрядности операционной системы.

Основные различия между 32 битной Windows и 64 битной Windows

Операционная система Windows имеет две версии разрядности: 32 битную и 64 битную, которые имеют обозначения: 32-bit (x86). 64-bit (x64).

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

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

Если на компьютере с Windows x86 установлено до 3 ГБ оперативной памяти, операционная система использует всю доступную память. Если, на ПК установлена память объемом в 4 ГБ, то система будет использовать объем оперативной памяти размером, чуть более 3 ГБ. Даже при наличии общей оперативной памяти (ОЗУ), размером в 6 ГБ, 8 ГБ и т.д., в Windows 32-bit, все равно будет доступно только менее 4 ГБ памяти.

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

Работа приложений в операционной системе Windows разного типа (х86 и х64) имеет отличия:

  • в Windows x64 можно установить 64 и 32 битные программы (64 битные приложения, по умолчанию, устанавливаются в папку Program Files, а 32 битные в папку Program Files (x86) на системном диске);
  • в Windows х86 устанавливаются только 32 битные программы, а установка 64 битных приложений не поддерживается.

Большая часть программ, созданных для Windows, поддерживает 32 битную разрядность. Эти приложения можно установить на компьютер с любой разрядностью, они будут работать, при условии поддержки программой определенной версии Windows (Windows 10, Windows 8, Windows 7 и т. д.).

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

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

Необходимое условие для перехода Windows с 32 bit на 64 bit

Можно ли изменить 32 битную систему на 64 битную Windows? Да это возможно, но при смене разрядности системы, есть нюансы. Без соблюдения некоторых условий сменить 32 бита на 64 битную систему не получится.

Главное условие для перехода на другую разрядность системы: поддержка центральным процессором (ЦП), установленным на компьютере, 64 битных инструкций. Без соблюдения этого условия, установка 64 разрядной Windows на ПК будет невозможна.

Как определить разрядность операционной системы Windows, какую разрядность поддерживает процессор, установленный на компьютере? Проще всего это определить с помощью операционной системы. Для определения параметров процессора в плане поддержки 64 битной разрядности, можно воспользоваться сторонними приложениями, например, CPU-Z, AIDA64 и т. д.

Основные отличия типа процессоров, в зависимости от поддержки инструкций для соответствующей разрядности (х86 и х64):

  • Процессор x64 — поддерживается установка на компьютер 64 и 32 разрядной Windows.
  • Процессор x86 — на компьютер можно установить только 32 битную версию Windows.

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

Для установки 64 разрядной Виндовс на компьютере должно быть минимум 2 ГБ оперативной памяти.

Плюсы и минусы перехода на 64 разрядную Windows

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

Основные преимущества 64 битной операционной системы:

  • Использование всего объема оперативной памяти (более 4 ГБ), установленной на компьютере.
  • Более высокая скорость работы системы и программ.

Основные недостатки 64 битной операционной системы:

  • Потребление системой и приложениями большего объема оперативной памяти.
  • Отсутствие x64 драйверов для устаревшего оборудования.

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

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

Пользователям компьютеров с устаревшим железом, с памятью в 2-4 ГБ нужно все тщательно взвесить. В большинстве случаев, играть в современные игры или пользоваться «тяжелыми» программами не получится из-за недостатка памяти. Система и работающие программы займут больше места в памяти компьютера, чем аналогичные приложения в 32 битной Windows. Слабый процессор не даст положительного эффекта. В некоторых случаях, 64 разрядная система будет работать медленнее на компьютере, чем 32 битная Windows.

Читайте также:  Можно ли использовать горчицу вместо горчичников

Как перейти с 32 бит на 64 битную Windows

Для перехода на 64 разрядную систему есть только один вариант: чистая переустановка Windows с потерей данных на системном диске. Порядок действий следующий:

  • Скачайте на компьютер операционную систему Windows, 64 битной разрядности. Прочитайте здесь, откуда можно скачать оригинальный образ Windows 10, Windows1, Windows 7.
  • Создайте загрузочную флешку или запишите образ системы на DVD диск.
  • Включите компьютер, перед загрузкой системы, войдите в BIOS (UEFI), выберите для загрузки загрузочный носитель с Windows.
  • Установите операционную систему на компьютер.
  • После завершения установки системы, установите необходимые драйвера.

Новая версия Windows должна соответствовать редакции, установленной на компьютере, например, с Windows 10 Home x86 можно перейти на Windows 10 Home x64.

[reclam4]

Для создания загрузочной флешки используйте программы: Rufus, Media Creation Tool, WinSetupFromUSB и т. д.

Как войти в BIOS (UEFI) на вашем устройстве, узнайте в интернете, по имени производителя ноутбука или по модели материнской платы для настольного ПК.

Для получения более подробной информации, перейдите по ссылкам на статьи, в которых подробно описан процесс установки соответствующих версий Windows: Windows 10, Windows 8.1, Windows 7.

Во время установки операционной системы обратите внимание на два момента:

  • В одном из окон установки необходимо выбрать подходящую редакцию Windows подходящей разрядности (сейчас распространены мультиобразы Windows, включающие в одном образе системы разные редакции, разной разрядности).
  • В окне «Выбор типа установки» следует выбрать «Выборочная: только установка Windows (для опытных пользователей)» в Windows 10 или в Windows1, или «Полная установка (дополнительные параметры) в Windows 7.

После завершения установки, на компьютере появится Windows 10 64-bit.

Источник

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

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

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

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

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

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

Существуют различия WoW64 в зависимости от архитектуры процессора. Например, 64-битная версия Windows разработанная для процессора Intel Itanium 2 использует WoW64 для эмуляции x86 инструкций. Такая эмуляция весьма ресурсоемка по сравнению с WoW64 для архитектуры Intel 64, так как происходит переключение с 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 является блог Алексея Пахунова: https://blog.not-a-kernel-guy.com/. Алексей является сотрудником компании Microsoft и принимает непосредственное участие в разработке подсистемы WoW64.

Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com).

Правообладателем курса «Уроки разработки 64-битных приложений на языке Си/Си++» является ООО «Системы программной верификации». Компания занимается разработкой программного обеспечения в области анализа исходного кода программ. Сайт компании: https://www.viva64.com.

Источник

32-разрядная и 64-разрядная версия Windows: вопросы и ответы

Ответы на распространенные вопросы о 32-разрядной и 64-разрядной версиях Windows.  

Как выполнить обновление с 32-разрядной до 64-разрядной версии Windows? 

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

Читайте также:  Можно ли использовать тампоны когда стоит спираль

Как определить, какая версия Windows установлена на компьютере: 32-разрядная или 64-разрядная?

Windows 10 и Windows 8.1

  1. Нажмите Start кнопку «Пуск», а затем выберите Параметры>> системы .  
    Открыть о параметрах

  2. Справа, в разделе Характеристики устройства, посмотрите, какой Тип системы указан.

Windows 7

  1. Нажмите кнопку » Пуск » , щелкните правой кнопкой мыши компьютери выберите пункт Свойства.

  2. В разделе Система посмотрите, какой тип системы указан.

Какую версию Windows следует установить: 32-разрядную или 64-разрядную?

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

Как определить, можно ли запустить на компьютере 64-разрядную версию Windows?

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

Windows 10 и Windows 8.1

  1. Нажмите Start кнопку «Пуск», а затем выберите Параметры>> системы .  
    Открыть о параметрах

  2. Справа, в разделе Характеристики устройства, посмотрите, какой Тип системы указан.

Windows 7

  1. Нажмите кнопку Пуск , и выберите пункт Панель управления. В поле поиска введите Счетчики и средства производительности, а затем в списке результатов выберите пункт Счетчики и средства производительности.

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

  3. В разделе Система можно узнать тип работающей операционной системы (в разделе Тип системы), а также возможность работы 64-разрядной версии Windows (в разделе 64-разрядная поддержка). (Если на компьютере уже работает 64-разрядная версия Windows, то поле 64-разрядная поддержка не отображается.)

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

Нужна дополнительная помощь?

Источник

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

Фундаментальные статьи

– Автор:

Игорь (Администратор)

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

Поддержка 32-битных приложений в 64-разрядной версии WindowsПоявление 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:WINDOWSSysWOW64

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

  • C:Program Files
  • C:WINDOWSSYSTEM32

Механизм перенаправления WOW64 гарантирует, что запросы от 32-разрядных приложений к каталогам «C:Program Files» и «C:WINDOWSSYSTEM32» будут перенаправлены на соответствующие каталоги для 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_MACHINESoftware

в ветку:

  • HKEY_LOCAL_MACHINESoftwareWOW6432Node

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

  • HKEY_CURRENT_USERSoftwareWOW6432Node

Такой подход позволяет 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-битном процессоре.

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

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

☕ Хотите выразить благодарность автору? Поделитесь с друзьями!

Добавить комментарий / отзыв

Источник