Рецоммендед, 2020

Избор Уредника

Разлика између Линкера и Лоадера

Линкер и Лоадер су услужни програми који играју важну улогу у извођењу програма. Изворни код програма пролази кроз компајлер, асемблер, линкер, лоадер у одговарајућем редоследу, пре извршења. С једне стране, где линкер уноси објектне кодове генерисане од стране асемблера и комбинује их да генеришу извршни модул. С друге стране, пуњач учитава овај извршни модул у главну меморију за извршење. Поразговарајмо о разлици између Линкера и лоадер-а уз помоћ табеле за упоређивање.

Цомпарисон Цхарт

Основа за поређењеЛинкерЛоадер
БасицОн генерише извршни модул изворног програма.Он учитава извршни модул у главну меморију.
УлазниПотребан је као инпут, објектни код генерисан од стране асемблера.Потребан је извршни модул који генерише линкер.
ФунцтионОн комбинује све модуле модула изворног кода да би генерисао извршни модул.Он додељује адресе извршном модулу у главној меморији за извршење.
Тип / приступУредник повезивања, динамички линкер.Апсолутно оптерећење, премештање и динамичко учитавање.

Дефиниција Линкера

Асемблер генерише објектни код изворног програма и предаје га линкеру. Линкер узима овај објектни код и генерира извршни код за програм и предаје га Лоадер-у.

Језик на високом нивоу, програми имају неке уграђене библиотеке и датотеке заглавља . Изворни програм може да садржи неке библиотечке функције чија се дефиниција чува у уграђеним библиотекама. Линкер повезује ове функције са уграђеним библиотекама. У случају да уграђене библиотеке нису пронађене, информише компајлер, а компајлер генерише грешку.

Понекад се велики програми дијеле на подпрограме који се називају модули . Сада када су ови модули компилирани и састављени, генеришу се модули објекта изворног програма. Линкер је одговоран за комбиновање / повезивање свих модула објекта за генерисање једне извршне датотеке изворног програма. Имамо два типа линкера.

Едитор линкова : То је линкер који генерише извршни модул који се може преместити.

Динамички линкер : Одгађа / одлаже повезивање неких спољних модула док се не генерише модул модула / извршни модул. Овде се повезивање врши током времена учитавања или времена извођења.

Дефиниција утоваривача

Будући да се програм који треба извршити тренутно мора налазити у главној меморији рачунара. Одговорност је пуњача, програма у оперативном систему, да учита извршну датотеку / модул програма, генерисаног од стране линкера, у главну меморију за извршење. Он додељује меморијски простор извршном модулу у главној меморији.

Постоје три врсте приступа учитавања:

  • Абсолуте лоадинг
  • Преносиви утовар
  • Динамичко учитавање у току рада

Апсолутно учитавање : Овај приступ учитава извршну датотеку програма у исту главну меморијску локацију сваки пут. Али има неке недостатке као програмер мора бити свјестан стратегије додјеле за учитавање модула у главну меморију. У случају да програм треба да се модификује са неким уметањем и брисањем у програму, онда све адресе програма морају бити измењене.

Преносива оптерећења: У овом приступу, компајлер или асемблер не производи стварну адресу главне меморије . Она производи релативне адресе.

Динамичко учитавање у време извршавања: У овом приступу, апсолутна адреса за програм се генерише када се инструкција извршног модула заиста извршава. Веома је флексибилан, модул који се може учитати / извршни модул може се учитати у било који регион главне меморије . Извршни програм може бити прекинут између и може се заменити на диск и назад у главну меморију овог пута на другу главну меморијску адресу.

Кључне разлике између Линкера и Лоадера

  1. Кључна разлика између повезивача и учитавача је да линкер генерише извршну датотеку програма док пуњач учитава извршну датотеку добијену од повезивача у главну меморију за извршење .
  2. Линкер уноси објектни модул програма генерисаног од стране асемблера. Међутим, пуњач уноси извршни модул који генерише линкер.
  3. Линкер комбинира све објектне модуле програма за генерисање извршних модула и повезује библиотечку функцију у објектном модулу са уграђеним библиотекама програмског језика на високом нивоу. Са друге стране, пуњач додељује простор извршном модулу у главној меморији.
  4. Линкер се може класификовати као уредник повезивања, а динамички линкер, док се утоваривач може класификовати као апсолутни пуњач, преносиви утоваривач и динамички утоваривач .

Закључак:

Линкер преузима моделе објеката из асемблера и повезује их заједно како би генерисао извршни модул програма. Извршни модул се затим учитава од стране пуњача у главну меморију за извршење.

Top