Windows 7 neden ARM işlemci tabanlı bir sisteme yüklenemiyor?


12

Bugün Microsoft Windows 8 hakkında bazı haberler ( 1 , 2 , 3 , 4 ) okuyordum ve yeni özelliklerden birinin ARM işlemci tabanlı bir sistem üzerinde çalışabileceğini gördüm . Bu, Windows'un mevcut sürümüyle (Seven) yapılamamasının nedenlerini merak etmemi sağlıyor.

ARM işlemci tabanlı bir sisteme kurmanın farkında olması için Windows 7'nin gerçek sınırlamaları nelerdir? Çekirdek sürümü, sürücüler, mimari ve hatta bu faktörlerin bir karışımı ile ilgili olması gerekir mi?

Bilinceye kadar Linux'u bir ARM'ye kurabilirim, bu yüzden Windows Seven'i bir ARM'deki VMWare sanal makinesi altında bile yükleyemiyorum?


1
Windows 8'in ARM'de çalışması planlanmıştır. windows8news.com/2011/01/05/…
JSB ձոգչ

1
Sen edebilir bir ARM işletim sisteminde bir sanal makine çalışırken de Windows 7'yi yükleyin. Sadece ARM'de çalışan ve x86 konuk çalıştırabilen bir sanal makine programı bulmanız yeterlidir.
Atılım

Yanıtlar:


30

İkili bir ARM işlemci üzerinde çalışabilmek için, o işlemci için özel olarak derlenmeleri veya bir emülatörde çalıştırılmaları gerekir.

Linux sistemleri açık kaynak olduğundan, insanlar bunları özellikle ARM sistemleri için derleyebilir ve x86'ya özgü herhangi bir kodu yeniden yazabilir. Windows kaynağı kapatıldığı için, Microsoft bir ARM sürümü yayınlamadığı sürece, yeniden derlenemez ve üzerinde çalıştırılamaz.

ARM sistemlerine geçişle ilgili başka sorunlar da var, ancak bu muhtemelen en büyüğüdür.

Bildiğim kadarıyla, VMware bir x86 taklit etmeyecek. Ben qemu mümkün olabilir, ama ben daha önce x86 taklit ARM, sadece x86 taklit ARM için kullanmadım. Çalışırsa önemli bir performans isabeti olacaktır.

Çalıştırılması planlanan mimari için herhangi bir programın derlenmesi gerekse de, bir işletim sisteminin genellikle belirli mimariye göre çok daha özelleştirilmiş olması gerekir. İşletim sistemleri, işlemciyle çok derin düzeylerde çalışan zamanlama ve görev değiştirme gibi şeylerden sorumludur.


8
İlk cümleyi "ARM" kelimesini kaldırarak genelleştirebileceğinizi ve hala gerçek bir ifadeye sahip olabileceğinizi unutmayın - çünkü kural ikili dosyaları her zaman üzerinde çalıştıkları mimari için derlenmelidir veya başka bir emülatör veya yorumlayıcı katmanı olmalıdır .
Shinrai

4
@jhulst PowerPC'de x86'yı taklit etmek için qemu kullandım ve evet, inanılmaz derecede yavaş.
Cajunluke

Sözde VPC (MS'in satın aldığı) dinamik yeniden derleme ile PPC'de x86 terbiyeli bir şekilde yaptı. Verilmiş, bu yıllar önce, ve ben aslında kendim hiç denemedim. QEMU, taşınabilirlik IMO'sundan başka korkunçtur. Bazı şeyler ÇOK iyi yapar (çekirdek kanca gerekmez gibi) ama verimsiz.
Journeyman Geek

ARM ana bilgisayar platformuna giden bu QEMU bağlantı noktası çok yaygın görünmüyor ve başkalarını bulamadım.
RedGrittyBrick

Aygıt sürücüleri de, özellikle ARM sistemleriyle sınırlı olan benzersiz şeyler için bir sorun olabilir.
CarlF

8

Basit cevap, "MS bir bağlantı noktası yayınlamamıştır" (Windows 8'in ARM'ye taşınması gerekiyor olsa da), o zaman iş anlamını yitirmesine neden oluyor. Eğer girmek istiyorsan, MS ...

Tarihsel olarak, NT ailesi bir dizi işlemcide koştu - NT Alpha, PPC ve MIPS üzerinde koştu ve Clipper ve SPARC mimarileri için planlanan limanlar vardı . Bu mümkündür çünkü Windows NT kodun donanım bağımlı bölümlerini ( HAL ) soyutladı ve sadece bu bölümü yeniden yazdı ve diğer her şeyi yeniden derlemek hile yapmalıdır (teoride .NET tabanlı yazılımın donanımdan bağımsız olduğu söylenebilir).

Her mimaride doğru bir şekilde ayrı çekirdek dalları varsa, Linux'un aksine, SADECE HAL donanıma özgüdür ve geri kalanı yaygındır - söz konusu ARM platformu için bir HAL oluşturulduktan sonra, nispeten olmalı önemsizdir ve özellikle sistem başka türlü konvansiyonel ise, örneğin PCI-E ve diğer endüstri standardı arayüzler kullanılarak çeşitli donanım parçaları için kodlamadan farklı değildir.

Microsoft'un Windows 7'nin bir ARM bağlantı noktasını çıkardığını varsayarsak, yorumlanmayan veya JVM, LLVM veya CLR gibi bir VM üzerinde çalışan herhangi bir yazılımın yeniden derlenmesi veya Rosetta veya eski 68K uyumluluk gibi bir çeviri katmanında çalıştırılması gerekir. katmanı daha eski mac'larda , bu x86'ya özgü kodun farkındadır (ve bunu öykünmede şeffaf olarak çalıştırır) ve çeviri için yeterli işlemci gücü vardır.


.NET yazılımı, çoğu büyük işletim sistemi altında çalışan .NET programları için bir Açık Kaynak derleyici / çalışma zamanı olan Mono'yu kullanarak hemen hemen her büyük mimaride çalışabilir. Bu tabii ki orijinal soru ile doğrudan ilgili değil.
CarlF

Hayır. 'Yazılımın yeniden derlenmesi gereken kısım' ile ilgilidir. CLR'nin potansiyel olarak platformdan bağımsız olduğuna ve / veya .net kodunun yükleme sırasında optimize edildiğine / derlendiğine inanıyorum. Mono'yu tamamen unuttum, ne yazık ki, arka planda sessizce çalışan şeylerden biri; p
Journeyman Geek

@CarlF, herhangi bir win32 ikili dosyasına erişmek için P / Invoke'u kullanamayacağınızdır. Bunu yapmanız gereken anda çapraz platform desteğinizi kaybedersiniz. Bu, .Net çerçevesi büyüdükçe olduğundan daha az sorun; ancak uygulamanızın herhangi bir 3. taraf sistemle sıkı bir şekilde arabirim kurması gerekiyorsa, bağımlılıklar yerel kod oldukça yaygın hale gelir.
Dan is Felling by Firelight

2

İkililerin derlendiği mimariden farklı bir mimariye sahip işlemcilerde ikili dosyalar çalıştıramazsınız.

AMD64 Linux'u i386 (32 bit) işlemcide çalıştıramayacağınız gibi ARM'de AMD64 Linux'u çalıştıramazsınız. Tek seçeneğiniz tüm bir işlemciyi taklit etmek (bkz. Qemu ) ve sonra elinizden gelenin en iyisini yapmaktır .

VMware / VirtualBox işlemci emülatörleri değildir, bu yüzden orada da şansınız kalmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.