Setelah sebelumnya kita sudah mempelajari Manajemen Memori, seperti proses swapping, monoprogramming, multiprogramming, pemartisian baik secara statis maupun dinamis, hingga pada strategi untuk mengalokasikan memori.
Nah pada kesempatan ini saya akan membahas tentang Virtual Memory, sebelum ke pengertian Virtual Memory saya akan menjelaskan sedikit tentang virtual dan memori secara terpisah terlebih dahulu.
Menurut KBBI virtual adalah sesuatu yang dapat dilihat atau dialami secara online. Virtual juga dapat didefiniskan sebagai agak atau sangat dekat dengan hal yang sedang dijelaskan. Di luar makna yang disebutkan diatas, Virtual juga dapat digunakan untuk merujuk paada sesutu yang hipotetis atau tidak nyata namun tetap ada.
Memori adalah perangkat atau sistem yang digunakan untuk menyimpan informasi untuk digunakan nanti pada komputer, periferal komputer, atau perangkat elektronik lain yang terkait. Selain berfungsi sebagai tempat untuk menyimpan sementara program, memori berfungsi sebagai pusat aktivitas pada komputer, setiap operasi yang akan dilakukan terlebih dahulu harus dilakukan melewati memori sesegera mungkin. Untuk mengeksekusi sebuah program, itu harus dimuat ke dalam memori dan memulai proses tertentu di sana.
Segera setelah kita memahami konsep di balik setiap kata yangberurutan, saya akan menjelaskan memori virtual. Memori virtual adalah teknik yang menjembatani kesenjangan antara memori logis dan memori fisik. Dalam ilmu komputer, memori virtual kadang-kadang dikenal sebagai memori akses acak, adalah teknik manajemen memori yang dikembangkan untuk kernel multitugas. Selain itu, memori virtual juga dapat disebut sebagai jenis fitur sistem operasi yang dikenal sebagai memori tambahan. Di masa depan, sistem operasi komputer akan menggunakan memori virtual ini untuk menjalankan program dengan kapasitas lebih besar dari jumlah memori fisik yang ada atau tersedia.
Meskipun demikian, ada manfaat untuk memori virtual, termasuk peningkatan waktu respons karena tidak ada deadlock, peningkatan jumlah total memori fisik yang dibutuhkan, peningkatan jumlah pengguna, dan memori yang lebih dari dua kali lebih cepat dari memori utama yang tersedia.
Untuk implementasi virtual memory sendiri bisa digunakan pada multiprogramming dan dapat digunakan dengan cara demand paging.
Demand paging adalah sistem paging berbasis swapping. Page hanya dibava dari memori saat dibutuhkan. Ini menghasilkan persyaratan I/O yang lebih menuntut, persyaratan memori yang lebih menuntut, sistem yang lebih merespons, dan lebih banyak pengguna.
Dalam kasus Demand paging ini, lazy swapper digunakan dalam proses pertukaran program. Program yang dikenal sebagai lazy swapper mencegah halaman ditukar ke dalam memori saat tidak digunakan untuk waktu yang lama. Definisi “Swapper” mencakup pengelolaan semua proses, oleh karena itu swapper yang secara teratur berinteraksi dengan page dikenal sebagai “pager”.
Jenis Demand paging ini membutuhkan page-table dan secondary memori. Ada nilai yang valid (“1”), dan ada nilai yang tidak valid (“0”) pada tabel halaman. Valid adalah keadaan dimana semua halaman dalam memori fisik hadir, atau dimana beberapa page ada tetapi sebagian besar ada di disk. Namun, posisi yang tidak valid adalah posisi dimana tidak ada page di memori fisik. Fungsi memori sekunder adalah untuk mendukung proses yang belum ada dalam memori fisik.
Ketika sebuah proses mengakses lokasi yang valid, itu akan berjalan normal. Namun, ketika suatu proses mengakses lokasi yang tidak valid, perangkat keras akan memulai ulang sistem operasi (page vault).
Page fault adalah kesalahan yang terjadi ketika sepotong teks yang dibutuhkan oleh proses saat ini hilang dari memori utama. Proses yang sedang berjalan akan mengakses daftar isi untuk mendapatkan bahan referensi yang dibutuhkan untuk file isi.
Ada metode atau prosedur untuk mengelola page vault, antara lain:
- Periksa tabel internal untuk menentukan apakah itu valid atau tidak valid.
- Ketika suatu proses tidak valid, itu ditangguhkan. Ketika sebuah proses valid tetapi belum ditampilkan pada halaman, kita menampilkan halaman dalam memori
- Cari sebuah frame bebas.
- Mulailah mengoperasikan disk untuk membaca halaman yang disebutkan di atas ke dalam frame yang baru saja dipanggil.
- Saat pencarian selesai, bit validasi berubah menjadi “1”, yang menunjukkan bahwa page tersebut sudah ada di memori.
- Restart program intrusif yang sudah stuck sejak awal agar bisa beroperasi dengan baik.
Memori virtual memiliki banyak fungsi, salah satunya adalah pembuatan proses. Karena untuk membuat suatu proses maka penting untuk mengetahui halaman kosong mana yang akan diakses. Sistem operasi biasanya menggunakan teknik “zero-fill-on-demand” untuk menginisialisasi halaman yang disebutkan diatas.
Bagaimana sih caranya untuk menggandakan proses?
Cara menggandakan proses (process creation) dengan menggunakan teknik copy-on-write.
- Saat menggunakan copy-on-write, biarkan orang tua dan anak bekerja sama untuk membuat satu halaman di memori.
- Jika proses penambahan konten ke halaman bersama terjadi, salinitas asli halaman juga dibuat.
- Dengan memanfaatkan teknik copy-on-write, jelas bahwa hanya satu halaman yang diubah oleh proses anak dan induk. Namun, semua halaman yang belum dikirimkan dapat dikirim ke langkah pemrosesan anak dan orang tua.
- Beberapa sistem operasional sering menggunakan teknik copy-on-write untuk mempercepat suatu proses. Windows 2000, Linux, dan Solaris 2
Apa yang terjadi jika tidak ada frame bebas atau kosong?
Jika tidak ada frame yang sudah kosong, carilah frame yang belum digunakan, kemudian kosongkan dengan mengatur kecepatan swap ke frame tersebut dan menggunakan setiap tabel sebagai tanda bahwa bagian dalam halaman tidak akan di kosongkan. Diperluas. Ingat lagi, penggantian halaman akan dilakukan jika tidak ada frame. Apa yang sebenarnya terjadi setelah halaman penggantian? Tindakan lain yang dilakukan antara lain:
- Periksa direktori file yang diinginkan pada disk.
- Cari frame yang kosong.
- Dalam hal ini gunakan frame.
- Jika tidak, kita dapat menggunakan frame saat ini untuk memprediksi frame berikutnya yang akan hilang dengan menggunakan algoritma page-replacement.
- Baca halaman yang telah disalin ke file dan perbarui tabel halaman dan frame.
- Membaca bagian yang diinginkan dalam fram kosong.
- Ulang proses penggunaan dari awal.
Algoritma untuk penggantian halaman ini memiliki tujuan untuk mendeteksi kesalahan halaman yang dilokalkan. Ada beberapa algoritma penggantian halaman antara lain Algoritma FIFO, Algoritma Optimal, dan Algoritma LRU
- Algoritma FIFO
Menurut algoritma ini, halaman yang diblokir adalah halaman yang paling lama berada di memori. Algoritma ini sederhana untuk diterapkan dan dipahami. Algoritma ini dapat menyebabkan perilaku anomali.
- Algoritma Optimal
Menurut algoritma ini, halaman yang diblokir adalah halaman yang tidak akan diakses untuk waktu yang lama. Implementasi algoritma ini sulit karena memprediksi hasil yang sulit dan memiliki medan kesalahan halaman. Algoritma ini tidak akan mengalami perilaku anomali.
- Algoritma LRU (Last Recently Used)
Menurut algoritma ini, halaman yang diblokir adalah halaman yang belum digunakan. Algoritma ini berfungsi sebagai kompromi antara FIFO dan algoritma optimal, sulit untuk membangun dan tidak akan mengalami perilaku anomali.
Alokasi frame mengacu pada mekanisme pengalokasian sejumlah tertentu memori bebas ke proses, di antaranya ada 2:
- Alokasi tetap
Alokasi tetap adalah proses dengan prioritas Tinggi atau prioritas rendah diperlakukan sama. Dalam proses ini juga dibagi menjadi 2, yaitu:
- Distribusi merata
Alokasi yang sama berarti bahwa semua frame diperlakukan sama. Pada tahun
- Alokasi proporsional
Alokasi proporsional adalah semua frame yang diproses sesuai kebutuhan atau sesuai dengan topoksinya masing-masing.
Substitusi halaman memiliki 2 jenis, antara lain:
- Global Replace
Penggantian global ini memungkinkan suatu proses untuk memilih sebuah frame untuk berpindah dari beberapa frame, bahkan jika frame tersebut dialokasikan untuk suatu proses program lain.
- Penggantian lokal
Dalam substitusi lokal ini, jumlah frame yang dialokasikan untuk proses tidak berubah, setiap proses dapat memilih dari antara frame yang dialokasikan untuk proses tersebut.
Thrashing adalah aktivitas berintensitas tinggi yang berhubungan dengan paging. Suatu proses dikatakan thrashing jika mengalokasikan lebih banyak waktu untuk pause daripada untuk mengeksekusi (proses sibuk untuk melakukan swap-in swap-out). Efek thrashing dapat dikurangi dengan menggunakan algoritma local priority (prioritas).