Jumat, 15 Maret 2019

5.5 OPTIMALISASI UTILITAS MEMORI

Umumnya memori-utama pada suatu komputer merupakan sumber-daya yang terbatas sehingga penggunaannya butuh dioptimalkan. Dengan mengoptimalkan penggunaan memori, diharapkan tingkat multiprogramming atau konkurensi, yaitu jumlah proses/task yang dapat dijalankan secara bersamaan juga ikut meningkat. Di bawah ini akan dijelaskan beberapa strategi untuk meningkatkan utilitas memori-utama pada suatu sistem komputer.


5.5.1 OVERLAY


Overlay adalah suatu teknik pemrograman yang membagi program yang besar menjadi bagian-bagian yang lebih kecil sehingga dapat dimuat secara parsial ke dalam suatu page memori yang berukuran lebih kecil. Jika bagian kode instruksi program yang hendak diakses tidak ada dalam memori maka bagian tersebut akan disalinkan ke bagian overlay tersebut. Jadi dengan teknik overlay, hanya bagian instruksi dan data yang sedang dijalankan akan disalinkan ke memori utama sedangkan bagian lain dari program tetap disimpan di media penyimpan.


Teknik overlay terutama digunakan pada sistem operasi dengan model manajemen memori partisi statis. Pada model partisi statis, ukuran program tidak boleh lebih besar daripada ukuran partisinya, sehingga program yang berukuran besar tidak dapat disalinkan ke memori utama. Dengan memakai teknik overlay maka hanya sebagian kode instruksi program yang akan disalinkan ke partisi tersebut dan jika bagian lain dari program diperlukan maka akan dilakukan penimpaan (replacement) pada area overlay program tersebut. Dengan teknik overlay maka program yang berukuran besar tetap dapat dijalankan pada sistem operasi dengan model manajemen memori partisi statis.


5.5.2 DYNAMIC LOADING


Dynamic loading adalah teknik pemrograman yang memungkinkan hanya bagian-bagian program yang sedang dibutuhkan pada saat runtime saja yang akan disalinkan ke memori utama, sehingga pemakaian memori menjadi lebih efisien. Pada dynamic loading, jika suatu rutin dipanggil maka rutin pemanggil memeriksa apakah rutin tersebut sudah pernah dipanggil. Jika belum maka rutin tersebut diambil dan dialokasikan ke memori utama.


Teknik dynamic loading diimplementasikan dalam program pengguna (user) dan tidak memerlukan campur tangan sistem operasi. Sistem operasi hanya menyediakan fungsi-fungsi pendukung dynamic loading untuk membantu programmer mengimplementasikannya.


Dynamic loading berguna terutama untuk program yang besar karena harus menangani banyak kasus yang jarang terjadi. Rutin program yang tidak dipanggil pada saat runtime tidak akan disalinkan ke memori.


5.5.3 DYNAMIC LINKING


Dynamic Linking adalah teknik yang memungkinkan linking ke rutin- rutin pustaka program aplikasi dilakukan secara dinamis pada saat runtime. Pada dynamic linking, rutin-rutin pustaka yang disalinkan ke memori utama akan digunakan bersama oleh sejumlah program aplikasi. Hal semacam ini membutuhkan campur tangan dari sistem operasi. Sebagai contoh, berkas yang sering digunakan bersama secara dynamic linking adalah berkas dengan ekstensi dan lain lain, sys, atau .drv


Dynamic Linking menghemat penggunaan memori utama, karena jika sejumlah aplikasi menggunakan rutin pustaka yang sama, maka pustaka tersebut hanya akan disalinkan sekali saja ke memori utama namun dapat direferensi dan digunakan bersama oleh aplikasi-aplikasi tersebut.


5.5.4 VIRTUAL MEMORY

Virtual memory atau memori maya adalah teknik pemetaan memori yang melibatkan memori sekunder, umumnya disk, sehingga ukuran memori sistem secara logika dapat lebih besar dari ukuran memori utama secara fisik (lihat Gambar 5.22). Pada teknik virtual memory diperlukan pengalamatan secara logika dan melibatkan mekanisme swapping, yaitu proses pemindahan sebagian atau seluruh bagian proses dari memori utama ke memori sekunder, disebut dengan swap out, atau dari disk ke memori utama, disebut dengan swap in.


Gambar 5.22 Pemetaan memori dengan melibatkan media penyimpan pada virtual memory


Keuntungan dari model virtual memory dengan memakai swapping adalah:


  1. Lebih sedikit operasi I/O yang dilakukan, karena swapping dilakukan per page.
  2. Lebih sedikit memori utama yang diperlukan per proses, karena tidak semua bagian image proses perlu disalinkan ke memori utama pada saat alokasi.
  3. Tanggapan sistem menjadi lebih cepat, karena tidak semua bagian dari image proses perlu dialokasi ke memori sehingga proses dapat mulai dieksekusi lebih cepat.
  4. Lebih banyak proses yang dapat dijalankan secara konkuren oleh sistem komputer atau dengan kata lain meningkatkan tingkat kon- kurensi atau tingkat multiprogramming dari sistem.


Jika suatu program akan dieksekusi maka image prosesnya akan diinisiali- sasi di area swap space, yaitu suatu lokasi di media penyimpan yang disimulasi sebagai ekstensi memori utama. Swap space dapat berupa suatu berkas khusus maupun suatu partisi khusus. Swap space dikelola secara logika sebagai memori yang beralamat flat seperti halnya memori utama dan unit terkecilnya sebesar ukuran page ruang alamat logika seperti yang ditunjukkan pada Gambar 5.23.


Pengalihan page-page dari swap space ke memori utama dapat meng- gunakan teknik lazy swapper, yaitu hanya page proses yang akan digunakan yang akan dialihkan ke memori utama. Jadi tidak seluruh page dari suatu proses akan dialokasikan ke memori utama.

Gambar 5.23 Pemetoon media penyimpan sebagai senarai berurut pada virtual memory


Virtual memory dapat diimplementasikan dengan menggunakan model demand paging ataupun demand segmentation. Implementasi demand paging memakai sistem pengalamatan secara paging, sedangkan imple- mentasi demand segmentation memakai sistem pengalamatan secara seg- mentation. Pembahasan selanjutnya hanya menjelaskan tentang demand paging.


Mekanisme Demand Paging


Bagaimana model demand paging mengetahui page mana yang masih berada di swap space dan yang ada di memori utama? Mekanisme demand paging adalah sebagai berikut dan ditunjukkan pada Gambar 5.24:


1. Jumlah frame memori utama yang dialokasi ke tiap proses tergantung kepada tingkat multiprogramming yang hendak dicapai. Semakin tinggi tingkat multiprograming, semakin sedikit jatah frame untuk tiap proses dan juga sebaliknya.


2. Mengunakan bit valid-invalid pada rekaman page table proses untuk menyatakan ada tidaknya page proses tersebut di frame memori utama. Misalnya nilai bit =1 berarti page bersangkutan ada di memori utama, sedangkan bit-0 berarti page bersangkutan masih berada di swap space.


3. Jika page dari alamat yang hendak diakses ternyata berstatus invalid di page table maka trap page fault akan dibangkitkan agar ditangani lebih lanjut oleh rutin sistem operasi, yaitu page fault handler. Rutin ini akan menangani operasi swap-in terhadap page yang diperlukan.


D


C


frame


2


page table


Sogical memory


physical mamory

Gambar 5.24 Mekanisme demand paging


Adapun langkah-langkah penangan page fault oleh rutin sistem operasi dijelaskan di bawah ini dan ditunjukkan oleh Gambar 5.25:


1. Mengecek apakah reference alamat valid.


2. Jika tidak valid maka proses akan dihentikan.


3. Jika valid, berarti alasan page fault adalah karena page yang diminta belum ada di memori utama sehingga sistem operasi akan mencoba melakukan swap-in, yaitu memindahkan page yang diminta dari swap space ke memori utama. Langkah-langkah swap-in meliputi:


a. Mencari frame memori utama yang kosong, jika tidak ada maka akan dilakukan page replacement, di mana akan dipilih page di frame, atau istilahnya victim page, untuk di-swap out ke swap space supaya tersedia frame kosong untuk operasi swap-in.

b. Memindahkan (swap-in) page yang diminta dari swap space ke frame memori utama yang telah ditentukan.

c. Memperbarui rekaman di page table proses, yang meliputi pen-

catatan nomor frame yang dialokasikan dan mengubah validation

bit=1.

d. Mengulangi (restart) kode intruksi program yang menghasilkan page fault.



Gambar 5.25 Mekanisme penanganan page fault pada demand paging


Alokasi Frame


Dengan model demand paging, tidak semua page dari suatu image proses perlu dialokasikan ke memori utama. Namun jika terlalu sedikit frame yang dialokasikan maka akan sering terjadi swapping yang pada akhinnya akan menurunkan kinerja sistem. Pertanyaannya adalah seberapa banyak jumlah frame yang butuh dialokasikan ke suatu proses yang berjalan.


Ada beberapa strategi untuk menentukan banyak frame yang dialokasi- kan untuk tiap proses:

  1. Alokasi sama rata (equal allocation) Tiap proses mendapat jumlah frame yang sama banyak, sesuai dengan jumlah frame yang tersedia dan jumlah proses yang ada.
  2. Alokasi proporsional (proportional allocation). Tiap proses mendapat jumlah frame sesuai dengan ukuran dari image proses. Jumlah frame untuk proses ditentukan oleh jumlah frame yang tersedia dan besarnya ukuran masing-masing image proses.
  3. Alokasi berprioritas (priority allocation) Jumlah frame yang dialokasikan untuk tiap proses berdasarkan prioritas proses


