티스토리 뷰

32-비트 아키텍처의 한계

32-비트 버전의 Windows Server 2003은 32-비트 가상 주소 공간을 사용하기 때문에 사용할 수 있는 가상 메모리의 용량이 최대 4 GB로 제한됩니다. 더구나 이 4 GB 가상 메모리 중에는 일반적으로 운영체제만이 참조할 수 있고 모든 프로세스들이 공유하는 영역으로 2 GB가 지정되어 있기 때문에, 어플리케이션이 직접 참조할 수 있는 가상 메모리의 크기는 2 GB로 또 다시 제한됩니다.

데이터베이스를 비롯한 대부분의 어플리케이션들이 점점 더 복잡해짐에 따라, 어플리케이션 프로세스가 참조할 수 있는 가상 주소 공간의 크기가 2 GB로 제한된다는 것은 병목 현상을 초래할 수 있는 하나의 요인으로 다가오기 시작했습니다. 이를 극복하기 위해 Windows® 2000 Server에서는 boot.ini 파일에서 "/3GB" 스위치를 사용하여 4 GB의 가상 메모리의 분배 비중을 변경할 수 있게 되었습니다. 이 스위치는 운영체제가 사용할 수 있는 가상 메모리 주소 공간을 1 GB로 제한시키고, 2GB 이상의 메모리 주소 공간을 참조할 수 있도록 설계된 어플리케이션에게 3 GB를 제공합니다. 이러한 기능이 일부 어플리케이션에게 도움을 주는 것은 분명한 사실이지만, 최대 용량이 4 GB라는 기본적 한계를 극복하지는 못했습니다.

더 나아가서, /3GB 스위치를 쓰게 되면 Windows 커널은 1 GB 가상 주소 공간에서 운영되어야 합니다. 이 공간은 시스템 페이지 테이블 항목 (PTE: Page Table Entry), 페이지 풀, 비-페이지 풀, 그리고 시스템 캐시에 의해 공유되는데, 디스크의 크기가 커질수록 캐시 관리자가 사용할 수 있는 주소 공간의 크기가 제한되기 때문에 비디오를 많이 사용하는 어플리케이션에 대해서는 특히 주요한 제약 사항이 될 수 있습니다.

인텔은 Pentium Pro 프로세서를 시작으로 36-비트 실제 메모리 공간을 제공하기 시작했습니다. 36-비트 메모리 공간은 Windows Server 2003, Enterprise Edition과 Windows Server 2003, Datacenter Edition이 실제 주소 확장 (PAE: Physical Address Extensions)을 통해 각각 32 GB와 64 GB의 실제 메모리를 제공할 수 있도록 해주었습니다. 그러나 PAE를 사용하면 상당한 과부하를 동반하고, 프로그래머는 AWE (Address Windowing Extensions) API를 사용해야 하며, 무엇보다 실제 메모리의 최대 한계인 64 GB는 여전히 그리 충분하지 못합니다. 또한 이 기능이 가상 메모리 주소 공간의 최대 크기인 4 GB를 변경하지는 못했습니다.
Windows Server 2003 x64 Edition은 다음을 포함하는 다양한 배치 시나리오에서 32-비트 아키텍처의 한계를 극복할 수 있도록 만들어 졌습니다.

64-비트 아키텍처의 이점

64-비트 아키텍처로의 이동은 단일 주소 공간에서 참조 가능한 가상 메모리의 양을 4 GB에서 16 TB로 변경합니다 이러한 양의 주소 공간은 상당 기간 동안 충분한 수준이 될 것입니다. 이 가상 주소 공간은 32-비트 Windows 에서와 마찬가지로 사용자 모드와 커널 모드에 똑같이 나누어서 할당되므로, 순수한 64-비트 어플리케이션은 8 TB의 가상 주소 공간을 사용할 수 있습니다.

