VIRTUAL MEMORY

Memori virtual adalah suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Memori logis merupakan kumpulan keseluruhan halaman dari suatu program. Tanpa memori virtual, memori logis akan langsung dibawa ke memori fisik (memori utama). Disinilah memori virtual melakukan pemisahan dengan menaruh memori logis ke secondary storage (disk sekunder) dan hanya membawa halaman yang diperlukan ke memori utama (memori fisik). Teknik ini menempatkan keseluruhan program di disk sekunder dan membawa halaman-halaman yang diperlukan ke memori fisik sehingga memori utama hanya akan menyimpan sebagian alamat proses yang sering digunakan dan sebagian lainnya akan disimpan dalam disk sekunder dan dapat diambil sesuai dengan kebutuhan. Jadi jika proses yang sedang berjalan membutuhkan instruksi atau data yang terdapat pada suatu halaman tertentu maka halaman tersebut akan dicari di memori utama. Jika halaman yang diinginkan tidak ada maka akan dicari ke disk sekunder.
Ruang sebuah memori virtual yang dibagi menjadi bagian-bagian yang sama dan diidentifikasikan dengan nomor virtual pages. Memori fisik dibagi menjadi page frames yang berukuran sama dan diidentifikasikan dengan nomor page frames. Bingkai (frame) menyimpan data dari halaman. Atau memori virtual memetakan nomor virtual pages ke nomor page frames. Mapping (pemetaan) menyebabkan halaman virtual hanya dapat mempunyai satu lokasi alamat fisik.
Dalam sistem paging, jika sebuah ruang diperlukan untuk proses dan halaman yang bersangkutan tidak sedang digunakan, maka halaman dari proses akan mengalami paged out (disimpan ke dalam disk) atau swap out, memori akan kosong untuk halaman aktif yang lain. Halaman yang dipindah dari disk ke memori ketika diperlukan dinamakan paged in (dikembalikan ke memori) atau swap in. Ketika sebuah item dapat mengalami paging, maka item tersebut termasuk dalam item yang menempati ruang virtual, yang diakses dengan alamat virtual dan ruangan yang ada dialokasikan untuk informasi pemetaan. Sistem operasi mengalokasikan alamat dari item tersebut hanya ketika item tersebut mengalami paging in.
Keuntungan yang diperoleh dari penyimpanan hanya sebagian program saja pada memori fisik adalah:
  • Berkurangnya proses M/K yang dibutuhkan (lalu lintas M/K menjadi rendah)
  • Ruang menjadi lebih leluasa karena berkurangnya memori fisik yang digunakan
  • Meningkatnya respon karena menurunnya beban M/K dan memori
  • Bertambahnya jumlah pengguna yang dapat dilayani. Ruang memori yang masih tersedia luas memungkinkan komputer untuk menerima lebih banyak permintaan dari pengguna.
Teknik memori virtual akan memudahkan pekerjaan seorang programmer ketika besar data dan programnya melampaui kapasitas memori utama. Sebuah multiprogramming dapat mengimplementasikan teknik memori virtual sehingga sistem multiprogramming menjadi lebih efisien. Contohnya: 10 program dengan ukuran 2 MB dapat berjalan di memori berkapasitas 4 MB. Tiap program dialokasikan 256 Kbyte dan bagian - bagian proses (swap in) masuk ke dalam memori fisik begitu diperlukan dan akan keluar (swap out) jika sedang tidak diperlukan.
Prinsip dari memori virtual adalah bahwa “Kecepatan maksimum ekseskusi proses di memori virtual dapat sama, tetapi tidak akan pernah melampaui kecepatan eksekusi proses yang sama di sistem yang tidak menggunakan memori virtual”.
Memori virtual dapat diimplementasikan dengan dua cara:
  1. Demand Paging yaitu dengan menerapkan konsep pemberian halaman pada proses
  2. Demand segmentation, lebih kompleks diterapkan ukuran segmen yang bervariasi.
Ø Virtual memory
· Ruang logical address dapat lebih besar dari pada ruang physical address
· Proses yang dieksekusi tidak harus seluruhnya berada dimemori.
· Fakta program di memori:
ü Kode untuk menangani error jarang dieksekusi
ü Alokasi memori untuk variable array, list dan table tidak proporsional
ü Feature dan routine jarang digunakan
ü
Ø Eksekusi program secara parsial dimemori:
· Memudahkan programmer
· Menambah utilisasi dan throughput CPU
· Aktifitas I/O berkurang
Ø Melalui memori virtual, page dapat dishare oleh beberapa proses:
· Shared System Library
· Proses dapat membuat shared Memory
· Page dapat dishare selama fork() berlangsung
Ø Virtual address space
  • Proses pada ruang alamat logika dapat berurutan
  • Pada memori fisik page nya tersebar (melalui MMU)
