Salīdzinājuma diagramma
Salīdzinājuma pamats | Linker | Iekrāvējs |
---|---|---|
Pamata | Tas ģenerē avota programmas izpildāmo moduli. | Tā ielādē izpildāmo moduli galvenajā atmiņā. |
Ievade | Tas aizņem kā ievades objektu, ko ģenerē montētājs. | Tas aizņem izpildāmo moduli, ko ģenerē saikne. |
Funkcija | Tas apvieno visus pirmkoda objekta moduļus, lai izveidotu izpildāmu moduli. | Tā piešķir adreses izpildāmam modulim galvenajā atmiņā izpildei. |
Veids / pieeja | Saiknes 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
- 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 .
- Linkers ievada montētāja izveidotās programmas objekta moduli . Tomēr iekrāvējs uzņem izpildāmo moduli, ko ģenerē savienotājs.
- 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ņā.
- 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.