32 비트 OS를 64 비트 프로세서에서 실행할 수 있습니까?


25

32 비트 OS와 64 비트 OS의 차이점은 무엇입니까? 32 비트 OS를 64 비트 프로세서에서 실행할 수 있습니까?


Windows에 대해 이야기하고 있다면 (그리고 Win32 태그는 그것을 나타냅니다), 그렇습니다. Vista와 Win7 64 비트는 호환성 계층을 통해 거의 모든 32 비트 응용 프로그램을 지원합니다. 아직 아무것도 찾지 못했습니다. Vista 64 비트에서는 제대로 작동하지 않습니다 (시스템 수준 드라이버 제외)
marc_s

5
x86 앱이 Win Vista x64에서 실행되는지 여부보다는 64 비트 프로세서가있는 상자에 Win Vista x86을 설치할 수 있는지 여부가 더 궁금해 보입니다.
KTC

답변:


34

귀하의 질문은 아키텍처에 따라 다릅니다. x64는 기본적으로 x86 아키텍처의 확장입니다. 64 비트 주소 공간을 지원합니다. 새로운 명령어와 레지스터를 제공합니다.

x64 시스템에서 32 비트 x86 Windows를 실행할 수 있습니다. Itanium 64 비트 시스템에서는이 작업을 수행 할 수 없습니다.


16

64 비트 프로세서는 32 및 64 OS (최소 x64 캔)를 모두 실행할 수 있습니다. 32 비트 프로세서는 기본적으로 32 개만 실행할 수 있습니다.

차이점은 대부분 포인터 / 참조의 크기에 관한 것입니다. 64 비트 시스템에서는 64 비트 주소 범위에서 주소를 참조 할 수 있습니다 (따라서 2 ^ 64 바이트의 메모리 제공). 32 비트에서는 2 ^ 32 바이트 (= 4GB) 만 지정할 수 있습니다. 현재 컴퓨터를 보면 세상이 왜 64 비트로 이동하고 있는지 알 수 있습니다. 32 비트는 더 이상 모든 RAM을 쉽게 처리 할 수 ​​없습니다.

x64 (AMD / Intel)에서는 64 비트의 추가 이점이 있습니다. CPU에는 더 많은 레지스터가 있으므로 더 효율적인 코드를 허용합니다.

다른 아키텍처에서는 64 비트와 32 비트의 차이가 덜 분명합니다. 예를 들어 Nintendo 64 (?)는 64 비트 시스템이지만 대부분의 코드는 32 비트입니다. 따라서이 경우 64 비트가 마케팅 트릭으로 더 많이 사용되었습니다.


3

현재 수용되는 답변은 일반적으로 정확하지만 구체적으로 그렇지는 않습니다. 실제로 "32 비트 CPU"또는 ""64 비트 CPU "라는 단일 요소는 없습니다. 즉, CPU 아키텍처의 작은 부분 만 나타내는 설명입니다. 특히 숫자를 참조합니다. CPU와 메모리 사이의 어드레스 선택 라인, 즉 메모리 동작에 이용 가능한 소위 어드레스 공간 .

사람들이 프로세서와 메모리 사이의 전선을 앉아서 짜는 데 사용했던 CPU가 요즘에는 32 또는 (이론적으로는 당시 존재하지 않았기 때문에) 액세스하려는 메모리 주소를 지정하는 데 사용되는 CPU와 메모리 컨트롤러 사이의 64 개 회선. 예를 들어, 2 비트 메모리 아키텍처가 있다고 가정 해 봅시다. 00을 보내면 주소 0을 선택하고 01을 주소 1을 선택하고 10을 주소 2를 선택하고 11은 주소 3을 선택합니다.이 2 비트는 2 ^ 2 바이트를 나타냅니다. RAM (4 바이트)

32 비트 CPU를 사용하고 CPU와 메모리 컨트롤러 사이에 32 개의 와이어를 추가하여 마술처럼 더 많은 메모리를 지원할 수있게되면 32 비트를 실행할 수있는 "64 비트 CPU"가 생깁니다. 코드 또는 64 비트 코드 이것이 무엇을 의미하며 어떻게됩니까? 이 답변의 앞부분에서 2 비트 CPU를 가져 와서 다른 와이어를 추가하여 3 비트 CPU로 바꾸어 4 바이트에서 2 ^ 3 또는 8 바이트의 RAM으로 가져갑니다.

기존 "2 바이트"코드가 실행되어 위에 표시된대로 마지막 2 개의 와이어 값을 설정합니다 (00-11). 추가 연결은 기본적으로 0으로 연결되므로 실제로 2 바이트 코드가 실행될 때 00을 선택하면 실제로 000을 선택하고 11을 선택하면 실제로 011을 선택하게됩니다.

이제 프로그래머는 "네이티브"3 바이트 코드를 작성하고 여분의 주소 공간을 활용하기 위해 소프트웨어를 작성하려고합니다. 그녀는 CPU에게 자신이하는 일을 알고 있으며 새로운 여분의 전선을 수동으로 제어 할 것이라고 말합니다. 그녀의 소프트웨어는 여분의 와이어에 대해 알고 000-111을 올바르게 전송하여이 새로운 CPU 아키텍처가 지원하는 메모리 범위에 완전히 액세스 할 수 있습니다.