Page Replacement


Pada saat suatu page proses yang diminta ternyata masih berada di virtual memory maka page tersebut harus dialokasikan ke memori utama. Jika ternyata pada saat itu memori utama dalam keadaan penuh maka diperlu- kan operasi swap out, yaitu memindahkan sejumlah page dari frame memori ke swap space. Penentuan page mana yang harus dikorbankan dilakukan oleh algoritma page replacement (lihat Gambar 5.26). Algorit- ma page replacement secara garis besar dapat dibagi dua:

  1. Global replacement Victim frame dapat dipilih dari semua frame yang ada di memori utama. Jadi frame yang sedang ditempati oleh proses lain dapat turut dikorbankan.
  2. Local replacement Victim frame hanya dapat dipilih dari frame frame yang sedang ditempati oleh image proses bersangkutan.

Ukuran kehandalan algoritma page replacement ditentukan oleh jumlah page fault yang dihasilkan. Strategi page-replacement yang baik haruslah menghasilkan jumlah page-fault yang seminimal mungkin.

Gambar 5.26 Algoritma Page Replacement


Di bawah ini terdapat sejumlah algoritma page replacemene yang mungkin digunakan:


1. Algoritma FIFO (First In First out) 

Page yang diganti adalah page yang paling lama sudah bera replacement FIFO. Setelah alokasi page 7.0. L frame menjadi penuh. Untuk alokasi page berikutnya, yaitu 2 maka yang dikorbankan adalah page 7 yang dialokasikan pertama kalinya Kemudian untuk page berikutnya 0, tidak butuh alokasi baru, karena page 0 sudah ada di frame memori. Perhatikan untuk page berikutnya yaitu page 3 maka frame yang dikorbankan adalah frame yang ditempati page 0. sekalipun page 0 baru saja diakses, lai karena algoritma FIFO tidak melihat apakah suatu page baru diakses alall tidak, tetapi melihat berdasarkan seberapa lama page tersebut sudah berada di frame memorida di memori atau paling awal dialokasikan, Gambar 5.27 menggambarkan contoh algoritma page

Gambar 5.27 Algoritma FIFO

2. Algoritma Optimal 

Page yang diganti adalah page yang baru akan dipanggil lagi pada waktu yang masih cukup lama. Algoritma ini mengasumsikan sistem mampu memprediksikan page-page yang akan diakses. Setelah pengaksesan page 7, 0 dan 1 seluruh frame menjadi penuh. Untuk alokasi page berikutnya, yaitu page 2 maka sistem harus melihat ke depan, page mana (di antara page 7, 0, 1) yang akan diakses paling belakangan. Page 7, baru akan diakses lagi setelah 14 akses, page 0 akan diakses segera, page 1 akan diakses lagi setelah 10 akses. Jadi page 7 yang akan dikorbankan untuk alokasi page 2.


Berikutnya, page 0 ternyata sudah ada di frame memori sehingga tidak diperlukan alokasi baru. selanjutnya untuk alokasi page 3, butuh diperhitungkan pengaksesan page 2, 0, 1. Page 2 baru akan diakses lagi setelah 3 kali akses, page 0 akan segera diakses, dan page 1 diakses lagi setelah 8 kali akses. Jadi yang akan dikorbankan adalah page 1. Perhatikan page yang tidak akan diakses lagi, otomatis akan menjadi prioritas untuk dikorbankan, misalnya page 4.


Gambar 5.28 Algoritma Optimal


3. Algoritma Least Recently Use (LRU) 

Page yang diganti adalah page paling lama sudah tidak diakses. Gambar 5.29 memberikan contoh algoritma replacement untuk LRU.


Gambar 5.29 Algoritma LRU


Setelah page 7, 0, 1 dialokasikan maka frame menjadi penuh. Untuk


alokasi page 2, maka page 7 yang dikorbankan, karena paling lama belum


diakses dibandingkan page 0 dan 1 yang barusan diakses.


Pengaksesan page 0 tidak menyebabkan terjadinya alokasi karena page 0 sudah ada di frame. Berikutnya untuk page 3 maka yang dikorbankan adalah page 1 dan bukannya page 0, karena page 0 baru saja diakses.


Pengaksesan page 0 berikutnya juga tidak menyebabkan alokasi baru. Untuk alokasi page 4 yang dikorbankan sekali lagi bukan page 0 tapi page 2. karena page 0 baru saja diakses.



Tidak ada komentar:

Posting Komentar