x86 응용 프로그램은 x64 운영 체제에서 64비트 주소를 사용합니까?

x86 응용 프로그램은 x64 운영 체제에서 64비트 주소를 사용합니까?

궁금합니다... 64비트 OS는 32비트 응용 프로그램을 실행할 수 있습니까? Windows에서는 이 권리를 달성하기 위해 WoW64를 사용합니까?

제 질문은 이러한 응용 프로그램이 실행될 때 64비트 주소를 사용합니까, 아니면 32비트 주소를 사용합니까?입니다. 메모리 사용량 때문에 궁금했는데..

답변1

내부적으로 모든 프로그램은 약 2GB의 메모리 공간을 사용하므로(3GB를 얻도록 설정할 수 있는 플래그가 있음) 따라서 64비트 포인터가 필요하지 않습니다(32비트 포인터는 제대로 작동함). OS는 내부적으로 모든 64비트 실제 메모리 관리를 처리할 수 있습니다.

이것이 메모리 사용량과 어떤 관련이 있는지 잘 모르겠습니다.

답변2

32비트 응용 프로그램은 32비트 주소만 볼 수 있습니다. WoW64는 32비트 애플리케이션을 위해 64비트 메모리 공간 내에서 32비트 환경을 시뮬레이션합니다.

답변3

가상 메모리 주소와 실제 메모리 주소를 구별하지 않기 때문에 귀하의 질문은 그다지 구체적이지 않습니다.

예, x86 프로그램은 더 많은 메모리와 리소스를 사용하게 됩니다. 32비트 가상 주소 공간이 있지만 그 아래에는 메모리 관리자(MM 또는 MMM)가 x64 포인터를 사용합니다. 하지만 그렇게 하려면 많은 노력이 필요합니다.

지금까지 가장 큰 리소스 비용은 드라이버입니다. 보안으로 인해 상당한 커널 변경이 있었고 드라이버의 상당 부분을 다시 작성해야 했습니다.

내부적으로 모든 프로그램은 약 2GB의 메모리 공간을 사용하므로(3GB를 얻도록 설정할 수 있는 플래그가 있음) 따라서 64비트 포인터가 필요하지 않습니다(32비트 포인터는 제대로 작동함). OS는 내부적으로 모든 64비트 실제 메모리 관리를 처리할 수 있습니다.

나는 이것이 사실이 아니라고 믿습니다. 모든 프로그램에는 4GB(32비트 가상 주소 공간)가 표시되지만 커널은 물리적 주소 공간을 절반으로 나눕니다. 여러분에게 친숙한 두 개의 2GB는 물리적 메모리 주소를 나타냅니다.

관련 정보