短い答え:ライセンス
方程式からハードウェアを除いて、それは主に人工的なソフトウェアの制限です:
[The]制限は、という名前の関数を呼び出すことによってレジストリから取得されますZwQueryLicenseValue
。この関数自体は、Microsoftが公開しているシンボルファイルの名前が付いている内部プロシージャから呼び出されますMxMemoryLicense
。
出典:32ビットWindows Vistaのライセンスメモリ
追加情報
もちろん、文書化されていない形式でもレジストリに保存されたライセンスデータは、ユーザーによって簡単に変更される可能性があります。そのため、Microsoftには、ライセンスデータがMicrosoftの希望どおりに残っていることを確認するための精巧なスキームがあります。カーネルは、ライセンスデータが改ざんされているかどうかのリポジトリであり、この目的のために、さらに2つの関数をエクスポートExGetLicenseTamperState
しExSetLicenseTamperState
ます。
出典:ソフトウェアライセンス
ExGetLicenseTamperState
この[文書化されていない]関数は、ライセンスデータが改ざんされているかどうかをカーネルに尋ねます。
内部使用は、ほぼ1時間ごとに繰り返されるタイマーで行われます。改ざん状態がであることが判明した場合4
、Windowsは停止します。バグチェックコードはSYSTEM_LICENSE_VIOLATION
(0x9A
)で0x1B
、最初の引数があります。
ソース:ExGetLicenseTamperState
実用的な例
32 GiBのRAMを搭載したコンピューターがあり、Windows 7 Home Premium x64(64ビット)をインストールするとします。その場合、16 GiBに制限されます。Windows Anytime Upgradeを使用して、より高価なエディションにアップグレードすると、突然制限が192 GiBに設定されます。
結論
すべてのWindows 7エディションは同じソースコードを共有します。主な違いは、有効化または無効化される機能/制限の数です。Professional以上のクライアントエディションでは、処理できるRAMの量に上限はなく、Microsoftがサポートすることを保証するライセンスが付与されています。
さらに、Windows 7 EULAは、「商用ソフトウェアホスティングサービスにソフトウェアを使用することはできない」と明示的に述べており、Microsoftは、最高のクライアントエディションがライセンスされているものよりも多くのRAMが必要な場合、本当に必要なものはサーバーであると仮定しましたライセンス。Windows 7の対応するサーバー(つまり、Windows Server 2008 R2)は、EnterpriseおよびDatacenterエディションで最大2 TiBのRAMを使用できます。
テクノロジーの高速化に伴い、昨日は容認できたことで明日は十分ではないかもしれません。追いつくために、Windows 8はCoreエディションとPro / Enterpriseエディションの制限をそれぞれ128 GiBと512 GiBに引き上げました。ただし、64ビットバージョンにのみ適用されます。32ビットバージョンは4 GiBに制限されています。サーバーバージョンのWindows Server 2012は、上位エディションで最大4 TiBのRAMに対応できます。
参考文献