Hole / large bank space dapat digunakan jika ruang logika stack dan heap bertambah > dynamic memory allocation
Virtual address space yang mempunyai hole disebut sparse address space
Hole / large bank space
Demand Paging
Ø Page diload ke memory hanya ketika dibutuhkan
· Aktifitas I/O lebih sedikit
· Ruang memori yang dibutuhkan lebih sedikit
· Repons menjadi lebih cepat
· Lebih banyak proses user dalam memori
Ø Lazy swapper – tidak melakukan swapping page ke memori hingga page dibutuhkan.
· Swapper yang berurusan dengan page disebut pager
Ø Cek page ada di memori atau tidak? Digunakan Valid-Invalid bit
· Setiap entri page table diasosiasikan dengan valid dan invalid bit.
v (valid) >> ada di memori
i (invalid) >> punya arti dua :
1. alamat logika tidak sesuai dengan proses
2. page ada di disk tapi tidak ada dimemori
Ø Jika nilai bit I tidak pernah diakses, tidak ada pengaruh, Jika nilai bit I diakses, terjadi page fault-trap, sistem operasi mengambil page dari disk ke memory
Pure demand paging >> eksekusi proses tanpa ada satu pun page dimemori
· page di pindah kememori hanya saat dibutuhkan
Hardware untuk demand paging:
· Page Table
· Secondary Memory (high-speed disk)
Hal penting dalam demand paging
· Restart intruksi setelah page fault terjadi
· Restart pada lokasi dan state yang sama
Kiner ja Demand Paging
· Page Fault Rate 0 £ p £ 1.0
ü jika p = 0, tidak ada page fault
ü Jika p = 1, page fault disemua lokasi
· Effective Access Time (EAT)
EAT =((1 – p) x memory access) + (p x page fault time)
· Jika P=0 >> Effective Access Time = Memori Access Time
EAT Demand Paging
Waktu akses memory = 200 nanosecond. Rata-rata waktu page-fault service time = 8 milliseconds ms=106 ns
EAT = ((1 – p) x 200) + (p x (8 milliseconds))
= ((1 – p) x 200) + (p x 8,000,000)
= 200 + (p x 7,999,800)
Jika 1 dari 1.000 kali akses terjadi fault,maka EAT = 8.2 microseconds. EAT bertambah menjadi 40 kali lipat dari waktu akses memory !
Jika ingin EAT dibawah 220ns (lebih 10 % dari waktu akses memori) maka :
ü 220 > 200+7.999.800 x p
ü 20 > 7.999.800 x p
ü p < 0,0000025, artinya minimal hanya ada 1 kali page fault dari 399.990 kali akses
Komponen utama waktu page fault
ü service page fault interrupt (1-100 microseconds)
ü baca page/page switch time (8 millisecond)
ü restart proses (1-100 microseconds)
COPY ON WRITE
Copy-on-Write (COW) Þ Teknik yang memfasilitasi proses parent dan child untuk share page yang sama dalam memory. Page diset copy-on-write agar dapat dimodifikasi. Jika modifikasi dilakukan, page di duplikasi dan ditempatkan pada posisi berbeda dimemori fisik. Sistem operasi mencari lokasi page yang kosong. Page dapat bertambah bila:
ü stack atau heap suatu proses berkembang
ü terjadi copy-on-write
Alokasi page baru menggunakan teknik zerofill-on-demand vfork() >> (Virtual Memory fork())
· proses parent dihentikan, proses child menggunakan alamat logika parent.
· tidak menggunakan copy-on-write
· tidak mengubah alamat logika parent ganti proses dengan exec()
· berjalan di varian unix

Pergantian Page( Page Replacement )
Fakta :
  • Dari 10 page proses A è 5 page yang digunakan
  • 40 Frame è diisi 8 Proses (1 proses @ 5 frame)
  • 40 Frame è diisi 6 Proses (1 proses @ 10 frame) ? over-allocating!
Over-allocating è page-fault è all memory in use, no space available
Solusi ?
  • Hapus proses user
  • Swap out proses
  • Pergantian page (Page replacement)
Pergantian page – cari frame dalam memory yang sedang tidak digunakan kemudian lakukan swap out
  • Frame A dipindahkan ke swap space
  • Page A tidak lagi berada dimemori è ubah page table
  • Gunakan frame kosong A untuk page yang baru
Algoritma Pergantian page diinteragrasikan pada page-fault service routine
Langkah page fault service routine dengan pergantian page
1. Cari lokasi page dalam disk
2. Cari frame kosong di memori
a) Gunakan frame kosong Jika ada
b) Jika tidak ada, gunakan algoritma pagereplacement untuk memilih victim frame yang akan dikeluarkan
c) Pindahkan victim frame ke disk; ubah page dan frame table
3. Pindahkan page baru dari disk ke frame; ubah page dan frame table
4. Restart proses user
page fault service routine è dua kali page transfer (swap out & swap in)
Agar satu kali transfer? gunakan page table dengan modify bit !
Modify bit (dirty bit)
  • Jika bit diset, page telah berubah
page di memori != page didisk
page harus dipindah ke disk
  • Jika bit tidak diset, page tidak berubah
page dimemori == page didisk
page tidak dipindah ke disk, langsung dihapus!
MEMPERBESAR VIRTUAL MEMORY
Sudah tidak asing lagi di telinga kita (apalagi gamer) kalo RAM berpengaruh sekali terhadap performansi komputer, tetapi bagaimana bila RAM kita kecil atau dalam keadaan mendesak kita butuh performansi yang meningkat? Cara paling cepat adalah memperbesar virtual memory. Tidak diperlukan program khusus untuk melakukan ini. Berikut langkah-langkahnya.
1. Klik kanan my computer, lalu properties. Geser ke tab advanced lalu klik setting pada bagian performance.
2. Setelah keluar window baru, geser ke tab advanced lagi dan perhatikan pada bagian virtual memory.
3. Klik change pada virtual memory, Nah di sana akan tertampil harddisk kamu dan paging file size yang digunakan. Ganti initial size dengan besar virtual memory minimum yang kamu butuhkan dan maximum size dengan yang kamu butuhkan. Catatan : Pemasangan Virtual Memory yang besar akan memperpendek umur harddisk serta memotong free space pada harddisk.
4. Setelah itu, klik OK dan lalukan restart pada komputer.
Untuk sekedar informasi, kalau bisa hindari pemasangan virtual memory yang besar untuk permainan game-game berat (apalagi yang memakan texture size besar) karena ini akan membuat kerja harddisk jauh lebih berat dari pada sebelumnya dan berdampak pada kerusakan harddisk yang cepat.

0 Comment:

Posting Komentar

Related Posts Plugin for WordPress, Blogger...

 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | coupon codes