-2

"32 비트"는 2^32와 같습니다. 즉, 32 비트 OS에서 4GB의 메모리를 정의 할 수 있습니다. "64 비트"는 2^64이므로 15EB를 허용합니다. 따라서 64 비트 OS를 사용하면 더 많은 메모리를 컴퓨터에 저장할 수 있습니다.32 비트 OS에서 4GB 메모리가 64 비트 OS에서 2GB가 아닌 이유는 무엇입니까?

그러나 나는 다른 점을 혼동합니다.

시스템에서 4GB의 실제 메모리가 있고 32 비트 정수로 4GB를 나누면 32 비트 정수에서 몇 개의 정수를 저장할 수 있습니다 (call 그것 N). 그리고 64 비트에서 계산은 4GB를 64 비트 정수로 나눈 값이므로 정수의 절반 만 저장할 수 있습니다. 결과적으로 64 비트로 동일한 메모리를 가진 정수를 저장할 수 없습니다.

이 말은 Microsoft가 32 비트 및 64 비트 버전의 OS에서이 메모리를 "4GB"로 표시함으로써 속이려는 것을 의미합니까?

답변

4

아니요, Microsoft는 두 경우 모두 메모리를 동일하게 표시하지 않습니다.

"32 비트"대 "64 비트"는 포인터의 크기 만 참조합니다. 두 유형의 시스템 모두 8 비트 바이트을 가지고 있으므로 32 비트 또는 64 비트 운영 체제를 사용하는지 여부에 관계없이 동일한 메모리가 4 기가 바이트 바이트이됩니다.

크기가 같은 것은 아닙니다. int (C)으로 정의 된 정상적인 정수는 두 시스템에서 모두 32 비트입니다. long int으로 정의 된 정수조차도 Windows라면 두 시스템 모두에서 32 비트입니다 (Linux는 64 비트 시스템에서 64 비트를 만들지 만). 따라서 OS에 적용되는 "32 비트"또는 "64 비트"용어는 포인터 이외의 다른 것들의 크기와 거의 관련이 없음을 알 수 있습니다.

그리고 컴퓨터의 메모리에 저장된 대부분의 데이터는 포인터가 아니거나 크기를 변경할 수도 있고 변경하지 않을 수도 있습니다. 사운드 파일이나 프로그램의 컴퓨터 명령어에있는 이미지 픽셀 또는 문자열 바이트 또는 16 비트 샘플입니다. 그 크기의 변화는 전혀 없습니다. 따라서 일반적으로 32 비트 또는 64 비트 운영 체제를 사용하는지 여부에 관계없이 같은 양의 "실제 정보"를 같은 메모리에 저장할 수 있습니다.

(현재 메모리의 일부 데이터는 포인터이므로 일부 포인터를 다루는 경우 64 비트 운영 체제를 사용하면 더 많은 메모리를 사용할 수 있음) 매우 드문 경우지만 문제는 있지만 매우 드물지만 여전히 메모리의 바이트 수가 같기 때문에 더 많은 메모리가 필요합니다.)

+0

쿨 !! 고마워 회신 :) – John

0

x86 모두 바이트 주소 지정을 사용합니다. 4GB는 32 비트 또는 64 비트 OS에서 동일합니다.

x86_64는 명령어 크기가 크게 증가하지 않거나 동일하게 유지되도록 신중하게 설계되었습니다. 또한 모든 데이터 유형의 크기가 증가하는 것은 아닙니다. 대부분의 작업은 여전히 ​​32 비트 변수를 사용합니다. 크기가 실제로 두 배가되는 유일한 유형은 포인터입니다. 사실 64 비트 프로그램의 메모리 사용량은 32 비트 버전의 두 배가 아닙니다. 보통 윈도우 64 비트는 윈도우 32 비트보다 약 30 % 더 많은 메모리를 소비합니다.