Реклама
Большинство компьютеров сегодня поставляются с 64-битной версией Windows и часто с минимальным объемом оперативной памяти. Это ставит под вопрос эффективность этих систем. Это особенно актуально, когда пользователи хотят запускать свои устаревшие 32-разрядные программы на этих новых компьютерах.
Что поднимает интересный вопрос. Вы нужно больше или меньше оперативной памяти Сколько оперативной памяти вам действительно нужно?Оперативная память как краткосрочная память. Чем больше у вас многозадачности, тем больше вам нужно. Узнайте, сколько имеет ваш компьютер, как извлечь из него максимальную пользу или как получить больше. Прочитайте больше запустить 32-разрядное приложение на 64-битная версия Windows Что такое 64-битные вычисления?Упаковка компьютера или компьютерного оборудования переполнена техническими терминами и значками. Один из наиболее известных из них - 64-битный. Прочитайте больше ? На этой неделе Брюс Эппер узнает.
Читатель спрашивает:
Правда ли, что запуск 32-битных приложений в 64-битной системе Windows потребляет
В 1,5 раза больше памяти по сравнению с запуском 32-разрядного приложения под 32-разрядной операционной системой Windows?
Брюс ответ:
Ранее мы уже обсуждали преимущества и недостатки хранения всего 64-битного по всем направлениям и некоторые из эффекты «смешивания и сопоставления» Как производительность Windows зависит от аппаратного и программного обеспеченияТеоретически, 32-разрядное программное обеспечение может превзойти свой 64-разрядный аналог, в зависимости от настроек оборудования. Звучит сложно? Мы здесь, чтобы разобраться и помочь вам добиться максимальной производительности вашей системы. Прочитайте больше . Сегодня мы рассмотрим, как 32-битные приложения выполняются в 64-битных версиях Windows.
64-разрядная операционная система Windows не может запустить 32-разрядную программу Windows без какой-либо дополнительной помощи. Они просто слишком разные: от указателей и типов данных до того, как системные вызовы (как программы используют ресурсы базовой операционной системы). Вам нужен какой-то способ сделать их совместимыми.
Понимание WoW64
Windows использует подсистему WoW64 (Windows32 на Windows64) для компенсации различий. Он эффективно работает в качестве 32-разрядного мини-эмулятора Windows в системах x64 и в качестве полноценного эмулятора в системах Itanium (IA64).
Системы IA64 требуют полного эмулятора из-за различий в инструкциях процессора и размерах страниц памяти (4K в x86 и x64, 8K в IA64). Поскольку процессоры x64 имеют все инструкции процессоров x86 и используют один и тот же размер страницы памяти, для него не требуется полный эмулятор.
В обоих случаях WoW64 предоставляет интерфейс между 64-битным ядром Windows и 32-битной версией ntdll.dll (содержит список ядра). Функции ядра Windows), перехватывая вызовы ядра и изменяя их, чтобы они могли обрабатываться встроенными 64-разрядными функциями, предоставляемыми Windows ядро.
Для достижения этой цели в системах x64 / IA64 используются 3 DLL-файла: wow64cpu.dll, wow64win.dll и wow64.dll. Их функции заключаются в том, чтобы абстрагировать характеристики процессора и обеспечить громадину (мы доберемся до них позже) в win32k.sys, который обеспечивает функциональность «окна» и ntoskrnl.exe, который содержит исполнительный орган, ядро, менеджер памяти, планировщик процессов (не путать с планировщиком задач, доступным из панели управления) и другие основные элементы операционной система.

Thunk - это подпрограмма (воспринимайте их как последовательность инструкций, выполняющих одну задачу), которая позволяет программе выполнять общую подпрограмму или функцию в системе.
В этом случае он извлекает аргументы из стека вызовов 32-битной программы, преобразует их в их 64-битные аналоги и выполняет 64-битный системный вызов. После возврата из вызова он преобразует 64-разрядные результаты обратно в 32-разрядные и помещает их обратно в стек вызовов программы для использования вызывающей стороной.
Все действия выполняются в пользовательском режиме (который имеет ограниченные разрешения) по двум причинам. Во-первых, это сводит к минимуму влияние ошибок в коде, которые могут привести к дыре в безопасности, повреждению данных или сбою системы при работе в режиме ядра.
Во-вторых, это снижает влияние на производительность, которое оно будет иметь при работе в режиме ядра (режиме, используемом основными компонентами операционной системы) из-за накладных расходов, возникающих при переключении между пользовательский режим и режим ядра и назад.
Возвращаясь к системам Itanium, следует отметить и другие важные отличия. Системы IA64 используют два дополнительных файла. IA32exec.bin - это программный эмулятор x86, а Wowia32x.dll обеспечивает интерфейс между WoW64 и программным эмулятором.
32-разрядный процесс загрузит эти файлы, а также 64-разрядную версию ntdll.dll. Это единственные 64-разрядные двоичные файлы, которые могут быть загружены в 32-разрядный процесс до Windows 7. В Windows 7 и более поздних версиях также есть другая DLL, apisetschema.dll, которая будет загружена во все процессы.

