Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ συνδέσμου και φορτωτή

Linker και Loader είναι τα προγράμματα κοινής ωφέλειας που διαδραματίζουν σημαντικό ρόλο στην εκτέλεση ενός προγράμματος. Ο κώδικας πηγής ενός προγράμματος περνά μέσω του μεταγλωττιστή, του assembler, του linker, του φορτωτή στην αντίστοιχη σειρά, πριν από την εκτέλεση. Από τη μία πλευρά, όπου ο συνδέτης δέχεται τους κωδικούς αντικειμένων που παράγονται από τον συναρμολογητή και τους συνδυάζει για να δημιουργήσει την εκτελέσιμη ενότητα. Από τα άλλα χέρια, ο φορτωτής φορτώνει αυτήν την εκτελέσιμη μονάδα στην κύρια μνήμη για εκτέλεση. Ας συζητήσουμε τη διαφορά μεταξύ του Linker και του φορτωτή με τη βοήθεια ενός πίνακα σύγκρισης.

Συγκριτικό διάγραμμα

Βάση σύγκρισηςLinkerΦορτωτής
ΒασικόςΔημιουργεί την εκτελέσιμη ενότητα ενός προγράμματος προέλευσης.Φορτώνει την εκτελέσιμη μονάδα στην κύρια μνήμη.
ΕισαγωγήΠαίρνει ως είσοδο, τον κώδικα αντικειμένου που παράγεται από ένα συναρμολογητή.Παίρνει εκτελέσιμη λειτουργική μονάδα που παράγεται από συνδετήρα.
ΛειτουργίαΣυνδυάζει όλες τις ενότητες αντικειμένων ενός πηγαίου κώδικα για τη δημιουργία μιας εκτελέσιμης μονάδας.Εκχωρεί τις διευθύνσεις σε μια εκτελέσιμη μονάδα στην κύρια μνήμη για εκτέλεση.
Τύπος / ΠροσέγγισηΕπεξεργαστής σύνδεσης, δυναμικός σύνδεσμος.Απόλυτη φόρτωση, επανατοποθετήσιμη φόρτωση και δυναμική φόρτωση χρόνου εκτέλεσης.

Ορισμός του συνδέσμου

Το Assembler δημιουργεί τον κώδικα αντικειμένου ενός προγράμματος προέλευσης και το παραδίδει στον συνδετήρα. Ο σύνδεσμος παίρνει αυτόν τον κωδικό αντικειμένου και παράγει τον εκτελέσιμο κώδικα για το πρόγραμμα και το παραδίδει στο Loader.

Η γλώσσα υψηλού επιπέδου, τα προγράμματα έχουν ορισμένες ενσωματωμένες βιβλιοθήκες και αρχεία κεφαλίδας . Το πρόγραμμα προέλευσης ενδέχεται να περιέχει ορισμένες λειτουργίες βιβλιοθήκης, των οποίων ο ορισμός είναι αποθηκευμένος στις ενσωματωμένες βιβλιοθήκες. Ο σύνδεσμος συνδέει αυτές τις λειτουργίες με τις ενσωματωμένες βιβλιοθήκες. Σε περίπτωση που δεν βρεθούν οι ενσωματωμένες βιβλιοθήκες, ενημερώνει τον μεταγλωττιστή και ο μεταγλωττιστής τότε δημιουργεί το σφάλμα.

Μερικές φορές τα μεγάλα προγράμματα χωρίζονται σε υποπρογράμματα που ονομάζονται ενότητες . Τώρα, όταν αυτές οι μονάδες έχουν καταρτιστεί και συναρμολογηθεί, δημιουργούνται οι ενότητες αντικειμένων του προγράμματος προέλευσης. Ο σύνδεσμος έχει την ευθύνη του συνδυασμού / σύνδεσης όλων των ενοτήτων αντικειμένων για τη δημιουργία ενός μόνο εκτελέσιμου αρχείου του προγράμματος προέλευσης. Έχουμε δύο τύπους συνδέσμων.

Επεξεργαστής συνδέσεων: Είναι ένας συνδετήρας που δημιουργεί τη μετακινούμενη, εκτελέσιμη μονάδα.

Δυναμική σύνδεση : Απομακρύνει / αναβάλλει τη σύνδεση ορισμένων εξωτερικών μονάδων μέχρι να δημιουργηθεί η ενότητα φορτίου / εκτελέσιμη μονάδα. Εδώ, η σύνδεση γίνεται κατά τη διάρκεια του χρόνου φόρτωσης ή του χρόνου εκτέλεσης.

Ορισμός του φορτωτή

Καθώς το πρόγραμμα που πρέπει να εκτελεστεί, πρέπει να βρίσκεται στην κύρια μνήμη του υπολογιστή. Είναι ευθύνη του φορτωτή, ενός προγράμματος σε ένα λειτουργικό σύστημα, να φορτώσει το εκτελέσιμο αρχείο / ενότητα ενός προγράμματος, που δημιουργείται από το linker, στην κύρια μνήμη για εκτέλεση. Διαθέτει το χώρο μνήμης στην εκτελέσιμη μονάδα στην κύρια μνήμη.

Υπάρχουν τρία είδη προσεγγίσεων φόρτωσης:

  • Απόλυτη φόρτωση
  • Επαναφορτιζόμενη φόρτωση
  • Δυναμική φόρτωση χρόνου εκτέλεσης

Απόλυτη φόρτωση : Αυτή η προσέγγιση φορτώνει το εκτελέσιμο αρχείο ενός προγράμματος σε μια ίδια θέση κύριας μνήμης κάθε φορά. Αλλά έχει κάποια μειονεκτήματα όπως ο προγραμματιστής πρέπει να γνωρίζει τη στρατηγική εκχώρησης για τη φόρτωση των μονάδων στην κύρια μνήμη. Σε περίπτωση που το πρόγραμμα πρόκειται να τροποποιηθεί με κάποια εισαγωγή και διαγραφή στο πρόγραμμα, τότε όλες οι διευθύνσεις του προγράμματος πρέπει να τροποποιηθούν.

Επαναφορτιζόμενη φόρτωση: Σε αυτήν την προσέγγιση, ο μεταγλωττιστής ή ο συναρμολογητής δεν παράγει πραγματική κύρια διεύθυνση μνήμης . Παράγει τις σχετικές διευθύνσεις.

Δυναμική φόρτωση χρόνου εκτέλεσης : Σε αυτήν την προσέγγιση, η απόλυτη διεύθυνση για ένα πρόγραμμα παράγεται όταν εκτελείται πραγματικά μια εντολή μιας εκτελέσιμης μονάδας. Είναι πολύ ευέλικτο, το φορτίο module / εκτελέσιμο module μπορεί να φορτωθεί σε οποιαδήποτε περιοχή της κύριας μνήμης . Το πρόγραμμα εκτέλεσης μπορεί να διακοπεί ενδιάμεσα και μπορεί να μετακινηθεί στο δίσκο και να επιστρέψει στην κεντρική μνήμη αυτή τη φορά σε διαφορετική κύρια διεύθυνση μνήμης.

Βασικές διαφορές μεταξύ του συνδέσμου και του φορτωτή

  1. Η βασική διαφορά μεταξύ του συνδέσμου και του φορτωτή είναι ότι ο συνδετήρας δημιουργεί το εκτελέσιμο αρχείο ενός προγράμματος ενώ ο φορτωτής φορτώνει το εκτελέσιμο αρχείο που λαμβάνεται από τον συνδετήρα στην κύρια μνήμη για εκτέλεση .
  2. Ο σύνδεσμος εισάγει τη μονάδα αντικειμένου ενός προγράμματος που παράγεται από τον συναρμολογητή. Ωστόσο, ο φορτωτής εισάγει την εκτελέσιμη λειτουργική μονάδα που παράγεται από τον συνδετήρα.
  3. Ο σύνδεσμος συνδυάζει όλη την ενότητα αντικειμένων ενός προγράμματος για τη δημιουργία εκτελέσιμων μονάδων ενώ συνδέει επίσης τη λειτουργία της βιβλιοθήκης στη μονάδα αντικειμένου με τις ενσωματωμένες βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου. Από τα άλλα χέρια, ο φορτωτής διαθέτει χώρο σε μια εκτελέσιμη μονάδα στην κύρια μνήμη.
  4. Ο σύνδεσμος μπορεί να ταξινομηθεί ως επεξεργαστής συνδέσεων και ο δυναμικός συνδετήρας ενώ ο φορτωτής μπορεί να ταξινομηθεί ως απόλυτος φορτωτής, μετακινούμενος φορτωτής και δυναμικός φορτωτής χρόνου εκτέλεσης .

Συμπέρασμα:

Ο σύνδεσμος παίρνει τις ενότητες αντικειμένων ενός προγράμματος από τον assembler και τις συνδέει μεταξύ τους για να δημιουργήσει μια εκτελέσιμη ενότητα ενός προγράμματος. Στη συνέχεια, το εκτελέσιμο στοιχείο φορτώνεται από τον φορτωτή στην κύρια μνήμη για εκτέλεση.

Top