그러나 그것이 일어나야하는 방식은 아닙니다. 사실, 그것은 일반적으로 일이 일어나는 방식이 아닙니다 . 64 비트 CPU가 처음 소개되었을 때 (그리고 다수가 있었을 때), 모두 완전히 새로운 아키텍처 / 디자인으로 진행되었습니다. 그들은 단지 32 개의 와이어를 추가하지 않고 "여기서 32 비트 또는 64 비트 모드에서 사용할 수있는 64 비트 CPU"라고 말했지만 "이것은 우리의 새로운 CPU이며 완전히 새로운 기계 언어로만 프로그래밍하고 완전히 새로운 방식으로 작동하며 이전의 x86 / i386 32 비트 CPU보다 훨씬 더 우아하게 다양한 문제를 해결하며 기본 64 비트 아키텍처입니다. "

그것은 Intel Itanium의 이야기 였는데, 현재는 Itanic이라고 알려져 있습니다. 새로운 64 비트 시대에 예고되어 왔으며, 볼 것이 었습니다. 가변 길이 명령어, 대용량 캐시, 64 비트 주소 공간, 수많은 레지스터, 매우 흥미롭고 매우 쿨하고 모든 사람이 20 년 동안의 레거시 코드를 다시 컴파일하거나 다시 작성하도록 설득하기가 매우 어렵습니다. AMD와 인텔이 실제로 경쟁하고 있었을 때 AMD는 "이 세상의 모든 문제를 해결하는 사업을 잊어 버리고 i386에 32 개의 전선을 추가하고 32 비트 호환 64를 만들라는 훌륭한 아이디어를 가지고있었습니다." 비트 CPU "와 x86_64 CPU 아키텍처가 탄생했습니다.

실제로 주요 운영 체제 (Linux, Windows, BSD 등)의 커널 이름과 소스를 살펴보면 AMD64 CPU 및 AMD64 아키텍처에 대한 참조로 혼란 스러울 수 있습니다. AMD는 32 비트 OS가 64 비트 하드웨어 또는 32 비트 응용 프로그램에서 실행될 수있는 방식으로 모든 사람이 64 비트 세계로 전환하고 32 비트 응용 프로그램과의 호환성을 유지하도록하는 성공적인 전략을 제시했습니다. 64 비트 하드웨어의 64 비트 OS에서 실행될 수 있습니다. 인텔은 "Intel EM64T"아키텍처 (기본적으로 AMD64와 동일 함)로 스위트를 더 빨리 따르고 Itanic과 MIPS64 및 ALPHA64와 같은 다른 제품은 데스크탑 / 서버 시장에서 더 이상 볼 수 없었지만 x86_64는 승리했습니다.

tl; dr amd64 일명 x86_64 CPU는 32 비트 및 64 비트 커널 및 코드와 호환되도록 설계되었지만 대부분의 64 비트 CPU는 동일한 방식으로 역 호환 되지 않습니다 . 32 비트 CPU는 최대 4GiB의 메모리에 액세스 할 수있는 반면 64 비트 CPU는 놀라운 16EiB (16 × 1024 ^ 6 바이트 또는 4GiB보다 40 억 배 많은 메모리)에 액세스 할 수 있습니다 .


1
몇 가지 사실적인 오류가 있습니다. 1) itanium이 가변 길이 명령어를 도입하지 않았습니다 (모든 x86에 해당 명령어가 있음). 여러 개의 64 비트 수량에서 동시에 작동 할 수있는 매우 긴 단어 명령어를 추가했습니다. 2) x86_64는 더 많은 주소 라인을 때리는 것이 아닙니다. 또한 여러 개의 추가 레지스터를 추가하고 모든 레지스터 (및 그에서 작동하는 ALU)를 32 비트에서 64 비트로 확장했습니다. 이것을 8086/8088과 비교하면 4 개의 주소 라인과 세그먼트 선택기 레지스터가 추가되었지만 8080과 같이 16 비트로 유지됩니다.
psusi

-1

32 비트 및 64 비트 OS는 64 비트 프로세서에서 실행될 수 있지만 64 비트 OS는 64 비트 프로세서 (더 큰 레지스터, 더 많은 명령)의 전체 성능을 사용할 수 있습니다. 즉, 동시에 더 많은 작업을 수행 할 수 있습니다. 32 비트 프로세서는 32 비트 Windows OS 만 지원합니다.


3
이것은 x64에 대해서는 정확하지만 일반적으로 올바르지 않습니다.
ChrisInEdmonton

1
32 비트 프로세서는 이러한 프로세서 아키텍처에서 실행되도록 설계된 모든 운영 체제를 실행합니다.
Waxhead

분명히 ARM64에서 실행할 수 없습니다 32 비트 x86 OS, 그래서 32 and 64 bit OS can run on a 64 bit processor일반적으로 정확하지 않습니다
phuclv

@ Phúc 32 비트 트윈을 지원하지 않는 64 비트 프로세서가있을 수 있습니다. 그러나 당신은 당신의 주장에 잘못된 논리를 사용합니다. 32 비트 MicroSparc의 SunOS 4.4.1은 ARM32에서도 실행되지 않습니다. 논리 수단을 사용하면 일반적으로 32 비트 OS가 32 비트 프로세서에서 실행될 수있는 것은 올바르지 않습니다. 일반적인 상식을 무시한다면 Android 개발자가 Wintel 컴퓨터에서 Android ARM 이미지를 실행할 때 32 비트 ARM OS가 Intel i386 / x64에서 실행된다고 주장 할 수 있습니다. 물론 OS는 올바른 프로세서 제품군을위한 것이며 물론 OS는 물리적 하드웨어에서 실행되며 에뮬레이션이 아닙니다 (충분히
Tino
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.