Langsung ke konten

Arsip

POSIX

3 artikel
Rekayasa Perangkat Lunak 17 Sep 2026 7 min read

File-Backed Mapping Dapat Bertahan Lebih Lama daripada Ukuran File yang Diasumsikan

Sebuah proses dapat mempertahankan virtual memory mapping yang valid setelah pihak lain memperpendek file yang dipetakan. Rentang alamatnya masih ada di dalam proses, tetapi backing object mungkin tidak lagi memiliki setiap page yang sebelumnya direpresentasikan oleh rentang tersebut. Pada sistem POSIX, akses ke satu page terpetakan penuh yang berada di luar akhir file baru dapat menghasilkan SIGBUS, bukan berperilaku seperti pembacaan file biasa yang gagal. Batas ini membuat file-backed mmap() berbeda dari menyalin byte ke private heap storage. Pointer ke dalam mapping bukan bukti bahwa extent file yang sesuai masih ada. Alamat virtual, lifetime mapping, identitas file, dan ukuran file saat ini merupakan state yang saling berkaitan, tetapi bukan satu objek yang tidak dapat dipisahkan.

Teknologi 16 Sep 2026 4 min read

fsync pada File Tidak Memastikan Directory Entry Tersimpan Persisten

fsync() yang berhasil pada regular file tidak, dengan sendirinya, menjamin bahwa directory entry yang memberi nama pada file tersebut sudah mencapai persistent storage. Linux mendokumentasikan boundary ini secara eksplisit: sinkronisasi file mencakup data file dan metadata terkait, sedangkan persistence directory entry yang memuatnya membutuhkan fsync() pada file descriptor untuk direktori tersebut. Perbedaan ini penting ketika software membuat file baru atau mengganti pathname yang sudah ada secara atomik. Konten file dan metadata pathname adalah dua bagian filesystem state yang terpisah, dan crash dapat menguji durability boundary di antara keduanya.

Rekayasa Perangkat Lunak 16 Sep 2026 7 min read

File Descriptor Duplikat Berbagi Offset tetapi Tidak Descriptor Flag

Memanggil dup() tidak membuat posisi stream yang independen. Descriptor yang dikembalikan mengacu pada open file description yang sama dengan descriptor sumber, sehingga seek melalui salah satu descriptor mengubah offset yang terlihat melalui keduanya. Pada saat yang sama, state lokal descriptor seperti flag close-on-exec tetap melekat pada masing-masing descriptor secara terpisah. Pemisahan ini mudah terlewat karena kedua jenis state dimanipulasi melalui file descriptor berupa integer. Integer tersebut hanyalah referensi lokal milik proses. Beberapa descriptor dapat menunjuk ke satu open file description, dan objek bersama itulah yang membawa state yang memengaruhi read, write, seek, serta perubahan status flag.