12

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

Каковы фактические ограничения для Windows 7, чтобы знать об установке его в системе на базе процессора ARM? Это будет связано с версией ядра, драйверами, архитектурой или даже смесью этих факторов?

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

3 ответа3

30

Чтобы двоичные файлы работали на процессоре ARM, они должны быть специально скомпилированы для этого процессора или запущены в эмуляторе.

Поскольку системы Linux имеют открытый исходный код, люди могут скомпилировать их специально для систем ARM и переписать любой код, специфичный для x86. Поскольку исходный код для Windows закрыт, пока Microsoft не выпустит версию ARM, его нельзя перекомпилировать и запустить на нем.

Существуют и другие проблемы с переходом на системы ARM, но это, вероятно, самая большая проблема.

Насколько я знаю, VMware не будет эмулировать x86. Я думаю, что qemu может это сделать, но я не использовал его для ARM, эмулирующего x86, а только для x86, эмулирующего ARM. Там будет значительный удар по производительности, если он работает.

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

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 код (и выполняет его прозрачно в эмуляции), и для перевода достаточно мощности процессора.

2

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

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

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

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