Когда запускается 32-разрядный процесс, он загружает файл Wow64.dll, который, в свою очередь, загружает 32-разрядную версию ntdll.dll и все необходимые 32-разрядные библиотеки DLL из % SystemRoot% \ SysWOW64. Большинство этих файлов идентичны двоичным файлам в 32-разрядной системе, хотя некоторые из них были переписаны, чтобы вести себя по-другому в WOW64.
Глядя на список загруженных библиотек DLL, мы видим, что в процессе под Win64 загружено 9 библиотек DLL, которых нет в системе Win32.
Теперь у вас может возникнуть искушение посмотреть на размеры файлов, сложить их и использовать в качестве основы для определения объема используемой дополнительной памяти, но в результате вы получите неточные результаты. Эти файлы по своей природе предназначены для использования в качестве общих компонентов, и в результате первый файл, для которого требуется DLL, загружает его в память.
Последующие программы, которым требуется одна и та же DLL, не загружают весь компонент в память. Они получают указатель на уже загруженный компонент и выделяют ОЗУ для дополнительных элементов, которые загружаются в процесс.
Наша тестовая установка
Чтобы увидеть, что происходит, я настроил две виртуальные машины под управлением Windows 7 Ultimate с 2 ГБ оперативной памяти, выделенной для каждой. Одна из них - 32-разрядная версия, а другая - 64-разрядная. Оба прошли одинаковый процесс установки и исправления.
После того, как обе системы были исправлены, я отключил файл подкачки на обеих, чтобы получить лучшее представление об использовании памяти, гарантируя, что ОЗУ не может быть выгружено на диск. После этого LibreOffice 5.0.3.2 был установлен.

Копия Sysinternals Process Explorer Process Explorer - самая мощная замена диспетчера задач [Windows]Давайте будем честными, диспетчер задач Windows не так хорош для понимания и управления процессами, запущенными на вашем компьютере. Даже в Windows 8, где он значительно улучшился, диспетчер задач не может приблизиться к ... Прочитайте больше был также размещен на обеих машинах. Это инструмент, который я использовал для сбора информации об использовании памяти. Настройка столбца по умолчанию была изменена, чтобы я мог посмотреть на использование Рабочего набора и WS Private.
Эти числа рабочих наборов отражают объем оперативной памяти, используемой программами. Это усложнило немного дальше, отражая объем памяти, используемой разделяемыми библиотеками, даже если они уже были загружены другим процессом. Из-за этого, если вы добавите весь столбец, можно получить в итоге больше установленной оперативной памяти. Рабочий набор по-прежнему является лучшим индикатором того, сколько именно памяти требуется для процесса.
Процессы, которые мы изучаем, тоже не одиноки. Различные программы LibreOffice запускают другой процесс, soffice.exe, который будет выполнять еще один процесс, soffice.bin. Нам необходимо просмотреть итоги всех трех процессов, чтобы увидеть эффективное использование памяти каждой программой.
Для начального теста я просто по отдельности открыл Writer, Calc и Impress, чтобы посмотреть, сколько памяти они потребляют без загрузки данных, и экспортировал данные из Process Explorer. С Calc и Impress я открыл 3,7 МБ .xls файл и 3,9 МБ .pptx файл соответственно и записал новое использование памяти. Результаты можно увидеть в таблице ниже. Все данные в КБ.

Большой сюрприз произошел с Impress. Без документа он использовал на 4,1% больше оперативной памяти в 64-битной системе и на 9,9% Меньше с документом загружен. Я выкопал несколько других презентаций и получил схожие результаты со всеми из них. В итоге 64-битная система использовала меньше оперативной памяти, чем 32-битная.
Итак, требуется ли 64-разрядным версиям Windows больше оперативной памяти, чем их 32-разрядным аналогам, при запуске 32-разрядных приложений? В общем да.
Но вам нужно обновить оперативную память? Возможно нет. Различия действительно это не так массово. Это, конечно, не в 1,5 раза отличается.
Брюс играет с электроникой с 70-х годов, с компьютерами с начала 80-х и точно отвечает на вопросы о технологиях, которые он не использовал и не видел все время. Он также раздражает себя, пытаясь играть на гитаре.