Цомпарисон Цхарт
Основа за поређење | Линкер | Лоадер |
---|---|---|
Басиц | Он генерише извршни модул изворног програма. | Он учитава извршни модул у главну меморију. |
Улазни | Потребан је као инпут, објектни код генерисан од стране асемблера. | Потребан је извршни модул који генерише линкер. |
Фунцтион | Он комбинује све модуле модула изворног кода да би генерисао извршни модул. | Он додељује адресе извршном модулу у главној меморији за извршење. |
Тип / приступ | Уредник повезивања, динамички линкер. | Апсолутно оптерећење, премештање и динамичко учитавање. |
Дефиниција Линкера
Асемблер генерише објектни код изворног програма и предаје га линкеру. Линкер узима овај објектни код и генерира извршни код за програм и предаје га Лоадер-у.
Језик на високом нивоу, програми имају неке уграђене библиотеке и датотеке заглавља . Изворни програм може да садржи неке библиотечке функције чија се дефиниција чува у уграђеним библиотекама. Линкер повезује ове функције са уграђеним библиотекама. У случају да уграђене библиотеке нису пронађене, информише компајлер, а компајлер генерише грешку.
Понекад се велики програми дијеле на подпрограме који се називају модули . Сада када су ови модули компилирани и састављени, генеришу се модули објекта изворног програма. Линкер је одговоран за комбиновање / повезивање свих модула објекта за генерисање једне извршне датотеке изворног програма. Имамо два типа линкера.
Едитор линкова : То је линкер који генерише извршни модул који се може преместити.
Динамички линкер : Одгађа / одлаже повезивање неких спољних модула док се не генерише модул модула / извршни модул. Овде се повезивање врши током времена учитавања или времена извођења.
Дефиниција утоваривача
Будући да се програм који треба извршити тренутно мора налазити у главној меморији рачунара. Одговорност је пуњача, програма у оперативном систему, да учита извршну датотеку / модул програма, генерисаног од стране линкера, у главну меморију за извршење. Он додељује меморијски простор извршном модулу у главној меморији.
Постоје три врсте приступа учитавања:
- Абсолуте лоадинг
- Преносиви утовар
- Динамичко учитавање у току рада
Апсолутно учитавање : Овај приступ учитава извршну датотеку програма у исту главну меморијску локацију сваки пут. Али има неке недостатке као програмер мора бити свјестан стратегије додјеле за учитавање модула у главну меморију. У случају да програм треба да се модификује са неким уметањем и брисањем у програму, онда све адресе програма морају бити измењене.
Преносива оптерећења: У овом приступу, компајлер или асемблер не производи стварну адресу главне меморије . Она производи релативне адресе.
Динамичко учитавање у време извршавања: У овом приступу, апсолутна адреса за програм се генерише када се инструкција извршног модула заиста извршава. Веома је флексибилан, модул који се може учитати / извршни модул може се учитати у било који регион главне меморије . Извршни програм може бити прекинут између и може се заменити на диск и назад у главну меморију овог пута на другу главну меморијску адресу.
Кључне разлике између Линкера и Лоадера
- Кључна разлика између повезивача и учитавача је да линкер генерише извршну датотеку програма док пуњач учитава извршну датотеку добијену од повезивача у главну меморију за извршење .
- Линкер уноси објектни модул програма генерисаног од стране асемблера. Међутим, пуњач уноси извршни модул који генерише линкер.
- Линкер комбинира све објектне модуле програма за генерисање извршних модула и повезује библиотечку функцију у објектном модулу са уграђеним библиотекама програмског језика на високом нивоу. Са друге стране, пуњач додељује простор извршном модулу у главној меморији.
- Линкер се може класификовати као уредник повезивања, а динамички линкер, док се утоваривач може класификовати као апсолутни пуњач, преносиви утоваривач и динамички утоваривач .
Закључак:
Линкер преузима моделе објеката из асемблера и повезује их заједно како би генерисао извршни модул програма. Извршни модул се затим учитава од стране пуњача у главну меморију за извршење.