-1

У меня установлена Windows 8.1 64 bit на 3 ГБ оперативной памяти. Позже я обновил до 4 ГБ.

Я хочу знать, будет ли Windows 8.1 действительно использовать эти 4 ГБ для работы с адресами x64, кроме возможности доступа к этой увеличенной памяти?

Или мне нужно сделать новую установку, чтобы убедиться, что она использует инструкции x64?

Мне пришлось поднять этот вопрос, потому что Win 8.1 использовала 32-битный wmplayer, explorer и т.д. Как до, так и после обновления. Я не вижу никаких программ из папки Windows\SysWow64 . Только из Windows\System32 папка появляется в диспетчере задач.

8 ответов8

1

У тебя это задом наперед. Это сбивает с толку, но в 64-битной Windows \system32 имеет 64-битные программы, в то время как \SysWOW64 имеет 32-битные.

Простой способ убедиться в этом: в обоих каталогах есть CMD.EXE, "Командный процессор Windows", он же "Командная строка" или "Оболочка DOS". Запустите любой из них и проверьте диспетчер задач (на вкладке "Процессы", если вы показываете Подробнее). Закройте его и запустите другой. Один говорит «(32 бит)» в конце имени, а другой нет.

Когда я ищу проигрыватель Windows Media в меню "Пуск", он запускает 32-разрядную версию из «Program Files (x86)». Но тот, который находится в "Program Files", работает, если я запускаю его напрямую. Это может быть для совместимости, как уже упоминали другие. Когда я запускаю командную строку, щелкая правой кнопкой мыши значок "Пуск", она запускает 64-разрядную.

Когда есть обе версии, вы можете изменить, какая из них работает по умолчанию. Например, для проигрывателя Windows Media, вот несколько инструкций для Windows 7. Я не знаю, применяются ли они до сих пор для Windows 8. Когда вы читаете все это, это кажется немного сложным.

1

Так как у вас есть несколько вопросов, я собираюсь процитировать каждый, как я иду вместе ...

Я хочу знать, будет ли win 8.1 ИСТИННО использовать эти 4 ГБ для запуска x64-адресов, кроме возможности иметь доступ к этой увеличенной памяти?

Все 64-битные Windows могут "запускать адреса x64" независимо от объема ОЗУ - даже если у вас намного меньше 4 ГБ памяти (при условии, конечно, что у вас достаточно ОЗУ для работы системы вообще!). «64-разрядные адреса» и «64-разрядность» приложений относятся к виртуальному адресному пространству, а не к физическому (ОЗУ). Добавляя больше оперативной памяти в систему, вы освобождаете пространство для большего количества определенного и используемого виртуального адресного пространства, которое будет постоянно размещаться в оперативной памяти.

(И, между прочим, верно и обратное: у вас может быть 32-разрядная ОС, использующая более 4 ГБ ОЗУ - почти все версии Windows для серверов могут это делать. Опять же, "32 бит" относится к виртуальным адресам. Вы можете иметь более 4 ГБ виртуального адресного пространства, определенного в 32-разрядной системе Windows одновременно, поскольку каждый процесс определяет свои собственные 2 или 3 ГБ VAS. Таким образом, любой 32-разрядный процесс может видеть только 4 ГБ VAS, но сумма всех процессов плюс ОС может составить более 4 ГБ. Наличие более 4 ГБ оперативной памяти просто позволяет одновременно размещать в оперативной памяти больше всего виртуального адресного пространства. Я, должно быть, прочитал по крайней мере 20 различных статей, утверждающих, что «32-разрядный компьютер или ОС могут иметь доступ только к 4 ГБ ОЗУ» - категорически не соответствует действительности. Объем ОЗУ, который вы можете использовать, ограничен количеством адресных выводов, которые выходят из ЦП, и почти все современные ЦП имеют по меньшей мере 36-битный разряд, хотя необязательно так много фактических выводов.)

Или мне нужно сделать новую установку, чтобы убедиться, что она использует инструкции x64?

Точно нет.

Я должен был поднять этот вопрос, потому что win8.1 использовал 32-битный wmplayer, explorer и т.д. Как до, так и после обновления.

Я так не думаю. Что заставило тебя так думать? Почти все исполняемые файлы, поставляемые с 64-битной Windows, имеют 64-битную форму. Некоторые из них также имеют 32-битные версии.

Я не вижу никаких программ из папки windows\SysWow64. Только из windows\system32 папка появляется в диспетчере задач.

О, я вижу. Это не способ сказать. Как ни странно, exe-файлы в Windows\system32 - почти все 64-битные exe (конечно, в 64-битной Windows-установке). Смущает ...\SysWow64 в основном используется для работы 32-битного exe, поставляемого Windows, вместе с несколькими вспомогательными библиотеками DLL, которые позволяют запускать 32-битные exe-файлы в 64-битной ОС. (WOW - это сокращение от "Windows on Windows" - поддержка 32-битных приложений в 64-битной ОС Windows.)

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

Если вы хотите получить дополнительное подтверждение того, что ваши процессы используют 64-битные адреса, загрузите и запустите Process Explorer из инструментов SysInternals. Обязательно запустите его от имени администратора. В меню "Вид" включите "Показать нижнюю панель", а затем установите "Вид нижней панели" на "DLLs".

Обратите внимание, что вы можете добавить столбец "тип изображения" на верхнюю панель - это то же самое, что и "Платформа" в диспетчере задач. (Разве вы не хотите, чтобы люди договорились о названиях этих вещей ?!)

Теперь, в верхней панели, нажмите на процесс, чтобы посмотреть в верхней панели. Поскольку у вас, вероятно, уже запущен диспетчер задач, это будет хорошим выбором (Taskmgr.exe).

На нижней панели включите столбцы "База" и "Размер", если их там еще нет. Столбец "База" показывает начальный виртуальный адрес каждого файла кода (exe, dll и т.д.) Или сопоставленного файла данных в адресном пространстве процесса. Прокрутите нижнюю панель вниз, и вы найдете множество dll, и в данном конкретном случае сам exe-файл с "базовым" адресом, который больше 0xFFFFFFFF - 4 294 967 295 десятичных знаков - это самый высокий виртуальный адрес в 32-битной системе.

Еще одна вещь, которую стоит посмотреть в Process Explorer: столбец, который доступен в верхней панели, это "Название компании". Если вы включите это и столбец "Тип изображения", а затем отсортируете по "Названию компании" (так, чтобы все "Корпорация Майкрософт" сгруппировались вместе), я думаю, вы обнаружите, что почти каждый процесс, поставляемый с Windows, имеет "Название компании" Microsoft - это 64-битный процесс. Я говорю "это пришло с Windows", потому что многие "многоуровневые продукты" MS, такие как Office и Visual Studio, являются 32-разрядными ... или, по крайней мере, они находятся в версиях, которые я установил.)

Инструмент "VmMap" SysInternals может показать вам более подробную информацию об адресном пространстве выбранного процесса. Опять же, он покажет вам множество адресов выше 0xFFFFFFFF в вашей системе x64. Это было бы сделано еще до того, как вы добавили ОЗУ.

Если что-то здесь неясно или ведет к дальнейшим вопросам, пожалуйста, не стесняйтесь спрашивать.

0

Запустите Resource Monitor, здесь вы можете увидеть, использует ли Windows весь объем ОЗУ 4 ГБ или нет в этом примере (серый недоступен):

0

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

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

Версии сервера поддерживают больше памяти с соответствующей лицензией, такой как Server 2003 Enterprise, которая может получить доступ ко всем 64 ГБ памяти с помощью PAE. Однако отдельный процесс не может использовать более 2 ГБ виртуальной памяти, библиотеки времени выполнения и компиляция могут еще больше ограничить это. Сама ОС (режим ядра) использовала только до 2 ГБ.

В Win64 по умолчанию IE и WMP являются 32-разрядными приложениями, по крайней мере, в Windows 7, а я полагаю и в 8. IE имеет 64-битную версию, но не установлен по умолчанию из-за проблем с совместимостью плагинов. 32-битные программы, работающие в 64-битной Windows, все еще имеют те же ограничения 32-битной памяти, но с большим рабочим набором, более доступными дескрипторами и менее доступными потоками. Это ограничение потока связано с издержками эмуляции процесса на 64-разрядном оборудовании. Из-за эмуляции также возникают накладные расходы на обработку, что означает, что они работают немного медленнее, чем если бы ОС была 32-битной, но обычно более стабильны благодаря дополнительным дескрипторам и рабочему набору. Кроме того, поддержка компилятора может позволить процессу использовать 4 ГБ памяти, если позволяет операционная система.

