Препоръчано, 2024

Избор На Редактора

Разлика между Linker и Loader

Linker и Loader са полезните програми, които играят важна роля в изпълнението на програмата. Изходният код на програмата преминава през компилатор, асемблер, линкер, товарач в съответния ред, преди изпълнение. От една страна, когато линкерът въвежда обектни кодове, генерирани от асемблера и ги комбинира, за да генерира изпълним модул. От друга страна, зареждащият зарежда този изпълним модул в основната памет за изпълнение. Нека обсъдим разликата между Linker и Loader с помощта на таблица за сравнение.

Сравнителна таблица

Основа за сравнениелинкертоварач
ОсновенТой генерира изпълним модул на изходна програма.Той зарежда изпълнимия модул в основната памет.
ВходТой взема като входен код обектния код, генериран от асемблер.Отнема изпълним модул, генериран от линкер.
функцияТой комбинира всички обектни модули на изходния код, за да генерира изпълним модул.Той разпределя адресите на изпълним модул в основната памет за изпълнение.
Вид / подходРедактор на връзки, Динамичен линкер.Абсолютно натоварване, преместване на натоварването и динамично зареждане на времето за изпълнение.

Определение на линкер

Асемблерът генерира обектен код на изходна програма и я предава на линкъра. Линкерът поема този обектен код и генерира изпълним код за програмата и го предава на Loader.

Езикът на високо ниво, програмите имат някои вградени библиотеки и заглавни файлове . Изходната програма може да съдържа някои библиотечни функции, чието определение се съхранява във вградените библиотеки. Линкерът свързва тези функции с вградените библиотеки. В случай, че вградените библиотеки не бъдат намерени, той информира компилатора и компилаторът след това генерира грешката.

Понякога големите програми се разделят на подпрограми, които се наричат модули . Сега, когато тези модули са компилирани и сглобени, се генерират обектните модули на изходната програма. Линкерът е отговорен за комбиниране / свързване на всички обектни модули за генериране на един изпълним файл на изходната програма. Имаме два типа линкери.

Редактор на връзката : Това е линкер, който генерира преносим, ​​изпълним модул.

Динамичен линкер : Отлага / отлага връзката на някои външни модули, докато не се генерира модулът за зареждане / изпълним модул. Тук свързването се извършва по време на зареждане или по време на изпълнение.

Определение на товарач

Тъй като програмата, която трябва да се изпълни в момента, трябва да се намира в основната памет на компютъра. Това е задължение на товарача, програма в операционна система, да зареди изпълнимия файл / модул на програма, генерирана от линкера, в основната памет за изпълнение. Той разпределя пространството за памет на изпълнимия модул в основната памет.

Има три вида подходи за зареждане:

  • Абсолютно натоварване
  • Преместване на товара
  • Динамично зареждане при изпълнение

Абсолютно зареждане : Този подход зарежда изпълнимия файл на програмата в едно и също място с основна памет всеки път. Но той има някои недостатъци, като програмист трябва да е наясно със стратегията за натоварване на модулите в основната памет. В случай, че програмата трябва да бъде модифицирана с включване и изтриване в програмата, тогава всички адреси на програмата трябва да бъдат променени.

Преместване на зареждане: При този подход компилаторът или асемблерът не генерира действителен адрес на основната памет . Той произвежда съответните адреси.

Динамично зареждане по време на изпълнение : При този подход абсолютният адрес за програма се генерира, когато се изпълни инструкция на изпълним модул. Той е много гъвкав, зареждаемият модул / изпълним модул може да се зарежда във всеки регион на основната памет . Изпълняващата програма може да бъде прекъсната между тях и може да бъде сменена на диска и обратно към основната памет този път на различен основен адрес на паметта.

Основни разлики между свързващо устройство и товарач

  1. Основната разлика между linker и loader е, че линкерът генерира изпълним файл на програма, докато товарачът зарежда изпълнения файл, получен от линкера, в основната памет за изпълнение .
  2. Линкерът въвежда обектния модул на програма, генерирана от асемблера. Въпреки това, товарачът въвежда изпълним модул, генериран от линкера.
  3. Линкерът комбинира всички обектни модули на програмата за генериране на изпълними модули, а също така свързва функцията на библиотеката в обектния модул с вградени библиотеки на езика за програмиране на високо ниво. От друга страна, товарачът разпределя пространство на изпълним модул в основната памет.
  4. Линкерът може да бъде класифициран като редактор на връзка, а динамичният линкер, докато товарачът може да се класифицира като абсолютен товарач, преносим товарач и динамичен товарач .

Заключение:

Линкерът взема обектните модули на програмата от асемблера и ги свързва заедно, за да генерира изпълним модул на програмата. След това изпълнимият модул се зарежда от товарача в основната памет за изпълнение.

Top