Anda di halaman 1dari 17

Virtual Memory

Pengertian Virtual Memory

Virtual Memory 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).
Virtual memory juga bisa dikatakan sebagai Memori Tambahan yang menjadi fitur setiap masing
masing Sistem Operasi, misalnya Linux terdapat Swap. Memori virtual ini, digunakan Sistem Operasi
ketika Komputer sedang menjalankan sebuah Program aplikasi yang kapasitasnya melebih Memori yang
tersedia. 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.
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.

Tujuan Virtual Memory


Virtual Memory digunakan dengan membuat suatu file khusus yang disebut swapfile. Virtual
memory digunakan pada saat sistem operasi kehabisan memori, dimana sistem operasi akan
memindahkan data yang paling terakhir diakses kedalam swapfile di hardisk. Hal ini yang
mengsongkan/membebaskan bebrapa ruang kosong pada memori untuk aplikasi yang akan digunakan
selanjutnya. Sistem operasi akan melakukan hal ini secara terus menerus ketika data baru diisi pada
RAM.
Pada saat data yang tersimpan di swapfile diperlukan, data tersebut ditukar (swap) dengan data
yang paling terakhir dipakai di dalam memory (RAM). Hal ini mengakibatkan swapfile bersifat seperti
RAM, walaupun program tidak dapat secara langsung dijalankan dari swapfile. Satu hal yang perlu
dicatat bahwa karena sistem operasi tidak dapat secara langsung menjalankan program dari swapfile,
bebrapa program mungkin tidak akan berjalan walau dengan swapfile yang besar jika kita hanya memiliki
RAM yang kecil.

Fungsi Virtual Memory


 Menangani kelebihan “beban” RAM
 Berperan sebagai RAM cadangan, tapi tidak menggantikan fungsi RAM
 Menyimpan data dari RAM, tapi tidak meneruskannya ke processor
 Data yang disimpan pada virtual memory (paging file) bersifat sementara
Gambar 5.1. Memori Virtual

Pada gambar diatas ditunjukkan 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)
atauswap 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.

Demand Paging
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.

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. Prosedur untuk menangani page fault seperti Gambar 8-4
sebagaiberikut :
1. Sistem operasi melihat tabel untuk menentukan jika acuan invalid maka proses dihentikan dan page
sedang tidak berada di memori.
2. Jika acuan invalid dilakukan trap ke sistem operasi.
3. Sistem mencari frame kosong.
4. Sistem melakukan proses swapping ke frame bebas.
5. Tabel page di-reset, bit valid-invalid diset 1 atau valid
6. instruksi di-restart.

Apabila tidak ditemukan frame bebas maka dilakukan page replacement yaitu mencari beberapa
page di memori yang tidak digunakan kemudian dilakukan swap out ke backing store. Terdapat beberapa
algoritma page replacement dimana performansi algoritma diharapkan menghasilkan jumlah page fault
minimum. Beberapa page kemungkinan dibawa ke memori beberapa kali.
Perangkat keras yang dibutuhkan untuk mendukung demand paging sama dengan perangkat keras untuk
sistem paging dengan swapping yaitu :
1) Tabel page : tabel mempunyai kemampuan untuk memberi entry bit valid-invalid
atau nilai khusus untuk bit proteksi
2) Memori sekunder : digunakan untuk membawa page yang tidak di memori danbiasanya adalah disk
kecepatan tinggi yang disebut swap device.

Bit Valid-Invalid
- Untuk setiap masukan ke page table entry, akan dihubungkan dengan bit valid–invalid
(1 => dalam memori, 0 => tidak dalam memori)
- Inisialisasi bit valid–invalid dengan 0 pada semua masukan.
- Contoh snapshop page table

- Selamat menterjemahkan alamat, jika bit valid-invalid dalam masukan page table adalah
0 => page fault.
Page Fault

- Jika terdapat masukan yang direferensi ke page,referensi pertama akan trap ke OS =>
page fault
- OS melihat ke tabel lain untuk menentukan:
o Referensi Invalid => abort.
o Sedang tidak berada di memori.
- Dapatkan Frame Kosong
- Swap Page ke dalam frame
- Reset table, validasi bit = 1
- Restart instruksi: Least Recently Used
o Pindah Blok

o Lokasi auto increment/decrement


Langkah-langkah menangani page fault

Apa yang terjadi jika tidak terdapat frame bebas?

- Page replacement – mencari beberapa page di dalam


- memori, titapi tidak digunakan, swap keluar
o algoritma
o performansi – menginginkan algoritma yang menghasilkan jumlah page fault
minimal
- Page yang sama mungkin dibawa ke memori beberapa kali

Performansi dari Demand Paging


