Saat ini banyak sekali komputer yang menggunakan sistem 64-bit termasuk mereka yang menggunakan Windows. Namun banyak pengguna yang menggunakan sistem 64-bit ini dengan RAM yang minim. Sehingga menimbulkan pertanyaan, seberapa baikah sistem ini berjalan? Dan apakah perlu untuk mengupgrade RAM untuk menjalankan program 32-bit pada Windows 64-bit?Sistem Operasi Windows 64-bit sebenarnya tidak bisa menjalankan program 32-bit tanpa bantuan tambahan. 64-bit dan 32-bit sangatlah berbeda, dari pointer dan tipe data, bagaimana sistem memanggil (bagaimana program menggunakan sumber daya dari program yang mendasarinya). Anda perlu melakukan beberapa cara untuk membuatnya kompatibel.
Memahami WOW64
Windows menggunakan subsitem WOW64 (Windows32 on Windows64) untuk mengimbangi perbedaan. Secara efektif bekerja sebagai emulator mini Windows 32-bit pada sistem x64 dan emulator penuh pada sistem Itanium (IA64).
Sistem IA64 memerlukan emulator penuh karena perbedaan dalam instruksi prosesor dan ukuran halaman memori (4K di x86 dan x64, 8K di IA64). Karena prosesor x64 memiliki semua instruksi dari prosesor x86 dan menggunakan ukuran halaman memori yang sama, jadi tidak memiliki kebutuhan untuk emulator penuh.
Dalam kedua kasus, WOW64 menyediakan sebuah antarmuka antara versi kernel Windows 64-bit dan 32-bit dari ntdll.dll (ini berisi daftar fungsi kernel Windows inti), mencegat panggilan kernel dan mengubah mereka sehingga mereka dapat diproses oleh fungsi 64-bit asli yang disediakan oleh kernel Windows.
Ada 3 file DLL yang digunakan pada sistem x64 / IA64 untuk mencapai hal ini: wow64cpu.dll, wow64win.dll, dan wow64.dll. Fungsinya adalah untuk abstrak karakteristik prosesor dan memberikan thunks ke win32k.sys yang menyediakan fungsionalitas Windows dan ntoskrnl.exe yang berisi eksekutif, kernel, manajer memori, proses scheduler , dan elemen inti lainnya dari sistem operasi.
Thunk adalah subroutine (yang memikirkan ini sebagai serangkaian instruksi yang melakukan tugas tunggal) yang memungkinkan program untuk menjalankan fungsi umum dalam sistem.
Dalam hal ini, ia mengekstrak argumen dari program 32-bit yang sudah panggilan, mengkonversinya dengan pasangan 64-bit nya, dan membuat sistem panggilan 64-bit. Setelah kembali dari panggilan, ia akan mengubah hasil 64-bit kembali ke 32-bit dan mendorong mereka kembali ke program yang dipanggilan untuk digunakan.
Semua thunking dilakukan dalam mode pengguna (yang memiliki izin terbatas) untuk dua alasan. Pertama, meminimalkan efek bug dalam kode yang dapat mengakibatkan lubang keamanan, data korup, atau sistem crash jika berjalan dalam mode kernel.
Kedua, mengurangi dampak kinerja yang akan terjadi jika berjalan dalam mode kernel (mode yang digunakan oleh bagian penting dari sistem operasi) dikarenakan adanya tambahan beban yang terlibat bila beralih dari mode pengguna ke kernel mode dan sebaliknya.
Kembali ke sistem Itanium, ada beberapa perbedaan penting lainnya yang perlu diperhatikan. Sistem IA64 menggunakan dua file tambahan. IA32exec.bin yaitu emulator software x86 dan Wowia32x.dll yang menyediakan antarmuka antara WOW64 dan emulator perangkat lunak.
Sebuah proses 32-bit akan memuat file-file ini serta versi 64-bit nya dari ntdll.dll. Ini adalah satu-satunya binari 64-bit yang dapat dimuat ke dalam proses 32-bit. Windows 7 dan versi sebelumnya juga memiliki DLL lain, apisetschema.dll, yang akan dimuat ke dalam semua proses.
Ketika proses 32-bit dimulai, ia akan memuat Wow64.dll yang selanjutnya memuat versi 32-bit dari ntdll.dll dan apapun yang diperlukan DLL 32-bit dari % systemroot% SysWOW64. Sebagian besar file-file ini identik dengan binari pada sistem 32-bit meskipun beberapa telah ditulis ulang untuk berperilaku berbeda dengan WOW64.
Melihat daftar DLL yang dimuat, kita bisa melihat ada 9 DLL yang dimuat dalam proses Win64 yang tidak ada untuk sistem Win32.
Sekarang, kita akan melihat ukuran file, catat dan gunakan sebagai dasar untuk referensi berapa banyak memori tambahan yang harus digunakan, tetapi hasil sering kali tidak akurat. File-file ini, menurut sifatnya, dirancang untuk membagikan komponen dan hasilnya.
Program berikutnya yang membutuhkan DLL yang sama tidak memuat seluruh komponen ke dalam memori. Ia mendapatkan pointer ke komponen yang sudah dimuat, dan mengalokasikan RAM untuk elemen tambahan yang dimuat ke dalam proses.
Testing
Dalam rangka untuk melihat apa yang terjadi, saya telah menyiapkan dua mesin virtual yang menjalankan Windows 7 Ultimate dengan RAM 2 GB yang dialokasikan untuk versi 32-bit dan 64-bit. Keduanya diinstall dengan proses yang sama.
Setelah kedua sistem diinstall, saya menonaktifkan file swap pada keduanya untuk mendapatkan gambaran yang lebih baik dari penggunaan memori dengan memastikan RAM tidak bisa dialamatkan ke disk. Setelah itu selesai, install LibreOffice 5.0.3.2.
Salinan Sysinternals Process Explorer juga ditempatkan pada kedua mesin. Ini adalah alat yang saya digunakan untuk mengumpulkan informasi penggunaan memori. Settingan kolom default diubah, jadi saya bisa melihat Kerja dan penggunaan WS.
Ini daftar nomor yang bekerja yang mencerminkan jumlah RAM yang digunakan oleh program. Hal ini sedikit rumit, lebih jauh dengan merefleksikan jumlah memori yang digunakan oleh shared library bahkan jika mereka sudah dimuat oleh proses lain. Karena itu, jika Anda menambahkan seluruh kolom, adalah mungkin berakhir dengan total lebih besar dari RAM yang terpasang.
Proses yang kita periksa tidak berdiri sendiri. Berbagai program LibreOffice meluncurkan proses lain, soffice.exe, yang akan mengeksekusi namun proses lain, soffice.bin. Kita perlu melihat jumlah dari ketiga proses untuk melihat penggunaan memori yang efektif dari masing-masing program.
Untuk tes awal, saya hanya membuka Writer, Calc, dan Impress secara individual untuk melihat berapa banyak memori yang mereka konsumsi tanpa data apapun yang dimuat dan diekspor dari Process Explorer. Dengan Calc dan Impress, saya telah membuka sebuah file .xls 3,7 MB dan 3,9 MB .pptx berkas masing-masing dan mencatat penggunaan memori baru. Hasilnya dapat dilihat pada tabel di bawah ini. Semua data di KB.
Hal yang tidak terduga terjadi pada Impress. Tanpa dokumen, ia menggunakan 4,1% lebih RAM pada sistem 64-bit dan 9,9% lebih sedikit dengan dokumen dimuat. Sistem 64-bit ternyata malah menggunakan RAM kurang dari yang digunakan sistem 32-bit. Jadi ketika menjalankan program 32-bit, membutuhkan proses yang lebih panjang dari pada menjalankan program 64-bit, karena program 32-bit akan memuat pasangan 64-bit nya terlebih dahulu baru menjalankan program 32-bitnya. Tapi apakah Anda perlu meng-upgrade RAM Anda? Mungkin tidak. Perbedaannya sebenarnya tidak terlalu besar.