Langsung ke konten

Arsip

IPC

15 artikel
Linux 23 Sep 2026 5 min read

Mode Semaphore eventfd Mengubah Nilai Counter Menjadi Read Satu Unit

Linux eventfd mengekspos counter 64-bit yang dikelola kernel melalui file descriptor. Interface yang ringkas ini memiliki pilihan semantik penting: read normal menguras nilai counter saat itu, sedangkan read dengan EFD_SEMAPHORE hanya mengambil satu unit. Jalur write tetap menambahkan nilai ke counter yang sama. Perbedaan tersebut mengubah objek dari counter notifikasi agregat menjadi sumber unit yang dapat dikonsumsi satu per satu melalui descriptor. Model readiness tetap dapat dipakai bersama poll, epoll, dan mekanisme multiplexing descriptor lain, sehingga satu objek dapat menghubungkan accounting producer dengan event loop tanpa payload pipe terpisah.

Linux 22 Sep 2026 4 min read

SO_PEEK_OFF Memberi UNIX Socket Cursor Peek yang Stateful

SO_PEEK_OFF Memberi UNIX Socket Cursor Peek yang Stateful recv(..., MSG_PEEK) biasanya memeriksa data di depan receive queue socket tanpa menghapusnya. Pada UNIX-domain socket Linux, SO_PEEK_OFF dapat mengganti pola yang selalu melihat kepala queue itu dengan cursor yang bergerak maju setelah setiap peek. Cursor tersebut merupakan state milik socket. Peek menggesernya ke depan, sedangkan konsumsi byte dari depan queue menggesernya kembali sebesar jumlah byte yang diambil. Interaksi ini memungkinkan proses memeriksa bagian queue secara berurutan tanpa mengonsumsinya, sambil mempertahankan posisi peek terhadap data yang masih tersisa.

Linux 22 Sep 2026 4 min read

EFD_SEMAPHORE Membuat Read eventfd Mengonsumsi Satu Unit Counter

eventfd normal mengubah seluruh counter yang bernilai nonzero menjadi satu hasil read lalu mereset counter ke nol. Saat dibuat dengan EFD_SEMAPHORE, hanya sisi read yang berubah: setiap read yang berhasil mengembalikan nilai 64-bit 1 dan mengurangi counter yang dikelola kernel sebanyak satu. Perbedaan ini membuat beberapa unit yang dikumpulkan writer tetap dapat dikonsumsi secara terpisah. Objeknya tetap sebuah eventfd, dengan counter, aturan write, lifetime descriptor, dan integrasi readiness yang sama.

Linux 21 Sep 2026 5 min read

File Seal memfd Membekukan State Shared Memory

File dari memfd_create() pada awalnya merupakan file anonim yang mutable. Ukurannya dapat diubah, isinya dapat ditulis, dan file dapat dipetakan seperti file biasa, sementara storage-nya bersifat volatile dan dilepas setelah referensi terakhir hilang. File sealing menambahkan fase lain pada lifecycle tersebut: setelah data selesai diisi, kernel dapat menolak secara permanen kelas perubahan tertentu. Transisi ini berguna saat satu process menyiapkan byte lalu menyerahkan file description yang sama ke process lain. Penerima dapat memeriksa seal yang melekat pada inode, bukan hanya mengandalkan kesepakatan bahwa pengirim tidak akan mengubah objek lagi.

Keamanan Siber 19 Sep 2026 5 min read

Seal memfd Mengubah Shared Memory Menjadi Payload Immutable yang Ditegakkan Kernel

Shared memory efisien karena dua proses dapat mengamati storage yang sama tanpa menyalin data. Properti itu menjadi masalah keamanan ketika satu pihak memvalidasi byte lalu mengonsumsinya sementara pihak lain masih memiliki kewenangan untuk mengubah objek yang sama. Sealing pada memfd Linux dapat mempersempit race tersebut dengan membuat mutasi tertentu gagal di kernel sebelum file descriptor melewati batas kepercayaan. memfd_create() membuat file anonim dan mengembalikan file descriptor biasa. Objek tersebut dapat diatur ukurannya, ditulis, dipetakan, dan ditransfer melalui UNIX domain socket. Dengan MFD_ALLOW_SEALING, inode dimulai dengan set seal kosong sehingga produsen dapat menambahkan pembatasan yang tidak dapat dibatalkan setelah payload diisi.

Linux 19 Sep 2026 4 min read

Seal memfd Membatasi Mutasi Shared Memory Setelah Handoff

Descriptor dari memfd_create() merujuk ke file anonim dengan penyimpanan pada infrastruktur filesystem berbasis memori. Handoff descriptor saja tidak membekukan objek tersebut: proses yang masih memiliki akses yang sesuai dapat menulis byte, melakukan truncate, atau memperbesar file. File seal Linux menambahkan pembatasan yang ditegakkan kernel sehingga mutasi tertentu gagal setelah producer menyatakan objek selesai dibuat. Mekanisme ini mengubah handoff shared memory dari sekadar konvensi menjadi transisi state yang ditegakkan pada objek file.

Rekayasa Perangkat Lunak 18 Sep 2026 4 min read

Seal pada memfd Mengubah State File Bersama Menjadi Pembatasan Monotonik

File hasil memfd_create() dapat bermula sebagai state bersama yang writable lalu berubah menjadi semakin terbatas. File seal membuat transisi itu monotonik: seal yang berhasil dipasang menjadi properti inode, berlaku pada setiap descriptor yang merujuk inode tersebut, dan tidak dapat dihapus. Sifat ini berguna ketika satu proses menyiapkan byte lalu mengirim descriptor ke proses lain. Penerima dapat memeriksa pembatasan yang ditegakkan kernel, bukan hanya bergantung pada janji protokol bahwa produsen sudah berhenti mengubah objek.

Keamanan Siber 18 Sep 2026 5 min read

Kredensial Peer UNIX Socket Mengikat IPC Lokal ke Identitas yang Diamati Kernel

Sebuah daemon lokal berprivilege menerima request melalui socket AF_UNIX dan perlu memutuskan apakah pengirim boleh menjalankan suatu operasi. Mempercayai UID, PID, atau nama akun yang dikodekan di dalam request hanya berarti mempercayai data yang diberikan client. Linux menyediakan kanal identitas berbeda: kernel dapat mengekspos kredensial yang terkait dengan peer atau dengan satu pesan tertentu. SO_PEERCRED dan SCM_CREDENTIALS sama-sama membawa struct ucred, tetapi keduanya menggambarkan momen berbeda dalam relasi IPC. Menganggap keduanya setara dapat mengubah batas otorisasi lokal yang kuat menjadi asumsi identitas yang sudah stale.

Rekayasa Perangkat Lunak 18 Sep 2026 4 min read

eventfd Mengubah Status Counter Menjadi Readiness Descriptor

Descriptor eventfd menjadi readable saat counter yang dipelihara kernel bernilai lebih besar dari nol. Sebuah write tidak memasukkan pesan dengan panjang variabel ke antrean. Operasi itu menambahkan nilai unsigned 64-bit ke counter, sehingga status notifikasi yang terakumulasi tampil sebagai readiness file descriptor biasa. Batas ini berguna ketika thread atau fasilitas kernel perlu membangunkan event loop tanpa membentuk protokol byte stream. Status yang dibawa descriptor sengaja sempit: sebuah counter, kondisi readiness, dan dua pilihan semantik konsumsi.

Rekayasa Perangkat Lunak 17 Sep 2026 4 min read

Seal memfd Mengubah File Bersama Menjadi Objek Monotonik

Sebuah memfd Linux dapat bermula sebagai file anonim yang writable, lalu memperoleh pembatasan yang tidak dapat dihapus. Pembatasan tersebut melekat pada inode, sehingga transfer atau duplikasi descriptor tidak menghasilkan tampilan yang lebih longgar. Setelah sebuah seal berhasil ditambahkan, setiap descriptor yang merujuk inode itu tunduk pada seal tersebut. Sifat ini berbeda dari access mode pada descriptor. Descriptor dapat membawa flag lokal, sedangkan seal mengubah batas mutasi pada objek file bersama itu sendiri.

Rekayasa Perangkat Lunak 17 Sep 2026 5 min read

