Yang saya pahami tentang OS 32-bit adalah, alamatnya diekspresikan dalam 32 bit, jadi paling-paling OS itu bisa menggunakan 2 32 = ruang memori 4G - Saya berasumsi unitnya byte, jadi 4GB.
Apakah ini berarti jika mesin apa pun dengan OS 32-bit (baik Windows atau Unix) memiliki lebih dari 4GB total RAM + file halaman pada hard disk, misalnya 8GB RAM dan 20GB file halaman, memorinya tidak akan pernah "habis" "?
Dengan "habis" maksud saya bahwa meningkatkan RAM atau file halaman tidak akan membantu kinerja; tentu saja, selalu memungkinkan aplikasi akan terus meminta memori dari OS tetapi gagal.
Demikian pula, jika mesin OS 32-bit ini memiliki 2GB RAM dan 2GB halaman file, meningkatkan ukuran file halaman tidak akan membantu kinerja. Apakah ini benar?
Jawaban:
Yang paling bahwa proses dapat mengatasi adalah 4GB. Anda berpotensi membingungkan memori dengan ruang alamat . Suatu proses dapat memiliki lebih banyak memori daripada ruang alamat. Itu sangat legal dan sangat umum dalam pemrosesan video dan aplikasi intensif memori lainnya. Suatu proses dapat dialokasikan puluhan GB memori dan menukar ke dalam dan keluar dari ruang alamat sesuka hati. Hanya 2 GB yang bisa masuk ke ruang alamat pengguna sekaligus.
Jika Anda memiliki garasi empat mobil di rumah Anda, Anda masih dapat memiliki lima puluh mobil. Anda tidak bisa menyimpan semuanya di garasi Anda. Anda harus memiliki penyimpanan tambahan di tempat lain untuk menyimpan setidaknya 46 di antaranya; mobil mana yang Anda simpan di garasi dan yang Anda simpan di tempat parkir terserah Anda.
Tentu bukan berarti itu. Satu proses dapat menggunakan lebih banyak memori dari itu! Sekali lagi jumlah memori yang digunakan proses hampir sepenuhnya tidak terkait dengan jumlah ruang alamat virtual yang digunakan proses. Sama seperti jumlah mobil yang Anda simpan di garasi Anda sama sekali tidak terkait dengan jumlah mobil yang Anda miliki.
Selain itu, dua proses dapat berbagi halaman memori non-pribadi . Jika dua puluh proses semua memuat DLL yang sama, semua proses berbagi halaman memori untuk kode itu. Mereka tidak berbagi ruang alamat memori virtual , mereka berbagi memori .
Maksud saya, kalau-kalau tidak jelas, adalah bahwa Anda harus berhenti memikirkan memori dan ruang alamat sebagai hal yang sama, karena mereka sama sekali tidak sama.
Anda memiliki lima puluh mobil dan garasi empat mobil, dan tempat parkir 100 mobil di jalan. Anda meningkatkan ukuran tempat parkir menjadi 200 tempat. Apakah ada mobil Anda yang lebih cepat karena Anda sekarang memiliki 150 tempat parkir tambahan daripada 50 tempat parkir tambahan?
sumber
Memang benar bahwa CPU hanya dapat mengatasi RAM maksimal 4Gb. Namun, CPU saat ini menggunakan MMU ( Memory management unit ) untuk menerjemahkan alamat memori khusus proses ke alamat memori fisik.
MMU ini digunakan untuk semua jenis trik yang berbeda, dari isolasi memori (proses A tidak dapat memanipulasi memori proses B) hingga berbagi memori (proses A dapat mengakses wilayah memori fisik yang sama dengan proses B dan dapat bertukar data dengan cara ini).
Meskipun CPU 32-bit hanya mendukung memori 4Gb per proses, ia dapat mengatasi hingga 64Gb RAM saat menggunakan Ekstensi Alamat Fisik . Ini memungkinkan proses A untuk menggunakan memori 4Gb pertama, sementara proses B menggunakan 4Gb berikutnya. Secara total, lebih dari 4Gb memori fisik digunakan, tetapi jumlah total memori yang digunakan proses tunggal masih dibatasi pada 4Gb .
PAE didukung di Linux sejak kernel versi 2.3.23 dan pada beberapa rasa Windows Server 32-bit, tetapi tidak pada Windows XP 32-bit, Vista atau 7.
Jika CPU Anda tidak mendukung PAE, Anda akan dibatasi hingga 4GB memori fisik (atau kurang tergantung pada faktor lain).
Harap dicatat sistem operasi Anda masih dapat mengusir bagian memori fisik ke disk (file halaman) terlepas dari CPU yang mendukung PAE. Ini memastikan Anda dapat memulai banyak proses yang menggunakan lebih dari 4Gb digabungkan. Satu-satunya dampak yang dimiliki PAE adalah apakah Anda dapat menyimpan 4Gb proses B dalam memori fisik saat menjalankan proses A.
sumber
Berbicara secara spesifik tentang varian Windows 32-bit, mereka telah mendukung lebih dari 4GB RAM sejak varian Windows 2003 (dan Anda juga bisa mendapatkan peretasan kernel untuk Windows 7 untuk memungkinkan Anda menggunakan semua RAM Anda dalam 32-bit). Namun, ini harus dibayar, seperti yang Anda jelaskan di bagian pertama dari pertanyaan Anda.
Dalam sistem operasi 32-bit, ukuran penunjuk (alamat memori) sama dengan panjang kata CPU, 32-bit, yang memungkinkan (seperti yang Anda sebutkan) 2 ^ 32 = ruang memori 4GB. Windows juga mengambil pendekatan "memori virtual" untuk aplikasi, sehingga setiap aplikasi memiliki ruang memori sendiri.
Karena setiap pointer hanya memiliki lebar 32-bit, masing-masing pointer aplikasi hanya dapat mengatasi memori hingga 4GB, meskipun sistem dapat mendukung lebih dari 4GB RAM. Sejauh yang saya tahu, ini adalah satu-satunya peringatan untuk menggunakan lebih dari 4GB RAM dalam sistem operasi 32-bit. Secara total, Anda dapat memiliki banyak aplikasi menggunakan lebih dari 4GB RAM, tetapi setiap proses tertentu hanya dapat mengalokasikan / mengakses hingga 4GB.
Kembali ke pertanyaan Anda, katakanlah Anda memiliki program yang menggunakan 2GB RAM. Jika Anda memiliki 10 instance dari program ini, itu adalah 20GB. Semua 8GB RAM Anda akan habis, serta 12GB pagefile lainnya. Jadi ya, di bawah sistem operasi 32-bit, lebih dari mungkin untuk menggunakan memori ini.
Menambah ukuran pagefile biasanya tidak akan meningkatkan kinerja (kecuali RAM dan pagefile Anda diatur ke minimum absolut, atau diset sedemikian rendahnya sehingga komputer Anda terus menerus meronta-ronta). Namun, itu akan mencegah komputer Anda kehabisan memori (virtual). Setiap kali ada yang perlu dibersihkan ke pagefile, Anda sudah mendapatkan performa yang luar biasa (karena hard drive adalah perintah yang besarnya lebih lambat dari RAM Anda).
sumber
Ketika sebuah prosesor dikatakan 32-bit, itu berarti dapat beroperasi dengan angka 32-bit menggunakan instruksi tunggal. Ini tidak ada hubungannya dengan lebar bus alamatnya, yang pada arsitektur Intel adalah 36-bit sejak Pentium Pro dirilis pada tahun 1995.
Keterbatasan 4GB yang terkenal berasal dari kenyataan bahwa sebagian besar perangkat lunak PC menggunakan model memori Flat di mana setiap byte memori dapat ditangani oleh sebuah pointer. Karena sebuah pointer harus sesuai dengan register yang akan digunakan, dan register berukuran 32-bit, Anda dibatasi hingga 4GB.
sumber
mmap
memori tambahan.