Разлика между Linker и Loader
Съдържание
Linker и Loader са помощните програми, които играят основна роля в изпълнението на програмата. Изходният код на програма преминава през компилатор, асемблер, линкер, товарач в съответния ред, преди изпълнението. От една страна, където линкер въвежда обектните кодове, генерирани от асемблера и ги комбинира, за да генерира изпълним модул. От друга страна, товарач зарежда този изпълним модул в основната памет за изпълнение. Нека обсъдим разликата между Linker и loader с помощта на сравнителна диаграма.
- Сравнителна диаграма
- дефиниция
- Ключови разлики
- заключение
Сравнителна диаграма
Основа за сравнение | линкер | товарач |
---|---|---|
Основен | Той генерира изпълним модул на изходна програма. | Той зарежда изпълним модул в основната памет. |
Вход | Той приема като вход обектния код, генериран от асемблер. | Той отнема изпълним модул, генериран от линкер. |
функция | Той комбинира всички обектни модули на изходния код за генериране на изпълним модул. | Той разпределя адресите на изпълним модул в основната памет за изпълнение. |
Вид / подход | Редактор на връзки, динамичен линкер. | Абсолютно натоварване, преместващо се зареждане и динамично натоварване по време на работа. |
Определение за Linker
Асемблерът генерира обектния код на изходна програма и го предава на линкера. Линкерът приема този обективен код и генерира изпълним код за програмата и я предайте на товарача.
Езикът на високо ниво, програмите имат някои вградени библиотеки и заглавни файлове, Изходната програма може да съдържа някои библиотечни функции, чието определение се съхранява във вградените библиотеки. Линкерът свързва тези функции с вградените библиотеки. В случай, че вградените библиотеки не бъдат намерени, той уведомява компилатора и след това компилаторът генерира грешката.
Понякога големите програми се разделят на подпрограмите, които се наричат модули, Сега, когато тези модули са компилирани и сглобени, се генерират обектните модули на изходната програма. Линкерът отговаря за комбинирането / свързването на всички обектни модули за генериране на един изпълним файл на изходната програма. Имаме два вида свързващи устройства.
Редактор на връзки: Това е линкер, който генерира преместваем, изпълним модул.
Динамичен линкер: Той отлага / отлага връзката на някои външни модули, докато не се генерира товарния / изпълним модул. Тук свързването се извършва по време на зареждане или време на изпълнение.
Определение за товарач
Тъй като програмата, която трябва да се изпълни в момента, трябва да се намира в основната памет на компютъра. Това е отговорност на товарач, програма в операционна система, която да зареди изпълнимия файл / модул на програма, генериран от линкера, в основната памет за изпълнение. Той разпределя паметта на изпълним модул в основната памет.
Има три вида подходи за товарене:
- Абсолютно натоварване
- Преместване на товари
- Динамично зареждане на работното време
Абсолютно натоварване: Този подход зарежда изпълнимия файл на програма в a същото основно място за памет всеки път. Но има някои недостатъци подобно на програмист трябва да е запознат със стратегията за възлагане за зареждане на модулите в основната памет. В случай, че програмата трябва да бъде модифицирана, включваща някакво вмъкване и изтриване в програмата, тогава всички адреси на програмата трябва да бъдат променени.
Преместващо се зареждане: При този подход компилаторът или асемблерът прави не създават действителен адрес на основната памет, Той произвежда относителните адреси.
Динамично зареждане на време на работа: При този подход абсолютният адрес за дадена програма се генерира, когато действително се изпълни инструкция на изпълним модул. Той е много гъвкав, зареждащият се модул / изпълним модул може да бъде зареден в всеки регион на основната памет, Изпълняващата програма може да бъде прекъсната между тях и да бъде заменена на диска и обратно към основната памет този път на различен основен адрес в паметта.
- Ключовата разлика между линкер и товарач е, че линкерът генерира изпълним файл на програма, докато, товарачът зарежда изпълним файл, получен от линкер, в основна памет за изпълнение.
- Линкерът приема обект модул на програма, генерирана от асемблера. Въпреки това, товарачът приема изпълним модул генериран от линкера.
- Линкерът комбинира всички обектни модули на програма за генериране изпълними модули тя също свързва библиотечна функция в обектния модул до вградени библиотеки на езика за програмиране на високо ниво. От друга страна, товарач разпределя пространство за изпълним файл модул в основната памет.
- Линкерът може да бъде класифициран като редактор за връзка, и динамичен линкер като има предвид, че товарачът може да бъде класифициран като абсолютен товарач, преместващ се товарач и динамичен товарач за изпълнение.
Заключение:
Линкерът взема обектните модули на програма от асемблера и ги свързва заедно, за да генерира изпълним модул на програма. След това изпълним модул се зарежда от товарача в основната памет за изпълнение.