Jumat, 03 Juli 2009

Memori Virtual dan Perkembangannya

Abstrak

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. Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris.

Pendahuluan

Komputer dibangun dari unit masukan, unit kontrol, unit keluaran dan unit memori. Unit memori merupakan bagian yang bertanggung jawab menampung data dan program yang dijalankan komputer. Perkembangan perangkat lunak yang sangat pesat kurang dapat diimbangi oleh memori, sehingga memori yang tersedia di komputer kurang untuk menampung aplikasi-aplikasi yang tengah dijalankan tersebut. Salah satu cara mengatasi kekurangan memori adalah membangun memori tambahan yang disebut sebagai virtual memory.

Memori

Mesin komputer merupakan suatu mesin yang terdiri dari beberapa unit kerja. Unit kerja dalam sistem komputer adalah unit pembaca data, unit pengolah data, dan unit yang mengeluarkan (merekam) hasil pengolahan data. Unit-unit tersebut dapat dikatakan sebagai unit fungsional suatu komputer. Piranti pembaca data dalam sistem komputer disebut unit masukan (input unit), piranti pengolah utama adalah Central Processing Unit (CPU), piranti penyimpan data adalah unit memori (memory storage), dan piranti penghasil adalah unit keluaran (output unit).

Unit memori adalah tempat menampung atau menyimpan data dan program, yang merupakan suatu electronic filling cabinet, yang berada dalam suatu sistem komputer. Memori dapat dibayangkan sebagai kotak-kotak yang masing-masing dapat diisi bilangan

biner 8 bit atau 1 byte; dimana tiap kotak mempunyai alamat, dan membentuk suatu lokasi memori lengkap dengan indeksnya hingga bila mencari sesuatu akan mudah ditemukan. Letak memori dalam komputer dapat ditempatkan pada satu bangunan dengan CPU, atau dalam bangunan yang terpisah dari CPU.

Unit memori secara umum dibedakan ke dalam tiga jenis yaitu: memori utama (main memory/internal memory), memori tambahan (auxiliary memory), dan memori eksternal (external memory).

Memori utama atau memori primer (primary memory) adalah memori yang bertugas untuk menampung data dan instruksi atau program dari piranti masukan, untuk selanjutnya diolah oleh CPU. Selain dari pada itu, juga digunakan untuk tempat menampung data/hasil pengolahan data oleh CPU sebelum dilangsungkan ke unit keluaran. Data, program dan hasil pengolahan yang ditampung oleh memori tersebut bersifat sementara waktu, selama pengolahan berlangsung (adanya sinyal listrik).

Kapasitas komputer untuk menyimpan data dan program pada satu saat ditentukan oleh sistem dan model komputer, terutama pada bagian unit memori utamanya. Memori utama ini terdiri dari RAM dan ROM.

ROM (Read only Memory) adalah memori yang hanya dapat dibaca saja. Isi ROM diberikan oleh pabrik pembuat komputer yang bersangkutan. ROM biasanya diisi dengan program yang tidak perlu diubah lagi. ROM bersifat permanen (non-volatile), artinya bila sinyal listrik terputus (padam), maka isi memorinya tetap ada.

RAM (Random Access Memory) merupakan memori yang bersifat sementara (volatile = menguap), yaitu bila daya listrik yang sedang digunakan komputer terputus (padam), maka seluruh isi memori ini akan lenyap. Dalam sistem komputer RAM merupakan memori utama (main memory) tempat memori segala operasi komputer dilakukan.

Memori eksternal juga dikenal sebagai memori kedua (secondary storage) adalah memori yang menyimpan data di luar memori utama dalam waktu yang relatif lama dan

menampung banyak data. Perbedaannya dengan memori tambahan adalah bahwa memori eksternal bukan merupakan bagian yang integral dengan komputer. Dalam hal ini, data yang berada dalam memori eksternal ini tidak langsung di kontrol oleh komputer, meskipun datanya sama-sama berasal dari memori utama. Data yang berada dalam memori utama adalah data sebelum dan setelah diolah oleh komputer.

Untuk suatu program yang besar, yang memerlukan tempat menyimpan data yang banyak/besar (data yang akan diolah, data antara dan data hasil pengolahan), dimana keadaan ini tidak dapat ditampung di dalam memori utama, maka dalam hal ini digunakan memori tambahan.

Dengan demikian, maka fungsi memori tambahan adalah membantu memori utama, dan memori tambahan ini berada di luar bangunan CPU.

