Tại sao Windows 7 không thể được cài đặt trên hệ thống dựa trên bộ xử lý ARM?


12

Hôm nay tôi đã đọc một số tin tức ( 1 , 2 , 3 , 4 ) về Microsoft Windows 8 và thấy rằng một trong những tính năng mới là nó có thể chạy trên hệ thống dựa trên bộ xử lý ARM . Điều này khiến tôi tự hỏi những lý do mà nó không thể được thực hiện với phiên bản phát hành hiện tại của Windows (Seven).

Những hạn chế thực tế để Windows 7 nhận thức được khi cài đặt nó trên hệ thống dựa trên bộ xử lý ARM là gì? Nó sẽ phải làm gì với phiên bản kernel, trình điều khiển, kiến ​​trúc hay thậm chí là sự pha trộn của các yếu tố này?

Cho đến khi tôi biết, tôi có thể cài đặt Linux trên ARM, vì vậy tôi thậm chí không thể cài đặt Windows Seven trong máy ảo VMWare trên ARM?


1
Lưu ý rằng Windows 8 dự kiến ​​sẽ chạy trên ARM. windows8news.com/2011/01/05/ từ
JSB

1
Bạn có thể cài đặt Windows 7 trong một máy ảo chạy trong hệ điều hành ARM. Bạn chỉ cần tìm một chương trình máy ảo vừa chạy trên ARM và có khả năng chạy một khách x86.
Đột phá

Câu trả lời:


30

Để các nhị phân chạy trên bộ xử lý ARM, chúng phải được biên dịch riêng cho bộ xử lý đó hoặc được chạy trong trình giả lập.

Vì các hệ thống Linux là nguồn mở, mọi người có thể biên dịch chúng cụ thể cho các hệ thống ARM và viết lại bất kỳ mã cụ thể x86 nào. Vì nguồn cho Windows bị đóng, trừ khi Microsoft phát hành phiên bản ARM, nó không thể được biên dịch lại và chạy trên nó.

Có những vấn đề khác khi chuyển sang hệ thống ARM, nhưng đây có lẽ là vấn đề lớn nhất.

Theo tôi biết, VMware sẽ không mô phỏng x86. Tôi nghĩ rằng qemu có thể có thể, nhưng tôi chưa từng sử dụng nó cho ARM giả lập x86 trước đây, chỉ là x86 giả lập ARM. Sẽ có một hiệu suất đáng kể nếu nó hoạt động.

Mặc dù bất kỳ chương trình nào cũng cần được biên dịch cho kiến ​​trúc mà nó dự định chạy, một hệ điều hành thường cần được tùy chỉnh nhiều hơn với kiến ​​trúc cụ thể. Hệ điều hành chịu trách nhiệm cho những việc như lên lịch và chuyển đổi tác vụ, hoạt động với bộ xử lý ở mức rất sâu.


8
Lưu ý rằng bạn có thể khái quát hóa câu đầu tiên bằng cách xóa từ "ARM" và vẫn có câu lệnh đúng - vì các nhị phân quy tắc luôn phải được biên dịch cho kiến ​​trúc mà chúng đang chạy hoặc nếu không có lớp trình giả lập hoặc trình thông dịch .
Shinrai

4
@jhulst Tôi đã sử dụng qemu để mô phỏng x86 trên PowerPC, và, vâng, nó cực kỳ chậm.
Cajunluke

Giả sử VPC (mà MS đã mua) đã thực hiện x86 trên PPC với tính năng biên dịch lại động. Cấp, điều này đã có từ lâu, và tôi chưa bao giờ thực sự thử nó. QEMU là khủng khiếp khác với tính di động IMO của nó. Nó làm một số thứ RẤT tốt (như không cần hook kernel) nhưng nó không hiệu quả.
Journeyman Geek

Cổng QEMU này sang nền tảng máy chủ ARM trông không chính thống và tôi không thể tìm thấy bất kỳ cái nào khác.
RedGrittyBrick

