マザーボードやBIOSなどは、個々のマシンにインストールしたり、使用したりできるRAMの量に上限を設けることがあると思いますが、Windows 7 x64のRAMの最大値はどのように定義されていますか?しかし、Windows 7 x64の最大RAMは何を定義していますか?
OSの根本的なアーキテクチャ上の制限なのでしょうか?Windows 7のバージョンによってRAMの最大値が異なります(Starter edition <= 2GB、Professional <= 192GB)。実際に変更される可能性があるものなのでしょうか?
比較対象として、Ubuntu 64xでは、1024GBものRAMを搭載することができます
117 Lucas Fortini 2014-02-03
簡潔な答えは、ライセンスです
式からハードウェアを除くと、ほとんどが人為的なソフトウェアの制限です
制限値はレジストリから
ZwQueryLicenseValue
という名前の関数を呼び出すことで取得されますが、この関数はそれ自体が内部プロシージャから呼び出されます
Additional information
もちろん、文書化されていない形式であってもレジストリに保存されているライセンスデータは、ユーザーによって簡単に変更される可能性があります。そのため、マイクロソフトでは、ライセンスデータがマイクロソフトの思い通りになっているかどうかをチェックするための精巧なスキームを用意しています。カーネルはライセンスデータが改ざんされているかどうかのリポジトリであり、そのために
ExGetLicenseTamperState
とExSetLicenseTamperState
の2つの関数をエクスポートしていますソース。ソフトウェア ライセンス
ExGetLicenseTamperState
この [文書化されていない] 関数は、ライセンスデータが改ざんされたかどうかをカーネルに問い合わせます
内部での使用は、約1時間ごとに再帰するタイマーにあります。改ざん状態が
4
であることがわかれば、Windows は停止します。バグチェックのコードはSYSTEM_LICENSE_VIOLATION
(0x9A
)で、0x1B
を第一引数としています
実践例
32 GiB の RAM を搭載したコンピュータを持っていて、Windows 7 Home Premium x64 (64 ビット) をインストールしているとしましょう。その場合、16GiBに制限されます。Windows Anytime Upgradeを使用し、より高価なエディションにアップグレードした場合、突然制限は192GiBに設定されます
Conclusion
Windows 7 のすべてのエディションは同じソースコードを共有しています。主な違いは、有効または無効になっている機能/制限の数です。プロフェッショナル版とそれ以上のクライアント版には、処理できる RAM の量に上限はなく、Microsoft がサポートすることを保証しているものだけがライセンスされています
さらに、Windows 7 の EULA には、明示的に「商用ソフトウェア ホスティング サービスにソフトウェアを使用してはならない」と書かれており、Microsoft は、最高のクライアント版がライセンスされている以上の RAM が必要な場合、本当に欲しいのはサーバー ライセンスであると仮定していることをほのめかしています。Windows 7 のサーバーの対応するもの (つまり、Windows Server 2008 R2) Enterprise と Datacenter エディションでは、最大 2 TiB の RAM を使用することができます
技術の進歩が速いので、昨日は受け入れられたものでも明日には十分ではないかもしれません。それに追いつくために、Windows 8 は Core エディションでは 128GiB、Pro/Enterprise エディションでは 512GiB に制限を上げました。しかし、これは64ビット版にのみ適用されます:32ビット版はまだ4GiBに制限されています。サーバー版のWindows Server 2012では、上位エディションで最大4TiBのRAMに対応している
Further reading
- 32ビットWindows Vistaのライセンスメモリ
- Windows の限界に挑む。物理メモリ
- Windowsリリースのメモリ制限
- 物理アドレス拡張
- Binary prefix
- Windows 7のエディション – 比較表
- Windows 7 Professional EULA
- Windowsのいつでもアップグレード
185 community wiki 2014-02-06
マイクロソフトはそのようにライセンスを与えています。おそらく、より大きなリソースで動作するようにライセンスされたWindows Server製品にお金を払って欲しいと思っているのでしょう。これはSQL Serverのような他の製品でも同じです。SQL Server Expressには制限があるので、より多くのリソースが必要な場合は、それを許可する製品を購入しなければなりません
53 Dave Lucre 2014-02-03