Может ли 32-битная ОС работать на 64-битном процессоре?

133950
random

В чем разница между 32-битной и 64-битной ОС? Может ли 32-битная ОС работать на 64-битном процессоре?

23
Если вы говорите о Windows (и тег Win32, кажется, указывает на это), то да, безусловно, - 64-битные Vista и Win7 поддерживают почти все 32-битные приложения на уровне совместимости - я пока не нашел ничего, что бы не очень хорошо работает на 64-битной Vista (за исключением драйверов системного уровня) marc_s 10 лет назад 0
Похоже, вопрос заключается в том, можно ли установить Win Vista x86 на коробку с 64-разрядным процессором, а не в том, работают ли приложения x86 на Win Vista x64. KTC 10 лет назад 5

4 ответа на вопрос

32
Mehrdad Afshari

Ваш вопрос зависит от архитектуры. x64 по сути является расширением архитектуры x86. Он поддерживает 64-битное адресное пространство. Он предоставляет некоторые новые инструкции и новые регистры.

Вы можете запустить 32-разрядную Windows x86 на компьютере x64. Обратите внимание, что вы не можете сделать это на 64-битных системах Itanium.

14
terdon

64-битный процессор может работать как на 32, так и на 64 ОС (по крайней мере, на x64). 32-битный процессор может работать только 32-х.

Разница в основном в размере указателя / ссылки. На 64-битных машинах вы можете ссылаться на адрес в 64-битном диапазоне адресов (что дает вам 2 ^ 64 байта памяти). На 32-битной вы можете адресовать только 2 ^ 32 байта (= 4 ГБ). Теперь, если вы посмотрите на современные компьютеры, становится очевидным, почему мир движется к 64-битным: 32-битные больше не могут легко обращаться ко всей оперативной памяти.

На x64 (AMD / Intel) у вас есть дополнительные преимущества 64 бит. Процессор имеет больше регистров и, следовательно, позволяет более эффективный код.

На других архитектурах различия между 64 и 32 битами менее очевидны. Например, Nintendo 64 (помните?) Была 64-битной машиной, но большая часть кода была 32-битной. Таким образом, в этом случае 64-битная игра стала маркетинговым ходом.

3
Mahmoud Al-Qudsi

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

В былые времена, когда ЦП, когда люди привыкли сидеть и плести (обматывать) провода между процессором и памятью, вам пришлось бы использовать либо 32, либо (теоретически, потому что его не было в то время) 64 провода между процессором и контроллером памяти, которые будут использоваться для указания того, какой адрес памяти вы хотите получить. Например, скажем, у нас есть 2-битная архитектура памяти: отправка 00 выберет адрес 0, 01 выберет адрес 1, 10 выберет адрес 2, а 11 выберет адрес 3. Этот 2-бит дает нам 2 ^ 2 байта оперативной памяти (4 байта).

Если вы берете 32-битный процессор и добавляете еще 32 провода между процессором и контроллером памяти, чтобы волшебным образом поддерживать больше памяти, у вас теперь есть «64-битный процессор», который может работать 32-битный код или 64-битный код. Что это значит и как это происходит? Хорошо, давайте возьмем наш 2-битный ЦП из предыдущей части этого ответа и добавим еще один провод, превратив его в 3-битный ЦП, перенеся нас с 4 байтов на 2 ^ 3 или 8 байтов оперативной памяти.

Будет запущен существующий «2-байтовый» код с настройками значений двух последних проводов, как указано выше (00-11). По умолчанию мы подключим дополнительное соединение к нулю, так что фактически, когда запускается 2-байтовый код, когда он выбирает 00, он фактически выбирает 000, а когда он выбирает 11, он фактически выбирает 011. Легко.

Теперь программист хочет написать «родной» 3-байтовый код и пишет свое программное обеспечение, чтобы воспользоваться дополнительным адресным пространством. Она сообщает процессору, что знает, что делает, и что она возьмет на себя ручное управление новыми, дополнительными проводами. Ее программное обеспечение знает о дополнительных проводах и правильно отправляет 000-111, предоставляя ей полный доступ к диапазону памяти, поддерживаемому этой новой архитектурой процессора.

