Friday 24 October 2014

Virtual Memory

Virtual memory merupakan teknik yang sudah umum disediakan oleh setiap sistem operasi dalam komputer sekarang. Hal ini disebabkan karena teknik ini menghasilkan keuntungan yang besar dengan biaya yang relatif murah. Ketika menggunakan komputer yang memiliki kapasitas RAM terbatas, seringkali pengguna dihadapkan dengan himbauan aplikasi tidak dapat dijalankan karena memori penuh. Dengan memanfaatkan virtual memory, komputer akan melihat bagian RAM yang sedang tidak digunakan saat itu untuk melakukan penyalinan ke dalam hard disk. Penyalinan yang dilakukan berjalan secara otomatis sehingga tidak membuat pengguna mengetahui detail proses tersebut dan seakan-akan hanya terdapat satu memori yang bekerja di sana yang disebut “virtual memory”. 
Seperti yang sudah diketahui, hard disk memiliki kecepatan yang jauh lebih lambat dibandingkan dengan RAM. Semakin sistem terlalu memanfaatkan virtual memory maka sistem akan mengalami penurunan performa karena hard disk di sini hanya bersifat sebagai pembantu saja.
Virtual memory biasa diimplementasi dengan menggunakan demand paging. Page adalah kumpulan chunk dari sebuah program (instruksi + data) dan frame adalah chunk dari main memory yang dapat ditempati oleh page. Paging sendiri adalah proses segmentasi dari program/proses dan main memori menjadi kumpulan page dan frame tersebut.
Gambar 1. Proses Paging

Demand paging merupakan sistem paging dengan swapping. Peletakkan page pada memori hanya dilakukan saat diperlukan saja sedangkan page lain yang jumlahnya sangat besar disimpan pada disk. Sistem operasi yang akan bertanggung jawab dalam melakukan load/replace page.
Gambar 2. Ilustrasi Demand Paging

Page fault dapat terjadi ketika CPU meminta lokasi dalam page yang sedang tidak berada dalam main memory yang akhirnya mengharuskan page tersebut untuk di-load ke main memory, jika tidak ada frame kosong tersedia maka page tersebut harus menggantikan page (biasa dikenal dengan istilah page replacement) yang ada di dalam main memory.
Page Table digunakan untuk mentranslasi alamat virtual yang dilihat aplikasi ke dalam alamat fisik yang digunakan oleh perangkat keras untuk memproses instruksi. Setiap page dalam virtual memory akan menjadi satu entry dalam page table. Setiap entry page table itu sendiri mempunyai alamat dari frame memori yang menyimpan page yang dibutuhkan hanya jika page tersebut berada di dalam main memory. Karena page table memiliki panjang yang bervariasi, maka page table ini tidak bisa diletakkan pada register dan harus berada di main memory untuk dapat diakses. Selain memiliki nomor frame dan offset, page table juga memiliki bit control yang berguna untuk mengetahui apakah page sudah di-load ke main memory atau belum.
Gambar 3. Proses Translasi Address

Masalah lain muncul ketika page table itu sendiri berukuran sangat besar dan ketika akses ke page table haruslah sangat cepat. Untuk mengatasi kecepatan akses, cache dapat dimanfaatkan untuk mengimplementasi translation lookaside buffer (TLB). Cara kerjanya sama persis dengan cache memori hanya saja informasi yang disimpan adalah entry page table yang sering digunakan akhir-akhir ini (most recently used). Untuk mengatasi ukuran page table yang sangat besar, teknik virtual memory dapat juga digunakan untuk menyimpan page table itu sendiri atau dengan memanfaatkan multi-level paging.
Cara kerja dari TLB digambarkan dalam flowchart Gambar 4. Virtual address yang berisi nomor page dan offset akan dicari terlebih dahulu pada TLB, jika ada maka tidak perlu lagi mengakses page table dan langsung mendapatkan memori fisik. Selanjutnya, dilakukan konsultasi dengan cache untuk melihat apakah blok yang menyimpan word yang dicari terdapat pada cache memori. Jika ya maka tidak perlu lagi dilakukan pengambilan dari main memory.
Gambar 4. Operasi Paging dan TLB

Gambar 5. TLB dan Operasi Cache

Page replacement terjadi ketika suatu page yang sedang dicari tidak berada di main memori yang mengakibatkan harus terjadi swapping dan ketika swapping dilakukan, tidak ada frame kosong pada main memory. Ketika melakukan pemilihan page mana yang harus dibebaskan dari frame main memory dan disimpan ke dalam hard disk, terdapat beberapa pilihan algoritma page replacement antara lain :
1. Algoritma FIFO
Algoritma ini sangatlah sederhana yaitu ketika terdapat page yang akan ditempatkan pada frame main memory, maka page tersebut akan menempati frame dari page sudah paling lama berada di main memory.
2. Algoritma Optimal
Algoritma optimal ini akan mengganti page yang tidak akan digunakan dalam periode waktu terlama untuk menyediakan frame bagi page baru. Algoritma ini memiliki rata-rata page fault paling rendah dibandingkan algoritma lain namun sulit untuk diimplementasikan.
3. Algoritma Least Recently Use (LRU)
Algoritma ini adalah gabungan dari algoritma FIFO dan optimal yang prinsipnya adalah mengganti page yang sudah tidak digunakan untuk periode waktu terlama. Terdapat dua jenis model yang dapat dimanfaatkan untuk mengimplementasikan algoritma LRU yaitu model counter dan model stack. Algoritma ini merupakan algoritma yang paling sering digunakan untuk menentukan page replacement.





1 comment: