Virtual Memori
by D'cahyo on Nov.07, 2022, under artikel sistem operasi
A. Pengertian Virtual Memori
Virtual memori merupakan pemisahan memori logika pengguna dari memori fisik dimana sistem penyimpanan sementara dari suatu data akan melibatkan harddisk sebagai komponen penyimpannya. Dalam sistem operasi windows kita biasa menyebutnya sebagai paging file. Hanya beberapa program yang perlu dieksekusi di dalam memori. Sehingga ruang dalam alamat logika dapat jauh lebih besar daripada ruang alamat fisik sehinngga dapat digunakan secara bersamaan oleh beberapa proses dalam ruang alamat dan memungkinkan efisiensi pembuatan proses karena dapat memuat lebih banyak program yang berjalan secara bersamaan dan lebih sedikit input/output yang dibutuhkan dalam pemuatan atau penukaran proses.
Ruang alamat virtual merupakan pandangan logis tentang bagaimana memori memnyimpan suatu proses. Biasanya hal ini dimulai dari alamat 0, alamat yang saling berdekatan hingga spasi terakhir. Sementara memori fisik diorginized dalam suatu bingkai halaman dan memory management unit (MMU) yang akan memetakan memori logika ke dalam memori fisik. Memori virtual dapat diimplementasikan melalui dua hal yaitu demand paging dan demand segmentation.
B. Fungsi Virtual Memori
Beberapa fungsi dari virtual memori yaitu:
• Dapat digunakan untuk menanngani beban RAM yang berlebihan;
• Dapat digunakan sebagai cadangan RAM, namun ia tidak bisa menggantikan fungsi serta keberadaan RAM sepenuhnya;
• Dapat menjadi penyimpanan sementara dari data yang disimpan di RAM, sayangnya ia tidak dapat meneruskan data tersebut ke prosesor.
C. Tujuan Virtual Memori
Virtual memori ini bertujuan untuk menciptakan file khusus yang bias akita sebut dengan nama swap file, dimana Ketika sistem operasi sedang kehabisan memori maka data terakhir yang diakses akan dipindahkan ke dalam hard disk. Hal ini bertujuan untuk menciptakan ruang kosong di memori agar dapat menjalankan perintah selanjutnya. Penyimpanan data sementara akan terus dilakukan oleh sistem operasi ketika RAM menerima data-data baru yang masuk. Ketika data pada swap file tersebut dibutuhkan oleh komputer maka akan terjadi pertukaran antara data tersebut dengan data terakhri yang sudah diproses pada RAM.
D. Ruang Alamat Virtual
Ruang alamat virtual atau virtual-adress space biasanya mendesain ruangg alamat logika untuk tumpukan agar dimulai pada alamat logika max dan tumbuh (grow) “turun” sementara ”naik” untuk tumpukan tumbuh (heap). Hal ini bertujuan untuk memaksimalkan ruang alamat yang tidak digunakan. Memori fisik tidak dibutuhkan hingga heap atau hingga tumpukan tersebut diberikan halaman baru. Memungkinkan ruang alamat yang jarang digunakan dengan space yang tersisa untuk pertumbuhan. Pustaka sistem dibagikan melalui pemetaan ke dalam ruang alamat virtual, bersamaan dengan pemetaan halaman read-write oleh memori ke dalam runag alamat virtual. Halaman akan dapat dibagikan selama fork(), mempercepat proses pembuatan.
E. Permintaan Halaman (Demand Paging)
Demand paging dapat membawa seluruh proses ke dalam memori pada saat load atau membawa halam ke dalam memori Ketika halaman dibutuhkan. Hal ini akan mengakibatkan beberapa hal:
• Lebih sedikit input/output yang dibutuhkan;
• Minimalisasi kebutuhan memori;
• Lebih cepatnya respon;
• Memungkinkan pengguna yang lebih banyak.
Hal ini serupa dengan sistem paging dengan swaping (diagram kanan) dimana halaman akan diperlukan untuk itu, membatalkan referensi tidak valid, membawanya ke memori jika tidak ada di memori, lazy swaper tidak pernah menukan halaman ke dalam memori kecuali halamab akan dibutuhkan sementara sweaper yang berhubungan dengan halaman adalah pager.
Konsep dasar dari demand paging yaitu dengan menggunakan swaping, pager akan menebak halaman mana yang akan dipakai sebelum dilakukan pertukaran lagi, pager hanya akan membawa halaman-halaman tersebut ke dalam memori, untuk menentukan kumpulan halaman-halaman itu diperlukan MMU baru sehingga demand paging dapat diimplementasikan. Apabila halaman yang diperlukan telah menjadi penghuni memori, tidak akan ada perbedaan dengan non demand-paging. Sehingga apabila halaman yang diperlukan bukan merupakan penghuni memori, butuh pendeteksian dan memuat halaman tersebut ke memori penyimpanan tanpa mengubah perilaku program dan kode program.
F. Page Fault
Apabila terdapat referensi ke halaman, referensi pertama yang ke halaman tersebut akan terperangkap ke dalam sistem operasi, untuk lebih jelasnya berikut adalah cara kerja dari page fault secara umum:
• Sistem operasi akan melihat tabel lain untuk mengambil keputusan apakan referensi tersebut harus dibataalkan atau tidak. Apabila referensi terseut tidak valid maka akan dibatalkan;
• Mencari frame yang masih kosong;
• Menukar halaman ke dalam frame melalui operasi disk yang dijadwalkan;;
• Mengatur ulang tabel untuk menunjukkan bahwasanya halaman tersebut sekarang berada di dalam memori dengan memnebri simbol (v) pada set validasi bit;
• Memulai ulang (restart) instruksi-instruksi yang menjadi penyebab dari page fault atau kesalahan halaman.
G. Aspek dari Demand Paging
1. Kasus extreme (extreme case)
• Pada kasus extreme proses dapat dimulai dengan tanpa adanya halaman yang ada di memori. Sistem opeerasi akan menetapkan instruction pointer ke instruksis proses pertama:
Non-penghuni memori page fault.
• Pada setiap halaman proses lainnya pada akses pertama:
Pure demand paging
2. Actually
Instruksi yang diberikan dapat mengakses banyak halaman serta hanyak page fault. Dilakukan pertimbangan pengambilan dan pengkodean instruksi yang menambahkan dua angka dari memori serta menyimpan hasilnya kembali ke dalam memori. Kerusakan akan berkurang karena lokalitas dari referensi.
3. Hardware support
Dukungan perangkat keras yang diperlukan dalam demand paging
• Tabel halaman dengan bit yang valid atau tidak valid
• Memori sekunder dimana akan dilakukan swaping perangkat dengan ruang swap
• Instruksi restart (mulai ulang).
H. Cara Kerja Demand Paging
Tahapan dalam demand paging (worse case atau kasus buruk):
1. Trap halaman yang akan diproses ke dalam sistem operasi;
2. Simpan registrasi pengguna dan status dari proses;
3. Tentukan bahwasanya interupsi tersebut merupakan page fault;
4. Periksa apakah referensi halaman tersebut legal serta menentukan lokasi dari halaman pada disk;
5. Melakukan pembacaan dari disk ke dalam frame yang sedang kosong:
• Menunggu antrean hingga permintaan read dilayani;
• Menunggu pencarian perangkat dan/atau waktu latensi;;
• Mulai melakukan transfer halaman ke dalam frame yang kosong.
6. Alokasi CPU ke dalam beberapa pengguna lain dilakukan sambil menunggu transfer halaman;
7. Menerima interupsi dari subsistem input/output disk (I/O selesai);
8. Menyimpan register serta status dari proses untuk pengguna lain;
9. Menentukan bahwasanya interupsi berasal dari disk;
10. Memperbaiki tabel halaman serta tabel lain guna menunjukkan halaman sekarang berada di memori;
11. Tunggu CPU dialokasikan untuk proses ini kembali;
12. Pemulihan register pengguna, status proses, serta tabel halamn baru, kemudian melanjutkan kembali instruksi yang terputus.
I. Copy-on-Write (COW)
Copy-on-Write memungkinkan proses induk serta subproses untuk awalnya berbagi halaman yang sama pada memori jika salah satu proses memodifikasi halaman secara bersamaan, baru kemudian halaman tersebut akan disalin COW agar dapat membuat proses secara lebih efisien karena hanya halaman yang dimodifikasi yang disalin.
Secara umum, halaman yang kosong akan dialokasikan dari kumpulan halaman zero-fill-on-demand. Pool harus senantiasa mempunyai frame kosong untuk dieksekusi oleh halaman permintaan secara cepat. Jangan mengosongkan frame serta pemrosesan lainnnya pada page fault.
Penghapusan halaman sebelum pengalokasian bertujuan karena variasi vfork () mempunyai penangguhan induk proses serta subproses menggunakan ruang alamat parent’s COW yang dirancang untuk memiliki panggilan anak exec () dengan sangat efisien.