Поддержка 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-разрядных приложений, по умолчанию, устанавливаются в:

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

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

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

Еще по теме:   Как открыть клавиатуру на экране Windows 7 или Windows 10

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

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

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

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

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

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

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

ida-freewares.ru

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

Многих волнует вопрос — как перейти с 64 на 32 windows 7 без переустановки. Сейчас основная часть персональных компьютеров мира оснащена 64-битной системой. Разберем – что это. Согласно данным Википедии, разрядность – количество разрядов (битов) электронного (в частности, периферийного) устройства, шины, одновременно обрабатываемых устройством или передаваемых шиной. Получается, количество битов означает ширина временного хранилища данных. Поэтому 64-битная система более производительна, чем 32-битная, 16-битная, 8-битная.

Особенности каждой разрядности

Вначале пройдемся по основным моментам 64-битной системы.

Скорость работы процессора. Это самый главный плюс 64-битной системы. Процессор с разрядностью 32 покрывает лишь 2^32 адресов, а 64 – 2^64 адресов. Заметили, как сильно повысилась производительность системы? Раньше вполне хватало и 32-битной разрядности, если у вас простой офисный ящик, по которому вы заходите в интернет и периодически печатайте документы, то вполне хватит и простенькой разрядности. Но для сложных целей, например, пользования сложными программами видеомонтажа или установки современных габаритных игр, вам придется установить 64-битную архитектуру.

Разрядность в 64 бита уже довольно старая. Вы можете не поверить, но самый первый компьютер с такой архитектурой был выпущен аж в 1985! Получается, больше 30 лет назад! А многим кажется, эта система появилась лишь недавно и представляет собой произведение работы высших умов современной информатики. И после выпуска первого ПК они в течение 17-18 лет считались достойными установки лишь на огромных серверах и больших компьютерах.

Но ладно бы мы сразу узнали, когда архитектура к нам пришла. Когда мы начали пользоваться устройствами, мы не поняли, что пользуемся такой разрядностью. Игровые консоли — Playstation 2 и Nintendo 64 имели движки 64 бита! Многие пользовались ими. Причем они появились лет за 6-7 до появления на рынке большого количества персональных компьютеров с такой разрядностью.

Еще по теме:   Как настроить

Так же причиной длительного вживания в нашу жизнь системы является огромная масса проблем с драйверами. В 2001 Microsoft выпустила 64-битную Windows ХР, но её всё равно не приняли. То же самое было и с Windows Vista. И лишь на «семерке» произошел серьёзный перекос в статистике – огромное количество пользователей поняли, что гораздо разрядность в 64 бита – прекрасная штука, качественно поднимающая производительность компьютера.

А если рассматривать этот вопрос в плане других ОС, то можно заметить, что там принятие этой разрядности шло такими же медленными темпами – лишь на версиях 2006-2010 годов они так же получили распространение.

Миф о неспособности работы 64-битной системы на ноутбуках

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

Но еще раз повторяем – ноутбук или компьютер – для операционной системы разницы нет.

Гораздо более крупный объём используемой оперативной памяти. С 32 битами вы сможете использовать всего лишь 4 Гигабайта оперативной памяти. Если вы поставите больше объёма на 32 битную систему, то вы этого совершенно не ощутите – большее количество просто не будет использоваться. К сожалению, это знают не все пользователи-часто бывают слышны возмущения владельцев ПК насчет установленной свыше 4 Гигабайтов оперативной памяти – почему мы поставили дополнительно 8 Гб ОЗУ, а скорость работы совершенно не увеличилась. Ответ кроется в 1 параметре – разрядность системы. Обычно 1 Гигабайт оперативки забирает система, второй Гигабайт уйдет к видеокарте и для работы останется только 2 Гб. А это реально мало для работы 2-3 серьезных программ.

Перейдем к минусам системы

Системный блок потребует переустановки всех компонентов. Для этого у старых устройств придется искать драйвера, что представляет собой тяжкое дело. Хорошо, если у вас современный девайс и драйвера уже есть. А вот если вам придется искать драйвера заново, то лучше заранее позаботьтесь об их наличии – если смените систему, а нужных драйверов не будет, то придется раскошелиться на новый компонент системы, а старый придется просто выкинуть.

Если установлено меньше 4 Гигабайтов оперативной памяти, то смысла нет устанавливать 64-битную разрядность – просто у вас не хватит оперативки. Абсолютно все программы будут занимать на несколько процентов больше памяти и поэтому старый объём ОЗУ вам не поможет.

Новый антивирусник

Многие программы и приложения будут работать даже с учетом изменения разрядности, но не антивирусное программное обеспечение. Вам нужно будет найти обеспечение под 64-битную систему. Если вы это не сделайте, то морально готовьтесь – ваш компьютер скоро будет пристанищем вирусов, троянов и червей. Поэтому лучше даже заранее позаботиться о наличии «защитника системы» — потом это может выйти боком вам.

Работа 32-битных программ

Многие из них просто перестанут корректно работать в новой ОС. Слава богу, есть программа Windows-on-Windows 64-bit. Она действует, закрывая работу 64 и показывая вид 32 битов. То есть имеющиеся программы видят 32 битную систему и не подозревают, что работают под руководством 64-битного процессора. Но всё равно работа этой программы потребляет оперативную память и не всегда является оптимальным решением для пользователя.

Как определить разрядность системы

Это просто – нужно найди пункт «система», который можно найти через меню пуск — компьютер — система. Там указано – 32 или 64 бита.

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

Рассмотрим под лупой процесс перехода с 64 на 32 бита разрядности процессора. Распишем каждый этап:

  1. Обязательно скопировать все необходимые файлы на внешний носитель. В ходе смены системы все данные на компьютере будут утеряны , и вам останется перенести все файлы и программы с внешнего USB-носителя на компьютер.
  2. Начнем процесс, как перейти с 64 на 32 windows 7 . Для начала включите компьютер. Запустите Windows в обычном режиме, как делайте всегда, и вставьте установочный диск и USB-карту в соответствующие порты системного блока. Выключайте компьютер.
  3. Поставьте его на перезагрузку.
  4. У вас появится окно «Установка Windows». Внутри выбирайте все необходимые вам параметры и жмете кнопку «далее»
  5. Примите условия лицензионного соглашения, нажав на клавишу «Я принимаю условия соглашения» и нажимайте кнопку «Далее».
  6. У вас появится окно «Выберите тип установки». Делаем предпочтение «Выборочная установка».
  7. Появится страничка «Где вы хотите установить Windows». Выискивайте пункт, где находилась старая Виндовс (очень часто это бывает диск C:), и жмете клавишу «Далее».
  8. Следуем инструкции по установке – в ней нет ничего сложного. По ходу установки вы настройте учетную запись и дадите имя компьютера.

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

Жми «Нравится» и получай только лучшие посты в Facebook ↓

mir-tehnologiy.ru

Поделиться:
Нет комментариев

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

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть
Adblock
detector