Dzisiaj czytałem wiadomości ( 1 , 2 , 3 , 4 ) na temat Microsoft Windows 8 i zobaczyłem, że jedną z nowych funkcji jest to, że może działać na systemie opartym na procesorze ARM . To sprawia, że zastanawiam się, dlaczego nie można tego zrobić w bieżącej wersji systemu Windows (Seven).
Jakie są rzeczywiste ograniczenia systemu Windows 7, aby być świadomym jego instalacji w systemie opartym na procesorze ARM? Miałoby to związek z wersją jądra, sterownikami, architekturą, a nawet kombinacją tych czynników?
Dopóki się nie dowiem, mogę zainstalować Linuksa na ARM, więc nie mogę nawet zainstalować Windows Seven na maszynie wirtualnej VMWare na ARM?
Odpowiedzi:
Aby pliki binarne działały na procesorze ARM, należy je skompilować specjalnie dla tego procesora lub uruchomić w emulatorze.
Ponieważ systemy Linux są oprogramowaniem typu open source, ludzie mogą je skompilować specjalnie dla systemów ARM i przepisać dowolny kod x86. Ponieważ źródło dla systemu Windows jest zamknięte, chyba że Microsoft wyda wersję ARM, nie można go ponownie skompilować i uruchomić na nim.
Istnieją inne problemy z przejściem na systemy ARM, ale jest to prawdopodobnie największy.
O ile mi wiadomo, VMware nie będzie emulować x86. Myślę, że qemu może, ale nie użyłem go wcześniej do emulacji AR86 x86, tylko emulację ARM x86. Jeśli to zadziała, nastąpi znaczny spadek wydajności.
Chociaż każdy program musi zostać skompilowany pod kątem architektury, na której ma być uruchomiony, system operacyjny często musi być znacznie bardziej dostosowany do konkretnej architektury. Systemy operacyjne są odpowiedzialne za planowanie i przełączanie zadań, które działają z procesorem na bardzo głębokich poziomach.
źródło
Prosta odpowiedź brzmi: „MS nie wydało portu” (chociaż Windows 8 powinien być przeniesiony do ARM), po prostu dlatego, że nie miało to wtedy sensu biznesowego. Jeśli chcesz wejść, jeśli stwardnienie rozsiane mogłoby ...
Cóż, historycznie, rodzina NT działała na wielu procesorach - NT działał na Alpha, PPC i MIPS, i były planowane porty dla architektur Clipper i SPARC. Jest to możliwe, ponieważ system Windows NT wyodrębnił zależne od sprzętu części kodu ( HAL ), przepisując tylko tę sekcję i ponownie kompilując wszystko inne (choć teoretycznie oprogramowanie oparte na platformie .NET jest rzekomo niezależne od sprzętu).
W przeciwieństwie do Linuksa, który, jeśli dobrze pamiętam, ma osobne gałęzie jądra dla każdej architektury, podobno TYLKO HAL jest specyficzny dla sprzętu, a reszta jest powszechna - uważam, że po utworzeniu HAL dla omawianej platformy ARM powinien on być względnie trywialne i niczym nie różni się od kodowania różnych części sprzętu, szczególnie jeśli system byłby konwencjonalny inaczej, powiedzmy, przy użyciu PCI-E i innych standardowych interfejsów branżowych.
Zakładając, że Microsoft wydał port ARM systemu Windows 7, każde oprogramowanie, które nie jest interpretowane, lub działające na maszynie Wirtualnej, takiej jak JVM, LLVM lub CLR, wymagałoby ponownej kompilacji lub uruchomienia na warstwie tłumaczenia, takiej jak Rosetta lub stara kompatybilność z 68K warstwa na starszych komputerach Mac , która jest świadoma kodu specyficznego dla x86 (i uruchamia go w emulacji w sposób transparentny), i jest wystarczająca moc procesora do tłumaczenia.
źródło
Nie można uruchamiać plików binarnych na procesorach o innej architekturze niż architektura, do której zostały skompilowane pliki binarne.
Nie możesz uruchomić AMD64 Linux na ARM, tak samo jak nie możesz uruchomić AMD64 Linux na procesorze i386 (32-bit). Jedynymi opcjami są emulowanie całego procesora (patrz qemu ), a następnie spróbowanie jak najlepiej.
VMware / VirtualBox nie są emulatorami procesorów, dlatego też nie masz szczęścia.
źródło