custom-header

Virtual Memory

Virtual Memory

 

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 :

  1. Demand paging
  2. Demand segmentasi

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 :

  1. Tabel page “Valid-invalid bit”
  2. Memori sekunder

Pada demand paging, memiliki beberapa keuntungan yaitu :

  1. Perangkat l/O yang diperlukan sedikit
  2. Memori yang diperlukan sedikit
  3. Respon yang cepat dan banyak
  4. User banyak

Proses yang perlu suatu halaman namun halaman tersebut tidak terdapat pada memori utama, maka terjadi page fault.

  1. Suatu sistem operasi melihat table untuk memutuskan apakah bit referensi itu valid atau invalid.
  2. Jika invalid, maka proses berhenti, jika valid namun proses tidak dikenali, maka halaman tersebut akan mencari frame kosong dan dikenali.
  3. Melalui operasi disk, tukarlah halaman ke dalam suatu bingkau dan sudah dijadwalkan.
  4. Atur ulang table.
  5. Hal yang menyebabkan kesalahan halaman itu di restart kembali.

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

  1. Perangkapkan ke suatu sistem operasi.
  2. Simpan register pengguna terlebih dahulu dan juga status prosesnya.
  3. Putuskan apakah interupsi itu merupakan page fault atau bukan.
  4. Periksa terlebih dahulu apakah page referencenya itu legal atau tidak dan juga tentutkan lokasi halaman tersebut pada disk.
  5. Lakukan suatu pembacaan yang terjadi ke bingkai bebas dari suatu disk.
  6. Tunggu permintaan baca dilayani pada saat dalam antrean.
  7. Tunggu terjadinya pencarian perangkat terlebih dahulu.
  8. Mulailah untuk mengirim halaman ke bingkai gratis.
  9. Saat menunggu, distribusikan CPU ke pengguna lainnya.
  10. Menerima sebuah interupsi dari subsistem l/O.
  11. Simpanlah untuk pengguna lainnya suatu register dan status prosesnya.
  12. Tentukan jika interupsi itu berasal dari suatu disk.
  13. Untuk melihatkan halaman sekarang yang ada di memori, perbaiki table halaman dan table lain dulu.
  14. Tunggu CPU didistribusikan untuk proses ini lagi.
  15. Pulihkan semua, seperti register pengguna, status proses, dan table halaman baru dan dilanjutkan kembali dengan intruksi terputus.

Semua langkah diatas terdapat langkah yang tidak diperlukan. Terdapat tiga komponen penting pada beberapa kasus dari waktu page fault service yaitu

  1. Interupsi pada page fault dilayani.
  2. Baca halamannya.
  3. Mulai ulang proses.

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 :

  1. Cari suatu lokasi halaman.
  2. Cari frame kosong dengan jika terdapat yang kosong, maka pakailah dan jika tidak ada, maka pakailah suatu algoritma yaitu algoritma page replacement untuk melakukan seleksi terhadap frame. Jika sudah salah satu tersebut maka simpanlah.
  3. Ubahlah table halaman dengan membaca halaman yang diinginkan.
  4. Mulai ulang proses.

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.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

* Kode Akses Komentar:

* Tuliskan kode akses komentar diatas: