Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Linker dan Loader

Linker dan Loader adalah program utilitas yang memainkan peran utama dalam pelaksanaan suatu program. Kode sumber suatu program melewati compiler, assembler, linker, loader dalam urutan masing-masing, sebelum eksekusi. Di satu sisi, di mana tautan menghubungkan kode objek yang dihasilkan oleh assembler dan menggabungkannya untuk menghasilkan modul yang dapat dieksekusi. Di sisi lain, loader memuat modul yang dapat dieksekusi ini ke memori utama untuk dieksekusi. Mari kita bahas perbedaan antara Linker dan loader dengan bantuan grafik perbandingan.

Grafik perbandingan

Dasar untuk PerbandinganLinkerPemuat
DasarIni menghasilkan modul yang dapat dieksekusi dari program sumber.Ini memuat modul yang dapat dieksekusi ke memori utama.
MemasukkanDibutuhkan sebagai input, kode objek yang dihasilkan oleh assembler.Dibutuhkan modul yang dapat dieksekusi yang dihasilkan oleh tautan.
FungsiIni menggabungkan semua modul objek dari kode sumber untuk menghasilkan modul yang dapat dieksekusi.Ini mengalokasikan alamat ke modul yang dapat dieksekusi di memori utama untuk dieksekusi.
Jenis / PendekatanEditor Tautan, Tautan dinamis.Pemuatan absolut, pemuatan Relocatable, dan Pemuatan Waktu Proses Dinamis.

Definisi Linker

Assembler menghasilkan kode objek program sumber dan menyerahkannya ke tautan. Linker mengambil kode objek ini dan menghasilkan kode yang dapat dieksekusi untuk program, dan menyerahkannya ke Loader.

Bahasa tingkat tinggi, program memiliki beberapa perpustakaan built-in dan file header . Program sumber dapat berisi beberapa fungsi pustaka yang definisinya disimpan di pustaka built-in. Linker menautkan fungsi-fungsi ini ke perpustakaan bawaan. Dalam kasus perpustakaan built-in tidak ditemukan itu menginformasikan ke kompiler, dan kompiler kemudian menghasilkan kesalahan.

Terkadang program besar dibagi ke dalam subprogram yang disebut modul . Sekarang ketika modul ini dikompilasi dan dirakit, modul objek dari program sumber dihasilkan. Linker memiliki tanggung jawab untuk menggabungkan / menautkan semua modul objek untuk menghasilkan satu file yang dapat dieksekusi dari program sumber. Kami memiliki dua jenis tautan.

Editor Linkage : Ini adalah linker yang menghasilkan modul relocatable, executable.

Dynamic Linker : Menentukan / menunda hubungan beberapa modul eksternal hingga modul muat / modul yang dapat dieksekusi dibuat. Di sini, menghubungkan dilakukan selama waktu buka atau waktu berjalan.

Definisi Loader

Karena program yang harus dijalankan saat ini harus berada di memori utama komputer. Merupakan tanggung jawab loader, sebuah program dalam sistem operasi, untuk memuat file / modul program yang dapat dieksekusi, yang dihasilkan oleh tautan, ke memori utama untuk dieksekusi. Ini mengalokasikan ruang memori ke modul yang dapat dieksekusi di memori utama.

Ada tiga jenis pendekatan pemuatan:

  • Pemuatan absolut
  • Pemuatan relokasi
  • Pemuatan run-time dinamis

Pemuatan absolut : Pendekatan ini memuat file yang dapat dieksekusi dari suatu program ke lokasi memori utama yang sama setiap kali. Tetapi memiliki beberapa kelemahan seperti seorang programmer harus menyadari strategi penugasan untuk memuat modul ke memori utama. Dalam hal, program harus dimodifikasi yang melibatkan penyisipan dan penghapusan dalam program, maka semua alamat program harus diubah.

Pemuatan yang dapat dipindahkan: Dalam pendekatan ini, kompiler atau assembler tidak menghasilkan alamat memori utama yang sebenarnya . Ini menghasilkan alamat relatif.

Dynamic Run-Time loading : Dalam pendekatan ini, alamat absolut untuk suatu program dihasilkan ketika instruksi dari modul yang dapat dieksekusi sebenarnya dieksekusi. Sangat fleksibel, modul yang dapat di-load / modul yang dapat dieksekusi dapat dimuat ke setiap wilayah memori utama . Program yang dijalankan dapat terganggu di antaranya dan dapat ditukar keluar ke disk dan kembali ke memori utama kali ini di alamat memori utama yang berbeda.

Perbedaan Kunci Antara Linker dan Loader

  1. Perbedaan utama antara linker dan loader adalah bahwa linker menghasilkan file yang dapat dieksekusi dari suatu program sedangkan, loader memuat file yang dapat dieksekusi yang diperoleh dari tautan ke memori utama untuk dieksekusi .
  2. Linker mengambil modul objek program yang dihasilkan oleh assembler. Namun, loader memasukkan modul yang dapat dieksekusi yang dihasilkan oleh tautan.
  3. Linker menggabungkan semua modul objek dari suatu program untuk menghasilkan modul yang dapat dieksekusi, juga menghubungkan fungsi pustaka dalam modul objek ke pustaka built-in dari bahasa pemrograman tingkat tinggi. Di sisi lain, loader mengalokasikan ruang ke modul yang dapat dieksekusi di memori utama.
  4. Linker dapat diklasifikasikan sebagai editor tautan, dan tautan dinamis sedangkan loader dapat diklasifikasikan sebagai loader absolut, loader yang dapat dipindahkan , dan loader run-time dinamis .

Kesimpulan:

Linker mengambil modul objek suatu program dari assembler dan menautkannya bersama-sama untuk menghasilkan modul program yang dapat dieksekusi. Modul yang dapat dieksekusi kemudian dimuat oleh loader ke dalam memori utama untuk dieksekusi.

Top