Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp „Linker“ ir „Loader“

„Linker“ ir „Loader“ yra komunalinės programos, kurios atlieka svarbų vaidmenį vykdant programą. Programos šaltinio kodas prieš vykdymą eina per kompiliatorių, surinkėją, sąsają, krautuvą atitinkama tvarka. Viena vertus, kai sąsaja įjungia surinkėjo sukurtus objekto kodus ir sujungia juos, kad generuotų vykdomąjį modulį. Kita vertus, krautuvas įkelia šį vykdomąjį modulį į pagrindinę atmintį vykdymui. Aptarkime skirtumą tarp „Linker“ ir krautuvo palyginimo lentelės pagalba.

Palyginimo diagrama

Palyginimo pagrindas„Linker“Krautuvas
PagrindinisJis generuoja šaltinio programos vykdomąjį modulį.Jis įkelia vykdomąjį modulį į pagrindinę atmintį.
ĮvestisJi užima kaip įvesties objektų kodą, kurį generuoja surinkėjas.Ji užima vykdomąjį modulį, sukurtą sąsajos.
FunkcijaJis sujungia visus pirminio kodo objektų modulius, kad sukurtų vykdomąjį modulį.Jis skiria adresus vykdomajam moduliui pagrindinėje atmintyje vykdymui.
Tipas / metodas„Linkage Editor“, „Dynamic linker“.Absoliutus pakrovimas, perkeliamas įkrovimas ir dinaminis veikimo laikas.

„Linker“ apibrėžimas

Surinkėjas generuoja šaltinio programos objekto kodą ir perduoda jį nuorodai. Ryšys sujungia šį objekto kodą ir generuoja programai vykdomąjį kodą ir perduoda jį krautuvui.

Aukšto lygio kalba, programos turi keletą integruotų bibliotekų ir antraštės failų . Šaltinio programoje gali būti tam tikrų bibliotekos funkcijų, kurių apibrėžtis saugoma integruotose bibliotekose. Ryšys sujungia šias funkcijas su integruotomis bibliotekomis. Tuo atveju, jei neįrodyta, kad yra įdiegtos bibliotekos, ji informuoja kompiliatorių, o kompiliatorius generuoja klaidą.

Kartais didelės programos skirstomos į subprogramas, kurios vadinamos moduliais . Dabar, kai šie moduliai surenkami ir surenkami, generuojami šaltinio programos objekto moduliai. Ryšio jungiklis yra atsakingas už visų objektų modulių sujungimą / susiejimą, kad būtų sukurtas vienas šaltinio programos vykdomasis failas. Turime dviejų tipų sąsajas.

Ryšio redaktorius : tai nuorodiklis, kuris generuoja perkeliamą, vykdomąjį modulį.

„Dynamic Linker“ : ji panaikina / atideda kai kurių išorinių modulių sujungimą, kol bus sukurtas apkrovos modulis / vykdomasis modulis. Čia susiejimas atliekamas apkrovos metu arba vykdymo metu.

„Loader“ apibrėžimas

Kadangi programa, kurią reikia atlikti, šiuo metu turi būti pagrindinėje kompiuterio atmintyje. Krautuvas, operacinės sistemos programa yra atsakingas už tai, kad į pagrindinę atmintį būtų galima įkelti programos, sukurtos sąsajos, vykdomąjį failą / modulį. Ji skiria atminties vietą pagrindinėje atmintyje vykdomam moduliui.

Yra trys pakrovimo būdai:

  • Absoliutus pakrovimas
  • Perkeliamas pakrovimas
  • Dinaminis veikimo laikas

Absoliutus pakrovimas : šis metodas įkelia programos vykdomąjį failą į tą pačią pagrindinę atminties vietą kiekvieną kartą. Tačiau jis turi tam tikrų trūkumų, pvz., Programuotojas turi žinoti, kaip priskirti modulius į pagrindinę atmintį. Tuo atveju, jei programa turi būti pakeista įtraukiant ir išbraukiant programą, reikia pakeisti visus programos adresus.

Perkeliamas įkrovimas: šiuo metodu kompiliatorius arba surinkėjas nesukuria faktinio pagrindinio atminties adreso . Jis sukuria santykinius adresus.

Dinaminis paleisties laikas : Šiuo požiūriu absoliutus programos adresas generuojamas, kai faktiškai vykdomas vykdomojo modulio nurodymas. Jis yra labai lankstus, įkraunamas modulis / vykdomasis modulis gali būti įkeltas į bet kurį pagrindinės atminties regioną . Vykdomoji programa gali būti nutraukta ir gali būti pakeista į diską ir atgal į pagrindinę atmintį šiuo metu kitu pagrindiniu atminties adresu.

Pagrindiniai skirtumai tarp „Linker“ ir „Loader“

  1. Pagrindinis skirtumas tarp sąsajos ir krautuvo yra tas, kad sąsaja generuoja vykdomąjį failą programoje, o krautuvas įkelia vykdytiną failą, gautą iš sąsajos, į pagrindinę atmintį vykdymui .
  2. Ryšys sujungia surinkėjo sukurtą programos objekto modulį . Tačiau krautuvas įsijungia įjungiamojo modulio generuojamą vykdomąjį modulį .
  3. Ryšys sujungia visą programos objekto modulį, kad generuotų vykdomuosius modulius, taip pat susieja bibliotekos funkciją objekto modulyje su įmontuotomis aukšto lygio programavimo kalbos bibliotekomis . Kita vertus, krautuvas skiria erdvę vykdomojoje modulyje pagrindinėje atmintyje.
  4. Linkeris gali būti klasifikuojamas kaip susiejimo redaktorius ir dinaminis jungiklis, o krautuvas gali būti klasifikuojamas kaip absoliutus krautuvas, perkeliamas krautuvas ir dinaminis paleisties laikiklis .

Išvada:

Ryšys su programa renka programos modulius ir sujungia juos, kad sukurtų programos vykdomąjį modulį. Tada įkroviklis įkelia vykdomąjį modulį į pagrindinę atmintį vykdymui.

Top