Anda di halaman 1dari 4

Virtual Memory

 Memory yang terdapat pada komputer dibagi menjadi 2, yaitu Hardisk yang digunakan untuk
menyimpan data secara permanen . Kedua , RAM digunakan untuk menyimpan data sementara.
Ketika menjalankan sebuah program, terkadang user diberi peringatan "Memory is Low" oleh
aplikasi. Hal ini terjadi karena komputer kekurangan memori atau memori kepenuhan untuk
menjalankan suatu program. Hal ini terjadi ketika komputer ingin menjalankan program yang
memerlukan memory penyimpanan yang besar.
Oleh karena itu , untuk mengatasi hal ini dibuatlah 'Virtual Memory' .
Lalu , apakah virtual memory?

 Berdasarkan namanya , 'Virtual Memory' adalah :


 Memory ; Ruang penyimpanan
 Virtual : Tidak nyata

 Jadi Virtual Memory adalah suatu fitur yang dimiliki oleh sistem operasi , dimana memory
sekunder (harddisk) seolah - olah sebagai memory utama (RAM) didalam sebuah sistem
komputer . Sistem ini beroperasi dengan cara memindahkan beberapa kode yang tidak dibutuhkan
ke sebuah berkas di dalam hard drive. RAM yang awalnya berukuran 2GB , karena adanya virtual
memory akan terlihat menjadi 2GB.

 Latar Belakang
 Kode harus ada di memori untuk dieksekusi, tetapi seluruh program jarang digunakan
 Error code, rutinitas yang tidak biasa, struktur data yang besar
 Seluruh kode program tidak diperlukan secara bersamaan
 Pertimbangkan kemampuan untuk menjalankan sebagian program
 Program tidak lagi dibatasi oleh batasan memori fisik
 Setiap program membutuhkan lebih sedikit memori saat dijalankan -> lebih banyak program
berjalan pada saat yang sama
 Peningkatan pemanfaatan CPU secara keseluruhan tanpa peningkatan waktu respons atau
waktu penyelesaian
 Lebih sedikit I/O yang diperlukan untuk memuat atau menukar program ke dalam memori ->
masing-masing program pengguna berjalan lebih cepat
 Virtual Memory
 Pemisahan memori logis pengguna dari fisik Penyimpanan
 Hanya sebagian dari program yang perlu ada di memori untuk dieksekusi
 Oleh karena itu, ruang alamat logis bisa jauh lebih besar daripada fisik ruang alamat
 Memungkinkan ruang alamat untuk digunakan bersama oleh beberapa proses
 Memungkinkan pembuatan proses yang lebih efisien
 Lebih banyak program berjalan secara bersamaan
 Lebih sedikit I/O yang dibutuhkan untuk memuat atau menukar proses
 Virtual-address Space – pandangan logis tentang bagaimana proses disimpan dalam
Penyimpanan
 Biasanya dimulai dari alamat 0, alamat yang berdekatan sampai akhir penyimpanan
 Sementara itu, memori fisik diatur dalam frames
 MMU harus memetakan logical ke physical
 Memori virtual dapat diimplementasikan melalui:
 Halaman permintaan
 Segmentasi permintaan
 Virtual-Address Space

 Biasanya mendesain ruang alamat logis untuk stack untuk memulai pada alamat logis Max
dan tumbuh "turun" sementara tumpukan tumbuh "naik"
 Memaksimalkan penggunaan ruang alamat
 Ruang alamat yang tidak digunakan antara keduanya adalah lubang
 Tidak diperlukan memori fisik hingga heap atau Stack tumbuh ke halaman baru tertentu
 Memungkinkan ruang alamat yang jarang dengan lubang yang tersisa untuk pertumbuhan,
library yang terhubung secara dinamis, dll.
 System libraries dibagikan melalui pemetaan ke Virtual-address space
 Shared memory dengan memetakan halaman yang dibaca-tulis ke dalam Virtual-address
space
 Halaman dapat dibagikan selama fork() mempercepat proses pembuatan

 Demand Paging
 Bisa menjalankan semua proses ke dalam memori disaat ngeload
 Atau bisa mengambil halaman ke dalam memori ketika dibutuhkan
 Sedikit I/O yang dibutuhkan, tidak ada I/O yang tidak dibutuhkan
 Sedikit memori yang dibutuhkan
 Respon lebih cepat
 Lebih banyak pengguna
 Mirip dengan sistem paging dengan bertukar (diagram dibawah)

 Implementasi Sistem Paging


 Setiap sistem operasi mempunyai metode sendiri untuk menyimpan tabel page. Beberapa
sistem operasi mengalokasikan sebuah tabel page untuk setiap proses. Pointer ke tabel page
disimpan dengan nilai register lainnya dari PCB. Pada dasarnya terdapat 3 metode yang
berbeda untuk implementasi tabel page :

 Tabel page diimplementasikan sebagai kumpulan dari “dedicated” register. Register berupa
