ARM 프로세서 기반 시스템에 Windows 7을 설치할 수없는 이유는 무엇입니까?


12

오늘 저는 Microsoft Windows 8에 대한 몇 가지 뉴스 ( 1 , 2 , 3 , 4 )를 읽고 새로운 기능 중 하나가 ARM 프로세서 기반 시스템에서 실행될 수 있다는 것을 알았습니다 . 이로 인해 현재 릴리스 버전의 Windows (Seven)로 수행 할 수없는 이유가 궁금합니다.

ARM 프로세서 기반 시스템에 Windows 7을 설치할 때 알아야 할 실제 제한 사항은 무엇입니까? 커널 버전, 드라이버, 아키텍처 또는 이러한 요소의 혼합과 관련이 있습니까?

내가 알기 전까지는 ARM에 Linux를 설치할 수 있으므로 ARM의 VMWare 가상 머신에서 Windows Seven을 설치할 수 없습니까?


1
Windows 8은 ARM에서 실행될 예정입니다. windows8news.com/2011/01/05/…
JSB ձոգչ

1
ARM 운영 체제에서 실행되는 가상 머신에 Windows 7을 설치할 수 있습니다 . ARM에서 실행되고 x86 게스트를 실행할 수있는 가상 머신 프로그램 만 찾으면됩니다.
획기적인

답변:


30

바이너리가 ARM 프로세서에서 실행 되려면 해당 프로세서에 맞게 바이너리를 컴파일하거나 에뮬레이터에서 실행해야합니다.

Linux 시스템은 오픈 소스이므로 사람들은 ARM 시스템을 위해 특별히 컴파일하여 x86 특정 코드를 다시 작성할 수 있습니다. Windows 용 소스는 닫혀 있으므로 Microsoft에서 ARM 버전을 릴리스하지 않으면 다시 컴파일하여 실행할 수 없습니다.

ARM 시스템으로 이동하는 데 다른 문제가 있지만 이것이 가장 큰 문제 일 수 있습니다.

내가 아는 한 VMware는 x86을 에뮬레이션하지 않습니다. qemu 가 가능 하다고 생각 하지만 x86을 ARM으로 에뮬레이트하기 전에 ARM을 x86으로 에뮬레이션하는 데는 사용하지 않았습니다. 작동하면 성능이 크게 저하 될 수 있습니다.

프로그램을 실행하려는 아키텍처에 맞게 프로그램을 컴파일해야하지만 운영 체제를 특정 아키텍처에 맞게 훨씬 더 사용자 지정해야하는 경우가 종종 있습니다. 운영 체제는 프로세서와 매우 깊은 수준에서 작동하는 예약 및 작업 전환과 같은 작업을 담당합니다.


8
"ARM"이라는 단어를 제거하여 첫 번째 문장을 일반화 할 수 있지만 여전히 실제 구문을 가질 수 있습니다 . 규칙 바이너리는 항상 실행중인 아키텍처에 맞게 컴파일되거나 에뮬레이터 또는 인터프리터 레이어가 있어야합니다 .
Shinrai

4
@jhulst 저는 qemu를 사용하여 PowerPC에서 x86을 에뮬레이트했으며, 매우 느립니다.
Cajunluke

아마도 MS가 구입 한 VPC는 ​​동적 재 컴파일을 통해 PPC에서 x86을 제대로 수행했다고 가정합니다. 물론, 이것은 오래 전 일이었고, 실제로 직접 시도한 적이 없습니다. QEMU는 이식성 IMO 외에는 끔찍합니다. (커널 훅이 필요하지 않은 것과 같이) 아주 잘하는 일이지만 비효율적입니다.
Journeyman Geek

ARM 호스트 플랫폼에 대한QEMU 포트 는 그다지 주류가 아니며 다른 것을 찾을 수 없었습니다.
RedGrittyBrick 14:44에

특히 ARM 시스템으로 제한되는 고유 한 장치의 경우 장치 드라이버가 문제가 될 수 있습니다.
CarlF

8

간단한 대답은 "MS가 포트를 릴리스하지 않았습니다"(Windows 8은 ARM으로 포팅되어야 함)인데, 당시에는 비즈니스에 적합하지 않은 것입니다. 당신이 가고 싶다면, MS가 할 수 있다면 ...

역사적으로 NT 제품군은 다양한 프로세서에서 실행되었습니다. NT는 Alpha, PPC 및 MIPS에서 실행되었으며 Clipper 및 SPARC 아키텍처 용으로 계획된 포트가있었습니다 . 이것은 Windows NT가 하드웨어 종속 코드 부분 ( HAL )을 추상화 하고 해당 섹션 만 다시 작성하고 다른 모든 것을 다시 컴파일하여 트릭을 수행해야하기 때문입니다 (이론에서는 .NET 기반 소프트웨어는 하드웨어에 독립적 임).

Linux와는 달리, 각 아키텍처에 대해 별도의 커널 브랜치를 가지고 있다면, HAL만이 하드웨어에 따라 다르고 나머지는 공통적입니다. 일단 ARM 플랫폼에 대한 HAL이 생성되면 상대적으로 높아야한다고 생각합니다 PCI-E 및 기타 산업 표준 인터페이스를 사용하여 시스템이 기존 방식 인 경우 다양한 하드웨어 비트에 대한 코딩과 다르지 않습니다.

Microsoft가 Windows 7의 ARM 포트를 릴리스했다고 가정 할 때 해석되지 않거나 JVM, LLVM 또는 CLR과 같은 VM에서 실행되는 모든 소프트웨어는 Rosetta 또는 이전 68K 호환성 과 같은 변환 계층에서 다시 컴파일하거나 실행해야합니다. x86 특정 코드를 인식하고 (에뮬레이션으로 투명하게 실행) 구형 Mac의 레이어를 사용 하고 번역에 충분한 프로세서 성능을 제공합니다.


.NET 소프트웨어는 대부분의 주요 운영 체제에서 실행되는 .NET 프로그램의 오픈 소스 컴파일러 / 런타임 인 ​​Mono를 사용하여 거의 모든 주요 아키텍처에서 실행될 수 있습니다. 물론 이것은 원래 질문과 직접 ​​관련이 없습니다.
CarlF

음 ... 아니. '소프트웨어를 다시 컴파일해야하는'부분과 관련이 있습니다. CLR은 플랫폼에 독립적이며 .net 코드는 설치시 최적화 / 컴파일됩니다. 불행히도 모노는 배경에서 조용히 작동하는 것들 중 하나를 완전히 잊었습니다. p
Journeyman Geek

@CarlF의주의 사항은 P / Invoke를 사용하여 win32 바이너리에 액세스 할 수 없다는 것입니다. 당신이해야 할 순간 당신은 당신의 크로스 플랫폼 지원을 잃게됩니다. 이것은 .Net 프레임 워크가 성장했을 때보 다 덜 문제가되었습니다. 그러나 앱이 타사 시스템과 긴밀하게 인터페이스 해야하는 경우 종속성이 기본 코드가됩니다.
Dan은 Firelight에 의해 방황 중입니다.

2

바이너리가 컴파일 된 아키텍처와 다른 아키텍처 인 프로세서에서는 바이너리를 실행할 수 없습니다.

i386 (32 비트) 프로세서에서 AMD64 Linux를 실행할 수없는 것처럼 ARM에서 AMD64 Linux를 실행할 수 없습니다. 유일한 옵션은 전체 프로세서를 에뮬레이트하고 ( qemu 참조 ) 최선을 다하는 것입니다.

VMware / VirtualBox는 프로세서 에뮬레이터가 아니므로 운이 좋지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.