32비트와 64비트 운영체제의 차이
가장 큰 차이점은 virtual address space를 사용할 수 있는 영역이 다르다고 할 수 있습니다.
이진수(0,1)로 처리하는 컴퓨터는 여러가지 숫자와 문자를 표시하기 위해서 0과 1로 배열되는 기본조합을 사용하는데
32비트는 32자리로 64비트는 64자리로 숫자나 문자를 표현할 수 있습니다.
1비트 = 2개 표현가능
2비트 = 4개 표현가능
3비트 = 8개 표현가능
......
32비트 = 4G개 표현가능
.......
64비트 = ?????
32비트 운영체제의 경우 OS의 memory manager가 32비트형식의 주소형식까지만 처리할 수 있었기 때문에
운영체제는 최대 메모리 4GB까지만 인식이 가능했었습니다. 그래서 메모리 사용에 있어서 제약을 받을 수 밖에 없었습니다.
일부 기존의 32비트 윈도우즈 제품군에서는 PAE(Physical Address Extension)옵션을 사용하여 32비트에서 추가로 4비트를 처리할 수 있도록 변경하여 36비트로 처리할 수있게 함으로써 데이터센터OS의 경우 최대 64GB까지 메모리 활용이 가능했습니다.
하지만, 64비트 운영체제의 경우 64비트형식의 주소형식까지 처리를 할 수 있으므로 기존 32비트방식보다 비약적으로 메모리 주소 핸들링이 가능해집니다. 최근의 64비트 운영체제는 약 1TB정도까지 virtual address space로 활용이 가능합니다. 물론 실제로는 더 많은 주소번지를 활용할 수 있지만 제약을 건 것 같습니다. 이러한 기술적인 동향은 서버 제조사에서도 메모리 슬롯을 매우 많이 할애하도록 영향을 주었습니다. 최근의 제품들을 보면 메모리 슬롯이 매우 많이 늘어난 것을 확인하실 수 있을 겁니다.
64비트 운영체제에 32비트의 application을 사용할 수 있지만 운영체제에서 인식한 32비트 이상의 virtual address space를 32비트 코드로 짜여있는 application은 32비트 이상의 공간을 활용할 수가 없으므로 성능은 기존의 32비트정도의 성능이 나온다라고 볼 수 있습니다.
그럼 지금까지 swap 파티션으로 활용되었던 가상의 메모리 공간은 별로 필요하지 않을 것입니다. swap의 용도는 원래 부족한 메모리 용량을 디스크공간으로 보완해 보고자하는 원리였지만 최근의 메모리 가격하락 및 대용량화로 인해 그 의미가 많이 퇴색되었지요. 그러면 64비트의 환경에서 swap의 사용은 불필요한가? 정답은 아직은 저도 잘 모르겠습니다. 전통적인 OS의 메모리 관리 architecture는 그대로 유지를 하면서 사용하도록 되어있는 듯 합니다. 굳이 메모리 스왑을 없앨필요까지는 없었나 봅니다. 어짜피 메모리를 많이 장착하면 swap의 이용률은 거의 없을 테니까요.