Ieteicams, 2024

Redaktora Izvēle

Starpība starp Linker un Loader

Linker un Loader ir noderīgas programmas, kurām ir liela nozīme programmas izpildē. Programmas avota kods pirms izpildīšanas notiek caur kompilatoru, montētāju, saiti, iekrāvēju attiecīgajā secībā. No vienas puses, ja saikne iegūst montētāja radītos objektu kodus un apvieno tos, lai ģenerētu izpildāmo moduli. No otras puses, iekrāvējs ielādē šo izpildāmo moduli galvenajai atmiņai izpildei. Apspriedīsim atšķirību starp Linker un loader ar salīdzinājuma diagrammas palīdzību.

Salīdzinājuma diagramma

Salīdzinājuma pamatsLinkerIekrāvējs
PamataTas ģenerē avota programmas izpildāmo moduli.Tā ielādē izpildāmo moduli galvenajā atmiņā.
IevadeTas aizņem kā ievades objektu, ko ģenerē montētājs.Tas aizņem izpildāmo moduli, ko ģenerē saikne.
FunkcijaTas apvieno visus pirmkoda objekta moduļus, lai izveidotu izpildāmu moduli.Tā piešķir adreses izpildāmam modulim galvenajā atmiņā izpildei.
Veids / pieejaSaiknes redaktors, dinamiskais savienotājs.Absolūtā slodze, pārkraušana un dinamiskās palaišanas laiks.

Linkera definīcija

Assembler ģenerē avota programmas objekta kodu un nodod to linkerim. Linkers ņem šo objekta kodu un ģenerē izpildāmo kodu programmai un nodod to Loader.

Augsta līmeņa valodai, programmām ir dažas iebūvētas bibliotēkas un galvenes faili . Avota programma var ietvert dažas bibliotēkas funkcijas, kuru definīcija tiek saglabāta iebūvētajās bibliotēkās. Linkers savieno šīs funkcijas ar iebūvētajām bibliotēkām. Gadījumā, ja nav atrastas iebūvētās bibliotēkas, tas informē kompilatoru, un tad kompilators ģenerē kļūdu.

Dažreiz lielās programmas ir sadalītas apakšprogrammās, ko sauc par moduļiem . Tagad, kad šie moduļi tiek apkopoti un montēti, tiek ģenerēti avota programmas objektu moduļi. Linkers ir atbildīgs par visu objektu moduļu apvienošanu / sasaisti, lai ģenerētu vienu avota programmas izpildāmo failu. Mums ir divu veidu saites.

Saites redaktors : tas ir saikne, kas ģenerē pārnesamu, izpildāmu moduli.

Dinamiskā saite: tā atceļ / atliek dažu ārējo moduļu savienojumu, līdz tiek ģenerēts slodzes modulis / izpildāmā modulis. Šeit savienošana tiek veikta ielādes laikā vai izpildes laikā.

Loader definīcija

Tā kā izpildāmajai programmai ir jāatrodas datora galvenajā atmiņā. Iekrāvēja, operētājsistēmas programmas uzdevums ir ielādēt izpildītāja failu, ko izveidojis linkers, galvenajai atmiņai izpildei. Tā piešķir atmiņas vietu galvenajā atmiņā izpildāmajam modulim.

Ir trīs veidu ielādes pieejas:

  • Absolūtā slodze
  • Pārvietojama iekraušana
  • Dinamiskā slodze uz laiku

Absolūtā slodze : šī pieeja ielādē programmas izpildāmo failu vienā un tajā pašā galvenajā atmiņas vietā katru reizi. Bet tam ir daži trūkumi, piemēram, programmētājam ir jāapzinās uzdevumu stratēģija moduļu iekraušanai galvenajā atmiņā. Gadījumā, ja programma ir jāmaina, iekļaujot programmā kādu no tām, ir jāmaina visas programmas adreses.

Pārvietojamā iekraušana: šajā pieejā kompilators vai montētājs nerada faktisko galveno atmiņas adresi . Tas rada relatīvās adreses.

Dynamic Run-Time loading : Šajā pieejā programmas absolūtā adrese tiek ģenerēta, kad izpildāmā moduļa instrukcija ir faktiski izpildīta. Tas ir ļoti elastīgs, noslogojamo moduli / izpildāmo moduli var ielādēt jebkurā galvenās atmiņas reģionā . Izpildes programmu var pārtraukt, un šoreiz to var nomainīt uz disku un atpakaļ uz galveno atmiņu citā galvenajā atmiņas adresē.

Galvenās atšķirības starp Linker un Loader

  1. Galvenā atšķirība starp saiti un iekrāvēju ir tā, ka saikne ģenerē programmas izpildāmo failu, bet iekrāvējs ielādē izpildāmo failu, kas iegūts no linkera, galvenajā atmiņā izpildei .
  2. Linkers ievada montētāja izveidotās programmas objekta moduli . Tomēr iekrāvējs uzņem izpildāmo moduli, ko ģenerē savienotājs.
  3. Linkers apvieno visu programmas objekta moduli, lai izveidotu izpildāmos moduļus, un tas arī savieno bibliotēkas funkciju objekta modulī ar iebūvētajām augsta līmeņa programmēšanas valodas bibliotēkām . No otras puses, iekrāvējs piešķir vietu izpildāmam modulim galvenajā atmiņā.
  4. Linkeru var klasificēt kā saiknes redaktoru un dinamisku saiti, bet iekrāvēju var klasificēt kā absolūto iekrāvēju, pārkraujamo iekrāvēju un dinamisko palaišanas laiku .

Secinājums:

Linker ņem programmas objektu moduļus no montētāja un savieno tos kopā, lai radītu programmas izpildāmu moduli. Tad izpildāmo moduli iekrāvējs ielādē galvenajā atmiņā izpildei.

Top