rangkaian logika berkecepatan sangat tinggi untuk efisiensi translasi alamat paging. Contoh :
DEC PDP-11. Alamat terdiri dari 16 bit dan ukuran page 8K. Sehingga tabel page berisi 8
entri yang disimpan pada register. Penggunaan register memenuhi jika tabel page kecil (tidak
lebih dari 256 entry).

 Tabel page disimpan pada main memori dan menggunakan page table base registe” (PTBR)
untuk menunjuk ke tabel page yang disimpan di main memori. Penggunakan memori untuk
mengimplementasikan tabel page akan memungkinkan tabel page sangat besar (sekitar 1 juta
entry). Perubahan tabel page hanya mengubah PTBR dan menurunkan waktu context-switch.
Akan tetapi penggunaan metode ini memperlambat akses memori dengan faktor 2. Hal ini
dikarenakan untuk mengakses memori perlu dua langkah : pertama untuk lokasi tabel page
dan kedua untuk lokasi alamat fisik yang diperlukan.

 Menggunakan perangkat keras cache yang khusus, kecil dan cepat yang disebut associative
register atau translation look-aside buffers (TLBs). Merupakan solusi standar untuk
permasalahan penggunaan memori untuk implementasi tabel page. Sekumpulan associative
register berupa memori kecepatan tinggi. Setiap register terdiri dari 2 bagian yaitu key dan
value. Jika associative register memberikan item, akan dibandingkan dengan semua key
secara simultan. Jika item ditemukan nilai yang berhubungan diberikan. Model ini
menawarkan pencarian cepat tetapi perangkat keras masih mahal. Jumlah entry pada TLB
bervariasi antara 8 s/d 204

 Konsep Dasar
 Dengan swapping, pager menebak halaman yang akan digunakan sebelum swapping lagi
 Sebaliknya, pager hanya membawa halaman-halaman itu ke dalam memori
 Bagaimana cara menentukan kumpulan halaman itu?
 Membutuhkan fungsionalitas MMU untuk mengimplementasikan Demand-paging
 Jika halaman-halaman yang dibutuhkan sudah ada di dalam memori
 Tidak ada perbedaan dari halaman non-permintaan
 Jika halaman membutuhkan dan tidak ada di memori
 Dibutuhkan deteksi dan jalankan halaman kedalam memori dari penyimpanan
 Tanpa mengubah perilaku program
 Tanpa programmer mengubah kodenya
 Valid-Invalid Bit
 Dengan setiap entri tabel halaman, bit valid-tidak valid dikaitkan (1 dalam memori, 0 tidak
dalam memori).
 Awalnya valid-bit tidak valid diatur ke 0 pada semua entri
 Contoh snapshot tabel halaman dibawah:

 Selama terjemahan alamat MMU, jika bit valid–invalid dalam entri tabel halaman adalah 0
=> kesalahan halaman

 Langkah-langkah dalam Menangani Page Fault


1. Jika ada referensi ke halaman, referensi pertama ke halaman itu akan menjebak ke sistem
operasi
 Kesalahan halaman
2. Sistem operasi melihat tabel lain untuk memutuskan:
 Invalid reference abort
 Tidak hanya dimemori
3. Mencari frame kosong
4. Mengubah halaman ke dalam bingkai melalui scheduled disk operation

 Apa yang Terjadi jika Tidak Ada Frame kosong?


 Digunakan oleh halaman proses
 Juga dalam permintaan dari kernel, buffer I/O, dll
 Berapa banyak yang harus dialokasikan untuk masing-masing?
 Penggantian halaman – temukan beberapa halaman di memori, tetapi tidak benar-benar
digunakan, keluarkan halaman
 Algoritma – terminate? Swap outr? ganti halaman?
 Performa – menginginkan algoritme yang akan menghasilkan jumlah kesalahan halaman
minimum
 Halaman yang sama dapat dibawa ke memori beberapa kali

 Segmentasi
 Segmentasi memungkinkan pemrograman memandang memori sebagai berisi banyak ruang
alamat atau segmen. Ruang-ruang alamat itu sepenuhnya independen.
 Tiap segmen berisi barisan linear alamat 0 samapai maksimum. Panjang tiap segmen dapat
berbeda sampai panjang segmen maksimum.
 Dengan segmentasi pemrograman tidak berurusan dengan batasan-batasan memori yang
disebabkan kapasitas memori utama.
 Panjang segmen dapat berubah selama eksekusi.
 Segmen stack bertambah ketika terjadi operasi push dan turun saat operasi pop. Karena tiap
segmen merupakan ruang alamat terpisah, segmen-segmen dapat tumbuh dan mengkerut
secara bebas tanpa mempengaruhi lainnya. Jika stack pada segmen tertentu memerlukan
ruang alamat lebih besar untuk tumbuh, stack dapat memperolehnya karena tak ada yang
ditabraknya diruang alamat itu.

Anda mungkin juga menyukai