Demand paging is a method of virtual memory management. In a system that uses demand paging, the operating system copies a disk page into physical memory only if an attempt is made to access it and that page is not already in memory (i.e., if a page fault occurs).
Read more: Sistem Operasi – 15 – Memory 3: Demand PagingSumber Utama
Time seek | Note from CS162 Lecture 15: Memory 3: Caching and TLBs (Con’t), Demand Paging |
54:17 | page fault |
1:00:14 | demand paging |
1:04:44 | demand paging as caching |
1:07:31 | illusion of infinite memory |
1:09:54 | what is PTE (page table entry)? |
1:11:40 | demand paging mechanism |
1:15:47 | origins of paging |
1:18:51 | classic example: loading an executable into memory |
1:23:50 | summary: steps in handling a page fault |
1:26:24 | summary |
Poin-poin Penting
- Page fault vs segmentation fault:
- page fault: ketika akses sebuah page pada page table, yang saat ini tidak diizinkan untuk diakses. ada beberapa sebab, misalnya:
- proses mencoba mengakses memory yang saat ini tidak berada di physical memory (RAM)
- access violation, misalnya write memory location yang aksesnya read-only.
- memory protection, misalnya mengakses memory diluar base-and-bound.
- swapping. dikarenakan kekurangan memory, maka terjadi swap, dimana sistem operasi memindahkan isi RAM sebuah proses ke disk. sehingga PTE akan dinyatakan invalid sampai isi disk dipindahkan kembali ke RAM.
- unmapped memory: PTE dinyatakan invalid pada area yang belum dialokasikan.
- segmentation fault: ketika process A mengakses memory di address space process B. Ini fatal, dan sistem operasi akan menhentikan (terminate) process A.
- page fault: ketika akses sebuah page pada page table, yang saat ini tidak diizinkan untuk diakses. ada beberapa sebab, misalnya:
- Page fault bukan benar-benar fault. Dengan terjadinya page fault, ini akan men-trigger sistem operasi untuk melakukan sesuatu, dan sistem operasi akan me-retry instruction yang tadi menyebabkan page-fault. inilah yang mungkin dilakukan sistem operasi ketika terjadi page-fault:
- mengalokasikan stack page yang lebih banyak,
- membuat page jadi accessible – dengan cara copy-on-write.
- membawa page dari secondary storage ke memory → demand paging.
Latar Belakang
- demand paging terjadi sebagai tindak lanjut dari page fault.
Cara kerja demand paging
- processor fetch instruction/data pada MMU, dan gagal karena PTE invalid
- karena gagal, masuk exception, sistem operasi ambil alih dengan menjalankan exception handling berupa page fault handler
- page fault handler me-load page dari disk ke RAM (jika masih ada space di RAM. jika tidak ada space, maka dilakukan swapping: pilih old page untuk dipindahkan ke disk).
- page fault handler mengubah PTE menjadi valid
- page fault handle invoke thread scheduler,
- sehingga terjaid proses retry.
- saat retry, PTE sudah valid, dan physical memory bisa di-load
Demand paging as caching
Demand paging mechanism
perhatikan langka demand paging mechanism diatas, dimana ada kalimat “update page table entry, invalidate TLB for new entry”. ini dikarenakan:
- update page table entry → karena baru saja page di load dari disk ke memory, sehingga sekarang page tersedia di physical memory, karena itu page table entry yang tadinya tidak valid, menjadi valid, sehingga butuh di-update.
- invalidate TLB for new entry → demand paging itu kan terjadi karena page fault, jadi TLB nya ada, cuma hasil dari TLB ini failed (aka page fault). dengan ada nya page yang sudah di-load dari disk ke physical memory, yang kemudian di-susul dengan invalidate TLB for new entry, maka di-cycle berikutnya (saat thread retry di-titik yang menyebabkan page fault), akan mendapati TLB nya invalid, maka akan dilakukan address translation traversal. jika sudah selesai, hasil translation ini akan disimpan di-cache-nya TLB. sehingga, sekarang TLB normal kembali.