단기적인 측면에서 더 중요한 것은, Windows Server 2003의 x64 Edition을 사용하면 추가적인 메모리 주소 공간을 필요로 하는 32-비트 어플리케이션들이 즉각적인 효과를 볼 수 있다는 사실입니다. 이제 LMA (LARGEMEMORYAWARE) 스위치를 사용하여 컴파일 된 어플리케이션은 32-비트 아키텍처가 지원할 수 있는 최대 가상 메모리 주소 공간인 4 GB 전체를 사용할 수 있습니다. 운영체제가 32-비트 어플리케이션이 실행되어야 하는 32-비트 주소 공간을 더 이상 공유할 필요가 없어졌기 때문에, LMA를 인식할 수 있는 각각의 32-비트 프로세스에게 주어지는 가상 메모리 주소 공간의 전체 용량은 4 GB입니다. 이 어플리케이션들은 32-비트 Windows Server 2003에서 /3GB 스위치의 이점을 활용하던 바로 그 어플리케이션들입니다.

AMD Opteron 및 Intel Extended Memory 64 Technology (EM64T) 프로세서는 똑 같은 x64 Windows 플랫폼 및 이진 파일을 지원하므로, 개발자들은 사용하는 x64 프로세서의 종류와 무관하게 단일 플랫폼을 대상으로 개발하면 됩니다.

Windows Server 2003 x64 Edition 상에서 실행되는 32-비트 어플리케이션은 해당 어플리케이션이 32-비트 Windows Server 2003 상에서 실행될 때와 똑 같이 실행될 수 있도록 해주는 WOW64 (Windows on Windows 64) 에뮬레이터를 사용합니다. 이 에뮬레이터는 변환을 위한 약간의 부하를 주기는 하지만 그 효과는 그리 크지 않으며, 더 빨라진 파일 시스템 액세스 같은 다른 효과적인 기능 때문에 많은 32-비트 어플리케이션은 실제로 Windows Server 2003 x64 Edition 상에서 더 빨리 실행될 것입니다.

드라이버는 명시적으로 x64 Windows를 위해 작성되어야 합니다. 32-비트 드라이버는 지원되지 않으며, Microsoft® Exchange Server® 2003과 같이 특정 32-비트 드라이버에 의존하는 어플리케이션도 x64 버전의 Windows Server 2003 상에서 실행되지 않을 것입니다. 이러한 어플리케이션의 커널 모드 컴포넌트는 x64로 포팅 되어야 할 것입니다.

Windows Server 2003 x64 Edition은 DOS나 16-비트 어플리케이션도 지원하지 않습니다.

64-비트 Windows와 32-비트 Windows의 메모리/CPU 비교

표 1은 32-비트 및 64-비트 버전 Windows Server 2003 사이의 메모리 및 CPU 차이를 설명합니다.

일반적인 메모리 한계

32-비트

64-비트

총 가상 주소 공간

4 GB

16 TB

32-비트 프로세스 당 가상 주소 공간

2 GB (시스템 부팅 시 /3GB 스위치를 사용하면 3 GB)

/LARGEADDRESSAWARE로 컴파일 된 경우 4 GB
(그렇지 않으면 2 GB)

64-비트 프로세스 당 가상 주소 공간

해당 사항 없음

8 TB

페이지 된 풀

47 MB

128 GB

페이지 되지 않은 풀

256 MB

128 GB

시스템 PTE

660 MB ~ 900 MB

128 GB

실제 메모리 및 CPU 한계

32-비트

64-비트

Windows Server 2003, Standard Edition

4 GB / 1 ~ 4 CPU

32 GB / 1 ~ 4 CPU

Windows Server 2003, Enterprise Edition

64 GB / 1 ~ 8 CPU

1 TB / 1 ~ 8 CPU

Windows Server 2003, Datacenter Edition

64 GB / 8 ~ 32 CPU

1 TB / 8 ~ 64 CPU

표 1. 32-비트 및 64-bit Windows Server의 메모리 및 주소 공간 비교

참고: 모든 x64 버전 Windows는 다음과 같은 특징을 가집니다.

  • 16-비트 어플리케이션은 지원하지 않습니다
  • MS-DOS 어플리케이션은 지원하지 않습니다.
  • 64-비트 드라이버만이 지원됩니다. 32-비트 시스템 드라이버에 의존하는 모든 어플리케이션을 실행하기 위해서는 해당 드라이버를 64-비트 드라이버로 업데이트 해야 할 것입니다.

[참고 자료]
Memory Limits for Windows Releases
http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx

댓글
댓글쓰기 폼