Secara singkat, virtual memory adalah suatu teknik yang memungkinkan pengeksekusian proses-proses yang tidak perlu sepenuhnya berada di dalam memori. Virtual Memory melakukan hal tersebut dengan cara mengabstrak memori fisik menjadi rangkaian-rangkaian penyimpanan yang sangat besar dan seragam.
Kelebihan Virtual Memory adalah sebagai berikut:
- program/proses yang ingin dijalankan dapat memiliki ukuran yang lebih besar dari memori fisik;
- suatu program/proses tidak perlu berada di dalam memori secara menyeluruh;
- proses-proses dapat berbagi memor; dan
- proses-proses dapat dibuat secara lebih efisien
Demand Paging
Demand paging adalah suatu teknik dimana page (blok virtual memori yang berdekatan dengan ukuran tetap) hanya akan dimuat jika dibutuhkan saat program dieksekusi. Hal ini membuat page yang tidak dibutuhkan tidak pernah dimuat ke memori utama. Ini mengakibatkan beberapa page untuk bersinggah di memori utama sedangkan page yang lain tetap berada di tempat penyimpanan sekunder.
Dalam demand paging terdapat yang namanya page fault, dimana page yang tidak sedang berada di dalam memori utama diakses oleh program yang sedang dieksekusi. Akibatnya, page tersebut harus dipindah dari tempat penyimpanan sekunder ke suatu page frame (tempat dimana suatu page bersinggah di memori utama) yang kosong.
Copy-on-write
Copy-on-write adalah suatu teknik yang memungkinkan suatu proses anak untuk berbagi address space yang sama dengan proses orangtuanya. Jika di antaranya mencoba untuk menulis (dalam kata lain memodifikasi) sebuah page, salinan dari page tersebut akan dibuat.
Page Replacement
Saat memori kosong mulai menipis, sebuah algoritma page replacement akan berjalan untuk memilih suatu page yang sudah terdapat di memori untuk digantikan oleh page baru. Beberapa contoh algoritma page replacement:
- FIFO (first in, first out) – menggantikan sebuah page dengan page tertua dalam antrian.
- Optimal – menggantikan sebuah page yang dikiranya tidak akan digunakan dalam jangka waktu yang lama.
- LRU (least recently used) – menggantikan sebuah page dengan page yang sudah paling lama tidak digunakan.
Perlu diketahui bahwa algoritma LRU murni jarang digunakan karena penerapannya yang tidak praktis. Kebanyakan sistem menggunakan algoritma LRU-approximation, yang menggunakan bantuan dari reference bit dari sebuah page untuk menghemat penggunaan memori.
Algoritma-algoritma page replacement juga dapat dikategorikan menjadi dua:
- Global page-replacement – algoritma akan memilih sebuah page dari proses yang berada dimanapun dalam sistem;
- Local page-replacement – algoritma akan memilih sebuah page dari proses yang sedang dioperasikan.
Allocation of Frames
Setiap proses perlu dialokasikan sebuah frame (blok memori di memori fisik yang berukuran tetap). Ada banyak strategi untuk melakukan pengalokasian yang optimal. Pendekatan-pendekatan pengalokasian frame dapat ditinjau dari penggunaan jumlah frame seminimal mungkin, penggunaan algoritma-algoritma pengalokasian, dan pengalokasian lokal dan global.
Thrashing
Thrashing adalah kejadian dimana sistem menghabiskan lebih banyak waktu dalam melakukan paging daripada mengekseksui suatu proses/program. Umumnya, thrashing terjadi saat suatu proses yang sedang dieksekusi tidak memiliki frame yang cukup.
Pencegahan thrashing dapat dimulai dari seberapa banyak frame yang sedang digunakan oleh suatu proses. Pendekatan ini mendefinisikan yang namanya locality model (model lokalitas) dari pengeksekusian proses.
Lokalitas adalah sekumpulan page yang sedang digunakan secara aktif bersamaan. Disini, model lokalitas mengutarakan bahwa saat proses sedang dieksekusi, proses tersebut berpindah dari lokalitas ke lokalitas lain. Sebuah working set memiliki basis dalam lokalitas dan didefinisikan sebagai sekumpulan page yang sedang digunakan oleh suatu proses.
Memory Compression
Memory compression adalah teknik pengelolaan memori yang mengkompresi sekumpulan page menjadi suatu page tunggal. Memori yang terkompresi ini menjadi alternatif untuk paging yang sering digunakan pada sistem mobile yang tidak mendukung paging.
Allocating Kernel Memory
Memori kernel dialokasikan berbeda dengan proses-proses user-mode. Memori kernel dialokasikan dalam bagian-bagian yang berdekatan yang memiliki ukuran berbeda-beda. Dua teknik umum dalam pengalokasian memori kernel adalah:
-
- Sistem Buddy
- Slab Allocation
Other Considerations
Prepaging
Salah satu karakteristik dari demand paging murni adalah banyaknya page fault yang terjadi saat suatu proses sedang berjalan. Untuk mencegah hal tersebut, digunakanlah yang namanya prepaging, dimana beberapa – atau semua – page yang akan dibutuhkan oleh sebuah proses dimuat ke memori secara bersamaan.
Namun, perlu diperhatikan bahwa prepaging tidak selalu dibutuhkan. Pertanyaan yang patut dipertimbangkan adalah apakah prepaging akan lebih efisien dari demand paging biasa. Bisa saja, saat semua proses sudah dimuat ke memori, banyak dari mereka yang tidak digunakan. Maka dari itu, perlu pertimbangan lebih.
Page Size
Perancang sistem operasi untuk sebuah mesin yang sudah ada jarang memiliki pilihan dalam memutuskan seberapa besar ukuran suatu page. Namun, saat mesin-mesin baru sedang dirancang, keputusan terhadap berapa ukuran terbaik untuk setiap page perlu diambil. Beberapa faktor yang perlu dipertimbangkan saat memutuskan ukuran suatu page:
- Ukuran dari page table – page table yang besar umumnya lebih baik.
- Memori lebih baik dimanfaatkan di page-page yang berukuran kecil untuk mengurangi fragmentasi internal. Namun, ukuran yang kecil berdampak negatif dalam pengeksekusian proses-proses I/O.
- Waktu yang dibutuhkan untuk proses-proses I/O – lebih kecil lebih baik; namun, diperlukan ukuran page yang besar.
- Jumlah page fault – lebih sedikit lebih baik; dapat dicapai dengan cara menggunakan ukuran page yang besar.
Bisa dilihat bahwa setiap pertimbangan memiliki pengorbanan. Maka dari itu, diperlukan tujuan dan keperluan yang jelas.
TLB reach
TLB (translation lookaside buffer) adalah suatu cache memori yang menyimpan translasi dari alamat memori maya ke memori fisik yang digunakan agar pengambilan data dapat dilakukan dengan cepat.
TLB reach mengacu kepada jumlah memori yang dapat diakses oleh TLB, dimana jumlah tersebut sama dengan jumlah entry dalam TLB tersebut dikalikan dengan ukuran pagenya. Salah satu teknik untuk menaikkan kemampuan TLB reach adalah dengan menambah ukuran page.
Operating-System Examples
Linux, Windows, dan Solaris memiliki pengelolaan memori maya yang mirip dengan menggunakan paging, copy-on-write, dll. Setiap sistem juga menggunakan variasi dari algoritma LRU-approximation untuk digunakan sebagai clock algorithm.