Memori Virtual

Selama bertahun-tahun, pelaksanaan berbagai strategi managemen memori yang ada menuntut keseluruhan bagian proses berada di memori sebelum proses dapat mulai dieksekusi. Dengan kata lain, semua bagian proses harus memiliki alokasi sendiri pada memori fisiknya.

Pada nyatanya tidak semua bagian dari program tersebut akan diproses, misalnya:

1. Terdapat pernyataan-pernyataan atau pilihan yang hanya akan dieksekusi jika kondisi tertentu dipenuhi. Apabila kondisi tersebut tidak dipenuhi, maka pilihan tersebut tak akan pernah dieksekusi/ diproses. Contoh dari pilihan itu adalah: pesan-pesan error yang hanya akan muncul bila terjadi kesalahan dalam eksekusi program.
2. Terdapat fungsi-fungsi yang jarang digunakan, bahkan sampai lebih dari 100x pemakaian.
3. Terdapat pealokasian memori lebih besar dari yang sebenarnya dibutuhkan. Contoh pada: array, list, dan tabel.

Hal-hal di atas telah menurunkan optimalitasi utilitas dari ruang memori fisik. Pada memori berkapasitas besar, hal ini mungkin tidak menjadi masalah. Akan tetapi, bagaimana jika memori yang disediakan terbatas?

Salah satu cara untuk mengatasinya adalah dengan overlay dan dynamic loading . Namun hal ini menimbulkan masalah baru karena implementasinya yang rumit dan penulisan program yang akan memakan tempat di memori. Tujuan semula untuk menghemat memori bisa jadi malah tidak tercapai apabila program untuk overlay dan dynamic loading . malah lebih besar daripada program yang sebenarnya ingin dieksekusi.

Maka sebagai solusi untuk masalah-masalah ini digunakanlah konsep memori virtual.

Pengertian

Memori virtual merupakan suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknik ini mengizinkan program untuk dieksekusi tanpa seluruh bagian program perlu ikut masuk ke dalam memori.

Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampung program dalam skala besar, melebihi daya tampung dari memori utama yang tersedia. Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan memori virtual."

Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris (Hariyanto, Bambang : 2001).

Keuntungan

Sebagaimana dikatakan di atas bahwa hanya sebagian dari program yang diletakkan di memori. Hal ini berakibat pada:

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



Implementasi

Gagasan dari memori virtual adalah ukuran gabungan program, data dan stack melampaui jumlah memori fisik yang tersedia. Sistem operasi menyimpan bagian-bagian proses yang sedang digunakan di memori utama (main memory) dan sisanya ditaruh di disk. Begitu bagian di disk diperlukan, maka bagian di memori yang tidak diperlukan akan disingkirkan (swap-out) dan diganti (swap-in) oleh bagian disk yang diperlukan itu.

Memori virtual diimplementasikan dalam sistem multiprogramming. Misalnya: 10 program dengan ukuran 2 Mb dapat berjalan di memori berkapasitas 4 Mb. Tiap program dialokasikan 256 KByte dan bagian-bagian proses di-swap masuk dan keluar memori begitu diperlukan. Dengan demikian, sistem multiprogramming menjadi lebih efisien.

Memori virtual dapat dilakukan melalui dua cara:

1. Permintaan pemberian halaman (demand paging).

2. Permintaan segmentasi (demand segmentation). Contoh: IBM OS/2. Algoritma dari permintaan segmentasi lebih kompleks, karenanya jarang diimplementasikan.


Permintaan Pemberian Halaman (Demand Paging)

Merupakan implementasi yang paling umum dari memori virtual.

Prinsip permintaan pemberian halaman (demand paging) hampir sama dengan sistem penomoran (paging) dengan menggunakan swapping. Perbedaannya adalah page pada permintaan pemberian halaman tidak akan pernah di-swap ke memori sampai ia benar-benar diperlukan. Untuk itu diperlukan adanya pengecekan dengan bantuan perangkat keras mengenai lokasi dari page saat ia dibutuhkan.

Permasalahan pada Page Fault

Ada tiga kemungkinan kasus yang dapat terjadi pada saat dilakukan pengecekan pada page yang dibutuhkan, yaitu:

1. Page ada dan sudah berada di memori.

