Langsung ke konten

Arsip

Memori Virtual

4 artikel
Rekayasa Perangkat Lunak 18 Sep 2026 5 min read

Linux userfaultfd Memindahkan Penanganan Page Fault Terpilih ke User Space

Page fault biasanya membawa eksekusi dari proses ke kernel dan baru kembali setelah kernel menyelesaikan kondisi virtual-memory atau mengirim error. Linux userfaultfd dapat menyisipkan komponen user-space ke jalur tersebut untuk rentang alamat yang didaftarkan secara eksplisit. Kernel melaporkan fault terpilih melalui file descriptor, memblokir execution context yang mengalami fault saat mode mengharuskannya, lalu menerima ioctl yang menyelesaikan fault tersebut. Ini adalah antarmuka virtual-memory Linux, bukan jaminan memori dari C atau POSIX. Perilakunya bergantung pada fitur kernel yang dinegosiasikan, rentang terdaftar, jenis mapping, dan mode registrasi.

Rekayasa Perangkat Lunak 17 Sep 2026 5 min read

Linux userfaultfd Mengubah Page Fault Menjadi Protokol Userspace

Sebuah thread dapat mengakses alamat virtual yang valid lalu berhenti sebelum akses tersebut selesai karena komponen userspace lain diberi tanggung jawab untuk menyelesaikan page fault. Dengan Linux userfaultfd, rentang memori tertentu dapat mengubah fault menjadi pesan descriptor sementara thread yang mengalami fault tetap tertahan sampai operasi resolusi yang sesuai memungkinkan eksekusi berlanjut. Mekanisme ini bukan pengganti subsistem virtual memory kernel. Kernel tetap mendeteksi fault, memvalidasi rentang yang terdaftar, menahan jalur eksekusi yang terdampak, dan menjalankan operasi page table yang diminta manager. Batas yang berbeda terletak pada partisipasi userspace dalam menentukan kapan dan dengan isi apa sebuah fault diselesaikan.

Rekayasa Perangkat Lunak 17 Sep 2026 6 min read

Linux mmap Memisahkan Masa Hidup Mapping dari File Descriptor

mmap() berbasis file yang berhasil membuat mapping virtual memory yang tidak bergantung pada file descriptor sumber agar tetap terbuka. Linux secara eksplisit mengizinkan descriptor ditutup segera setelah mmap() selesai tanpa membatalkan mapping. Mapping dan descriptor dengan demikian merupakan referensi terpisah dengan masa hidup yang terpisah. Pemisahan ini mudah terlewat karena keduanya berasal dari file terbuka yang sama. Dampaknya menjadi penting ketika kode menutup descriptor secara agresif, mengganti pathname, melakukan truncate pada file, atau membawa mapping melewati fork(). Alamat mapped bukan read() tertunda melalui descriptor awal; alamat tersebut beroperasi dalam virtual-memory system dengan kontrak mapping tersendiri.

Teknologi 16 Sep 2026 7 min read

TLB Menyimpan Cache Translasi Alamat Virtual Terbaru

Prosesor modern umumnya menjalankan program di ruang alamat virtual. Operasi load atau store dapat dimulai dengan alamat virtual, sementara sistem memori pada akhirnya membutuhkan lokasi fisik dan izin akses. Page table menyimpan informasi pemetaan tersebut, tetapi menelusuri hierarkinya untuk setiap akses memori akan menambah pekerjaan yang besar. Translation lookaside buffer, atau TLB, menyimpan translasi alamat yang baru digunakan di dekat prosesor. TLB hit menyediakan informasi pemetaan yang sudah di-cache tanpa full page-table walk. TLB miss memicu pekerjaan translasi tambahan meskipun data aplikasi yang diminta sudah berada di CPU cache.