Grafik perbandingan
Dasar untuk Perbandingan | Linker | Pemuat |
---|---|---|
Dasar | Ini menghasilkan modul yang dapat dieksekusi dari program sumber. | Ini memuat modul yang dapat dieksekusi ke memori utama. |
Memasukkan | Dibutuhkan sebagai input, kode objek yang dihasilkan oleh assembler. | Dibutuhkan modul yang dapat dieksekusi yang dihasilkan oleh tautan. |
Fungsi | Ini 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 / Pendekatan | Editor 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
- 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 .
- Linker mengambil modul objek program yang dihasilkan oleh assembler. Namun, loader memasukkan modul yang dapat dieksekusi yang dihasilkan oleh tautan.
- 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.
- 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.