Virtual Memory adalah suatu teknik yang memisahkan antara memori logis dan memori fisiknya.
Memori logis merupakan kumpulan keseluruhan halaman dari suatu program. Tanpa memori virtual,
memori logis akan langsung dibawa ke memori fisik (memori utama). Disinilah memori virtual
melakukan pemisahan dengan menaruh memori logis ke secondary storage (disk sekunder) dan hanya
membawa halaman yang diperlukan ke memori utama (memori fisik).
Virtual memory juga bisa dikatakan sebagai Memori Tambahan yang menjadi fitur setiap masing
masing Sistem Operasi, misalnya Linux terdapat Swap. Memori virtual ini, digunakan Sistem Operasi
ketika Komputer sedang menjalankan sebuah Program aplikasi yang kapasitasnya melebih Memori yang
tersedia. Teknik memori virtual akan memudahkan pekerjaan seorang programmer ketika besar data dan
programnya melampaui kapasitas memori utama. Sebuah multiprogramming dapat mengimplementasikan
teknik memori virtual sehingga sistem multiprogramming menjadi lebih efisien. Contohnya: 10 program
dengan ukuran 2 MB dapat berjalan di memori berkapasitas 4 MB. Tiap program dialokasikan 256 Kbyte
dan bagian-bagian proses (swap in) masuk ke dalam memori fisik begitu diperlukan dan akan keluar
(swap out) jika sedang tidak diperlukan.
Teknik ini menempatkan keseluruhan program di disk sekunder dan membawa halaman-halaman
yang diperlukan ke memori fisik sehingga memori utama hanya akan menyimpan sebagian alamat proses
yang sering digunakan dan sebagian lainnya akan disimpan dalam disk sekunder dan dapat diambil sesuai
dengan kebutuhan. Jadi jika proses yang sedang berjalan membutuhkan instruksi atau data yang terdapat
pada suatu halaman tertentu maka halaman tersebut akan dicari di memori utama. Jika halaman yang
diinginkan tidak ada maka akan dicari ke disk sekunder.
Pada gambar diatas ditunjukkan ruang sebuah memori virtual yang dibagi menjadi bagian-bagian yang
sama dan diidentifikasikan dengan nomor virtual pages. Memori fisik dibagi menjadi page frames yang
berukuran sama dan diidentifikasikan dengan nomor page frames. Bingkai (frame) menyimpan data dari
halaman. Atau memori virtual memetakan nomor virtual pages ke nomor page
frames. Mapping(pemetaan) menyebabkan halaman virtual hanya dapat mempunyai satu lokasi alamat
fisik.
Dalam sistem paging, jika sebuah ruang diperlukan untuk proses dan halaman yang bersangkutan tidak
sedang digunakan, maka halaman dari proses akan mengalami paged out (disimpan ke dalam disk)
atauswap out, memori akan kosong untuk halaman aktif yang lain. Halaman yang dipindah dari disk ke
memori ketika diperlukan dinamakan paged in (dikembalikan ke memori) atau swap in. Ketika sebuah
item dapat mengalami paging, maka item tersebut termasuk dalam item yang menempati ruang virtual,
yang diakses dengan alamat virtual dan ruangan yang ada dialokasikan untuk informasi pemetaan. Sistem
operasi mengalokasikan alamat dari item tersebut hanya ketika item tersebut mengalami paging in.
Keuntungan yang diperoleh dari penyimpanan hanya sebagian program saja pada memori fisik adalah:
Berkurangnya proses M/K yang dibutuhkan (lalu lintas M/K menjadi rendah)
Ruang menjadi lebih leluasa karena berkurangnya memori fisik yang digunakan
Meningkatnya respon karena menurunnya beban M/K dan memori
Bertambahnya jumlah pengguna yang dapat dilayani. Ruang memori yang masih tersedia luas
memungkinkan komputer untuk menerima lebih banyak permintaan dari pengguna.
Teknik memori virtual akan memudahkan pekerjaan seorang programmer ketika besar data dan
programnya melampaui kapasitas memori utama. Sebuah multiprogramming dapat mengimplementasikan
teknik memori virtual sehingga sistem multiprogramming menjadi lebih efisien. Contohnya: 10 program
dengan ukuran 2 MB dapat berjalan di memori berkapasitas 4 MB. Tiap program dialokasikan 256 Kbyte
dan bagian - bagian proses (swap in) masuk ke dalam memori fisik begitu diperlukan dan akan keluar
(swap out) jika sedang tidak diperlukan.
Prinsip dari memori virtual adalah bahwa "Kecepatan maksimum ekseskusi proses di memori virtual
dapat sama, tetapi tidak akan pernah melampaui kecepatan eksekusi proses yang sama di sistem yang
tidak menggunakan memori virtual".
1. Demand Paging yaitu dengan menerapkan konsep pemberian halaman pada proses
2. Demand segmentation, lebih kompleks diterapkan ukuran segmen yang bervariasi.
Demand Paging
Demand paging adalah sistem paging dengan swapping. Page diletakkan di memori hanya jika
diperlukan. Hal ini menyebabkan kebutuhan I/O lebih rendah, kebutuhan memori lebih rendah, respon lebih
cepat dan lebih banyak user yang menggunakan.
Proses disimpan di memori sekunder (disk). Jika proses akan dieksekusi, maka dipindah (swap)
ke memori. Menggunakan lazy swapper untuk melakukan swapping bila page tersebut akan digunakan
yang berarti sebuah page tidak pernah ditukar ke memori kecuali page diperlukan. Jika page diperlukan,
dilakukan acuan ke page tersebut, tetapi jika acuan invalid maka dilakukan penghentian. Page yang
sedang tidak berada di memori tersebut akan dibawa ke memori dari backing store.
Untuk membedakan antara page pada memori dengan page pada disk digunakan valid-invalid bit. Tabel
page untuk page yang berada di memori diset “valid’, sedangkan tabel page untuk page yang tidak sedang
di memori (ada pada disk) diset “invalid”.
Akses ke page yang diset “invalid” menyebabkan page fault, yang menyebabkan trap ke sistem
operasi. Karena status (register, kode kondisi, counter instruksi) dari proses ter-interrupt disimpan bila
terjadi page fault, proses dapat dimulai lagi pada tempat dan status yang sama, kecuali page yang cocok
sedang di memori dan sedang diakses. Prosedur untuk menangani page fault seperti Gambar 8-4
sebagaiberikut :
1. Sistem operasi melihat tabel untuk menentukan jika acuan invalid maka proses dihentikan dan page
sedang tidak berada di memori.
2. Jika acuan invalid dilakukan trap ke sistem operasi.
3. Sistem mencari frame kosong.
4. Sistem melakukan proses swapping ke frame bebas.
5. Tabel page di-reset, bit valid-invalid diset 1 atau valid
6. instruksi di-restart.
Apabila tidak ditemukan frame bebas maka dilakukan page replacement yaitu mencari beberapa
page di memori yang tidak digunakan kemudian dilakukan swap out ke backing store. Terdapat beberapa
algoritma page replacement dimana performansi algoritma diharapkan menghasilkan jumlah page fault
minimum. Beberapa page kemungkinan dibawa ke memori beberapa kali.
Perangkat keras yang dibutuhkan untuk mendukung demand paging sama dengan perangkat keras untuk
sistem paging dengan swapping yaitu :
1) Tabel page : tabel mempunyai kemampuan untuk memberi entry bit valid-invalid
atau nilai khusus untuk bit proteksi
2) Memori sekunder : digunakan untuk membawa page yang tidak di memori danbiasanya adalah disk
kecepatan tinggi yang disebut swap device.
Bit Valid-Invalid
- Untuk setiap masukan ke page table entry, akan dihubungkan dengan bit valid–invalid
(1 => dalam memori, 0 => tidak dalam memori)
- Inisialisasi bit valid–invalid dengan 0 pada semua masukan.
- Contoh snapshop page table
- Selamat menterjemahkan alamat, jika bit valid-invalid dalam masukan page table adalah
0 => page fault.
Page Fault
- Jika terdapat masukan yang direferensi ke page,referensi pertama akan trap ke OS =>
page fault
- OS melihat ke tabel lain untuk menentukan:
o Referensi Invalid => abort.
o Sedang tidak berada di memori.
- Dapatkan Frame Kosong
- Swap Page ke dalam frame
- Reset table, validasi bit = 1
- Restart instruksi: Least Recently Used
o Pindah Blok
Copy-on-Write
- Copy-on-Write (COW) mengijinkan baik proses parent dan child menginisialisasi page
yang sama.
Jika salah satu proses memodifikasi shared page, page akan di-copy.
- COW memungkinkan pembuatan proses yang lebih efisian karena hanya memodifikasi
page yang di-copy
- Page bebas dialokasikan dari sebuah pool
Memory-Mapped Files
- Memory-mapped file I/O memungkinkan file I/O diperlakukan sebagai routine memory
access dengan memetakan blok disk ke page di memory.
- Sebuah file diinisialisasi read menggunakan demand paging. File dibaca dari sistem file
ke page pada memori fisik sesuai ukuran page. Read/write ke/dari file diperlakukan
seperti akses memori.
- Akses file dengan memperlakukan file I/O sebagai akses memori lebih sederhana
daripada sistem call read() write().
- Juga memungkinkan beberapa proses untuk memetakan file yang sama pada page di
memori yang sama
Page Replacement
Page replacement diperlukan pada situasi dimana proses dieksekusi perlu frame bebas tetapi tidak
tersedia frame bebas. Sistem harus menemukan satu frame yang sedang tidak digunakan dan
membebaskannya. Untuk membebaskan frame dengan cara menulis isinya untuk ruang swap dan
mengubah tabel page (dan tabel lain) yang menunjukkan page tidak lagi di memori.
Terdapat beberapa algoritma page replacement, setiap sistem operasi mempunyai skema yang
unik. Algoritma page replacement secara umum diinginkan yang mempunyai rata-rata page fault
terendah. Algoritma dievaluasi dengan menjalankannya pada string tertentu dari memory reference dan
menghitung jumlah page fault. String yang mengacu ke memori disebut reference string (string
acuan).String acuan dibangkitkan secara random atau dengan menelusuri sistem danmenyimpan alamat
dari memori acuan. Misalnya jika ditelusuri proses tertentu, disimpan alamat berikut :
1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
Untuk menentukan jumlah page fault untuk string acuan dan algoritma pagereplacement tertentu,
harus diketahui jumlah page frame tersedia juga harus diketahui. Semakin tinggi jumlah frame lebih
tinggi, semakin rendah jumlah page fault.
Terdapat beberapa algoritma page replacement antara lain algoritma first in first our (FIFO),
optimal dan least recently use (LRU). Pada sub bab berikut akan diilustrasikan algoritma page
replacement tersebut dengan menggunakan string acuan
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
Algoritma FIFO
Algoritma FIFO merupakan algoritma paling sederhana. Algoritma FIFO diasosiasikan dengan
sebuah page bila page tersebut dibawa ke memori. Bila ada suatu page yang akan ditempatkan, maka
posisi page yang paling lama yang akan digantikan. Algoritma ini tidak perlu menyimpan waktu pada saat
sebuah page dibawa ke memori.
- String Acuan 1, 2, 3, 4, 1, 2, 5, 1, 2, 5, 1, 2, 3, 4, 5
- 3 frame (3 page dapat di memori pada satu waktu per proses)
- 4 frame
15 Page Faults
Algoritma optimal merupakan hasil penemuan dari Belady’s anomaly. Algoritma ini mempunyai
rata-rata page fault terendah. Algoritma optimal akan mengganti page yang tidak akan digunakan untuk
periode waktu terlama. Algoritma ini menjamin rata-rata page fault terendah untuk jumlah frame tetap
tetapi sulit implementasinya.
- Mengganti page yang tidak akan digunakan untuk periode waktu yang terlama.
- Contoh 4 Frame
o 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Algoritma LRU merupakan perpaduan dari algoritma FIFO dan optimal. Prinsip dari algoritma LRU
adalah mengganti page yang sudah tidak digunakan untuk periode waktu terlama.
- Counter : setiap entry tabel page diasosiasikan dengan sebuah “time-of-use” dan sebuah clock
logika atau counter ditambahkan ke CPU. Clock ini dinaikkan untuk setiap acuan ke memori. Jika
sebuah acuan ke page dibuat, isi clock register dicopy ke time-of-use pada tabel page untuk page
tersebut.
- Stack : stack dari nomor page diatur. Jika sebuah page digunakan acuan, maka page dihapus dari
stack dan meletakkan pada top of stack. Dengan cara ini, stack selalu digunakan page dan bagian
bawah untuk page LRU. Implementasi stack untuk algoritma LRU.
- String Referensi: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Alokasi Frame
Alokasi frame berhubungan dengan mekanisme alokasi sejumlah memori bebas yang tetap
diantara beberapa proses. Meskipun terdapat beberapa variasi pengalokasian frame bebas ke beberapa
proses, tetapi strategi dasar jelas yaitu : proses user dialokasikan untuk sembarang frame bebas. Jumlah
minimum frame per proses ditentukan oleh arsitektur dimana jumlah maksimum tergantung jumlah
memori fisik yang tersedia. Jumlah minimim frameditentukan oleh arsitektur instruction-set. Bila terjadi
page fault sebelum eksekusi instruksi selesai, instruksi harus di-restart. Sehingga tersedia frame yang
cukup untukmembawa semua page yang berbeda dimana sembarang instruksi dapat mengacu. Misalnya
mikrokomputer menggunakan memori 128K yang dikomposisikan dengan page ukuran 1K, maka
terbentuk 128 frame. Jika sistem operasi menggunakan 35K, maka 93 frame sisa digunakan program user.
Bila suatu program menyebabkan page fault sebanyak 93 kali, maka menempati 93 frame bebas tersebut.
Jika terjadi page faultke 94, dari 93 frame yang terisi harus dipilih salah satu untuk diganti yang baru. Bila
program selesai, 93 frame tersebut dibebaskan kembali.
- Alokasi Prioritas
o Menggunakan skema alokasi proposional menggunakan prioritas, bukan ukuran.
o Jika proses Pi membangkitkan page fault,
Memilih untuk replacement satu dari framenya.
Memilih untuk reprecement sebuah frame dari sebuah proses dengan
nomor prioritas terendah
Alokasi Global dan Alokasi Lokal
Page replacement adalah faktor terpenting lain yang harus dipertimbangkan dalam
alokasi frame. Pada multiple process yang berkompentisi mendapatkan frame, algoritma page
replacement dikelompokkan dalam 2 kategori yaitu global replacement dan local replacement.
Global replacement mengijinkan suatu proses untuk menyeleksi suatu frameyang akan
dipindah dari sejumlah frame, meskipun frame tersebut sedang dialokasikan ke proses yang lain.
Pada local replacement, jumlah frame yang dialokasikan untuk proses tidak berubah. Setiap
proses dapat memilih dari frame-frame yang dialokasikan untuknya.
- Replacement Global – proses memilih sebuah replacement frame dari sekumpulan semua
frame; satu proses dapat mengambil sebuah frame dari yang lain.
- Replacement Local – setiap proses dari hanya dari kumpulan alokasi frame nya sendiri.
Thrashing
Misalnya sembarang proses tidak mempunyai frame yang cukup. Meskipun secara teknis dapat
mengurangi jumlah frame yang dialokasikan sampai minimum, terdapat sejumlah page yang sedang aktif
digunakan. Jika suatu proses tidak memiliki jumlah frame yang cukup, maka sering terjadi page fault.
Sehingga harus mengganti beberapa page. Tetapi karena semua page sedang digunakan, harus mengganti
page yang tidak digunakan lagi kemudian. Konsekuensinya, sering terjadi page fault lagi dan lagi. Proses
berlanjut page fault, mengganti page untuk page fault dan seterusnya.
Kegiatan aktifitas paging yang tinggi disebut thrashing. Sebuah proses mengalami thrashing jika
menghabiskan lebih banyak waktu untuk paging daripada eksekusi. Efek thrashing dapat dibatasi dengan
menggunakan algoritma local (priority) replacement. Grafik terjadinya proses thrashing pada sistem
multiprogramming.
- Jika sebuah proses tidak “cukup” page, rata-rata page - fault sangat tinggi.
- Hal ini menyebabkan:
o Utilitas CPU yang rendah.
o Sistem opreasi perlu meningkatkan tingkat multiprogramming.
o Proses lain ditambahkan ke sistem.
- Thrashing = sebuah proses yang sibuk melakukan swapping page ke dalam dan keluar.
- Windows NT
o Menggunakan demand paging dengan clustering. Clustering membawa page fault.
o Proses diset working set minimum dan working set maximum.
o Working set minimum adalah jumlah minimum page pada proses yang dijamin mendapat
lokasi memori.
o Sebuah proses mungkin digunakan untuk beberapa page dapat ditambahkan ke working
set maximum.
o Jika jumlah memori bebas dalam sistem memenuhi threshold, automatic working set
trimming digunakan untuk menyimpan jumlah memori bebas.
o Working set trimming menghapus page dari proses yang mempunyai page melebihi
working set minimum.
- Solaris 2
o Menyimpan daftar page bebas untuk menentukan proses yang fault.
o Lotsfree – parameter threshold untuk memulai paging.
o Paging dibentuk dengan proses pageout.
o Pageout mencari page menggunakan algoritma modified clock.
o Scanrate adalah rata-rata page mana yang dicari. Jangkauan dari slowscan ke fastscan.
o Pageout dipanggil lebih sering tergantung jumlah ketersediaan memori bebas.