짧은 대답 : 라이센스
방정식에서 하드웨어를 제외하면 대부분 인공 소프트웨어 제한 사항입니다.
[The] 제한은 ZwQueryLicenseValue
Microsoft가 발행 한 심볼 파일 이름으로 내부 프로 시저에서 호출되는이라는 함수를 호출하여 레지스트리에서 검색 됩니다 MxMemoryLicense
.
출처 : 32 비트 Windows Vista의 라이센스 메모리
추가 정보
물론, 문서화되지 않은 형식으로도 레지스트리에 저장된 라이센스 데이터는 사용자가 쉽게 변경할 수 있습니다. Microsoft가 라이센스마다 다른 가격을 청구하기 때문에 시도해 볼 인센티브가 있습니다. 따라서 Microsoft는 라이센스 데이터가 원하는대로 유지되는지 확인하기위한 정교한 체계를 갖추고 있습니다. 커널은 라이센스 데이터가 변경되었는지 여부의 저장소이며,이를 위해 두 가지 이상의 기능을 수출, ExGetLicenseTamperState
하고 ExSetLicenseTamperState
.
출처 : 소프트웨어 라이센스
ExGetLicenseTamperState
이 [언급되지 않은] 기능은 라이센스 데이터가 변조되었는지 커널에 묻습니다.
내부 사용은 대략 1 시간마다 반복되는 타이머에 있습니다. 변경 상태가로 확인되면 4
Windows가 중지됩니다. 버그 확인 코드는 SYSTEM_LICENSE_VIOLATION
( 0x9A
)이며 0x1B
첫 번째 인수입니다.
출처 : ExGetLicenseTamperState
실용적인 예
RAM이 32GiB 인 컴퓨터가 있고 Windows 7 Home Premium x64 (64 비트)를 설치 한다고 가정 해 보겠습니다 . 이 경우 16GiB로 제한됩니다. Windows Anytime Upgrade 를 사용 하고 더 비싼 에디션으로 업그레이드하는 경우 갑자기 한계가 192 GiB로 설정됩니다.
결론
모든 Windows 7 에디션은 동일한 소스 코드를 공유합니다. 주요 차이점은 활성화 또는 비활성화되는 기능 / 제한 수입니다. Professional 및 상위 클라이언트 버전은 처리 할 수있는 RAM의 양에 대한 상한이 없으며 Microsoft가 지원하도록 보증하는 것에 대해서만 라이센스가 부여됩니다.
또한 Windows 7 EULA는 "상업용 소프트웨어 호스팅 서비스에 소프트웨어를 사용할 수 없음"이라고 명시 적으로 명시하고 있습니다. 이는 Microsoft가 더 많은 RAM이 필요한 경우 가장 높은 클라이언트 버전에 라이센스가 부여 된 서버이고 실제로 원하는 것은 서버라고 가정했음을 암시합니다 특허. Windows 7의 서버 서버 (Windows Server 2008 R2)는 Enterprise 및 Datacenter 에디션에서 최대 2TiB의 RAM을 사용할 수 있습니다.
기술이 빠르게 발전함에 따라 어제 수용 할 수 있었던 것만으로는 충분하지 않을 수 있습니다. 따라 잡기 위해 Windows 8은 Core 및 Pro / Enterprise 버전 각각에 대해 128GiB 및 512GiB로 제한을 높였습니다. 그러나 64 비트 버전에만 적용됩니다. 32 비트 버전은 여전히 4GiB로 제한됩니다. 서버 버전 인 Windows Server 2012는 상위 버전에서 최대 4TiB의 RAM을 처리 할 수 있습니다.
추가 자료