Apa yang membatasi mesin Windows 7 x64 hingga <= 192GB RAM?

117

Saya tahu motherboard, BIOS, dll dapat menetapkan batas atas pada berapa banyak RAM yang dapat kita instal atau gunakan pada masing-masing mesin. Namun, apa yang menentukan RAM maksimum untuk Windows 7 x64?

Apakah itu batasan arsitektur mendasar dari OS? Versi Windows 7 yang berbeda memiliki maksimum RAM yang berbeda (Edisi pemula <= 2GB, Profesional <= 192 GB). Apakah ini sesuatu yang sebenarnya bisa diubah?

Sebagai perbandingan, Ubuntu 64x memungkinkan hingga 1024GB RAM.

Lucas Fortini
sumber
3
kemungkinan duplikat dari OS 64 Bit dan RAM
Ƭᴇcʜιᴇ007
1
Mereka memilih keterbatasan fisik. Ketika Windows 7 dirilis, tidak ada perangkat keras yang mendukung lebih dari 192GB memori di pasar non-server
Ramhound
5
instal Windows 8, di sini Pro / Enterprise dapat menggunakan RAM 512GB.
magicandre1981

Jawaban:

185

Jawaban singkat: lisensi

Tidak termasuk perangkat keras dari persamaan, sebagian besar merupakan pembatasan perangkat lunak buatan:

Batas [diambil] dari registri dengan memanggil fungsi bernama ZwQueryLicenseValue, yang itu sendiri dipanggil dari prosedur internal yang Microsoft nama file simbol yang diterbitkan sebagai MxMemoryLicense.

Sumber: Memori Berlisensi di Windows Vista 32-Bit

Informasi tambahan

Tentu saja, data lisensi yang disimpan dalam registri bahkan dalam format tidak berdokumen dapat dengan mudah diubah oleh pengguna, yang mereka akan memiliki beberapa insentif untuk mencoba karena Microsoft membebankan harga yang sangat berbeda untuk lisensi yang berbeda. Oleh karena itu Microsoft memiliki skema yang rumit untuk memeriksa apakah data lisensi tetap seperti yang diinginkan Microsoft. Kernel adalah tempat penyimpanan untuk apakah data lisensi telah dirusak, dan untuk tujuan ini mengekspor dua fungsi lagi, ExGetLicenseTamperStatedan ExSetLicenseTamperState.

Sumber: Lisensi Perangkat Lunak

­

ExGetLicenseTamperState

Fungsi [tidak berdokumen] ini menanyakan kernel apakah data lisensi telah dirusak.

Penggunaan internal dalam timer yang berulang sekitar setiap jam. Jika ditemukan kondisi rusak 4, maka Windows berhenti. Kode pemeriksaan bug adalah SYSTEM_LICENSE_VIOLATION( 0x9A), dengan 0x1Bsebagai argumen pertama.

Sumber: ExGetLicenseTamperState

Contoh praktis

Katakanlah Anda memiliki komputer dengan 32 GiB RAM, dan Anda menginstal Windows 7 Home Premium x64 (64-bit). Dalam hal ini Anda akan dibatasi hingga 16 GiB. Jika Anda menggunakan Windows Anytime Upgrade , dan meng-upgrade ke edisi yang lebih mahal, tiba-tiba batasnya akan ditetapkan menjadi 192 GiB.

Kesimpulan

Semua edisi Windows 7 berbagi kode sumber yang sama. Perbedaan utama adalah jumlah fitur / batasan yang diaktifkan atau dinonaktifkan. Edisi klien profesional dan lebih tinggi tidak memiliki batas atas berapa banyak RAM yang dapat mereka tangani, dan hanya dilisensikan untuk apa yang dijamin Microsoft untuk didukung.

Selain itu, Windows 7 EULA secara eksplisit mengatakan bahwa Anda tidak boleh "menggunakan perangkat lunak untuk layanan hosting perangkat lunak komersial", mengisyaratkan Microsoft berasumsi bahwa jika Anda membutuhkan lebih banyak RAM yang untuknya edisi lisensi klien tertinggi, maka yang Anda inginkan adalah server lisensi. Mitra server Windows 7 (yaitu, Windows Server 2008 R2) dapat menggunakan hingga 2 TiB RAM dalam edisi Enterprise dan Datacenter.

