• Tidak ada hasil yang ditemukan

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) 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.

5.2. Demand Paging

Demand Paging atau permintaan pemberian halaman adalah salah satu implementasi dari memori

virtual yang paling umum digunakan. Sistem Demand Paging pada prinsipnya hampir sama dengan sistem permintaan halaman yang menggunakan swapping, hanya saja pada sistem demand paging, halaman tidak akan dibawa ke dalam memori fisik sampai ia benar-benar diperlukan. Oleh sebab itu dibutuhkan bantuan perangkat keras untuk mengetahui lokasi dari halaman saat ia diperlukan. Daripada melakukan swapping, keseluruhan proses ke dalam memori utama, digunakanlah yang disebut lazy swapper yaitu tidak pernah menukar sebuah halaman ke dalam memori utama kecuali halaman tersebut diperlukan. Keuntungan yang diperoleh dengan menggunakan demand paging sama dengan keuntungan pada memori virtual di atas.

Saat melakukan pengecekan pada halaman yang dibutuhkan oleh suatu proses, terdapat tiga kemungkinan kasus yang dapat terjadi, yaitu:

• Halaman ada dan sudah langsung berada di memori utama - statusnya adalah valid ("v" atau "1") • Halaman ada tetapi belum berada di memori utama atau dengan kata lain halaman masih berada

di disk sekunder - statusnya adalah tidak valid/invalid ("i" atau "0")

• Halaman benar - benar tidak ada, baik di memori utama maupun di disk sekunder (invalid

reference) - statusnya adalah tidak valid/invalid ("i" atau "0")

Ketika kasus kedua dan ketiga terjadi, maka proses dinyatakan mengalami kesalahan halaman (page

fault). Selanjutnya proses tersebut akan dijebak ke dalam sistem operasi oleh perangkat keras.

Skema Bit Valid - Tidak Valid

Dalam menentukan halaman mana yang ada di dalam memori utama dan halaman mana yang tidak ada di dalam memori utama, diperlukan suatu konsep, yaitu skema bit valid - tidak valid. Kondisi valid berarti bahwa halaman yang dibutuhkan itu legal dan berada di dalam memori utama (kasus pertama). Sementara tidak valid/invalid adalah kondisi dimana halaman tidak ada di memori utama namun ada di disk sekunder (kasus kedua) atau halaman memang benar-benar tidak ada baik di memori utama maupun disk sekunder (kasus ketiga).

Pengaturan bit dilakukan sebagai berikut:

• Bit = 1 berarti halaman berada di memori utama • Bit = 0 berarti halaman tidak berada di memori utama

Apabila ternyata hasil dari mengartikan alamat melalui page table menghasilkan bit halaman yang bernilai 0, maka akan menyebabkan terjadinya page fault .

Page fault adalah interupsi yang terjadi ketika halaman yang diminta/dibutuhkan oleh suatu proses

tidak berada di memori utama. Proses yang sedang berjalan akan mengakses page table (tabel halaman) untuk mendapatkan referensi halaman yang diinginkan. Page fault dapat diketahui/dideteksi dari penggunaan skema bit valid-tidak valid ini. Bagian inilah yang menandakan terjadinya suatu permintaan pemberian halaman .

Jika suatu proses mencoba untuk mengakses suatu halaman dengan bit yang di-set tidak valid maka

page fault akan terjadi. Proses akan dihentikan sementara halaman yang diminta/dibutuhkan dicari

didalam disk.

Gambar 5.2. Tabel Halaman dengan Skema Bit Valid - Tidak valid

5.3. Penanganan Page Fault

Prosedur untuk menangani page fault adalah sebagai berikut:

• CPU mengambil (load) instruksi dari memori untuk dijalankan. Pengambilan instruksi dilakukan dari halaman pada memori dengan mengakses tabel halaman. Ternyata pada tabel halaman bit ter-set tidak valid atau invalid (i).

• Interupsi page fault terjadi sehingga interupsi tersebut menyebabkan perangkat keras melakukan

trap yaitu menjebak proses tersebut ke dalam sistem operasi.

• Jika referensi alamat yang diberikan ke sistem operasi ilegal atau dengan kata lain halaman yang ingin diakses tidak ada (tidak berada di disk), maka proses akan dihentikan. Namun jika referensi alamatnya adalah legal maka halaman yang diinginkan akan diambil dari disk.

• Halaman yang diinginkan akan dibawa dari disk ke memori utama (memori fisik).

• Tabel halaman akan diatur ulang lagi sesuai dengan kondisi yang baru. Jika tidak terdapat ruang kosong (free frame) di memori utama (fisik) untuk menaruh halaman yang baru maka dilakukan penggantian halaman dengan memilih salah satu halaman pada memori utama untuk digantikan dengan halaman yang baru tersebut. Penggantian halaman dilakukan dengan menggunakan algoritma tertentu. Jika halaman yang digantikan tersebut sudah dimodifikasi oleh proses maka halaman tersebut harus ditulis kembali ke disk.

• Setelah halaman yang diinginkan sudah dibawa ke memori utama (fisik) maka proses dapat diulang kembali. Dengan demikian proses sudah bisa mengakses halaman karena halaman telah diletakkan ke memori utama (fisik).

Perlu diingat bahwa status (register, condition code, counter insruksi) dari proses yang diinterupsi ketika terjadi page fault akan disimpan sehingga proses dapat diulang kembali di tempat dan status yang sama, kecuali jika halaman yang diinginkan sekarang telah berada di memori dan dapat diakses.

Pada berbagai kasus yang terjadi, ada tiga komponen yang akan dihadapi pada saat melayani page

fault:

• Melayani interupsi page fault • Membaca halaman

• Mengulang kembali proses

Gambar 5.3. Langkah-Langkah dalam Menangani Page Fault

5.4. Kinerja

Dalam proses demand paging, jika terjadi page fault maka diperlukan waktu yang lebih lambat untuk mengakses memori daripada jika tidak terjadi page fault. Hal ini dikarenakan perlu adanya penanganan page fault itu sendiri. Kinerja demand paging ini dapat dihitung dengan menggunakan

effective access time yang dirumuskan sebagai berikut: effective access time = (1 - p) x ma + p x page fault time

ma adalah memory access time, yang pada umumnya berkisar antara 10 hingga 200 nanosecond. p

adalah probabilitas terjadinya page fault, yang berkisar antara 0 hingga 1. Jika p sama dengan 0 yang berarti bahwa tidak pernah terjadi page fault, maka effective access time akan sama dengan

memory access time, dan itulah yang diharapkan. Sedangkan jika p sama dengan 1, yang berarti

bahwa semua halaman mengalami page fault, maka effective access time-nya akan semaikin meningkat.

Untuk mendapatkan effective access time, kita harus mengetahui waktu yang diperlukan untuk menangani page fault. Komponen-komponen dalam penanganan page fault terdiri dari tiga kelompok besar, yaitu melayani interupsi dari page fault, membaca halaman, dan mengulang kembali proses.

Penggunaan effective access time dapat ditunjukkan dalam contoh berikut.