Почему нельзя установить 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. Там будет значительное снижение производительности, если оно работает.

В то время как любая программа должна быть скомпилирована для архитектуры, на которой она предназначена, операционная система часто должна быть намного более адаптирована к конкретной архитектуре. Операционные системы отвечают за такие вещи, как планирование и переключение задач, которые работают с процессором на очень глубоких уровнях.

jhulst
источник
8
Обратите внимание, что вы можете обобщить первое предложение, удалив слово «ARM» и по-прежнему иметь верное утверждение - как правило, двоичные файлы всегда должны быть либо скомпилированы для архитектуры, на которой они работают, либо иметь слой эмулятора или интерпретатора .
Shinrai
4
@jhulst Я использовал qemu для эмуляции x86 на PowerPC, и да, это невероятно медленно.
Cajunluke
Предположительно VPC (который купил MS) сделал x86 на PPC прилично с динамической перекомпиляцией. Конечно, это было давным-давно, и я никогда не пробовал сам. QEMU ужасен, кроме своей мобильности IMO. Он делает некоторые вещи ОЧЕНЬ хорошо (например, не требует хуков ядра), но неэффективен.
подмастерье Компьютерщик
Этот порт 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, любое программное обеспечение, которое не интерпретируется или работает на виртуальной машине такого типа, как JVM, LLVM или CLR, необходимо перекомпилировать или запустить на уровне перевода, например Rosetta или старая совместимость с 68K слой на старых macs , который знает специфический для x86 код (и выполняет его прозрачно в эмуляции), и для перевода достаточно мощности процессора.

Подмастерье Компьютерщик
источник
Программное обеспечение .NET может работать практически на любой крупной архитектуре с использованием Mono, который является компилятором / средой с открытым исходным кодом для программ .NET, работающих в большинстве основных операционных систем. Конечно, это не имеет прямого отношения к первоначальному вопросу.
CarlF
Ну нет. Это относится к той части, где «необходимо будет перекомпилировать программное обеспечение». Я действительно считаю, что CLR потенциально независима от платформы, и / или .net код оптимизируется / компилируется при установке. Я совершенно забыл про моно, к сожалению, это одна из тех вещей, которая тихо работает на заднем плане; p
подмастерье, выродок
@CarlF предостережение о том, что вы не можете использовать P / Invoke для доступа к любым двоичным файлам win32. В тот момент, когда вам нужно это сделать, вы теряете кроссплатформенную поддержку. Это менее важная проблема, чем когда-либо развивалась платформа .Net; но если вашему приложению нужно тесно взаимодействовать с любыми сторонними системными зависимостями, то нативный код становится довольно распространенным явлением.
Дэн возится с Firelight
2

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

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

VMware / VirtualBox не являются эмуляторами процессоров, поэтому вам тоже не повезло.

Акира
источник