- Rata-rata Page Fault 0 ≤ p ≤ 1.0
o Jika p = 0 tidak ada page faults
o Jika p = 1, setiap referensi gagal
- Effective Access Time (EAT)
o EAT = (1 – p) x akses memori
 + p (waktu page fault
 + [swap page out ]
 + swap page in
 + waktu restart)

Contoh Demand Paging


- Waktu akses memori = 1 microsecond
- 50% dari waktu page harus dilakukan modifikasi sehingga perlu di swap out.
- Waktu Swap Page = 10 msec = 10,000 msec
o EAT = (1 – p) x 1 + p (15000)
o 1 + 15000P (in msec)
Pembuatan Proses

- Virtual memory mempunyai keuntungan laing selama pembuatan proses:


o Copy-on-Write
o Memory-Mapped Files

Copy-on-Write

- Copy-on-Write (COW) mengijinkan baik proses parent dan child menginisialisasi page
yang sama.
Jika salah satu proses memodifikasi shared page, page akan di-copy.
- COW memungkinkan pembuatan proses yang lebih efisian karena hanya memodifikasi
page yang di-copy
- Page bebas dialokasikan dari sebuah pool

Memory-Mapped Files

- Memory-mapped file I/O memungkinkan file I/O diperlakukan sebagai routine memory
access dengan memetakan blok disk ke page di memory.
- Sebuah file diinisialisasi read menggunakan demand paging. File dibaca dari sistem file
ke page pada memori fisik sesuai ukuran page. Read/write ke/dari file diperlakukan
seperti akses memori.
- Akses file dengan memperlakukan file I/O sebagai akses memori lebih sederhana
daripada sistem call read() write().
- Juga memungkinkan beberapa proses untuk memetakan file yang sama pada page di
memori yang sama
Page Replacement
Page replacement diperlukan pada situasi dimana proses dieksekusi perlu frame bebas tetapi tidak
tersedia frame bebas. Sistem harus menemukan satu frame yang sedang tidak digunakan dan
membebaskannya. Untuk membebaskan frame dengan cara menulis isinya untuk ruang swap dan
mengubah tabel page (dan tabel lain) yang menunjukkan page tidak lagi di memori.

- Mencegah over-allocation dari memori dengan rutin modifikasi page-fault untuk


melakukan page replacement
- Menggunakan bit modify (dirty) untuk mengurangi kegagalan transfer page – hanya
page yang dimodifikasi yang ditulis di disk
- Page replacement membedakan memori logika dan memori fisik – memori virtual besar
dapat disediakan pada memori fisik yang kecil
Langkah-langkah untuk page fault yang memerlukan page replacement seperti Gambar 8-6 adalah sebagai
berikut :
1. Carilah lokasi page yang diharapkan pada disk.
2. Carilah frame kosong dg cara :
- Bila ada frame kosong, gunakan.
- Bila tidak ada, gunakan algoritma page replacement untuk menyeleksi frameyang akan menjadi
korban.
- Simpan page korban ke disk, ubah tabel page.
3. Baca page yang diinginkan ke frame kosong yang baru, ubah tabel page.
4. Mulai kembali proses user.

Algoritma Page Replacement

Terdapat beberapa algoritma page replacement, setiap sistem operasi mempunyai skema yang
unik. Algoritma page replacement secara umum diinginkan yang mempunyai rata-rata page fault
terendah. Algoritma dievaluasi dengan menjalankannya pada string tertentu dari memory reference dan
menghitung jumlah page fault. String yang mengacu ke memori disebut reference string (string
acuan).String acuan dibangkitkan secara random atau dengan menelusuri sistem danmenyimpan alamat
dari memori acuan. Misalnya jika ditelusuri proses tertentu, disimpan alamat berikut :

0100, 0432, 0101, 0612, 0102, 0103, 0104,

0101, 0611, 0102, 0103, 0104, 0101, 0610,

0102, 0103, 0104, 0101, 0609, 0102, 0105

dimana 100 byte per page direduksi ke string acuan :

1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1

Pada contoh berikut, string referensi sbb

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
Untuk menentukan jumlah page fault untuk string acuan dan algoritma pagereplacement tertentu,
harus diketahui jumlah page frame tersedia juga harus diketahui. Semakin tinggi jumlah frame lebih
tinggi, semakin rendah jumlah page fault.

Terdapat beberapa algoritma page replacement antara lain algoritma first in first our (FIFO),
optimal dan least recently use (LRU). Pada sub bab berikut akan diilustrasikan algoritma page
replacement tersebut dengan menggunakan string acuan

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

Graf Page Fault VS Jumlah Frame

Algoritma FIFO

