Чи може 32-бітна ОС працює в 64-бітовому процесорі?


25

Яка різниця між 32-бітною ОС і 64-бітною ОС? Чи може 32-бітна ОС працює в 64-бітовому процесорі?


Якщо ви говорите про Windows (а тег Win32, схоже, вказує на це), то так, абсолютно - Vista і Win7 64-розрядні підтримують майже всі 32-розрядні програми через шар сумісності - я ще не знайшов нічого, що не відповідає Я не працюю нормально на 64-розрядному Vista (крім драйверів системного рівня)
marc_s

5
Питання більше схоже на те, чи можна встановити скажімо Win Vista x86 на вікно з 64-бітним процесором, а не на те, чи працюватимуть програми x86 на скажімо Win Vista x64.
KTC

Відповіді:


34

Ваше питання стосується архітектури. x64 по суті є розширенням до x86 архітектури. Він підтримує 64-бітний адресний простір. Він пропонує нові інструкції та нові регістри.

На комп'ютері x64 можна запустити 32-бітну версію x86 Windows. Зауважте, що ви не можете цього зробити в 64-бітних системах Itanium.


16

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

В даний час прийнята відповідь, як правило, правильна, але не конкретно. Насправді не існує жодної речі, яка називається "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). Ми підключимо додаткове підключення до нуля за замовчуванням, тож насправді, коли двобайтовий код працює, коли він вибирає 00, він фактично вибирає 000, а коли вибирає 11, насправді вибирає 011. Легко.

Тепер програміст хоче написати "нативний" 3-байтний код і записати її програмне забезпечення, щоб скористатися додатковим адресним простором. Вона каже ЦП, що вона знає, що робить, і що вона буде вручну керувати новими, додатковими проводами. Її програмне забезпечення знає про додаткові дроти та правильно надсилає 000-111, надаючи їй повний доступ до діапазону пам'яті, підтримуваної цією новою архітектурою процесора.

Але це не має відбуватися. Насправді це нормально не так, як все відбувається. Коли вперше були представлені 64-розрядні процесори (а їх було багато), всі вони вийшли з абсолютно новими архітектурами / дизайнами. Вони не просто взяли на себе додаткові 32 дроти і сказали "ось ви, це 64-бітний процесор, який ви можете використовувати в 32-бітному або 64-бітному режимі", а скоріше сказали: "Це наш новий процесор і він займає програмування лише цією новою машинною мовою, веде себе абсолютно новим способом, вирішує базові мільйони різних проблем набагато елегантніше, ніж колишні 32-бітні процесори x86 / i386, і це рідна 64-бітна архітектура. . "

Це була історія Intel Itanium, яка сьогодні відома як "Itanic" через те, як масово вона затонула. Це повинно було пророкувати в новій 64-бітовій ері, і це було щось побачити. Інструкції з різною довжиною, величезні кеші, 64-розрядний адресний простір, тони реєстрів, надзвичайно захоплююче, супер класне та надто важке, щоб переконати всіх перекомпілювати або переписати 20 років для застарілого коду. Це було ще тоді, коли AMD та Intel насправді конкурували, і AMD мала геніальну ідею сказати «забудьмо все це», вирішимо всі світові проблеми »і просто додамо ще 32 дроти до i386 і зробимо 32-бітну сумісну 64- бітовий процесор "і народилася архітектура процесора 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 мільярди разів більше пам'яті, ніж 4GiB).


1
У вас є кілька фактичних помилок: 1) itanium не ввів інструкції зі змінною довжиною (кожен x86 мав їх); до нього додаються дуже довгі інструкції до слів, які здатні одночасно працювати на кількох 64 бітових кількостях. 2) x86_64 не просто ляпав по більше адресних рядків; він також додав купу додаткових регістрів і розширив усі регістри (та ALU, які працюють на них) з 32 до 64 біт. Порівняйте це з 8086/8088, який додав ще 4 адресних рядки та регістри вибору сегментів, але зберігав їх у 16 ​​бітах, як і 8080 до цього.
psusi

-1

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


3
Це взагалі неправильно, хоча конкретно для x64.
ChrisInEdmonton

1
32-бітний процесор запустить будь-яку операційну систему, розроблену для роботи на такій архітектурі процесора.
Waxhead

32-розрядна ОС x86 очевидно не може працювати на ARM64, тому, 32 and 64 bit OS can run on a 64 bit processorяк правило, невірно
phuclv

@ Phúc Можливо, існує 64-бітні процесори, які не підтримують їх 32-бітний близнюк. Однак ви використовуєте помилкову логіку у своєму аргументі. SunOS 4.4.1 на 32-бітному MicroSparc також не працюватиме на ARM32. Використовуючи ваші логічні засоби, зазвичай невірно, що 32-бітна ОС може працювати на 32-бітному процесорі. Якщо я ігнорую здоровий глузд, як і ви, можу стверджувати, що 32-бітна ARM OS працює на Intel i386 / x64, оскільки розробники Android запускають зображення Android ARM на своїх машинах Wintel. Звичайно, ОС призначена для правильної сімейства процесорів, і, звичайно, ОС працює на фізичному обладнанні, а не на емуляції (достатньо сказати, поза)
Tino
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.