Memori aplikasi 32 bit digunakan dalam sistem operasi 64 bit.

13

Jika sistem operasi saya 64 bit, dapatkah aplikasi 32 bit saya menggunakan memori 64 bit (> 3.5GB)?

Pete2k
sumber

Jawaban:

6

Jika aplikasi sadar AWE maka mereka dapat menggunakan ruang alamat di luar 4Gb, meskipun kurang efisien daripada aplikasi 64-bit. Bahkan dimungkinkan untuk proses 32-bit di bawah varian Windows 32-bit untuk mengakses lebih dari ruang alamat 32-bit akan memungkinkan, jika PAE diaktifkan dan proses tersebut mampu menggunakannya.

Proses 32-bit individual (yang tidak sadar AWE) biasanya terbatas pada 3Gb (Gb pertama dari ruang alamat virtualnya dicadangkan untuk tindakan terkait kernel) tetapi jika Anda menjalankan beberapa proses maka mereka akan dapat menggunakan lebih banyak dalam total (masing-masing dapat menggunakan hingga 3Gb, total memori yang diizinkan) karena ruang alamat virtual mereka tidak dibagi.

Batas menjadi per-proses lebih membantu dalam lingkungan seperti Unix di mana layanan cenderung berbasis proses daripada berbasis thread (beberapa utas dalam satu proses berbagi sumber daya proses dan karenanya berbagi ruang alamat virtual 3Gb tunggal) seperti yang lebih umum di bawah Windows (memulai proses baru di Windows cukup mahal sehingga utas lebih disukai, di sebagian besar lingkungan Unix memulai proses baru tidak menghabiskan lebih banyak sumber daya daripada memulai utas baru) . Ini tidak terlalu membantu untuk mesin yang hanya menjalankan SQL Server, misalnya, karena hanya akan menjadi satu proses sehingga akan mencapai batas 3Gb (beberapa edisi dapat dikonfigurasi agar AWE sadar tetapi tidak semua, dan Fitur dijadwalkan akan dihapus dalam rilis besar berikutnya) .

Serta proses 32-bit dapat menggunakan lebih dari 3Gb secara total OS akan dapat menggunakan memori yang tidak digunakan untuk cache disk, sehingga mungkin tidak sia-sia, dengan asumsi proses tidak membuka file dengan cara seperti itu untuk memberitahu OS untuk tidak repot-repot melakukan ini.

David Spillett
sumber
Proses 32-bit dengan set IMAGE_FILE_LARGE_ADDRESS_AWARE memiliki batas 4 GB, bukan 3. msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Mark Sowul
5

Jika aplikasi menggunakan AWE , maka ya (meskipun ini tidak terbatas pada OS 64-bit). Tanpa itu, proses ini masih terbatas pada ruang alamat 4GB.

Ignacio Vazquez-Abrams
sumber
-1, Sementara benar, saya pikir jawaban parsial menyesatkan karena tidak ada proses 32bit (non AWE) yang akan memiliki 4GB RAM tersedia untuk itu.
pipTheGeek
@pipTheGeek Erroneous: Proses 32-bit dengan IMAGE_FILE_LARGE_ADDRESS_AWARE set = 4GB tersedia. msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Mark Sowul
@ Mark - Saya sudah lupa itu, dan saya sudah mengoreksi jawaban saya di bawah ini. Saya masih berpikir jawaban ini tidak lengkap.
pipTheGeek
3

Agak, tergantung pada apa yang Anda maksud.

Dengan asumsi Windows ...

Jika OS 64-bit, proses 32-bit secara default mendapatkan 2 GB ruang alamat virtual pengguna-alamat. Jika PE header file .exe ditandai dengan bendera IMAGE_FILE_LARGE_ADDRESS_AWARE, maka prosesnya akan mendapatkan 4 GB ruang alamat virtual yang dapat dialamatkan oleh pengguna. Dalam kedua kasus tersebut, ruang alamat virtual kernel sama dengan proses 64-bit, karena dibagi di semua proses. Sebagai catatan, proses 64-bit yang tidak mengatur flag IMAGE_FILE_LARGE_ADDRESS_AWARE juga hanya memiliki akses ke 2 GB ruang alamat virtual pengguna.

Hal-hal yang Anda dengar tentang flag boot khusus, sakelar 3 GB, / 3GB, atau / userva semuanya tentang sistem operasi 32-bit dan tidak berlaku pada Windows 64-bit.

Ini semua sudah berlalu dengan sangat rinci pada halaman Memory Limits untuk Windows Rilis Microsoft .

@ David Spillett menjawab juga menyentuh titik lain: Banyak proses, semua terbatas pada 2 GB ruang pengguna, masih dapat menggunakan sejumlah besar RAM jika tersedia, seperti halnya cache file.

afrazier
sumber
0

Proses 32 bit pada OS 32 bit memiliki ruang alamat 4GB, 2GB di antaranya disediakan oleh OS, 2GB tersedia untuk proses tersebut.
Ada sebuah saklar yang dapat ditentukan untuk OS (/ 3GB) yang mengubah jumlah yang disediakan untuk OS menjadi hanya 1GB dan memungkinkan proses untuk memiliki 3GB, TAPI, hanya jika proses menyatakan sendiri sebagai alamat besar yang menyadari bendera. dari dieksekusi.

Pada OS 64 bit proses 32 bit akan mendapatkan 4GB jika alamatnya besar, 2GB sebaliknya.

Semua ini untuk proses sadar AWE. Jika proses tersebut mampu menggunakan AWE maka, seperti yang orang lain katakan, ia dapat menggunakan ruang alamat yang besar, tetapi kurang efisien daripada proses 64 bit.

PAE memungkinkan OS 32 bit untuk menggunakan lebih dari 4GB RAM, namun, ia memiliki masalah kompatibilitas dan dinonaktifkan di XP oleh salah satu paket layanan sehingga hanya tersedia pada versi OS server.

pipGeek
sumber