Langsung ke konten

Arsip

Io_uring

3 artikel
Keamanan Siber 18 Sep 2026 6 min read

Pembatasan io_uring Membekukan Permukaan Operasi yang Diizinkan Sebelum Ring Diaktifkan

Sebuah layanan dapat memberikan instance io_uring kepada kode yang hanya perlu menjalankan kelas operasi asinkron yang sempit. Ring itu sendiri mendukung banyak opcode submission dan perintah registration. Jika pembatasan hanya bergantung pada kode aplikasi agar tidak memakai operasi tertentu, permukaan yang diizinkan tetap berupa konvensi, bukan properti yang ditegakkan kernel. Linux menyediakan mekanisme yang lebih ketat melalui IORING_REGISTER_RESTRICTIONS. Ring yang dibuat dengan IORING_SETUP_R_DISABLED dapat menerima sekumpulan pembatasan sebelum dapat dipakai untuk submission. Proses kemudian mengaktifkan ring dengan IORING_REGISTER_ENABLE_RINGS. Sejak titik itu, kernel mengevaluasi operasi terhadap pembatasan yang telah didaftarkan.

Rekayasa Perangkat Lunak 18 Sep 2026 3 min read

Link io_uring Menserialkan Request yang Saling Bergantung

Dua submission queue entry io_uring yang bersebelahan pada kondisi normal merupakan request independen. Menetapkan IOSQE_IO_LINK pada entry pertama mengubah hubungan itu: request berikutnya tidak mulai sebelum request yang ditautkan selesai. Pengulangan flag tersebut membentuk rantai berurutan di dalam satu batch submission. Sifat pengurutan ini lebih sempit daripada serialisasi queue secara global. Request di luar rantai tetap dapat berjalan secara independen, dan rantai terpisah dapat berjalan tumpang tindih. Sebuah link dengan demikian menyatakan dependensi antar-SQE tertentu, bukan memasang barrier pada seluruh ring.

Rekayasa Perangkat Lunak 17 Sep 2026 4 min read

io_uring Multishot Accept Mempertahankan Satu Request untuk Banyak Koneksi

Satu request io_uring multishot accept di Linux dapat menghasilkan beberapa completion queue entry dari satu submission queue entry. Kernel mempertahankan operasi accept setelah completion yang sukses ketika CQE membawa IORING_CQE_F_MORE, sehingga server tidak perlu mengirim SQE accept baru untuk setiap koneksi. Perilaku ini mengubah kontrak lifetime antara submission dan completion. Request oneshot normal selesai setelah CQE-nya. Multishot accept dapat tetap in-flight melewati banyak koneksi yang diterima, dan flag pada CQE menentukan apakah request tersebut masih ada.