Trình điều khiển thiết bị cũng sẽ là một vấn đề, đặc biệt đối với mọi nội dung độc đáo giới hạn trong các hệ thống ARM.
CarlF

8

Câu trả lời đơn giản là "MS chưa phát hành một cổng" (mặc dù Windows 8 được cho là được chuyển sang ARM), đơn giản là vì nó không có ý nghĩa kinh doanh tại thời điểm đó. Nếu bạn muốn vào, nếu MS có thể ...

Vâng, trong lịch sử, gia đình NT đã chạy trên một loạt các bộ xử lý - NT chạy trên Alpha, PPC và MIPS, và có các cổng được lên kế hoạch cho các kiến trúc của Clipper và SPARC. Điều này là có thể bởi vì Windows NT đã trừu tượng hóa các phần phụ thuộc phần cứng của mã ( HAL ) và chỉ viết lại phần đó và biên dịch lại mọi thứ khác nên thực hiện thủ thuật (mặc dù trên lý thuyết .NET phần mềm dựa trên được cho là độc lập với phần cứng).

Không giống như Linux, nếu tôi nhớ chính xác có các nhánh hạt nhân riêng biệt cho từng kiến ​​trúc, thì CHỈ CÓ HAL là phần cứng cụ thể và phần còn lại là phổ biến - Tôi tin rằng một khi HAL cho nền tảng ARM được đề cập, nó sẽ tương đối tầm thường, và không khác gì mã hóa cho các bit phần cứng khác nhau, đặc biệt nếu hệ thống khác thông thường, giả sử, sử dụng PCI-E và các giao diện tiêu chuẩn công nghiệp khác.

Giả sử Microsoft phát hành cổng ARM của Windows 7, bất kỳ phần mềm nào không được giải thích hoặc chạy trên một loại VM như JVM, LLVM hoặc CLR sẽ cần được biên dịch lại hoặc chạy trên lớp dịch, như Rosetta hoặc khả năng tương thích 68K cũ lớp trên các máy Mac cũ hơn , nhận biết mã cụ thể x86 (và chạy mã đó trong mô phỏng trong suốt) và có đủ sức mạnh bộ xử lý để dịch.


Phần mềm .NET có thể chạy trên hầu hết mọi kiến ​​trúc chính bằng Mono, đây là trình biên dịch / thời gian chạy mã nguồn mở cho các chương trình .NET chạy trong hầu hết các hệ điều hành chính. Tất nhiên, điều này không liên quan đến câu hỏi ban đầu.
CarlF

Ồ không. Nó có liên quan đến phần 'phần mềm sẽ cần được biên dịch lại'. Tôi tin rằng CLR có khả năng độc lập với nền tảng và / hoặc mã .net được tối ưu hóa / biên dịch khi cài đặt. Tôi hoàn toàn quên mất mono, thật không may, đó là một trong những thứ hoạt động lặng lẽ trong nền; p
Journeyman Geek

@CarlF lưu ý rằng bạn không thể sử dụng P / Gọi để truy cập bất kỳ nhị phân win32 nào. Thời điểm bạn cần làm là bạn mất hỗ trợ đa nền tảng. Đây không phải là một vấn đề hơn là vì khung .Net đã phát triển; nhưng nếu ứng dụng của bạn cần giao diện chặt chẽ với bất kỳ phụ thuộc hệ thống của bên thứ 3 nào thì mã gốc sẽ trở nên khá phổ biến.
Dan đang loay hoay bởi Firelight

2

Bạn không thể chạy nhị phân trên các bộ xử lý có kiến ​​trúc khác với kiến ​​trúc nhị phân nơi được biên dịch.

Bạn không thể chạy AMD64 Linux trên ARM, giống như bạn không thể chạy linux AMD64 trên bộ xử lý i386 (32 bit). Tùy chọn duy nhất của bạn là mô phỏng toàn bộ bộ xử lý (xem qemu ) và sau đó thử hết sức mình.

VMware / VirtualBox không phải là trình giả lập bộ xử lý, do đó bạn cũng không gặp may.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.