Dalam sistem komputer, pemuat adalah bagian dari sistem operasi yang bertanggung jawab untuk memuat program-program dan pustaka perangkat lunak. Ini adalah salah satu tahap penting dalam proses memulai sebuah program, seperti menempatkan program-program ke memori dan mempersiapkannya untuk dijalankan. Memuat sebuah program melibatkan pembacaan isi dari berkas yang dapat dijalankan yang berisi instruksi-instruksi program ke dalam memori, dan kemudian melaksanakan persiapan lain yang diperlukan oleh tugas-tugas untuk mempersiapkan berkas itu untuk dijalankan. Setelah pemuatan selesai, sistem operasi memulai program dengan melewatkan kontrol pada kode program yang dimuat.

Tanggung jawab

sunting

Dalam Unix, pemuat adalah penanganan untuk sistem panggilan execve().[1] Tugas pemuat Unix meliputi:

  1. validasi (izin, persyaratan memori, dan lain-lain);
  2. menyalin program gambar dari cakram ke memori utama;
  3. menyalin argumen baris perintah pada stack;
  4. menginisialisasi register (misalnya stack pointer);
  5. melompat ke titik awal program (_start).

Dalam Microsoft Windows 7 dan versi di atasnya, pemuat adalah fungsi LdrInitializeThunk yang terkandung dalam ntdll.dll, yang melakukan hal berikut:

  1. inisialisasi struktur dalam DLL itu sendiri (yaitu bagian penting, modul daftar);
  2. validasi eksekusi untuk dimuat;
  3. penciptaan sebuah tumpukan (melalui fungsi RtlCreateHeap);
  4. alokasi blok variabel lingkungan dan blok PATH;
  5. penambahan eksekusi dan NTDLL ke dalam daftar modul;
  6. pemuatan KERNEL32.DLL untuk memperoleh beberapa fungsi penting, misalnya BaseThreadInitThunk;
  7. pemuatan eksekusi impor (yaitu dynamic-link libraries) secara rekursif (memeriksa impor pengimporan, impor, dan sebagainya);
  8. dalam mode pengawakutuan, meningkatkan sistem breakpoint;
  9. inisialisasi DLL;
  10. pengumpulan sampah;
  11. memanggil NtContinue dalam konteks parameter yang diberikan untuk fungsi pemuat (yaitu melompat ke RtlUserThreadStart, yang akan mulai dieksekusi)

Referensi

sunting
  1. ^ "exec". The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition. The Open Group. Diakses tanggal 2008-06-23.