Wednesday, April 14, 2010

Memory Mapped Files pada OS Windows NT

Memory Mapped Files

Memori adalah sebuah alat penyimpanan seperti RAM atau ROM yang dapat menyimpan serta mengakses kembali file yang telah disimpan. Saya akan menjelaskan tentang metode pengaturan memori (Memory Management) Memory Mapped Files yang dapat dilakukan oleh sistem operasi Windows NT. Memory Mapped Files menawarkan suatu fitur pengaturan memori yang unik yang mengizinkan aplikasi-aplikasi untuk mengakses file-file pada disk dengan cara yang sama seperti saat aplikasi-aplikasi tersebut mengakses memori dinamik, yaitu melalui pointer-pointer. Dengan kemampuan ini, anda dapat memetakan sebuah gambaran tentang semua atau sebagian dari file pada disk ke suatu jangkauan alamat-alamat (range of addresses) yang spesifik di dalam alamat ruang proses anda (process’s address space). Dan setelah itu selesai, mengakses isi dari suatu file memory-mapped itu mudah, yaitu dengan melepas referensi sebuah pointer pada jangkaun alamat-alamat yang diinginkan.

Salah satu keuntungan menggunakan Memory Mapped Files adalah sistem akan menjalankan semua transfer data untuknya di dalam data berhalaman 4K (4K pages of data). Secara internal, semua halaman-halaman (pages) dari memori diatur oleh Virtual Memory Manager (VMM). VMM menentukan kapan suatu halaman (page) harus dihalamankan (paged) ke disk, halaman mana yang harus dibebaskan untuk digunakan oleh aplikasi lain, dan berapa banyak halaman setiap aplikasi dapat memakai dari semua bagian dari memori fisik. Karena VMM melakukan semua Input Output disk dengan cara yang sama, membaca dan menulis memori halaman satu per satu, VMM telah dioptimasikan untuk membuat semua itu berjalan secepat mungkin. Melimitasi instruksi baca dan tulis (read and write) disk ke sekuensi halaman-halaman 4K berarti beberapa baca dan tulis yang lebih kecil akan secara efektif dicache ke dalam suatu operasi yang lebih besar, mengurangi jumlah pergerakan dari kepala baca/tulis hard disk (read/write head). Membaca dan menulis halaman-halaman memori disebut juga paging (penghalamanan).

Keuntungan yang lain dari Mapped Memory Files adalah semua dari interaksi I/O yang nyata sekarang terjadi pada RAM dalam bentuk pengalamatan memori standar (standard memory addressing). Sementara penghalamana (paging) disk terjadi secara bergiliran dalam background, transparan terhadap aplikasi. Meskipun tidak ada pertambahan pada performa yang dapat dilihat pada saat membaca suatu file ke dalam RAM, transaksi disk lainnya dapat diuntungkan dengan besar. Sebagai contoh, suatu aplikasi mengimplemetasi sebuah struktur file basisdata flat-file (flat-file database file structure), dimana basisdatanya terdiri dari ratusan record-record sekuensial. Mengakses suatu record dalam suatu file itu sesederhana menentukan lokasi record (suatu byte offset dalam filenya) dan membaca datanya dari file. Lalu, untuk setiap pembaruan (update), recordnya harus ditulis ke file untuk menyimpan perubahannya. Untuk record yang lebih besar, ini mengkin lebih menguntungkan untuk membaca hanya sebagian dari record ke dalam memori satu per satu saat dibutuhkan. Sayangnya, setiap kali suatu bagian baru record diperlukan, baca file (file read) yang lain dibutuhkan. Mapped Memory Files bekerja sedikit lain. Saat record pertama kali diakses, seluruh halaman/halama-halaman 4K dari memori yang mengandung record dibaca ke dalam memori. Semua akses subsequent kepada record itu akan langsung ke halaman/halaman-halaman dari memori di dalam RAM. I/O pada disk dibutuhkan atau diterapkan sampai file tersebut ditutup atau diflush.

Kesimpulan

Memory Mapped Files menawarkan metode yang unik untuk mengatur memori dalam interface programming aplikasi Win32. Memory Mapped Files mengizinkan suatu aplikasi untuk memetakan alamat mayanya (virtual address) secara langsung kepada suatu file pada disk. Sekali suatu file telah di memory-mapped, mengakses isinya disimlifikasi dengan menlepas referensi suatu pointer.

Suatu file memory-mapped juga dapat dipetakan oleh lebih dari satu aplikasi secara simultan. Ini merepresentasikan satu-satunya mekanisme untuk dua atau lebih proses-proses untuk secara langsung membagi (share) data pada Windows NT. Dengan file memory-mapped, proses-proses dapat memetakan suatu file umum (common file) atau sebagian dari file ke lokasi-lokasi unik di ruang proses mereka sendiri. Teknik ini melestarikan integritas dari ruang proses pribadi (private address space) untuk semua proses-proses pada Windows NT.

Memory Mapped Files juga berguna untuk memanipulasi file-file berukuran besar. Karena menciptakan suatu file memory-mapped membutuhkan sedikit resources fisik, file yang berukkuran sangat besar dapat dibuka oleh proses dengan efek yang sedikit pada sistem. Lalu, bagian kecil dari file tersbut yang disebut “views” dapat dipetakan ke dalam alamat ruang proses sebelum melakukan I/O.

Source: http://msdn.microsoft.com/en-us/library/ms810613(v=MSDN.10).aspx