Seal Linux memfd Mengubah Status File Mutable Menjadi Kontrak Terbatas

Seal Linux memfd Mengubah Status File Mutable Menjadi Kontrak Terbatas File yang dikembalikan memfd_create() bermula sebagai status file mutable pada penyimpanan berorientasi memori, tetapi Linux dapat menghapus operasi mutasi dari file tersebut secara bertahap. Saat pembuatan memakai MFD_ALLOW_SEALING, fcntl() dengan F_ADD_SEALS dapat melarang penyusutan, pertumbuhan, penulisan, penulisan pada masa berikutnya, atau perubahan lanjutan terhadap kumpulan seal. Pembatasan itu melekat pada inode, bukan pada satu descriptor, sehingga pemindahan descriptor lain untuk objek yang sama tidak memulihkan operasi yang telah dihapus oleh seal.

Rekayasa Perangkat Lunak 17 Sep 2026 6 min read

Linux memfd Seals Mengubah Byte Mutable Menjadi Kontrak yang Ditegakkan Kernel

Sebuah memfd dapat dimulai sebagai anonymous file yang writable lalu menolak kelas mutasi tertentu melalui seal yang ditegakkan kernel. Transisi ini melekat pada inode, bukan pada satu descriptor, sehingga proses tidak dapat mempertahankan duplicate descriptor tanpa pembatasan untuk melewati seal yang dipasang melalui referensi lain. Sifat tersebut berbeda dari memberikan descriptor dengan mode akses yang lebih sempit kepada komponen lain. Mode akses descriptor membatasi satu open file description. Seal mengubah operasi yang diizinkan kernel terhadap file itu sendiri, termasuk operasi melalui descriptor lain yang merujuk inode yang sama.

Rekayasa Perangkat Lunak 17 Sep 2026 6 min read

Linux eventfd Menggabungkan State Counter dengan Readiness Descriptor

Objek eventfd menggabungkan counter unsigned 64-bit yang dikelola kernel dengan readiness file descriptor. Sebuah write menambahkan nilai ke counter ketika penambahan itu diizinkan; sebuah read mengonsumsi state counter. Karena objek yang sama dapat dipakai oleh poll(), select(), dan epoll(), transisi counter juga dapat menjadi notifikasi event loop tanpa byte stream atau lapisan framing pesan. Antarmuka ringkas ini memiliki semantik yang tegas. Read default menguras nilai saat ini menjadi nol, read dengan EFD_SEMAPHORE mengonsumsi satu unit, write dapat blocking saat counter mendekati batas, dan readiness menunjukkan operasi yang dapat berjalan, bukan jumlah event logis yang dipetakan aplikasi ke counter.

Keamanan Siber 17 Sep 2026 6 min read

Kredensial Peer Unix Socket Mengikat Identitas ke Koneksi Lokal

Kredensial Peer Unix Socket Mengikat Identitas ke Koneksi Lokal Sebuah layanan lokal berprivilege sering menerima permintaan dari proses yang berbagi host tetapi tidak berbagi otoritas. Pathname pada Unix domain socket dapat mengendalikan pihak yang mencapai listener, tetapi koneksi yang berhasil tidak dengan sendirinya memberi tahu layanan proses mana yang berada di ujung lain. Linux menyediakan batas kedua: SO_PEERCRED membuat Unix socket yang terhubung dapat mengekspos kredensial peer yang dipasok kernel.

Rekayasa Perangkat Lunak 17 Sep 2026 5 min read

Counter eventfd Menggabungkan Notifikasi Sebelum Read

Sebuah eventfd Linux dapat menerima beberapa write sebelum consumer berjalan, tetapi descriptor tersebut tidak menyimpan setiap write sebagai pesan terpisah. Setiap write yang diterima menambahkan nilai unsigned 64-bit ke counter yang dikelola kernel. Tanpa EFD_SEMAPHORE, satu read yang berhasil mengembalikan nilai counter saat itu lalu meresetnya menjadi nol. Perilaku tersebut membuat eventfd menjadi primitive notifikasi berbasis counter, bukan message queue. Readiness menyatakan bahwa counter tidak nol; readiness tidak mempertahankan jumlah operasi write, urutan, atau boundary setiap write.