2. Page ada tetapi belum ditaruh di memori (harus menunggu sampai dimasukkan).

1.     Page tidak ada, baik di memori mau pun di disk (invalid reference --> abort).

Saat terjadi kasus kedua dan ketiga, maka proses dinyatakan mengalami page fault.

Skema Bit Valid - Tidak Valid

Dengan meminjam konsep yang sudah pernah dijelaskan dalam Bab 9, maka dapat ditentukan page mana yang ada di dalam memori dan mana yang tidak ada di dalam memori.

Konsep itu adalah skema bit valid - tidak valid, di mana di sini pengertian "valid" berarti bahwa page legal dan berada dalam memori (kasus 1), sedangkan "tidak valid" berarti page tidak ada (kasus 3) atau page ada tapi tidak ditemui di memori (kasus 2).

Pengesetan bit:
Bit 1 -->
page berada di memori
Bit 0 -->
page tidak berada di memori.
(Dengan inisialisasi: semua bit
di-set 0).

Apabila ternyata hasil dari translasi, bit page = 0, berarti page fault terjadi.

Penanganan Page Fault

Prosedur penanganan page fault sebagaimana tertulis di buku Operating System Concept 5th Ed halaman 294 adalah sebagai berikut:

1. Cek tabel internal yang dilengkapi dengan PCB untuk menentukan valid atau tidaknya bit.

2. Apabila tidak valid, program akan di-terminate (interupsi oleh illegal address trap).

3. Memilih frame kosong (free-frame), misal dari free-frame list. Jika tidak ditemui ada frame yang kosong, maka dilakukan swap-out dari memori. Frame mana yang harus di-swap-out akan ditentukan oleh algoritma (lihat sub bab Page Replacement).

4. Menjadualkan operasi disk untuk membaca page yang diinginkan ke frame yang baru dialokasikan.

5. Ketika pembacaan komplit, tabel internal akan dimodifikasi dan page diidentifikasi ada di memori.

6. Mengulang instruksi yang tadi telah sempat diinterupsi. Jika tadi page fault terjadi saat instruksi di-fetch, maka akan dilakukan fecthing lagi. Jika terjadi saat operan sedang di-fetch, maka harus dilakukan fetch ulang, decode, dan fetch operan lagi.

Permasalahan Lain yang berhubungan dengan Demand Paging

Sebagaimana dilihat di atas, bahwa ternyata penanganan page fault menimbulkan masalah-masalah baru pada proses restart instruction yang berhubungan dengan arsitektur komputer.

Masalah yang terjadi, antara lain mencakup:

1. Bagaimana mengulang instruksi yang memiliki beberapa lokasi yang berbeda?

2. Bagaimana pengalamatan dengan menggunakan special-addresing mode, termasuk autoincrement dan autodecrement mode?

3. Bagaimana jika instruksi yang dieksekusi panjang (contoh: block move)?

Masalah pertama dapat diatasi dengan dua cara yang berbeda.

·         komputasi microcode dan berusaha untuk mengakses kedua ujung dari blok, agar tidak ada modifikasipage yang sempat terjadi.

·         memanfaatkan register sementara (temporary register ) untuk menyimpan nilai yang sempat tertimpa/ termodifikasi oleh nilai lain.

Masalah kedua diatasi dengan menciptakan suatu special-status register baru yang berfungsi menyimpan nomor register dan banyak perubahan yang terjadi sepanjang eksekusi instruksi.

Sedangkan masalah ketiga diatasi dengan mengeset bit FPD (first phase done) sehingga restart instruction tidak akan dimulai dari awal program, melainkan dari tempat program terakhir dieksekusi.

Persyaratan Perangkat Keras

Pemberian nomor halaman melibatkan dukungan perangkat keras, sehingga ada persyaratan perangkat keras yang harus dipenuhi. Perangkat-perangkat keras tersebut sama dengan yang digunakan untuk paging dan swapping, yaitu:

Page-table, menandai bit valid-tidak valid.

Secondary memory, tempat menyimpan page yang tidak ada di memori utama.

Lebih lanjut, sebagai konsekuensi dari persyaratan ini, akan diperlukan pula perangkat lunak yang dapat mendukung terciptanya pemberian nomor halaman.


0 Response to "Memori Virtual"

Posting Komentar

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme