Starpība starp Linker un Loader
Saturs
Linker un Loader ir utilītas programmas, kurām ir liela loma programmas izpildē. Programmas avota kods pirms izpildes caur kompilatoru, montētāju, saistītāju un iekrāvēju nokļūst attiecīgajā secībā. No vienas puses, kur linkeris ņem montētāja ģenerētos objektu kodus un apvieno tos, lai ģenerētu izpildāmu moduli. No otras puses iekrāvējs ielādē šo izpildāmo moduli galvenajā atmiņā izpildei. Izmantojot salīdzināšanas diagrammu, apspriedīsim atšķirību starp Linker un iekrāvēju.
- Salīdzināšanas tabula
- Definīcija
- Galvenās atšķirības
- Secinājums
Salīdzināšanas tabula
Salīdzināšanas pamats | Linkeris | Iekrāvējs |
---|---|---|
Pamata | Tas ģenerē avota programmas izpildāmu moduli. | Tas ielādē izpildāmo moduli galvenajā atmiņā. |
Ievade | Kā ievade tiek ņemts montētāja ģenerētais objekta kods. | Tas prasa izpildāmu moduli, ko ģenerējis piesaistītājs. |
Funkcija | Tas apvieno visus avota koda objekta moduļus, lai ģenerētu izpildāmu moduli. | Tas piešķir adreses izpildāmam modulim galvenajā atmiņā izpildei. |
Tips / pieeja | Saites redaktors, dinamiskais linkeris. | Pilnīga iekraušana, atkārtoti pārvietojama un dinamiska izpildes laika ielāde. |
Linkera definīcija
Montētājs ģenerē avota programmas objekta kodu un nodod to saistītājam. Saistītājs ņem šo objekta kodu un ģenerē izpildāms kods programmai un nodot to iekrāvējam.
Augsta līmeņa valoda, programmām ir dažas iebūvētās bibliotēkas un galvenes faili. Avota programmā var būt dažas bibliotēkas funkcijas, kuru definīcija tiek saglabāta iebūvētajās bibliotēkās. Saistītājs savieno šo funkciju ar iebūvētajām bibliotēkām. Ja iebūvētās bibliotēkas netiek atrastas, tā informē kompilatoru, un kompilators ģenerē kļūdu.
Dažreiz lielās programmas tiek sadalītas apakšprogrammās, kuras tiek sauktas moduļi. Kad šie moduļi ir apkopoti un salikti, tiek ģenerēti avota programmas objektu moduļi. Saistītāja pienākums ir apvienot / sasaistīt visus objekta moduļus, lai ģenerētu avota programmas vienu izpildāmu failu. Mums ir divu veidu piesaistītāji.
Saites redaktors: Tas ir saistītājs, kas ģenerē pārvietojamo, izpildāmo moduli.
Dinamiskais piesaistītājs: Tas atliek / atliek dažu ārējo moduļu sasaisti, līdz tiek ģenerēts slodzes modulis / izpildāmais modulis. Šeit sasaiste tiek veikta ielādes laikā vai izpildes laikā.
Iekrāvēja definīcija
Tā kā programmai, kas šobrīd ir jāizpilda, jāatrodas datora galvenajā atmiņā. Par to atbild iekrāvējs, programma operētājsistēmā, lai ielādētu saistītāja ģenerēto programmas izpildāmo failu / moduli galvenajā atmiņā izpildei. Tas piešķir atmiņas vietu izpildāmajam modulim galvenajā atmiņā.
Ir trīs veidu iekraušanas pieejas:
- Absolūta iekraušana
- Pārvietojama iekraušana
- Dinamiska izpildes laika ielāde
Absolūta iekraušana: Šī pieeja ielādē programmas izpildāmo failu a tā pati galvenā atmiņas vieta katru reizi. Bet tam ir daži trūkumi tāpat kā programmētājam, ir jāapzinās piešķiršanas stratēģija moduļu ielādēšanai galvenajā atmiņā. Gadījumā, ja programma ir jāmaina, iekļaujot tajā kaut ko ievietošanu un dzēšanu, tad jāmaina visas programmas adreses.
Pārkraujama iekraušana: Šajā pieejā darbojas kompilators vai montētājs nerada faktisko galvenās atmiņas adresi. Tas rada relatīvās adreses.
Dinamiska izpildes laika ielāde: Šajā pieejā absolūtā programmas adrese tiek ģenerēta, kad faktiski tiek izpildīta izpildāmā moduļa instrukcija. Tas ir ļoti elastīgs, ielādējamo moduli / izpildāmo moduli var ielādēt jebkurš galvenās atmiņas reģions. Izpildprogrammu var pārtraukt starp tām, un šoreiz to var mainīt uz disku un atpakaļ uz galveno atmiņu citā galvenās atmiņas adresē.
- Galvenā atšķirība starp linkeru un iekrāvēju ir tā, ka linkeris ģenerē izpildāms programmas fails, savukārt iekrāvējs ielādē izpildāmo failu, kas iegūts no saistītāja, failā galvenā atmiņa izpildei.
- Saistītājs ieņem objekta modulis no montētāja ģenerētas programmas. Tomēr iekrāvējs ievada izpildāmais modulis ko rada linkeris.
- Saistītājs apvieno visus programmas objektu moduļus, lai tos ģenerētu izpildāmie moduļi tas arī saista bibliotēkas funkcija objekta modulī iebūvētās bibliotēkas no augsta līmeņa programmēšanas valodas. No otras puses, iekrāvējs piešķir vietu izpildāmai vietnei modulis galvenajā atmiņā.
- Linkeru var klasificēt kā saišu redaktors, un dinamiskais linkeris tā kā iekrāvēju var klasificēt kā absolūts iekrāvējs, pārvietojams iekrāvējs un dinamisks izpildes laika iekrāvējs.
Secinājums:
Saistītājs paņem no montētāja programmas objektu moduļus un sasaista tos, lai ģenerētu programmas izpildāmu moduli. Pēc tam iekrāvējs ielādē izpildāmo moduli galvenajā atmiņā izpildei.