Pada Windows, dalam keadaan normal proses 32 bit hanya dapat mengakses RAM 2GB (atau 3GB dengan sakelar khusus di file boot.ini). Saat menjalankan proses 32 bit pada sistem operasi 64 bit, berapa banyak memori yang tersedia? Apakah ada sakelar atau pengaturan khusus yang dapat mengubah ini?
86
Jawaban:
2 GB secara default. Jika aplikasinya memiliki ruang alamat yang besar (ditautkan dengan / LARGEADDRESSAWARE), ia mendapat 4 GB (bukan 3 GB, lihat http://msdn.microsoft.com/en-us/library/aa366778.aspx )
Mereka masih terbatas pada 2 GB karena banyak aplikasi bergantung pada bagian atas petunjuk menjadi nol.
sumber
since many application depends on the top bit of pointers to be zero
maksud Anda bahwa bit 32 dari skema pengalamatan tidak dianggap atau digunakan saat melintasi ruang alamat dari proses tersebut.4 GB dikurangi apa yang digunakan oleh sistem jika Anda menghubungkan dengan / LARGEADDRESSAWARE.
Tentu saja, Anda harus lebih berhati-hati dengan aritmatika penunjuk jika Anda menyetel bendera itu.
sumber
Sepertinya tidak ada yang menyentuh fakta bahwa jika Anda memiliki banyak aplikasi 32-bit yang berbeda, subsistem wow64 dapat memetakannya di mana saja di memori di atas 4G, jadi pada jendela 64-bit dengan memori yang cukup, Anda dapat menjalankan lebih banyak aplikasi 32-bit daripada pada sistem 32-bit asli.
sumber
Proses 32-bit masih terbatas pada batasan yang sama di OS 64-bit. Masalahnya adalah bahwa penunjuk memori hanya selebar 32-bit, sehingga program tidak dapat menetapkan / menyelesaikan alamat memori apa pun yang lebih besar dari 32 bit.
sumber
Proses tunggal 32-bit di bawah OS 64-bit dibatasi hingga 2 Gb. Tetapi jika dikompilasi ke file EXE dengan
IMAGE_FILE_LARGE_ADDRESS_AWARE
bit set, maka batasnya adalah 4 GB, bukan 2 Gb - lihat https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspxHal-hal yang Anda dengar tentang bendera boot khusus, 3 GB,
/3GB
sakelar, atau/userva
semuanya tentang sistem operasi 32-bit dan tidak berlaku pada Windows 64-bit.Lihat https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx untuk lebih jelasnya.
Mengenai sistem operasi 32-bit, bertentangan dengan kepercayaan, tidak ada batasan fisik sebesar 4GB untuk sistem operasi 32-bit. Misalnya, Sistem Operasi Server 32-bit seperti Microsoft Windows Server 2008 32-bit dapat mengakses hingga 64 GB(Edisi Windows Server 2008 Enterprise dan Datacenter) - melalui Ekstensi Alamat Fisik (PAE), yang pertama kali diperkenalkan oleh Intel di Pentium Pro, dan kemudian oleh AMD dalam prosesor Athlon - ini mendefinisikan hierarki tabel halaman dari tiga tingkat, dengan entri tabel masing-masing 64 bit, bukan 32, memungkinkan CPU ini untuk langsung mengakses ruang alamat fisik yang lebih besar dari 4 gigabyte - jadi secara teoritis, OS 32-bit dapat mengakses 2 ^ 64 byte secara teoritis, atau 17.179.869.184 gigabyte, tetapi segmennya adalah dibatasi oleh 4GB. Namun, karena alasan pemasaran, Microsoft telah membatasi memori maksimum yang dapat diakses pada sistem operasi non-server menjadi hanya 4GB, atau, bahkan, 3GB secara efektif. Jadi, satu proses dapat mengakses lebih dari 4GB pada OS 32-bit - dan server Microsoft SQL adalah contohnya.
Proses 32-bit di bawah 64-bit Windows tidak memiliki kerugian dibandingkan dengan proses 64-bit dalam menggunakan ruang alamat virtual kernel bersama (juga disebut ruang sistem ). Semua proses, baik itu 64-bit atau 32-bit, di bawah 64-bit Windows berbagi ruang sistem 64-bit yang sama.
Mengingat fakta bahwa ruang sistem dibagi di semua proses , pada Windows 32-bit , proses yang membuat sejumlah besar pegangan (seperti utas, semaphore, file, dll.) Mengkonsumsi ruang sistem oleh objek kernel dan dapat kehabisan memori bahkan jika Anda memiliki banyak memori yang tersedia secara total. Sebaliknya, pada Windows 64-bit , ruang kernel 64-bit dan tidak dibatasi oleh 4 GB. Semua panggilan sistem yang dibuat oleh aplikasi 32-bit dikonversi ke panggilan 64-bit asli dalam mode pengguna .
sumber
Anda memiliki batasan dasar yang sama saat menjalankan proses 32bit di bawah Win64. Aplikasi Anda berjalan di 32 tetapi subsistem yang paling baik terlihat seperti Win32, dan ini akan termasuk pembatasan memori untuk proses Anda (lebih rendah 2GB untuk Anda, atas 2GB untuk OS)
sumber
Batasnya bukan 2g atau 3gb, 4gb untuk 32bit.
Alasan orang berpikir 3gb-nya adalah karena OS menunjukkan 3gb gratis ketika mereka benar-benar memiliki ram sistem 4gb.
Total RAM-nya 4gb. Jadi jika Anda memiliki kartu video 1 gb yang dihitung sebagai bagian dari ram total yang dilihat oleh OS 32bit.
4Gig not 3 not 2 got it?
sumber