Virtual memory adalah sebuah teknik yang berfungsi untuk memisahkan suatu memori Iogis dari memori fisik tersebut. Tidak semua program saat akan dieksekusi perlu berada di memori. Ruang pada memori logis bisa jauh lebih besar dibandingkan dengan memori fisik, hal ini memungkinkan dapat dikerjakan dengan beberapa proses, lebih efisien dalam membuat suatu proses, program dapat dijalankan bersama-sama, dan sedikit perangkat input dan output yang diperlukan.
Ruang alamat virtual merupakan proses diletakannya memori dengan suatu set alamat virtual memori yang dapat digunakan. Umumnya dimulai dari alamat 0, alamat yang berdampingan hingga akhir ruang. Terdapat lubang jika ruang alamat terdapat yang tidak digunakan. Terdapat pada bingkai halaman, memori fisik itu diatur. Virtual memori dapat diterapkan secara :
Demand paging merupakan suatu sistem paging yang menggunakan swapping tanpa membawa halaman ke memori fisik sampai diperlukan. Dengan hanya meletakkan memori yang diperlukan menyebabkan perangkat l/O yang dibutuhkan sedikit atau bahkan tidak perlu perangkat l/O dan memiliki respon yang cepat dan banyak. Sebelum dieksekusi, proses diletakkan di memori sekunder, saat akan dieksekusi, maka terjadi swapping ke memori. Lazy swapper digunakan untuk swapping saat suatu halaman akan digunakan, jangan menukar suatu halaman selain saat halaman itu dibutuhkan ke dalam memori. Suatu halaman yang dibutuhkan jika sudah memiliki tempat memorinya, maka tidak ada suatu hal yang beda pada non demand paging dan suatu halaman yang diperlukan yang bukan merupakan penempat memori tersebut, maka perlu dideteksi dan dimuat ke dalam memori berasal dari penyimpanan. Demand paging memerlukan suatu perangkat keras untuk mendukung proses demand paging yaitu :
Pada demand paging, memiliki beberapa keuntungan yaitu :
Proses yang perlu suatu halaman namun halaman tersebut tidak terdapat pada memori utama, maka terjadi page fault.
Terdapat suatu kasus ekstrim yang bermula dari proses tanpa halaman di suatu memori yaitu dari sistem operasi yang memutuskan penunjuk suatu intruksi ke intruksi awal dari proses menuju memori tanpa penghuni lalu menjadi page fault. Setiap halaman proses lain terdapat pada proses pertama. Intruksi yang ada sebenarnya sudah dapat mengakses banyak halaman dan menjadi page fault banyak. Pertimbangkan juga saat mengambil dan memecahkan suatu kode intruksi yang menambahkan 2 angka dari memori dan hasilnya tersimpan lalu kembali ke suatu memori. Pada demand paging juga perlu adanya dukungan perangkat keras berupa table halaman dengan bit valid atau invalid dan memori sekunder sebagai tempat swap suatu perangkat.
Berikut merupakan tahapan-tahapan pada demand paging dalam kasus buruk
Semua langkah diatas terdapat langkah yang tidak diperlukan. Terdapat tiga komponen penting pada beberapa kasus dari waktu page fault service yaitu
Saat terdapat situasi perlunya frame bebas saat proses akan dieksekusi namun tidak ada frame bebasnya, maka diperlukan page replacement. Sistem perlu mencari frame yang tidak digunakan, lalu dibebaskan. Cara membebaskan frame tersebut dengan menulis isinya untuk tempat swap dan mengganti table page yang memperlihatkan suatu page itu tidak pada memori. Rangkaian langkah untuk page fault yang butuh page replacement yaitu :
Algoritma page replacement memiliki skema yang terbilang unik. Umumnya algoritma ini diinginkan pada yang memiliki rerata page fault paling rendah. Algoritma ini melakukan evaluasi dengan dijalankannya suatu string yang berasal dari memori reference dan jumlah page fault nya dihitung. String merujuk pada memori disebut string acuan. Sring tersebut bangkit secara acak dan menyimpan suatu alamat dari memori. Kita perlu mengetahui jumlah page frame yang tersedia untuk menentukan jumlah page fault yang digunakan untuk string acuan dan suatu algoritma tertentu. Algoritma page replacement ini terdapat beberapa macamnya yaitu algoritma FIFO (first in first out), optimal, dan LRU (least recently use).
Algoritma FIFO terbilang algoritma yang paling sederhana dari yang lain. Dengan suatu halaman, algoritma FIFO mengasosiasikan halaman tersebut lalu dibawa ke memori dan tanpa perlu menyimpan suatu waktu. Jika terdapat halaman yang akan ditempatkan, maka posisi halaman lama akan tergantikan.
Lalu terdapat algoritma optimal, algoritma optimal memiliki rerata page fault terendah. Algoritma ini akan menggantikan halaman yang memang tidak akan dipakai dalam jangka waktu terlama. Algoritma ini susah mengimplementasikan rerata page fault terendah teruntuk jumlah frame yang tetap.
Algoritma berikutnya yaitu LRU (least recently use), algoritma ini adalah gabungan dari algoritma FIFO dan optimal, algoritma ini menggunakan pengetahuan yang ada di masa yang akan datang dengan mengganti halaman lama yang sudah tidak digunakan.
Diantara beberapa proses terdapat beberapa memori bebas tetap yang memiliki hubungan dengan alokasi frame. Minimum frame yang ada setiap proses ditetapkan bergantung dari jumlah memori-memori fisik yang ada.
Jika suatu proses tidak memiliki frame yang cukup, kemungkinan akan terjadi page fault dan perlu untuk mengganti sejumlah halaman. Namun jika semua halaman sudah digunakan dan kita diharuskan mengganti halaman yang tidak digunakan kembali, maka akan terjadi page fault berkelanjutan. Maka ketika ada kegiatan yang memiliki banyak waktu untuk paging ketimbang eksekusi, maka proses tersebut akan mengalamin thrashing.