Langsung ke konten

Arsip

Manajemen Proses

2 artikel
Rekayasa Perangkat Lunak 18 Sep 2026 7 min read

Linux close_range Menjadikan Pembersihan Tabel Descriptor sebagai Operasi Rentang

Proses yang bersiap mengeksekusi program lain sering memerlukan invariant descriptor yang sederhana: standard input, output, dan error tetap tersedia, sedangkan descriptor yang tidak terkait tidak melewati batas eksekusi. Menutup descriptor satu per satu dapat mengubah invariant tersebut menjadi persoalan enumerasi. Linux close_range() menerapkan operasi pada interval numerik inklusif di tabel file descriptor milik task pemanggil. Antarmukanya kecil, tetapi semantiknya menjangkau sharing tabel descriptor, pewarisan melalui execve(), alokasi descriptor secara concurrent, dan transisi privilege. Flag yang dipilih menentukan lebih dari strategi implementasi: flag tersebut menetapkan apakah descriptor langsung hilang, menjadi close-on-exec, atau terlebih dahulu dipisahkan dari tabel yang dibagi dengan task lain.

Linux 18 Sep 2026 5 min read

close_range Mengontrol Pewarisan Descriptor pada Batas exec

Sebuah proses yang bersiap memanggil execve() dapat memiliki ratusan atau ribuan file descriptor terbuka, sementara program baru hanya seharusnya mewarisi beberapa descriptor tertentu. Menutup descriptor satu per satu menimbulkan biaya pencatatan sekaligus masalah concurrency: thread lain dapat mengalokasikan descriptor ketika loop pembersihan masih berjalan. Linux close_range() memindahkan operasi tersebut ke batas tabel descriptor. Caller menentukan rentang angka inklusif dan meminta kernel menutup descriptor dalam rentang itu atau menandainya close-on-exec. Dengan CLOSE_RANGE_UNSHARE, caller dapat lebih dahulu memisahkan tabel descriptornya dari thread atau proses yang berbagi tabel tersebut.