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