Memori tambahan biasanya dibentuk dari media record disk magnetik (magnetic disk). Memori tambahan ini sifatnya hanya membantu memori utama, maka data yang disimpan di dalam memori tambahan ini juga bersifat sementara, yaitu selama proses pengolahan data berlangsung. Konsep memori tambahan inilah yang kemudian melahirkan konsep memori semu (virtual memory).

Virtual Memory

Spesifikasi komputer yang menjadi pengetahuan dasar sehari-hari senantiasa mencantumkan besar memori utama (main memory) dalam hal ini adalah besar RAM (Random Access Memory) misalnya 128M, 256M dan lain-lain. Pada kenyataannya memori sebesar itu seringkali tidak cukup untuk menjalankan aplikasi-aplikasi terutama aplikasi yang membutuhkan memori besar.

Sebagai contoh, jika sebuah sistem operasi, program e-mail, browser, program pengolah kata, dan program spreadsheet dijalankan bersama-sama memori RAM tidak akan cukup, komputer akan meminta untuk menutup sebagian aplikasi yang sedang dikerjakan. Virtual memory merupakan bagian dari memori eksternal yang digunakan untuk membantu RAM. Dengan menggunakan virtual memory, RAM seolah-olah akan lebih besar sehingga aplikasi-aplikasi dapat berjalan bersama-sama.

Teknik yang secara otomatis memindahkan program dan blok data ke dalam fisik memori utama ketika data dan program tadi dibutuhkan untuk eksekusi inilah yang dinamakan teknik memori virtual. Program processor, perintah acuan, dan ruang data yang independen terhadap ruang fisik memori utama tersedia alamat biner yang dihasilkan CPU untuk perintah atau data dinamakan alamat logika atau alamat virtual. Mekanisme yang memindahkan alamat logika atau alamat virtual ke alamat fisik yang semuanya diterapkan oleh kombinasi komponen perangkat keras dan perangkat lunak. Jika alamat virtual mengacu ke bagian program atau ruang data yang sedang berada dalam memori fisik, maka isi dari lokasi memori yang sesuai dalam memori utama dapat diakses secara langsung. Pada sisi lain jika alamat yang diacu tadi tidak berada dalam memori utama, maka isi yang diinginkan harus dibawa dulu ke dalam lokasi yang benar dalam memori utama sebelum data tadi digunakan.

Paging

Saat komputer beroperasi referensi memori baik program maupun data akan ditranslasi secara dinamis ke dalam alamat-alamat fisik. Program maupun data yang tersimpan tersebut tidak disimpan / diolah dalam ukuran yang besar melainkan dipotong-potong dalam satuan-satuan kecil yang disebut halaman (pages atau segment). Halamans ini juga tidak berada terus menerus dalam memori utama.

Dengan ketentuan bahwa masih terdapat bagian program dalam memori yang sedang dieksekusi, memungkinkan program masih berjalan setidaknya untuk sementara waktu. Jadi memungkinkan eksekusi program yang tidak sepenuhnya berada dalam memori utama. Komputasi masih dapat beroperasi selama terdapat masih cukup program untuk dieksekusi dalam memori utama.

Meletakkan sebagian halaman di luar memori tidak dapat dilakukan sembarangan. Bagian kode program harus tetap dalam memori utama. Suatu program meletakkan 90% instruksinya dalam 10% kode program. Dengan demikian selama kode program tetap dalam memori utama, eksekusi tetap dapat dijalankan.

Dalam banyak sistem komputer, ketika program dan data yang sedang aktif tidak dapat ditempatkan dalam ruang fisik memori utama, perangkat penyimpan sekunder seperti jaringan magnetik menyimpan kelebihan data atau program tadi. Sistem operasi secara otomatis memindahkan program antar memori utama dengan penyimpan sekunder. Jadi aplikasi pemrograman tidak membutuhkan untuk mengetahui keterbatasan yang ditimbulkan oleh memori utama yang ada.

Metode proses translasi yang paling sederhana adalah mengasumsikan bahwa semua program dan data yang terdiri dari unit besaran tetap dinamakan halaman (page). Setiap halaman terdiri dari blok dan data yang menempati lokasi yang ‘contigous’ dalam memori utama atau dalam penyimpan sekunder. Umumnya halaman berada dalam range dari sepanjang 1KB sampai 8 KB. Halaman merupakan unit dasar dari informasi yang harus dimasukkan dan dikeluarkan dari memori utama. dan penyimpan sekunder ketika mekanisme pemindahan menentukan bahwa perpindahan dibutuhkan. Memori cache menjembatani perbedaan kecepatan antara processor dan memori utama.dan memori yang diterapkan pada perangkat keras. Ide memori virtual di sisi lain untuk menjembatani pemisal ukuran antara memori utama dengan penyimpanan sekunder yang umumnya diterapkan sebagai bagian dari teknik-teknik perangkat lunak. Secara konseptual, teknik-teknik memori

