Pada Linux, binary loader tidak perlu me-load berkas biner ke memori fisik, melainkan dengan cara memetakan halaman dari binary file ke region dari memori virtual. Sehingga hanya ketika program mengakses halaman tertentu akan menyebabkan page fault yang mengakibatkan halaman yang dibutuhkan di-load ke memori fisik.
Dalam pemetaan program ke memori juga terjadi proses
load dan eksekusi.
Eksekusi dari kernel Linux dilakukan oleh panggilan
terhadap system call
exec().
System call
exec() memerintahkan kernel untuk
menjalankan program baru di dalam proses yang
sedang berlangsung atau
current process, dengan cara
meng-
overwrite current execution
dengan initial context
dari program baru yang akan dijalankan.
Untuk meng-overwrite
dan mengeksekusi, akan dilakukan dua kegiatan, yakni:
Linux menggunakan tabel
loader untuk
loading program baru. Dengan
menggunakan tabel tersebut, Linux memberikan kesempatan
bagi setiap fungsi untuk
me-load program
ketika system call
exec() dipanggil. Linux menggunakan
tabel loader, karena format
standar berkas binary Linux
telah berubah antara kernel Linux 1.0 dan 1.2.
Format Linux versi 1.0 menggunakan format
a.out, sementara Linux baru (sejak 1.2)
menggunakan format ELF. Format ELF memiliki fleksibilitas
dan ekstensibilitas dibanding dengan a.out
karena dapat menambahkan
sections baru ke
binary ELF, contohnya dengan
menambahkan informasi debugging,
tanpa menyebabkan
loader routine menjadi bingung.
Saat ini Linux mendukung pemakaian baik format
binary ELF dan
a.out pada
single running system
karena menggunakan registrasi dari
multiple loader routine.