Virtual Memory
Pembahasan Overview Demand Paging
Overview Konsep manajemen memori sebelumnya : Me-maintain banyak proses yang running dalam memori secara multiprogramming Proses berada dalam memori fisik sebelum dieksekusi Dalam overlaying user harus men-dekomposisi struktur program dalam algoritmanya dan menspesifikasi modul-modul overlaynya
Overview Isi program : Algoritma utama yang aktif mengolah data Penanganan kondisi error (exceptional condition) yang amat jarang terjadi Struktur data dynamic allocated yang terpakai secara efektif Struktur data fixed allocated yang biasanya hanya sebagian yang digunakan Modul-modul tertentu yang jarang digunakan
Overview Keuntungan jika tidak semua bagian tersebut ada di memori (hanya bagian yang paling aktif) : Program tidak terkendalakan oleh jumlah memori fisik ; program bisa amat besar Program-program pengendali error (error handling) jarang digunakan. Array, list atau tabel yang dialokasikan melebihi kapasitas yang digunakan. Program-program yang dijalankan belakangan. Lebih banyak program yang dapat running secara konkuren di memori; utilisasi CPU meningkat Lebih sedikit I/O untuk loading/swapping ; program user lebih cepat
Overview Konsep Virtual Memory Melihat memori sebagai “cache” dan disk sebagai “memori” Implementasi dengan demand paging : bagian program berada dalam memori adalah page-page yang sesuai dengan kebutuhan Dapat diimplementasikan melalui : Demand paging Demand segmentation (page segmentasi)
Diagram Virtual Memory lebih besar dari Physical Memory
Demand Paging Sama dengan teknik paging dengan swapping Proses berada dalam secondary storage (biasanya disk) yang terbagi dalam sejumlah page Untuk dapat dieksekusi maka page proses yang diperlukan harus ada di memori Jika belum ada maka page di-swap in (dalam hal ini swapper lebih tepat disebut pager, swap-in/out menjadi page-in/out)
Demand Paging Virtual Memory - Physical Memory Ada, lalu akses Swap page Apakah page di memori ? Demand page Tidak ada, maka page di load
Demand Paging Pertanyaan saat page-in : Page mana yang akan di page-out ? Apakah frame yang akan ditempati kosong ? Jika suatu page yang di page-out merupakan data, perlu / tidak page di storage di-refresh ?
Demand Paging Periksa tabel internal (biasanya pada PCB = process control block) apakah referensi valid/invalid Bila valid tapi belum ada maka di page-in Jika invalid, maka batalkan proses
Transfer of a Paged Memory to Contiguous Disk Space
Dukungan Hardware Page table : tabel memiliki valid/invalid bit serta bit proteksi khusus Secondary memory : memori yang menyimpan seluruh page (biasanya disk) Dikenal sebagai swap device dan bagian disk yang digunakan untuk swap disebut swap space (backing store)
Valid-Invalid Bit Masing-masing entry page table memiliki nilai : (1 in-memory, 0 not-in-memory) Inisialisasi valid–invalid bit di-set 0 untuk semua entry page table Contoh page table : Selama translasi address, jika valid–invalid bit dalam page table adalah 0 page fault. 1 Frame # valid-invalid bit page table
Page Table When Some Pages Are Not in Main Memory
Dukungan Software Kendala arsitektur : kemampuan me-restart instruksi setelah terjadi page-fault Page fault bisa terjadi pada : Memory (data) reference Instruction fetch
Contoh : Instruksi 3 address “ADD C, A, B” dilakukan dalam beberapa tahap : Fetch instruksi ADD Fetch data A ke dalam register Ra Fetch data B ke dalam register Rb Add Ra dan Rb dan hasilnya di register Rc Store hasil Rc ke C Page fault terjadi pada salah satu tahap memerlukan pengulangan dari awal
Steps in Handling a Page Fault
Apa yang terjadi jika tidak ada frame yang kosong ? Page replacement – temukan page dalam memori, tetapi tidak sedang digunakan, swap-out page tersebut Algoritma yang digunakan Performance – algoritma yang digunakan adalah yang menghasilkan jumlah minimum page fault
Performance Demand Paging Rasio Page Fault 0 p 1.0 if p = 0 no page faults if p = 1, every reference is a fault Effective Access Time (EAT) EAT = (1 – p) x memory access time + p (page fault overhead + [swap page out ] + swap page in + restart overhead)
Contoh Demand Paging Memory access time = 1 microsecond (1 sec) 50% dari waktu page yang digantikan (replace), membutuhkan swap-out Swap Page Time = 10 msec = 10,000 sec EAT = (1 – p) x 1 + p (15000) = 1 + 15000p (dalam sec) 5000 sec overhead
Page Replacement Policy Performance (page fault ratio) bergantung pada page replace policy agar page fault rate (PFR) sekecil mungkin. Jadi pemilihan policy untuk page replacement sangat kritis terhadap performance sistem keseluruhan.
Swap Space Aspek penting dalam demand paging adalah menangani penggunaan swap space (ruang disk yang digunakan untuk swap) Suatu bagian dalam disk dijadikan swap space (di luar sistem file) sebagai penyimpan “virtual memory”
Over-Allocating Memory Peningkatan degree of multiprogramming akan sampai pada situasi Over Allocating Memory Saat terjadi page-fault & hendak page-in ternyata tidak ada frame kosong tersedia Solusi OS : terminate proses user ? NO. Paging harus transparan bagi user.
Solusi Thrashing : swap-out suatu proses (penurunan degree of multiprogramming) Page replacement : mencari salah satu frame yang tidak sedang digunakan dan membebaskannya Menuliskan isi sebelumnya ke swap-space Mengubah page table dimana page tidak ada di memori
Kebutuhan Page Replacement – Over-Allocating Memory
Page Fault Service Menemukan lokasi dari page di dalam disk Menemukan free-frame, jika ada gunakan frame tersebut untuk page yang bersangkutan dan jika tidak ada : Mencari frame yang akan di-replace Page-out frame tersebut ke swap-space dan ubah tabel page & frame Page-in page yang diminta ke frame kosong yang baru, serta ubah tabel page & frame Mulai kembali ke user proses
Page Replacement
Dirty bit (Modify-bit) Saat tidak ditemukan frame kosong maka dilakukan dua kali page transfer (in & out) Untuk mengurangi overhead operasi ini digunakan dirty-bit pada setiap page/frame untuk menunjukkan perlu/tidaknya page dalam disk diupdate (telah terjadi modifikasi) Modify bit di-set ketika word/byte dalam page ditulis (write) page telah dimodifikasi. Ketika memilih page untuk di-replace, modify bit dibaca dulu. Jika bit tersebut di-set, maka page tersebut sudah dimodifikasi sejak dibaca di disk write page ke disk. Jika bit tersebut tidak di-set, maka page tersebut belum dimodifikasi sejak dibaca di memory jika copy dari page tersebut di disk belum di overwrite, tidak perlu lagi write page memory ke disk karena sudah ada.
Frame Allocation – Page Replacement Dua masalah : Frame allocation algorithm : menentukan berapa banyak frame dialokasikan untuk suatu/setiap proses Page-replacement algorithm : menentukan frame mana yang dipilih untuk di page-out Pemilihan algoritma yang tepat sangat penting, karena pemrosesan pada disk I/O costnya mahal (berpengaruh pada effective acces time)
Page Replacement Terdapat banyak skema/algoritma Kriteria pemilihan algoritma yang sesuai : meminimisasi page-fault rate Evaluasi dengan string : string dari aktifitas-aktifitas memory reference String dari memory reference dinamakan reference string Secara empiris direkam dari referensi yang terjadi pada running program Secara hipotesis digenerate secara acak (random number generator) Menghitung jumlah page fault pada string tersebut
Page Fault vs Jumlah Frame Bertambahnya jumlah frame akibat penambahan physical memory space dapat mengurangi PFR Tanpa penambahan tersebut maka memperkecil ukuran frame/page yang akhirnya meningkatkan page fault
Grafik Page Faults vs Jumlah Frame
Page Replacement Policy Algoritma First In First Out (FIFO) Algoritma Optimal (OPT) Algoritma Least Recently Used (LRU) Algoritma Second Change (Clock) Algoritma Enhanced Second Change (Clock) Algoritma Counting Algoritma Page Buffering
Reference String Dalam pembahasan algoritma-algoritma reference string disederhanakan dengan deretan page number (bukan address-address referensi) Contoh : 0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, dst Digantikan (page size = 100 byte) dengan : 1, 4, 1, 6, 1, 6, dst
Algoritma First In First Out (FIFO) Page yang di-replace adalah page yang paling “tua” (paling lama berada di memory secara terus menerus) Realisasinya setiap page menyimpan data waktu page yang bersangkutan di-page-in atau menggunakan struktur queue Mudah di-implementasikan tapi performance tidak selalu baik
FIFO Page Replacement Reference string : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 Jumlah frame = 3 Page fault terjadi = 15 kali
Anomaly Belady Anomali yang terjadi : PFR naik saat jumlah frame ditingkatkan Contoh, jika reference string : 1,2,3,4,1,2,5,1,2,3,4,5 Jumlah frame = 3, PFR = 9 page fault Jumlah frame = 4, PFR = 10 page fault
FIFO Illustrating Belady’s Anamoly
Algoritma Optimal (OPT) Jika diketahui page-page mana yang berikutnya akan diakses, maka page yang tidak akan digunakan dalam waktu dekat (ie. Selang waktu terlama hingga diakses kembali) yang di-replace. Anomali Belady tidak berlaku Secara teoritis paling optimal tapi dalam kenyataannya sulit diimplementasikan
Optimal Page Replacement Reference string : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 Jumlah frame = 3 Page fault terjadi = 9 kali Pada referensi ke-4 terlihat page 7 akan di-replace dengan page 2, karena page 7 baru akan digunakan pada referensi ke-18, sedangkan page 0 akan digunakan pada referensi ke-5 dan page 1 akan digunakan pada referensi ke-14
Algoritma Least Recently Used (LRU) Algoritma LRU merupakan perpaduan antara FIFO dan OPT Mengaproksimasi Algoritma Optimal Perkiraan akses yang akan datang (forward information) diestimasi dengan menggunakan informasi akses yang lalu (backward information) Page dalam memori yang paling lama tidak diakses yang di-replace Jika SR = reverse S maka PFR OPT pada S sama dengan PFR LRU pada SR
LRU Page Replacement Reference string : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 Jumlah frame = 3 Page fault terjadi = 12 kali
END OF MODUL - 10