tersembunyi dan teknik-teknik memori virtual sangat mirip. Kedua teknik tersebut hanya berbeda pada detail penerapannya saja.

Untuk menjalankan paging ini dapat digunakan operasi Translassion Lookaside Buffer.

Tabel Halaman

Dengan pemecahan program yang berada terpisah di memori utama dan memori sekunder, maka diperlukan metode-metode tertentu agar keduanya dapat berkomunikasi. Langkah awal dari metode ini adalah penentuan bagian program yang dijalankan tersebut sedang berada di memori utama atau memori sekunder.

Metode perpindahan alamat memori virtual didasarkan pada konsep dari halaman besaran tetap yang skematik. Setiap alamat virtual yang dibangkitkan oleh processor, apakah itu berupa instruksi-instruksi pengunci atau operand dari operasi pengunci / penyimpan yang diinterpretasikan sebagai nomor halaman (bit tingkat tinggi) yang diikuti oleh nomor kata (bit lower-order). Informasi lokasi disk atau memori utama dari setiap kolom yang disimpan dalam table halaman yang tersimpan dalam register basis label halaman (halaman table base register). Dengan penambahan nomor halaman ke isi register, alamat entri yang dimaksud dalam tabel halaman dapat diperoleh. Isi lokasi ini memberikan alamat awal halaman tersebut sedang berada dalam memori utama sebaliknya isi lokasi tadi mengidentifikasikan dimana halaman dapat ditemukan dalam penyimpanan sekunder. Dalam kasus ini, entri pada tabel umumnya menunjuk ke area pada pada memori utama dimana alamat halaman penyimpanan sekunder disimpan (dipertahankan). Setiap entri juga berisi beberapa bit kontrol untuk menjelaskan status halaman ketika berada

dalam memori utama. Satu bit kontrol mengidentifikasikan apakah halaman telah dimodifikasi selama dalam memori utama. Seperti dalam memori cache, informasi dibutuhkan untuk menentukan penulisan kembali halaman tersebut ke penyimpan sekunder sebelum mengeluarkan halaman tersebut dari memori utama untuk membuat suatu ruangan halaman yang lain.

Jika tabel halaman disimpan dalam unit memori utama, maka dua akses memori utama harus untuk setiap akses memori utama yang diperlukan oleh program. Hal ini mengakibatkan penurunan kecepatan eksekusi oleh kedua faktor. Meskipun memori cache khusus yang digunakan dalam banyak sistem untuk mempercepat proses translasi virtual ke alamat fisik yang sedang digunakan.

Page Fault

Pada saat program dijalankan, loader hanya memasukkan kode halaman yang akan dieksekusi ke memori utama, dan setiap halaman telah dilengkapi bit khusus yang menandai penempatan di dalam memori utama atau memori tambahan.

Untuk memproses pengambilan data, dibangkitkan interupsi khusus yang disebut page fault. Page fault ini akan tampil jika processor membutuhkan suatu data namun data tersebut tidak berada di dalam memori utama. Ketika program membangkitkan kebutuhan akses ke halaman yang tidak ada dalam memori utama yang dinamakan page fault akan muncul. Keseluruhan halaman harus dibawa dari penyimpan sekunder ke memori utama, umumnya melalui DMA, sebelum akses dapat dilangsungkan. Karena penundaan delay yang sangat lama muncul ketika perpindahan halaman untuk mencapai

lokasinya, processor dapat mengeksekusi tugas lainnya yang halamannya berada dalam memori utama. Merupakan tanggung jawab dari sistem operasi untuk menangguhkan eksekusi program yang diakibatkan oleh page fault dan memulai eksekusi dari program yang lain. . Langkah-langkah proses ini disebut demand paging.

Ketika memori utama penuh, jika ada halaman baru akan dibawa dari penyimpanan sekunder, halaman tersebut harus menggantikan salah satu halaman yang berada dalam memori. Program pemilihan halaman yang harus dikeluarkan merupakan hal kritis seperti pada memori cache dan gagasan bahwa program menghabiskan waktunya dalam area-area yang terlokalisasi juga dapat digunakan. Karena memori utama lebih besar daripada memori virtual maka memori cache harus dapat mempertahankan bagian yang relatif besar dari program dalam memori utama.

