Чому Windows 7 не може бути встановлена ​​в системі на базі процесора ARM?


12

Сьогодні я читав деякі новини ( 1 , 2 , 3 , 4 ) про Microsoft Windows 8 і побачив, що одна з нових можливостей полягає в тому, що вона може працювати над системою на базі процесора ARM . Це змушує мене замислитись над тим, що це неможливо зробити з поточною версією Windows (Seven).

Які фактичні обмеження для Windows 7, щоб знати про її встановлення в системі на базі процесора ARM? Це стосується версії ядра, драйверів, архітектури чи навіть суміші цих факторів?

Поки я не знаю, я можу встановити Linux на ARM, тому я навіть не можу встановити Windows Seven під віртуальною машиною VMWare на ARM?


1
Зауважте, що Windows 8 планується працювати на ARM. windows8news.com/2011/01/05/…
JSB ձոգչ

1
Ви можете встановити Windows 7 у віртуальній машині, що працює в операційній системі ARM. Вам просто потрібно знайти програму віртуальної машини, яка працює як на ARM, так і здатна запускати x86 гість.
Прорив

Відповіді:


30

Щоб бінарні файли працювали на процесорі ARM, вони повинні бути складені спеціально для цього процесора або запускатися в емуляторі.

Оскільки системи Linux є відкритим кодом, люди можуть компілювати їх спеціально для систем ARM та переписати будь-який код x86. Оскільки джерело для Windows закрито, якщо Microsoft не випустить версію ARM, його неможливо перекомпілювати та запустити.

Є й інші проблеми з переходом на системи ARM, але це, мабуть, найбільше.

Наскільки я знаю, VMware не буде імітувати x86. Я думаю, що qemu може бути в змозі, але я раніше не використовував його для ARM-емуляції x86, просто x86 для емуляції ARM. Якщо це справді спрацює, буде досягнуто значного успіху.

Хоча будь-яка програма потребує компіляції для тієї архітектури, якою вона призначена для роботи, операційна система часто повинна бути набагато більш пристосована до конкретної архітектури. Операційні системи відповідають за такі речі, як планування та переключення завдань, які працюють з процесором на дуже глибоких рівнях.


8
Зауважте, що ви можете узагальнити перше речення, видаливши слово "ARM" і все ще маєте істинне твердження - як правило, бінарні файли завжди мають бути або зібрані для архітектури, на якій вони працюють, або ж мати шар емулятора чи інтерпретатора .
Shinrai

4
@jhulst Я використовував qemu для емуляції x86 на PowerPC, і так, це надзвичайно повільно.
Cajunluke

Імовірно, VPC (який купив MS) зробив x86 на PPC гідно з динамічною перекомпіляцією. Зрозуміло, це було віками тому, і я ніколи насправді не пробував це сам. QEMU є жахливим, окрім своєї IMO для портативності. Деякі речі це ДУЖЕ добре (як, наприклад, не потрібні гачки ядра), але неефективні.
Подорожник Geek

Цей порт QEMU на хост-платформі ARM виглядає не дуже мейнстрімом, і я не міг знайти інших.
RedGrittyBrick

Драйвери пристроїв також будуть проблемою, особливо для будь-яких унікальних речей, обмежених системами ARM.
CarlF

8

Проста відповідь - "MS не випустила порт" (хоча Windows 8 повинна бути перенесена на ARM), просто тому, що в цей час це не мало ділового сенсу. Якщо ви хочете зайнятися, якщо MS може ...

Ну, історично, сімейство NT працювало на різних процесорах - NT працював на Alpha, PPC та MIPS, і там були заплановані порти для архітектур Clipper та SPARC. Це можливо, тому що Windows NT абстрагував залежні від апаратури частини коду ( HAL ), переписавши саме цей розділ і перекомпілювавши все інше, слід зробити трюк (хоча теоретично програмне забезпечення на базі .NET нібито не залежить від обладнання).

На відміну від Linux, який, якщо я правильно нагадаю, має окремі гілки ядра для кожної архітектури, МИЛИМО ТОЛЬКО HAL є специфічним для апаратури, а решта є загальним - я вважаю, що колись була створена HAL для відповідної платформи ARM, вона повинна бути відносно тривіально і не відрізняється від кодування для різних біт апаратних засобів, особливо якщо система була інакше звичайною, скажімо, з використанням PCI-E та інших стандартних галузевих інтерфейсів.

Якщо припустити, що Microsoft випустила порт ARM Windows 7, будь-яке програмне забезпечення, яке не інтерпретується або працює на VM подібних типів, таких як JVM, LLVM або CLR, потрібно буде перекомпілювати або запустити на шарі перекладу, як Rosetta або стара сумісність 68K шару на старих Mac , це відомо про специфічний код x86 (і він працює в емуляції прозоро), і достатня потужність процесора для перекладу.


Програмне забезпечення .NET може працювати майже на будь-якій великій архітектурі, використовуючи Mono, що є компілятором / режимом роботи з відкритим кодом для програм .NET, що працює в більшості основних операційних систем. Звичайно, це не стосується початкового питання.
CarlF

Ну, ні. Це стосується частини, де "програмне забезпечення потрібно перекомпілювати". Я вважаю, що CLR потенційно не залежить від платформи, та / або .net-код оптимізований / скомпільований при встановленні. Я повністю забув про моно, на жаль, його одну з тих речей, яка тихо працює на задньому плані; p
Journeyman Geek

@CarlF Застереження до цього є те, що ви не можете використовувати P / Invoke для доступу до будь-яких бінарних файлів win32. У той момент, коли вам це потрібно зробити, ви втрачаєте підтримку крос-платформи. Це менше питання, ніж це було в міру того, як розробили рамки .Net; але якщо вашому додатку потрібно тісно взаємодіяти з будь-якими сторонніми системами залежностей, то нативний код стає досить поширеним.
Дан вигадує Firelight

2

Не можна запускати бінарні файли на процесорах, які відрізняються від архітектури, ніж архіви, до яких компілюються.

Ви не можете запустити AMD64 Linux на ARM, так само як ви не можете запустити AMD64 Linux на i386 (32-бітний) процесор. Ваші єдині варіанти - емуляція цілого процесора (див. Qemu ), а потім спробувати все можливе.

VMware / VirtualBox не є емуляторами процесорів, тому вам теж не пощастило.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.