32비트에서 32비트 long 배열을 1억개 할당했을때,
100M개잖아요.
32비트가 4바이트이니까,
32비트에서는 400MB 쳐묵쳐묵해야 정상 맞져?
그런데 64바이트 OS에서는 응용프로그램이 32비트라고 해도, 64비트속에 32비트가 호환되는거니까,
64비트의 단위의 데이터 교환이 되는거라서,
2배인 800MB 쳐묵쳐묵 해야하는거 아닌가여?
왜 똑같이 400MB만 쳐묵쳐묵 하는걸까여?
그냥 메모리는 지 크기대로 냅두고,
CPU버스에 실을때만 64비트 단위라 이건가여?
기계어 명령어 하나의 길이와, 메모리 주소의 길이가 64비트로 바뀐거지, 메모리의 할당에는 차이가 없음
AMD64(흔히 말하는 64비트는 그럼)
ㄴ 확실히 char(byte)랑 integer(2byte,word)를 해봐도 딱 지 크기만큼 되네여. 나는 그냥 무조건 4바이트 단위인줄 알았는데.
거기다 모든 변수형은 기계어에서 고정 숫자로 박히기 때문에 64비트 CPU라고 해도 변수 크기가 확 늘어나지 못함
cpu와 os 가 협력해서 가상의 32bit 환경(32bit process)을 만들어 줍니다. 작업관리자에서 *32로 끝나는 프로세스들입니다. 사용 메모리량은 동일합니다.