Virtual memory atau memori virtual adalah memori yang tidak sebenarnya yang tidak terletak di memori utama, memori tersebut dibuat untuk menampung proses yang memori utama tidak bisa menampungnya sehingga diperlukan tempat tambahan. Program disimpan dalam bentuk page, page atau bagian yang akan dimuat ke dalam memori utama adalah page yang penting atau diperlukan. Tempat yang biasa digunakan untuk memori virtual adalah di memori disk. Namun data atau program yang tersimpan pada memori disk akan dipanggil ke dalam memori utama dikarenakan memori disk memiliki kecepatan yang lebih lambat dibandingkan dengan memori utama atau RAM.
Alasan penggunaan memori virtual:
1. Program harus berada di memori untuk dijalankan, tetapi tidak semua kode dalam
program tersebut dijalankan.
2. Semua kode program tidak dibutuhkan dalam waktu yang bersamaan.
3. Pemisahan user logical memory dari memori fisik.
Dalam pemetaannya dalam memori virtual terdapat dua teknik, yaitu:
1. Demand Paging
2. Demand Segmentation
Demand Paging
Merupakan salah satu penerapan virtual memori yang umum digunakan. Hal utama dalam demand paging adalah pages hanya dimuat ketika mereka dibutuhkan selama eksekusi program. Kita menggunakan lazy sapper, yang dinamakan dengan pager. lazy swapper tidak pernah meng-swap sebuah page ke dalam memori kecuali jika page tersebut dibutuhkan. Ketika sebuah proses terjadi swapped-in, pager menebak page mana yang akan digunakan sebelum proses tersebut di-swapped-out kembali. Disamping dari meng-swapping semua proses, pager hanya membawa page-page yang dibutuhkan ke dalam memori. Jadi, hal tersebut menjadikan memori lebih efisien, menurunkan swap time dan jumlah memori fisik yang dibutuhkan.
Manfaat:
- virtual memori yang besar
- lebih efisien dalam penggunaan memori
- multiprogramming yang tidak terbatas
Kekurangan: Jumlah tabel dan jumlah overhead prosesor untuk menangani interupsi halaman lebih besar
Valid and Invalid Page
Digunakan untuk membedakan antara page yang ada di dalam memori utama dan page yang ada di dalam disk. Akan disetel ke “valid” saat halaman berada di memori, dan akan disetel ke “tidak valid” saat halaman tidak valid atau page valid tetapi ada di disk. Namun, page fault akan terjadi jika proses mencoba mengakses sebuah page yang tidak masuk ke memori utama.
Page Fault
Page fault terjadi ketika sebuah program mengakses sebuah blok memori yang tidak tersimpan di memori fisik atau RAM. Page fault memberitahu sistem operasi bahwa harus memindahkan data ke memori virtual, kemudian mentransfernya dari disk ke memori utama. Ketika data dipindahkan ke dalam memori fisik, program akan berjalan seperti normal kembali.
Page Replacement
Page replacement adalah teknik yang digunakan sistem operasi untuk memutuskan page memori mana untuk di-swape out, memberitahu disk ketika sebuah page memori perlu dialokasikan. Paging terjadi apakah page fault terjadi dan page yang kosong tidak bisa digunakan untuk pengalokasian dikarenakan page tersebut tidak ada atau jumlah page yang kosong lebih sedikit dibandingkan dengan yang dibutuhkan.
- Cari lokasi page yang diinginkan di disk.
- Cari frame yang kosong. Jika ada frame yang kosong, gunakan. Jika tidak ada, maka gunakan algoritma page replacement.
- Bawa page yang diinginkan ke dalam frame yang kosong, perbarui page dan tabel frame.
- Lanjutkan proses dengan memulai kembali instruksi yang menyebabkan trap tersebut.
Trashing
Trashing merupakan aktivitas paging yang tinggi. Dinamakan trashing ketika sebuah proses memerlukan waktu yang lebih pada paging dibandingkan waktu eksekusi. Proses tidak punya cukup frame untuk menampung semua page untuk eksekusi sehingga proses ini sering terjadi swape-in dan swape-out untuk tetap terus dieksekusi. Trashing dapat terjadi dikarenakan pemanfaatan CPU yang terlalu rendah. Jika hal tersebut terjadi, akan menambah tingkat dari multiprogramming, proses-proses baru akan ditambahkan ke dalam sistem