Каковы штрафы за выполнение 32-разрядных приложений в 64-разрядной ОС, кроме ограничений на размер памяти в 4 ГБ? Например. 32-битное приложение требует, чтобы его адресное пространство было выделено в пределах первых 4 ГБ, или ОС и процессор абстрагируют это от приложения?
Сообщество разработчиков программного обеспечения активно продвигает 64-битные приложения, и я не всегда предвижу приложения, требующие такого большого объема памяти (например, Firefox), поэтому мне просто любопытны преимущества и недостатки запуска 32-битные приложения на 64-битной платформе.
Поищите в гугле «русинович раздвигает границы», и вы найдете серию статей, написанных автором набора инструментов sysinternals для Windows по различным аспектам использования памяти Windows.
Я не уверен, что у запуска 32-битных приложений в 64-битной ОС действительно много существенных недостатков. Самые большие преимущества работы 64 на 64 - это адресация памяти и ... это очень важно.
Даже последняя версия OS X по умолчанию 32-битная (вы нажимаете 6 и 4 при загрузке, чтобы запустить 64-битное ядро, но вы не сможете заставить все расширения ядра работать должным образом, насколько я помню). OS X долгое время была «смешанной» ОС.
Единственные недостатки, которые я слышал, которые влияют на людей с 64-битными ОС, связаны с драйверами (некоторые 32-битные драйверы не работают должным образом) и более старыми машинами, которым не нравится 64-битная ОС, если процессор не поддерживает ее, и все еще есть много старых машины там.
Разработчик должен убедиться, что он работает правильно, так как некоторые вещи, требующие подключения к 64-разрядной ОС, должны быть учтены. Однако многие приложения отлично работают в 64-битной ОС.
Как правило, если память вашего сервера составляет 4 ГБ или больше, лучше всего использовать 64-разрядную версию. Даже IIS рекомендует Microsoft запускать 64-битную ОС с 32-битными пулами приложений (или IIS в целом в 32-битном режиме на WS03).
У 64-битных приложений больше накладных расходов на память, что является одним из основных факторов, препятствующих полному переходу на 64-битные. Кроме того, некоторые приложения не работают так же хорошо в 64-разрядной версии. Например, ASP.NET лучше работает в пулах 32-разрядных приложений на веб-сервере.
Что касается ограничений на объем памяти, который он может использовать, это не проблема. 64-разрядная ОС нарушает эти границы, и 32-разрядные приложения выигрывают.
Если ваше приложение никогда не будет использовать более 4 ГБ памяти, 64-разрядная версия не имеет реальных преимуществ. Тем не менее, большинство людей с 64-битными операционными системами хотят иметь 64-битную версию всего ... даже если они им не нужны.
ОС абстрагируется от того, откуда берется память, это не обязательно должно быть физически первые 4 Гбайт.
Еще одно наказание за запуск 32-битного приложения в 64-битной ОС заключается в том, что приложение теперь должно загрузить кучу 32-битных dll и увеличить использование памяти на вашем компьютере.
dll - по крайней мере, часть кода - используются всеми приложениями, которые в большинстве случаев используют эту dll. Ваши запущенные 64-битные приложения, а также сами компоненты Windows будут загружать и совместно использовать стандартные 64 библиотеки DLL. Когда вы запустите первое 32-битное приложение, вам нужно будет загрузить 32-битную версию этих dll.