Penerapan

Menyadari pentingnya penggunaan virtual memori dalam sistem komputer, maka setiap setiap sistem operasi senantiasa menyertakan virtual memory dalam sistemnya.

Sistem Operasi Microsoft Windows telah menyertakan Virtual Memory dalam versi-versi keluarannya. Virtual Memory dalam sistem operasi Windows dapat diatur pada properties My Computer. Di sana dapat diajukan pilihan virtual memory akan diatur otomatis oleh Windows atau akan diatur secara manual oleh pengguna. Dengan demikian besar virtual memory dapat diatur setiap waktu.

Sementara sistem operasi Linux, meletakkan virtual memory sebagai partisi tersendiri

dengan nama /swap. Besar virtual memory pada dasarnya bisa diatur oleh pengguna. Besar virtual memory disarankan adalah dua kali nilai memori utama. Karena diatur pada saat instalasi, besar virtual memory sistem operasi Linux tidak dapat diatur sewaktu-waktu oleh pemakainya.

Sistem Operasi yang digunakan Macintosh menggunakan istilah RAM Doubler sebagai virtual memory. RAM Doubler ini juga dapat diatur pengguna sewaktu-waktu baik aktif tidaknya maupun besarnya.

Kebutuhan virtual memory yang sewaktu-waktu dapat diatur mendorong usaha-usaha untuk menciptakan memory tambahan yang bersifat mobile dapat dipindahkan ke komputer-komputer yang membutuhkan. Ide ini sejauh ini tidak dapat diwujudkan secara langsung. Sistem operasi telah meng-akomodasi kebutuhan virtual memory dengan memungkinkan penempatannya tidak hanya dalam root directory namun juga dalam drive logik yang lain. Sehingga tidak perlu dikhawatirkan akan terjadi kekurangan virtual memory. Hal menggembirakan lain adalah harga pasaran RAM yang semakin murah. RAM nyata tetap lebih baik dari virtual memory, semakin murahnya RAM akan memudahkan pengguna meningkatkan kapasitas memori komputer.

Hal yang perlu diperhatikan dalam penggunaan virtual memory adalah alokasi virtual memory untuk sistem komputer. Sejauh ini virtual memory meningkatkan kinerja komputer dengan menambah kapasitas memori utama tanpa memandang aplikasi-aplikasi yang membutuhkan. Virtual memory menekankan bertambah besarnya kapasitas memori utama namun kurang memperhatikan keoptimalan penambahan memori pada aplikasi yang sedang dijalankan.

Sebagai solusi meningkatkan efisiensi penggunaan virtual memory untuk peningkatan unjuk kerja komputer adalah penggunaan RAM Charger. Pada sistem yang menggunakan RAM Charger memori yang berada di RAM maupun berada di virtual memory didistribusikan secara proporsional pada aplikasi-aplikasi yang dijalankan. Diharapkan pendistribusian memori ke aplikasi-aplikasi yang sedang dijalankan ini dapat meningkatkan optimalisasi penggunaan memori. Sejauh ini sistem operasi yang menerapkan RAM Charger ini adalah keluarga Macintosh.

Kesimpulan

Implementasi virtual memori yang penting ini mengharuskan sistem operasi komputer harus memenuhi persyaratan-persyaratan tertentu. Sistem operasi harus mampu menjalankan operasi paging dan atau segmentasi. Sistem operasi juga harus mampu perpindahan data antar memori utama dan memori tambahan.

Dengan penggunaan virtual memori akan membawa beberapa keuntungan yaitu :

Daftar Pustaka

Stalling, William. Computer Organization and Architecture, Fifth Edition, Prentice Hall, 2000

Aciek Ida WD, Bahan Kuliah Pengantar Komputer, Institut Teknologi Bandung.

http://computer.howstuffworks.com/virtual-memory.htm/printable

http://aumha.org/win5/a/xpvm.php

www.tweakhound.com/xp/virtualmemory.htm -

http://www.mathworks.com/support/tech-notes/1100/1106.html

http://www.themacintoshguy.com/MacTips/archive/tip4.shtml

www.redhat.com/docs/manuals/linux/

www.osnn.net/ articles.php?action

www.cs.buffalo.edu

www.cs.rochester.edu

www.cs.umd.edu

www.macacedemy.com

http://www.soe.ucsc.edu/~sbrandt/courses/Spring01