Algoritma FIFO merupakan algoritma paling sederhana. Algoritma FIFO diasosiasikan dengan
sebuah page bila page tersebut dibawa ke memori. Bila ada suatu page yang akan ditempatkan, maka
posisi page yang paling lama yang akan digantikan. Algoritma ini tidak perlu menyimpan waktu pada saat
sebuah page dibawa ke memori.

Meskipun algoritma FIFO mudah dipahami dan diimplementasikan, performansitidak selalu


bagus karena algoritma FIFO menyebabkan Belady’s anomaly. Belady’s anomaly mematahkan fakta
bahwa untuk beberapa algoritma page replacement, bila rata-rata page fault meningkat, akan
meningkatkan jumlah alokasi frame. Sebagai contoh, jika menggunakan string acuan :

- String Acuan 1, 2, 3, 4, 1, 2, 5, 1, 2, 5, 1, 2, 3, 4, 5
- 3 frame (3 page dapat di memori pada satu waktu per proses)
- 4 frame

dengan algoritma FIFO terjadi Belady’s anomaly.

- Lebih banyak frames => page fault lebih kecil

Page Replacement FIFO

- String Acuan: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1


- 3 frame (3 page dapat di memori pada satu waktu per proses)

15 Page Faults

Ilustrasi Belady’s Anomaly pada FIFO


Algoritma Optimal

Algoritma optimal merupakan hasil penemuan dari Belady’s anomaly. Algoritma ini mempunyai
rata-rata page fault terendah. Algoritma optimal akan mengganti page yang tidak akan digunakan untuk
periode waktu terlama. Algoritma ini menjamin rata-rata page fault terendah untuk jumlah frame tetap
tetapi sulit implementasinya.
- Mengganti page yang tidak akan digunakan untuk periode waktu yang terlama.
- Contoh 4 Frame
o 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

- Bagaimana cara mengetahuinya?


- Digunakan untuk mengukur bagaimana performansi dari algoritma.

Page Replacement Optimal

- 9 is optimal for the example


Algoritma Least Recently Use (LRU)

Algoritma LRU merupakan perpaduan dari algoritma FIFO dan optimal. Prinsip dari algoritma LRU
adalah mengganti page yang sudah tidak digunakan untuk periode waktu terlama.

Untuk mengimplementasikan algoritma LRU, digunakan dua model yaitu :

- Counter : setiap entry tabel page diasosiasikan dengan sebuah “time-of-use” dan sebuah clock
logika atau counter ditambahkan ke CPU. Clock ini dinaikkan untuk setiap acuan ke memori. Jika
sebuah acuan ke page dibuat, isi clock register dicopy ke time-of-use pada tabel page untuk page
tersebut.
- Stack : stack dari nomor page diatur. Jika sebuah page digunakan acuan, maka page dihapus dari
stack dan meletakkan pada top of stack. Dengan cara ini, stack selalu digunakan page dan bagian
bawah untuk page LRU. Implementasi stack untuk algoritma LRU.
- String Referensi: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

Page Replacement LRU

- 12 faults – better than FIFO but worse than OPT


- Umumnya Algoritma yang sering digunakan dan bagus untuk diimplementasikan.
- Implementasi Stack – menyimpan stack yang berisi nomor page dalam bentuk double link:
o Page yang direferensi:
 Pindahkan ke atas
 Membutuhkan 6 pointer yang diubah
o Tidak ada pencarian replacement
Penggunaan Stack untuk menyimpan Page Referensi yang sering digunakan

Alokasi Frame

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 minimim frameditentukan oleh arsitektur instruction-set. Bila terjadi
page fault sebelum eksekusi instruksi selesai, instruksi harus di-restart. Sehingga tersedia frame yang
cukup untukmembawa semua page yang berbeda dimana sembarang instruksi dapat mengacu. Misalnya
mikrokomputer menggunakan memori 128K yang dikomposisikan dengan page ukuran 1K, maka
terbentuk 128 frame. Jika sistem operasi menggunakan 35K, maka 93 frame sisa digunakan program user.
Bila suatu program menyebabkan page fault sebanyak 93 kali, maka menempati 93 frame bebas tersebut.
Jika terjadi page faultke 94, dari 93 frame yang terisi harus dipilih salah satu untuk diganti yang baru. Bila
program selesai, 93 frame tersebut dibebaskan kembali.

- Setiap proses membutuhkan jumlah page minimum.


- Contoh: IBM 370 – 6 page untuk menangani instruksi SS
- MOVE:
o Instruksi 6 byte, bisa ditambah 2 page.
o 2 page untuk menangani from.
o 2 page untuk menangani to.
- Dua skema utama alokasi
o Alokasi fix
o Alokasi prioritas
- Alokasi Fix
o Alokasi sama (equal) – contoh, jika 100 frame dan 5 proses, masing-masing mendapat 20
page.
o Alokasi proporsional – Alokasi berdasarkan ukuran proses.