MMIO по-прежнему используется в Win64, и с соответствующим оборудованием места памяти будут отображаться таким образом, что вы сможете получить доступ почти ко всей доступной памяти. Моя система показывает все, кроме 2 МБ памяти, адресуемой ОС.

0

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

Как 32-разрядные, так и 64-разрядные ОС могут поддерживать более 4 ГБ ОЗУ (как уже отмечал Джейми в своем ответе). Для 64-битных ОС это встроенная поддержка, 32-битные могут использовать PAE или его эквиваленты на других архитектурах ЦП. Таким образом, разрядность ОС не определяет объем оперативной памяти, которую она может использовать [1].

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

В 64-битной Windows , поддержка для 32-битных программ обеспечиваются WOW64 слоем совместимости (Вт INDOWS 32-битные о н W INDOWS 64 -разрядных). Эта статья объясняет, как это на самом деле работает. Это также объясняет, что Microsoft использует запутанные имена каталогов: System32 хранит 64-битные файлы, а SysWOW64 - для 32-битных. У них было несколько причин для этого, но, тем не менее, это сбивает с толку.

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

32-разрядные программы не могут использовать более 4 ГБ ОЗУ, даже если они работают в 64-разрядной ОС, поскольку они скомпилированы с учетом 32-разрядной адресации. 64-битные программы имеют теоретический предел 16 EiB (exbibytes, 1 EiB = 2 60). Они также могут использовать инструкции процессора, которые недоступны в 32-разрядных архитектурах, поэтому некоторые операции процессора могут быть немного быстрее.

Есть также некоторые недостатки, как технические, так и практические.

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

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

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

Вот почему Windows по-прежнему использует 32-разрядный Internet Explorer по умолчанию (и некоторые другие программы тоже). Большинство плагинов / компонентов ActiveX не поддерживали 64-битные браузеры еще несколько лет назад. В 64-битном IE не было Flash, просмотра PDF и т.д. В то же время IE не является приложением, которое использовало бы более 3 ГБ ОЗУ, поэтому придерживаюсь 32-битной версии, делая 64-битную доступной как подписаться было совершенно нормально.


[1] По крайней мере, не напрямую. Например, несерверные 32-разрядные выпуски Windows не поддерживают альтернативную адресацию, что позволяет использовать более 4 ГБ ОЗУ - это бизнес-решение, а не техническое ограничение.

-1

Если вы установили 64-битную Windows 8.1, она будет использовать 4 ГБ памяти, и даже если вы обновите ее до 8 ГБ, она все равно будет использовать все это, пока ваше оборудование поддерживает это. Для этого не нужно переустанавливать Windows. Это, конечно, при условии, что у вас действительно установлена 64-битная Windows (я бы предположил, так как вы можете найти папку SysWow64, которая, AFAIK, не существует в 32-битной Windows).

64-разрядная версия Windows поставляется как с 64-разрядной, так и с 32-разрядной версиями Internet Explorer, а WMPlayer либо 32-разрядная, либо поставляется с обоими вариантами. В большинстве случаев это не имеет большого значения, просто они не могут использовать больше памяти, чем 2 ГБ на процесс.

Что касается файлов из SysWow64, не отображаемых в диспетчере задач, это может быть связано с тем, что папки в 64-битной Windows более или менее одинаковы (это основано на некоторых странных воспоминаниях из прошлого, я думаю, что отредактировал один файл по причине или другому от System32, и то же самое редактирование появилось в SysWow64. Это может быть символическая ссылка или Junkion или что-то подобное, кто-то мудрее может дать больше информации об этом).

-1

Под "проводником" я предполагаю, что вы имеете в виду Internet Explorer. Версии IE для x64 и x86 находятся в отдельных каталогах, первый в «C:\Program Files», а второй в «C:\Program Files x86». Вам придется изменить ярлык IE, чтобы использовать версию x64. Что касается WMP Google "Windows Media Player x64". Видимо, вам нужно внести некоторые изменения в реестр, чтобы Windows использовала WMP x64.

-1

Ваш ответ заключается в том, что у вас уже установлена 64-битная Windows 8.1. Это означает, что он может (теоретически) поддерживать 64 ГБ (или 128 ГБ, если у вас Windows 8.1 PRO). Пока ваша память выше минимальной рекомендации, чем больше вы добавляете, тем лучше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .