Pengertian dari virtual memory adalah penyimpanan data sementara yang
menggunakan teknik pemisahan antara memori fisik dan memori logis yang disimpan
pada komponen hard disk. Virtual memory bisa disebut dengan pagging file pada system
operasi windows. Dengan menggunakan teknik tersebut kita dapat mengeksekusi
program dengan cara hanya memasukkan Sebagian program ke dalam memori, tidak
perlu seluruh program ikut masuk ke dalam memori. Sebelum membahas lebih lanjut
mengenai virtual memory, kita perlu mengetahui apa saja manfaat dan tujuan dari
mempelajari virtual memori itu sendiri.
Secara objektif, tujuan dari memperlajari virtual
memory adalah sebagai berikut :
1. Untuk mendeskripsikan atau menggambarkan apa saja manfaat dari system pada
virtual memori
2. Untuk menjelaskan konsep dari demand pagging, place-replacement algoritma,
dan alokasi dari page frames atau halaman frame
3. Untuk mendiskusikan atau membahas mengenai prinsip dari model working-set
4. Untuk menguji hubungan antara memori bersama dan file yang dipetakan memori
5. Untuk mengeksplorasi tentang bagaimana cara mengelola atau mengatur memori
kernel
Selain itu, adapula latar belakang dari memori virtual :
1. Ketika hendak mengeksekusi memori, kode harus ada dan sangat dibutuhkan pada
memori itu, tetapi seluruh program ini jarang digunakan karena sering terdapat
kesalahan kode atau error code, penggunaan yang tidak biasa secara rutin, serta
struktur data yang besar.
2. Program tidak memerlukan seluruh kode program secara bersamaan, atau
program memerlukan kode program secara bergantian saja.
3. Ketika menjalankan program, perlu mempertimbangkan kemampuan untuk
menjalankan program yang hanya dapat memuat Sebagian saja.
• Program tidak lagi dibatasi oleh batas memori fisik
• Setiap program hanya membutuhkan memori yang sedikit saat dijalankan
sehingga dalam waktu bersamaan dapat menjalankan lebih banyak
program
– peningkatan penggunaan CPU dan keluaran yang dijalankan tanpa
adanya peningkatan dalam waktu respons atau waktu penyelesaian.
• Dalam memuat atau menukar program ke dalam memori, I/O yang
dibutuhkan lebih sedikit sehingga pengguna dapat menjalankan setiap
program dengan lebih cepat.
4. Memori virtual memisahkan logis pengguna dari memori fisik
• Untuk mengeksekusi program, hanya memerlukan Sebagian dari program
di dalam memori
• Oleh karena itu, ruang alamat logis dapat jauh lebih besar daripada ruang
alamat fisik
• Ruang alamat dapat memungkinkan digunaan bersamaan oleh beberapa
proses
• Pembuatan proses dapat dijalankan dengan lebih efisien
• Dapat menjalankan berbagai program secara bersamaan
• Untuk memuat atau menukar proses, hanya memerlukan I/O yang lebih
sedikit
5. Ruang alamat virtual dapat diartikan sebagai pandangan logis tentang bagaimana
prosesnya tersimpan di memori.
Biasanya dimulai dari alamat 0, alamat yang berdekatan sampai akhir ruang
angkasa. Sementara itu, memori fisik diatur dalam bingkai halaman. Untuk
menjalankan fungsinya, MMU harus memetakan logika ke fisik
6. Di samping itu, memori virtual dapat diimplementasikan melalui halaman
permintaan dan segmentasi permintaan
Jika dibandingkan dari ukurannya, virtual memori lebih besar penyimpanannya
daripada memori fisik. Penjelasan dalam bentuk gambar dapat dilihat pada lampiran 1)
Virtual-address Space atau ruang alamat virtual biasanya mendesain ruang alamat
logis pada tumpukan untuk memulai alamat logis Max dan tumbuh “turun” sementara
tumpukan tumbuh “naik”. Hal itu dapat memaksimalkan penggunaan dari ruang alamat.
Ruang alamat yang tidak digunakan di antara keduanya dapat menimbulkan lubang.
Tidak memerlukan memori fisik sampai heap atau stack tumbuh untuk diberikan kepada
halaman baru. Ruang alamat virtual dapat memungkinkan ruang alamat yang jarang
digunakan menjadi lubang yang tersisa untuk pertumbuhan, secara dinamis seperti
perpustakaan, dll. System Pustaka dibagikan melalui pemetaan ke ruang alamat virtual.
Ruang alamat virtual membagikan memori bersama dengan cara memetakan halaman
yang dibaca dan ditulis ke dalam ruang alamat virtual itu sendiri. Halaman dapat
dibagikan selama fork() dengan mempercepat proses pembuatannya. Penjelasan dalam
gambar dapat dilihat di lampiran 2).
Untuk membagikan library dengan menggunakan memori virtual dapat dilihat pada
lampiran 3).
Demand pagging atau halaman permintaan dapat membaw seluruh proses ke dalam
memori pada waktu muat atau waktu tunggu. Atau dapat juga membawa halaman ke
dalam memori hanya ketika dibutuhkan saja. Kelebihan yang didapat dari demand
pagging adalah lebih sedikit I/O yang dibutuhkan atau bahkan tidak memerlukan I/O,
memori yang dibutuhkan lebih sedikit, respon dalam penggunaannya lebih cepat, serta
jumlah pengguna lebih banyak. Demand pagging mirip dengan system pagging dengan
swapping (diagram dapat dilihat di lampiran 4) ). Halaman yang diperlukan berupa
referensi untuk itu. Apabila referensi tidak valid, maka proses batal, sedangkan apabila
tidak ada dalam memori maka harus dibawa ke memori. Lazy swapper – jangan pernah
menukar halaman ke dalam memori kecuali halaman tersebut akan dibutuhkan. Swapper
yang berhubungan dengan halaman adalah pager.
Menurut konsep dasar, dengann menggunakan swapping, pager menebak halaman
mana yang akan digunakan sebelum bertukar lagi. Sebagai gantinya, pager hanya
membawa halaman – halaman itu ke dalam memori. Bagaimana cara menentukan
kumpulan halaman itu? Yaitu memerlukan fungsionalitas MMU yang baru untuk
menerapkan demand pagging atau paging permintaan. Jika halaman yang dibutuhkan
sudah menjadi penghuni memori, maka tidak ada perbedaan dari halaman nonpermintaan. Jika halaman diperlukan dan bukan merupakan penghuni memori, maka
perlu mendeteksi dan memuat halaman ke dalam memori dari penyimpanan. Tanpa
mengubah perilaku program. Pemrogram juga tidak perlu mengubah kode.
Valid-invalid Bit : dengan setiap entri table halaman, valid-invalid bit dikaitkan ( v ⇒
in-memory – memory resident, i ⇒ not-in-memory). Awalnya, valid-invalid bit disetel ke
i pada semua entri. Contohnya dapat dilihat di lampiran 5). Selama penerjemahan alamat
MMU, jika valid-invalid bit dalam table halaman entri adalah i, maka akan
mengakibatkan kesalahan halaman.
Contoh table halaman saat beberapa halaman tidak ada di memori utama dapat dilihat
di lampiran 6).
Page fault atau kesalahan halaman dapat terjadi jika ada referensi halaman di halaman
pertama itu akan muncul perangkap pada system operasi yang bertuliskan “page fault”
atau kesalahan halaman.
1. System operasi akan mencari atau melihat tabel lainnya untuk memutuskan.
Apabila referensi tidak valid, maka akan batal. Atau bisa juga dalam keadaan lain
yaitu hanya tidak dalam memori.
2. Temukan bingkai atau frame gratis
3. Tukar halaman ke dalam frame atau bingkai melalui operasi disk yang sudah
dijadwalkan
4. Atur ulang tabel untuk menunjukkan halaman sekarang di memori
(set validasi bit = v)
5. Mulai ulang atau restar instruksi yang menyebabkan kesalahan halaman
Langkah – langkah untuk mengatasi adanya kesalahan halaman dalam bentuk gambar
dapat dilihat di lampiran 7)
Demand paging atau halaman permintaan memiliki berbagai aspek, yaitu :
1. Kasus ekstrim dapat terjadi apabila program dimulai dengan proses tanpa halaman
di memori. System operasi menetapkan penunjuk instruksi atau arahan ke
instruksi pertama dari proses dan untuk setiap proses halaman lain pada akses
pertama. Hal itu dapat disebut sebagai paging permintaan murni atau pure demand
paging.
2. Semestinya, instruksi yang diberikan mampu mengakses banyak halaman yang
dapat menyebabkan kesalahan pada beberapa halaman. Pertimbangkan dalam
pengambilan dan pemecahan kode instruksi yang menambahkan 2 angka dari
memori dan menyimpan hasilnya Kembali ke memori. Kesalahan berkurang
karena lokalitas referensii.
3. Dukungan pada perangkat keras dibutuhkan untuk permintaan paging. Tabel
halaman dengan valid/invalid bit, memori sekunder (swap perangkat dengan
ruang swap), dan istruksi restart
Intruksi mulai ulang dengan pertimbangan intruksi yang dapat mengakses beberapa
lokasi yang berbeda. Yang pertama ada blok bergerak yang dapat dilihat di lampiran 8),
selanjutnya ada lokasi kenaikan atau penurunan secara otomatis.