- Alokasi Prioritas
o Menggunakan skema alokasi proposional menggunakan prioritas, bukan ukuran.
o Jika proses Pi membangkitkan page fault,
 Memilih untuk replacement satu dari framenya.
 Memilih untuk reprecement sebuah frame dari sebuah proses dengan
nomor prioritas terendah

Alokasi Global dan Alokasi Lokal

Page replacement adalah faktor terpenting lain yang harus dipertimbangkan dalam
alokasi frame. Pada multiple process yang berkompentisi mendapatkan frame, algoritma page
replacement dikelompokkan dalam 2 kategori yaitu global replacement dan local replacement.

Global replacement mengijinkan suatu proses untuk menyeleksi suatu frameyang akan
dipindah dari sejumlah frame, meskipun frame tersebut sedang dialokasikan ke proses yang lain.
Pada local replacement, jumlah frame yang dialokasikan untuk proses tidak berubah. Setiap
proses dapat memilih dari frame-frame yang dialokasikan untuknya.

Permasalahan pada global replacement adalah proses tidak dapat mengontrolrata-rata


page fault. Sejumlah page pada memori untuk sebuah proses tidak hanya tergantung pada
perilaku paging untuk proses tersebut, tetapi juga perilaku paging untuk proses yang lain.
Bagaimanapun, karena algoritma global replacement menghasilkan throughput yang lebih besar,
metode ini sering digunakan.
Alokasi Global vs. Lokal

- Replacement Global – proses memilih sebuah replacement frame dari sekumpulan semua
frame; satu proses dapat mengambil sebuah frame dari yang lain.
- Replacement Local – setiap proses dari hanya dari kumpulan alokasi frame nya sendiri.

Thrashing

Misalnya sembarang proses tidak mempunyai frame yang cukup. Meskipun secara teknis dapat
mengurangi jumlah frame yang dialokasikan sampai minimum, terdapat sejumlah page yang sedang aktif
digunakan. Jika suatu proses tidak memiliki jumlah frame yang cukup, maka sering terjadi page fault.
Sehingga harus mengganti beberapa page. Tetapi karena semua page sedang digunakan, harus mengganti
page yang tidak digunakan lagi kemudian. Konsekuensinya, sering terjadi page fault lagi dan lagi. Proses
berlanjut page fault, mengganti page untuk page fault dan seterusnya.

Kegiatan aktifitas paging yang tinggi disebut thrashing. Sebuah proses mengalami thrashing jika
menghabiskan lebih banyak waktu untuk paging daripada eksekusi. Efek thrashing dapat dibatasi dengan
menggunakan algoritma local (priority) replacement. Grafik terjadinya proses thrashing pada sistem
multiprogramming.

- Jika sebuah proses tidak “cukup” page, rata-rata page - fault sangat tinggi.
- Hal ini menyebabkan:
o Utilitas CPU yang rendah.
o Sistem opreasi perlu meningkatkan tingkat multiprogramming.
o Proses lain ditambahkan ke sistem.
- Thrashing = sebuah proses yang sibuk melakukan swapping page ke dalam dan keluar.

- Mengapa paging bekerja?


- Model lokalitas
o Proses migrasi dari satu lokasi ke lokasi lain.
o Lokasi kemungkinan overlap.
- Mengapa terjadi thrashing?
o ∑ ukuran lokasi > total ukuran memori
Contoh Sistem Operasi

- Windows NT
o Menggunakan demand paging dengan clustering. Clustering membawa page fault.
o Proses diset working set minimum dan working set maximum.
o Working set minimum adalah jumlah minimum page pada proses yang dijamin mendapat
lokasi memori.
o Sebuah proses mungkin digunakan untuk beberapa page dapat ditambahkan ke working
set maximum.
o Jika jumlah memori bebas dalam sistem memenuhi threshold, automatic working set
trimming digunakan untuk menyimpan jumlah memori bebas.
o Working set trimming menghapus page dari proses yang mempunyai page melebihi
working set minimum.
- Solaris 2
o Menyimpan daftar page bebas untuk menentukan proses yang fault.
o Lotsfree – parameter threshold untuk memulai paging.
o Paging dibentuk dengan proses pageout.
o Pageout mencari page menggunakan algoritma modified clock.
o Scanrate adalah rata-rata page mana yang dicari. Jangkauan dari slowscan ke fastscan.
o Pageout dipanggil lebih sering tergantung jumlah ketersediaan memori bebas.

Solar Page Scanner

Anda mungkin juga menyukai