Saat teknologi bergerak cepat, apa yang diterima kemarin mungkin tidak cukup besok. Untuk mengejar ketinggalan, Windows 8 menaikkan batas masing-masing menjadi 128 GiB dan 512 GiB untuk edisi Core dan Pro / Enterprise. Itu hanya berlaku untuk versi 64-bit, meskipun: versi 32-bit masih dibatasi pada 4 GiB. Versi server, Windows Server 2012, dapat mengatasi hingga 4 TiB RAM dalam edisi yang lebih tinggi.

Bacaan lebih lanjut

rev dan31415
sumber
32
Ini adalah jawaban terbaik karena ini terhubung ke sumber yang bagus dengan analisis.
Kevin Panko
9
Hanya sedikit pertahanan: kode sumbernya mungkin sama, tetapi tidak harus kode yang sama yang akan ada di sana tanpa dukungan. Sebagai contoh, banyak pekerjaan yang dilakukan untuk meningkatkan skalabilitas ketika Anda memiliki banyak prosesor (lihat "kunci operator global" di sini: tomshardware.com/news/microsoft-windows-server, 6589.html ). Kode itu hampir pasti sama di semua edisi, namun edisi Windows yang lebih tinggi mendukung lebih banyak CPU. Tetapi mendukung lebih banyak CPU membutuhkan lebih banyak pekerjaan. Apakah adil mengenakan biaya lebih banyak untuk pekerjaan itu?
Mark Sowul
8
singkatnya: min (license_limit, physical_limit)
akira
2
@ AndonM.Coleman produk seperti Windows yang menjual begitu banyak salinan biaya pengembangan per lisensi tidak signifikan dibandingkan dengan sebagian besar biaya lain per lisensi. Saya melihat artikel online yang mengatakan Windows 8 menjual lebih dari 100 juta lisensi dalam 6 bulan pertama. Selama umur Windows 8 / 8.1 saya berharap biaya pengembangan per lisensi akan kurang dari biaya memproduksi kotak ritel dan konten per kotak. Versi Windows baru biasanya tidak ditulis dari awal. Windows 8 / 8.1 / 2012 semuanya SANGAT mirip, dan serupa di bawah tenda ke vista / 7/2008. XP /
2003/2000
5
Jangan salah paham, versi baru telah dikerjakan untuk membuatnya lebih baik daripada versi lama. Tetapi hal-hal seperti manajemen memori tetap hampir identik antara versi. Beberapa penyesuaian sering dilakukan ketika perangkat keras baru menyoroti masalah yang tidak terbukti dalam pengujian sebelumnya. Tetapi kode utama tetap sama dalam suatu kelompok produk.
BeowulfNode42
53

Microsoft melisensikannya seperti itu. Mereka mungkin ingin Anda pergi dan membayar untuk produk Windows Server yang berlisensi untuk berjalan dengan sumber daya yang lebih besar. Itu sama dengan produk lain seperti SQL Server. SQL Server Express memiliki batasan yang ditempatkan di atasnya sehingga jika Anda memerlukan lebih banyak sumber daya, Anda harus membeli produk yang mengizinkannya.

Dave Lucre
sumber
6
He he, Windows Server tersedia gratis untuk siswa ( dreamspark ), jadi bagi kami, lebih layak untuk mendapatkan itu daripada membeli salinan Windows ... (tidak ada afiliasi)
gparyani
2
ini adalah salah satu alasan mengapa windows XP 32-bit dan di atasnya dapat mendukung PAE tetapi MS membatasi batas untuk RAM 4GB
phuclv
3
@MattH batas untuk 3GB adalah karena Gig atas adalah memori yang dipetakan ke peripheral
ratchet freak
2
@ Matth Itu kesalahpahaman umum. Sebagai contoh, lihat Persyaratan Sistem Windows Server 2008 resmi : "Maksimum ( sistem 32-bit ): 4GB (Standar) atau 64GB (Perusahaan dan Datacenter)." Dalam hal ini 4 GB adalah pembatasan lisensi, dan 64 GB adalah batas Ekstensi Alamat Fisik (dengan asumsi chipset mendukung pemetaan ulang).
and31415
3
Alasan konsumen 32-bit Windows menolak untuk menggunakan lebih dari 4GB ruang alamat adalah bahwa ada terlalu banyak driver 32-bit lama yang tidak mengetahui PAE dan akan menyebabkan BSODs jika digunakan dengannya. Itu akan menjadi mimpi buruk dukungan jika MS mengaktifkannya.
Andrew Medico