Memori virtual memisahkan memori logika pengguna dari memori fisik, menyediakan memori virtual besar meski memori fisik kecil. Ini mengurangi I/O, memori yang dibutuhkan, dan meningkatkan respon serta jumlah pengguna yang dilayani. Memori virtual dapat dilakukan dengan demand paging, dimana page hanya dimasukkan ke memori jika dibutuhkan.
1. Asnita Meydelia C K 130533608143
Aunur Rofik 130533608128
Rizky Dwi Hidayat 130533608123
Yopy Adiantoro 130533608125
2. Memori virtual adalah teknik yang memisahkan
memori logika user dari memori fisik. Menyediakan
memori virtual yang sangat besar diperuntukkan
untuk programmer bila tersedia memori fisik yang
lebih kecil. Programmer tidak perlu khawatir
jumlah memori fisik yang tersedia, sehingga dapat
berkonsentrasi pada permasalahan pemrograman.
3. Berkurangnya I/O yang dibutuhkan (lalu lintas I/O menjadi
rendah). Misal, untuk program butuh membaca dari disk dan
memasukkan dalam memory setiap kali diakses.
Berkurangnya memori yang dibutuhkan (space menjadi lebih
leluasa). Contoh, untuk program 10 MB tidak seluruh bagian
dimasukkan dalam memori. Pesan-pesan error hanya
dimasukkan jika terjadi error.
Meningkatnya respon, sebagai konsekuensi dari menurunnya
beban I/O dan memori.
Bertambahnya jumlah user yang dapat dilayani. Ruang memori
yang masih tersedia luas memungkinkan komputer untuk
menerima lebih banyak permintaan dari user.
4. Memori virtual dapat dilakukan melalui dua cara:
1. Permintaan pemberian halaman (demand paging).
2. Permintaan segmentasi (demand segmentation).
Algoritma dari permintaan segmentasi lebih kompleks,
karenanya jarang diimplementasikan.
5. Demand paging adalah sistem paging dengan
swapping. Page diletakkan di memori hanya jika
diperlukan. Hal ini menyebabkan kebutuhan I/O
lebih rendah, kebutuhan memori lebih rendah,
respon lebih cepat dan lebih banyak user yang
menggunakan.
6. Sebuah proses disimpan di memori sekunder (disk). Jika proses akan dieksekusi, maka
dipindah (swap) ke memori. Menggunakan lazy swapper untuk melakukan swapping bila
page tersebut akan digunakan yang berarti sebuah page tidak pernah ditukar ke memori
kecuali page diperlukan. Jika page diperlukan, dilakukan acuan ke page tersebut, tetapi jika
acuan invalid maka dilakukan penghentian. Page yang sedang tidak berada di memori
tersebut akan dibawa ke memori dari backing store.
Untuk membedakan antara page pada memori dengan page pada disk digunakan valid-invalid
bit. Tabel page untuk page yang berada di memori diset “valid’, sedangkan tabel page
untuk page yang tidak sedang di memori (ada pada disk) diset “invalid”
Akses ke page yang diset “invalid” menyebabkan page fault, yang menyebabkan trap ke
sistem operasi. Karena status (register, kode kondisi, counter instruksi) dari proses ter-interrupt
disimpan bila terjadi page fault, proses dapat dimulai lagi pada tempat dan status
yang sama, kecuali page yang cocok sedang di memori dan sedang diakses.
8. Diasumsikan ma adalah access time (10-200 ns) ke memori dan p
adalah probabilitas terjadi page fault(0 ≤ p ≤1), maka effective
access time didefinisikan sebagai :
EAT = (1-p) x ma + p x page_fault-time
Untuk menghitung effective access time, harus diketahui berapa
waktu yang
diperlukan untuk melayani page fault.
9. Diketahui waktu pengaksesan memori (ma) sebesar 100 ns.
Waktu page fault sebesar 20 ms. Maka :
EAT = (1 - p) x ma + p x page fault time
= (1 - p) x 100 + p x 20000000
= 100 - 100p + 20000000p
= 100 + 19.999.900p nanosecond
10. Saat terjadi page fault, maka harus diputuskan page frame
di memori fisik yang harus diganti. Kinerja sistem akan
baik jika page yang diganti dipilih yang tidak sering
digunakan di masa datang. Jika page yang diganti sering
digunakan, maka page itu akan dikembalikan secepatnya
yang berarti terjadi page fault berulang kali.
Banyaknya page fault menghasilkan banyak overhead.
12. Page yg dikeluarkan untuk memberi tempat
ke yang baru ditentukan secara acak tanpa
kriteria tertentu.
13. Setiap page diberi label untuk menandai berapa instruksi
lagi baru dia digunakan. Page dengan label tertinggi
(waktu dari sekarang sampai pemakaian berikutnya paling
lama) yang akan dikeluarkan.
14. Setiap page diberi status bit R (referenced) dan M (modified). Bit
bernilai 0 jika page belum direferensi/dimodifikasi, dan 1 jika
sebaliknya. Dari nilai desimalnya didapat 4 kelas:
Page dengan kelas terkecillah yang akan dikeluarkan.
15. Page yang paling dulu masuk ke memori dari semua page yang ada dikeluarkan.
16. Mencari page yang berada di memori paling lama,
tetapi juga tidak dipakai.
Jika sebuah page dipakai (direferensi) bit R diset.
Jika sistem menemukan bahwa bit R page yang
paling lama ter-set, page tersebut tidak jadi
dikeluarkan, tetapi bit R-nya di-reset.
18. Alokasi frame berhubungan dengan mekanisme alokasi sejumlah
memori bebas yang tetap diantara beberapa proses. Meskipun
terdapat beberapa variasi pengalokasian frame bebas ke beberapa
proses, tetapi strategi dasar jelas yaitu : proses user dialokasikan
untuk sembarang frame bebas.
Jumlah minimum frame per proses ditentukan oleh arsitektur
dimana jumlah maksimum tergantung jumlah memori fisik yang
tersedia. Jumlah minimum frame ditentukan oleh arsitektur
instruction-set. Bila terjadi page fault sebelum eksekusi instruksi
selesai, instruksi harus di-restart. Sehingga tersedia frame yang
cukup untuk membawa semua pageyang berbeda dimana
sembarang instruksi dapat mengacu.
19. Thrashing adalah keadaan dimana proses sibuk untuk
mengganti halaman yang dibutuhkan secara terus
menerus.
20. Untuk membatasi efek thrashingdapat menggunakan
algoritma penggantian lokal. Dengan algoritma penggantian
lokal, jika terjadi thrashing, proses tersebut dapat
menggambil bingkai dari proses lain dan menyebabkan
proses tersebut tidak mengalami thrashing. Salah satu
cara untuk menghindari thrashing adalah dengan cara
menyediakan jumlah bingkai yang pas sesuai dengan
kebutuhan proses tersebut. Salah satu cara untuk
mengetahui jumlah bingkai yang diperlukan pada suatu
proses adalah dengan strategi working set.