Mengapa Windows 7 tidak dapat diinstal pada sistem berbasis prosesor ARM?

12

Hari ini saya membaca beberapa berita ( 1 , 2 , 3 , 4 ) tentang Microsoft Windows 8 dan melihat bahwa salah satu fitur baru adalah dapat dijalankan melalui sistem berbasis prosesor ARM . Ini membuat saya bertanya-tanya alasan bahwa hal itu tidak dapat dilakukan dengan versi rilis Windows saat ini (Seven).

Apa batasan sebenarnya untuk Windows 7 untuk mewaspadai menginstalnya pada sistem berbasis prosesor ARM? Itu harus dilakukan dengan versi kernel, driver, arsitektur atau bahkan campuran dari faktor-faktor ini?

Sampai saya tahu, saya dapat menginstal Linux pada ARM, jadi saya bahkan tidak dapat menginstal Windows Seven di bawah mesin virtual VMWare pada ARM?

Diogo
sumber
1
Perhatikan bahwa Windows 8 dijadwalkan untuk berjalan pada ARM. windows8news.com/2011/01/05/…
JSB ձոգչ
1
Anda dapat menginstal Windows 7 di mesin virtual yang berjalan di sistem operasi ARM. Anda hanya perlu menemukan program mesin virtual yang keduanya berjalan pada ARM dan mampu menjalankan tamu x86.
Terobosan

Jawaban:

30

Agar binari dapat berjalan pada prosesor ARM, mereka harus dikompilasi untuk prosesor tersebut secara khusus atau dijalankan dalam emulator.

Karena sistem Linux adalah open source, orang dapat mengompilasinya secara spesifik untuk sistem ARM dan menulis ulang kode spesifik x86 apa pun. Karena sumber untuk Windows ditutup, kecuali Microsoft merilis versi ARM, itu tidak dapat dikompilasi ulang dan dijalankan di atasnya.

Ada masalah lain dengan pindah ke sistem ARM, tetapi ini mungkin yang terbesar.

Sejauh yang saya tahu, VMware tidak akan meniru x86. Saya pikir qemu mungkin bisa, tetapi saya belum menggunakannya untuk ARM yang mengemulasi x86 sebelumnya, hanya x86 yang mengemulasi ARM. Akan ada hit kinerja yang signifikan jika berhasil.

Sementara setiap program perlu dikompilasi untuk arsitektur yang dimaksudkan untuk dijalankan, sistem operasi seringkali perlu lebih disesuaikan dengan arsitektur tertentu. Sistem operasi bertanggung jawab untuk hal-hal seperti penjadwalan dan pengalihan tugas, yang bekerja dengan prosesor pada level yang sangat dalam.

jhulst
sumber
8
Perhatikan bahwa Anda dapat menggeneralisasi kalimat pertama dengan menghapus kata "ARM" dan masih memiliki pernyataan yang benar - sebagai aturan binari selalu harus dikompilasi untuk arsitektur yang mereka jalankan, atau memiliki lapisan emulator atau interpreter .
Shinrai
4
@jhulst Saya telah menggunakan qemu untuk meniru x86 di PowerPC, dan, ya, ini sangat lambat.
Cajunluke
Seharusnya VPC (yang dibeli MS) melakukan x86 pada PPC dengan baik dengan kompilasi dinamis. Memang, ini sudah berabad-abad yang lalu, dan saya tidak pernah benar-benar mencobanya sendiri. QEMU mengerikan selain IMO portabilitasnya. Ia melakukan beberapa hal SANGAT baik (seperti tidak memerlukan kait kernel) tetapi tidak efisien.
Journeyman Geek
Port QEMU ini ke platform host ARM tidak terlihat sangat umum dan saya tidak dapat menemukan yang lain.
RedGrittyBrick
Driver perangkat juga akan menjadi masalah, terutama untuk hal-hal unik yang terbatas pada sistem ARM.
CarlF
8

Jawaban sederhana adalah "MS belum merilis port" (meskipun Windows 8 seharusnya porting ke ARM), hanya karena itu tidak masuk akal bisnis pada saat itu. Jika Anda ingin masuk, jika MS bisa ...

Yah, secara historis, keluarga NT telah berjalan pada berbagai prosesor - NT berjalan pada Alpha, PPC dan MIPS, dan ada pelabuhan yang direncanakan untuk arsitektur Clipper dan SPARC. Ini dimungkinkan karena Windows NT mengabstraksi bagian-bagian yang bergantung pada perangkat keras dari kode ( HAL ) dan menulis ulang hanya bagian itu dan mengkompilasi ulang semua yang lain harus melakukan trik (meskipun dalam teori . Perangkat lunak berbasis NET seharusnya independen perangkat keras).

Tidak seperti Linux, yang, jika saya ingat benar memiliki cabang kernel yang terpisah untuk setiap arsitektur, HANYA HAL adalah perangkat keras khusus, dan sisanya adalah umum - saya percaya bahwa sekali HAL untuk platform ARM yang dimaksud dibuat, itu harus relatif sepele, dan tidak berbeda dari pengkodean untuk berbagai bit perangkat keras, terutama jika sistem itu konvensional, katakanlah, menggunakan PCI-E dan antarmuka standar industri lainnya.

Dengan asumsi Microsoft merilis port ARM Windows 7, perangkat lunak apa pun yang tidak diinterpretasikan, atau berjalan pada jenis VM seperti JVM, LLVM atau CLR perlu dikompilasi ulang atau dijalankan pada lapisan terjemahan, seperti Rosetta atau kompatibilitas 68K lama lapisan pada mac yang lebih lama , yang menyadari kode spesifik x86 (dan menjalankannya dalam emulasi secara transparan), dan ada kekuatan prosesor yang cukup untuk terjemahan.

Journeyman Geek
sumber
Perangkat lunak .NET dapat berjalan di hampir semua arsitektur utama menggunakan Mono, yang merupakan kompiler / runtime Open Source untuk program .NET yang berjalan di bawah sebagian besar sistem operasi utama. Tentu saja ini tidak relevan dengan pertanyaan awal.
CarlF
Ya tidak. Ini relevan untuk bagian di mana 'perangkat lunak perlu dikompilasi ulang'. Saya percaya CLR berpotensi independen terhadap platform, dan / atau .net code dioptimalkan / dikompilasi saat diinstal. Saya benar-benar lupa tentang mono, sayangnya, itu salah satu hal yang bekerja dengan tenang di latar belakang; p
Journeyman Geek
@CarlF peringatan untuk itu adalah bahwa Anda tidak dapat menggunakan P / Panggil untuk mengakses binari win32. Saat Anda perlu melakukan itu, Anda kehilangan dukungan lintas platform. Ini lebih sedikit masalah daripada sebelumnya karena kerangka .Net telah berkembang; tetapi jika aplikasi Anda perlu berinteraksi erat dengan dependensi sistem pihak ketiga apa pun kode asli menjadi cukup umum.
Dan is Fiddling oleh Firelight
2

Anda tidak bisa menjalankan binari pada prosesor yang arsitekturnya berbeda dari arsitektur tempat biner dikompilasi.

Anda tidak dapat menjalankan AMD64 Linux pada ARM, sama seperti Anda tidak dapat menjalankan AMD64 linux pada prosesor i386 (32-bit). Satu-satunya pilihan Anda adalah meniru seluruh prosesor (lihat qemu ) dan kemudian mencoba yang terbaik.

VMware / VirtualBox bukan emulator prosesor, jadi Anda juga kurang beruntung di sana.

akira
sumber