Но так не должно быть. На самом деле, обычно это не так. Когда впервые были представлены 64-разрядные процессоры (а их было много), все они использовали совершенно новые архитектуры / конструкции. Они не просто подключили дополнительные 32 провода и сказали: «Вот, пожалуйста, это 64-битный процессор, который вы можете использовать в 32-битном или 64-битном режиме», а скорее сказали: «Это наш новый процессор и он берет только программирование на этом совершенно новом машинном языке, ведет себя совершенно по-новому, решает множество других проблем гораздо более элегантно, чем старые 32-битные процессоры x86 / i386, и это родная 64-битная архитектура. «.

Это была история Intel Itanium, теперь известной как «Итаник» из-за того, как сильно она затонула. Он должен был предвещать в новой 64-битной эре, и это было что-то, чтобы созерцать. Инструкции с переменной длиной, огромные кеши, 64-битное адресное пространство, тонны регистров, супер захватывающие, супер крутые и супер трудные, чтобы убедить всех перекомпилировать или переписать 20-летний устаревший код. Это было тогда, когда AMD и Intel фактически конкурировали, и у AMD была блестящая идея сказать: «Давайте забудем все это, решим все мировые проблемы» и просто добавим еще 32 провода к i386 и сделаем 32-битную совместимую 64-разрядную. bit CPU "и родилась архитектура процессора x86_64.

Фактически, если вы посмотрите на имена и источники ядра для основных операционных систем (Linux, Windows, BSD и т. Д.), Вы обнаружите, что они завалены ссылками на процессоры AMD64 и архитектуру AMD64. AMD разработала выигрышную стратегию, позволяющую всем перейти на 64-битный мир, сохранив совместимость с 32-битными приложениями, чтобы 32-битная ОС могла работать на 64-битном оборудовании или даже 32-битных приложениях. может работать на 64-битной ОС на 64-битном оборудовании. Intel последовала за пакетом раньше, чем позже, с архитектурой Intel EM64T (которая была в основном идентична AMD64), и x86_64 победил, в то время как Itanic и другие, такие как MIPS64 и ALPHA64, больше не были замечены на рынке настольных ПК / серверов.

tl; dr amd64 aka x86_64 Процессоры совместимы как с 32-, так и с 64-битным ядром и кодом, но большинство 64-битных процессоров явно не имеют обратной совместимости одинаково. 32-разрядный ЦП может получить доступ максимум к 4 ГБ памяти, а 64-разрядный ЦП может получить доступ к потрясающим 16 EiB (16 × 1024 ^ 6 байт, или в 4 миллиарда раз больше памяти, чем 4 ГБ).

У вас есть несколько фактических ошибок: 1) Itanium не вводил инструкции переменной длины (они есть у каждого x86); он добавил очень длинные слова, которые могли одновременно работать на нескольких 64-битных количествах. 2) x86_64 не просто шлепнул по нескольким адресным строкам; он также добавил несколько дополнительных регистров и расширил все регистры (и ALU, которые на них работают) с 32 до 64 бит. Сравните это с 8086/8088, который добавил еще 4 адресные строки и регистры селектора сегментов, но сохранил их все в 16 битах, как 8080 до него. psusi 4 года назад 1
-1
CsTamas

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

Как правило, это неверно, хотя конкретно для x64. ChrisInEdmonton 10 лет назад 3
32-разрядный процессор будет работать под управлением любой операционной системы, предназначенной для работы на такой процессорной архитектуре. Waxhead 8 лет назад 1
32-разрядная операционная система x86, очевидно, не может работать на ARM64, поэтому 32-разрядная и 64-разрядная ОС могут работать на 64-разрядном процессоре. phuclv 4 года назад 0
@ Phúc Там могут быть 64-битные процессоры, которые не поддерживают их 32-битные близнецы. Однако вы используете ложную логику в своем аргументе. SunOS 4.4.1 на 32-битном MicroSparc также не будет работать на ARM32. Использование вашей логики означает, что 32-битная ОС может работать на 32-битном процессоре. Если я игнорирую здравый смысл, как вы, я могу утверждать, что 32-разрядная ОС ARM работает на Intel i386 / x64, поскольку разработчики Android запускают образы Android ARM на своих машинах Wintel. Конечно, ОС предназначена для правильного семейства процессоров, и, конечно, ОС работает на физическом оборудовании, а не на эмуляции (достаточно сказано) Tino 3 года назад 0