Windows 7 x64マシンのRAMが192GB以下に制限されるのは何ですか?


117

マザーボード、BIOSなどが、個々のマシンにインストールまたは使用できるRAMの量に上限を設定する場合があることを知っています。ただし、Windows 7 x64の最大RAMを定義するものは何ですか?

それはOSの基本的なアーキテクチャ上の制限ですか?異なるWindows 7バージョンには異なるRAMの最大値があります(スターターエディション<= 2GB、プロフェッショナル<= 192 GB)。実際に変更される可能性がありますか?

比較として、Ubuntu 64xは最大1024GBのRAMを使用できます。


3
可能性のある重複した64ビットOSとRAM
Ƭᴇcʜιᴇ007

1
彼らは物理的な限界を選びます。Windows 7のがリリースされたときに非サーバ市場におけるメモリの192ギガバイト以上をサポートする一切のハードウェアがなかった
Ramhound

5
Windows 8をインストールします。ここでは、Pro / Enterpriseは512GB RAMを使用できます。
magicandre1981 14

回答:


185

短い答え:ライセンス

方程式からハードウェアを除いて、それは主に人工的なソフトウェアの制限です:

[The]制限は、という名前の関数を呼び出すことによってレジストリから取得されますZwQueryLicenseValue。この関数自体は、Microsoftが公開しているシンボルファイルの名前が付いている内部プロシージャから呼び出されますMxMemoryLicense

出典:32ビットWindows Vistaのライセンスメモリ

追加情報

もちろん、文書化されていない形式でもレジストリに保存されたライセンスデータは、ユーザーによって簡単に変更される可能性があります。そのため、Microsoftには、ライセンスデータがMicrosoftの希望どおりに残っていることを確認するための精巧なスキームがあります。カーネルは、ライセンスデータが改ざんされているかどうかのリポジトリであり、この目的のために、さらに2つの関数をエクスポートExGetLicenseTamperStateExSetLicenseTamperStateます。

出典:ソフトウェアライセンス

­

ExGetLicenseTamperState

この[文書化されていない]関数は、ライセンスデータが改ざんされているかどうかをカーネルに尋ねます。

内部使用は、ほぼ1時間ごとに繰り返されるタイマーで行われます。改ざん状態がであることが判明した場合4、Windowsは停止します。バグチェックコードはSYSTEM_LICENSE_VIOLATION0x9A)で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に対応できます。

参考文献


32
これは、分析により適切なソースにリンクするため、最良の回答です。
ケビンパンコ14

9
ほんの少しの防御:ソースコードは同じかもしれませんが、サポートがなければそこにあったはずのコードとは必ずしも同じではありません。例として、プロセッサが多い場合にスケーラビリティを改善するために多くの作業が行われました(こちらの「グローバルディスパッチャーロック」を参照してください:tomshardware.com/news/microsoft-windows-server,6589.html)。このコードはすべてのエディションでほぼ確実に同じですが、Windowsの上位エディションはより多くのCPUをサポートします。しかし、より多くのCPUをサポートするには、より多くの作業が必要でした。その仕事にもっと費用をかけるのは公平ですか?
マークSowul 14

8
要するに:min(license_limit、physical_limit)
akira 14

2
Windowsなどの非常に多くのコピーを販売する@ AndonM.Coleman製品は、ライセンスごとの開発コストが、ライセンスごとの他のほとんどのコストに比べてわずかです。最初の6か月でWindows 8が1億を超えるライセンスを販売したというオンライン記事があります。Windows 8 / 8.1の使用期間中、ライセンスごとの開発コストは、小売ボックスおよびボックスごとのコンテンツの生産コストよりも低くなると予想しています。通常、Windowsの新しいバージョンは最初から作成されていません。Windows 8 / 8.1 / 2012はすべて非常に似ており、内部ではvista / 7/2008に似ています。XP /
2003/2000

5
誤解しないでください。新しいバージョンでは、古いバージョンよりも改善するための作業が行われています。しかし、メモリ管理のようなものは、バージョン間でほぼ同じままです。新しいハードウェアは、以前のテストでは明らかではなかった問題を強調するため、多くの場合、いくつかの調整が行われます。ただし、メインコードは製品グループ内で同じままです。
BeowulfNode42 14

53

マイクロソフトはそのようにライセンスします。彼らはおそらく、より多くのリソースで実行するようにライセンスされているWindows Server製品を購入することを望んでいます。SQL Serverなどの他の製品でも同じです。SQL Server Expressには制限が設けられているため、さらにリソースが必要な場合は、それを許可する製品を購入する必要があります。


6
彼と彼、Windows Serverは、学生(に無料で利用可能ではないドリームスパーク私たちのために、それは、Windowsのコピーを購入するよりも、それを得るために、より実現可能ですので(何所属)...、)
gparyani

2
これは、上記32ビットのWindows XPとは、PAEをサポートすることができる理由の一つであるが、MSは、4GBのRAMに制限を制限
phuclv

3
@MattH 3GBの制限は、上部Gigがペリフェラルにメモリマップされるためです
ラチェットフリーク14

2
@MattHそれはよくある誤解です。例として、公式のWindows Server 2008システム要件を見てください:「最大(32ビットシステム):4GB(標準)または64GB(エンタープライズおよびデータセンター)。」この場合、4 GBがライセンス制限であり、64 GBが物理アドレス拡張の制限です(チップセットが再マッピングをサポートしていると仮定)。
and31415 14

3
消費者向け32ビットWindowsが4GBを超えるアドレス空間の使用を拒否する理由は、PAEを認識しておらず、使用するとBSODを引き起こすレガシー32ビットドライバーが多すぎるためです。MSがそれを有効にすると、サポートの悪夢になります。
アンドリューメディコ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.