Συγκριτικό διάγραμμα
Βάση σύγκρισης | Linker | Φορτωτής |
---|---|---|
Βασικός | Δημιουργεί την εκτελέσιμη ενότητα ενός προγράμματος προέλευσης. | Φορτώνει την εκτελέσιμη μονάδα στην κύρια μνήμη. |
Εισαγωγή | Παίρνει ως είσοδο, τον κώδικα αντικειμένου που παράγεται από ένα συναρμολογητή. | Παίρνει εκτελέσιμη λειτουργική μονάδα που παράγεται από συνδετήρα. |
Λειτουργία | Συνδυάζει όλες τις ενότητες αντικειμένων ενός πηγαίου κώδικα για τη δημιουργία μιας εκτελέσιμης μονάδας. | Εκχωρεί τις διευθύνσεις σε μια εκτελέσιμη μονάδα στην κύρια μνήμη για εκτέλεση. |
Τύπος / Προσέγγιση | Επεξεργαστής σύνδεσης, δυναμικός σύνδεσμος. | Απόλυτη φόρτωση, επανατοποθετήσιμη φόρτωση και δυναμική φόρτωση χρόνου εκτέλεσης. |
Ορισμός του συνδέσμου
Το Assembler δημιουργεί τον κώδικα αντικειμένου ενός προγράμματος προέλευσης και το παραδίδει στον συνδετήρα. Ο σύνδεσμος παίρνει αυτόν τον κωδικό αντικειμένου και παράγει τον εκτελέσιμο κώδικα για το πρόγραμμα και το παραδίδει στο Loader.
Η γλώσσα υψηλού επιπέδου, τα προγράμματα έχουν ορισμένες ενσωματωμένες βιβλιοθήκες και αρχεία κεφαλίδας . Το πρόγραμμα προέλευσης ενδέχεται να περιέχει ορισμένες λειτουργίες βιβλιοθήκης, των οποίων ο ορισμός είναι αποθηκευμένος στις ενσωματωμένες βιβλιοθήκες. Ο σύνδεσμος συνδέει αυτές τις λειτουργίες με τις ενσωματωμένες βιβλιοθήκες. Σε περίπτωση που δεν βρεθούν οι ενσωματωμένες βιβλιοθήκες, ενημερώνει τον μεταγλωττιστή και ο μεταγλωττιστής τότε δημιουργεί το σφάλμα.
Μερικές φορές τα μεγάλα προγράμματα χωρίζονται σε υποπρογράμματα που ονομάζονται ενότητες . Τώρα, όταν αυτές οι μονάδες έχουν καταρτιστεί και συναρμολογηθεί, δημιουργούνται οι ενότητες αντικειμένων του προγράμματος προέλευσης. Ο σύνδεσμος έχει την ευθύνη του συνδυασμού / σύνδεσης όλων των ενοτήτων αντικειμένων για τη δημιουργία ενός μόνο εκτελέσιμου αρχείου του προγράμματος προέλευσης. Έχουμε δύο τύπους συνδέσμων.
Επεξεργαστής συνδέσεων: Είναι ένας συνδετήρας που δημιουργεί τη μετακινούμενη, εκτελέσιμη μονάδα.
Δυναμική σύνδεση : Απομακρύνει / αναβάλλει τη σύνδεση ορισμένων εξωτερικών μονάδων μέχρι να δημιουργηθεί η ενότητα φορτίου / εκτελέσιμη μονάδα. Εδώ, η σύνδεση γίνεται κατά τη διάρκεια του χρόνου φόρτωσης ή του χρόνου εκτέλεσης.
Ορισμός του φορτωτή
Καθώς το πρόγραμμα που πρέπει να εκτελεστεί, πρέπει να βρίσκεται στην κύρια μνήμη του υπολογιστή. Είναι ευθύνη του φορτωτή, ενός προγράμματος σε ένα λειτουργικό σύστημα, να φορτώσει το εκτελέσιμο αρχείο / ενότητα ενός προγράμματος, που δημιουργείται από το linker, στην κύρια μνήμη για εκτέλεση. Διαθέτει το χώρο μνήμης στην εκτελέσιμη μονάδα στην κύρια μνήμη.
Υπάρχουν τρία είδη προσεγγίσεων φόρτωσης:
- Απόλυτη φόρτωση
- Επαναφορτιζόμενη φόρτωση
- Δυναμική φόρτωση χρόνου εκτέλεσης
Απόλυτη φόρτωση : Αυτή η προσέγγιση φορτώνει το εκτελέσιμο αρχείο ενός προγράμματος σε μια ίδια θέση κύριας μνήμης κάθε φορά. Αλλά έχει κάποια μειονεκτήματα όπως ο προγραμματιστής πρέπει να γνωρίζει τη στρατηγική εκχώρησης για τη φόρτωση των μονάδων στην κύρια μνήμη. Σε περίπτωση που το πρόγραμμα πρόκειται να τροποποιηθεί με κάποια εισαγωγή και διαγραφή στο πρόγραμμα, τότε όλες οι διευθύνσεις του προγράμματος πρέπει να τροποποιηθούν.
Επαναφορτιζόμενη φόρτωση: Σε αυτήν την προσέγγιση, ο μεταγλωττιστής ή ο συναρμολογητής δεν παράγει πραγματική κύρια διεύθυνση μνήμης . Παράγει τις σχετικές διευθύνσεις.
Δυναμική φόρτωση χρόνου εκτέλεσης : Σε αυτήν την προσέγγιση, η απόλυτη διεύθυνση για ένα πρόγραμμα παράγεται όταν εκτελείται πραγματικά μια εντολή μιας εκτελέσιμης μονάδας. Είναι πολύ ευέλικτο, το φορτίο module / εκτελέσιμο module μπορεί να φορτωθεί σε οποιαδήποτε περιοχή της κύριας μνήμης . Το πρόγραμμα εκτέλεσης μπορεί να διακοπεί ενδιάμεσα και μπορεί να μετακινηθεί στο δίσκο και να επιστρέψει στην κεντρική μνήμη αυτή τη φορά σε διαφορετική κύρια διεύθυνση μνήμης.
Βασικές διαφορές μεταξύ του συνδέσμου και του φορτωτή
- Η βασική διαφορά μεταξύ του συνδέσμου και του φορτωτή είναι ότι ο συνδετήρας δημιουργεί το εκτελέσιμο αρχείο ενός προγράμματος ενώ ο φορτωτής φορτώνει το εκτελέσιμο αρχείο που λαμβάνεται από τον συνδετήρα στην κύρια μνήμη για εκτέλεση .
- Ο σύνδεσμος εισάγει τη μονάδα αντικειμένου ενός προγράμματος που παράγεται από τον συναρμολογητή. Ωστόσο, ο φορτωτής εισάγει την εκτελέσιμη λειτουργική μονάδα που παράγεται από τον συνδετήρα.
- Ο σύνδεσμος συνδυάζει όλη την ενότητα αντικειμένων ενός προγράμματος για τη δημιουργία εκτελέσιμων μονάδων ενώ συνδέει επίσης τη λειτουργία της βιβλιοθήκης στη μονάδα αντικειμένου με τις ενσωματωμένες βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου. Από τα άλλα χέρια, ο φορτωτής διαθέτει χώρο σε μια εκτελέσιμη μονάδα στην κύρια μνήμη.
- Ο σύνδεσμος μπορεί να ταξινομηθεί ως επεξεργαστής συνδέσεων και ο δυναμικός συνδετήρας ενώ ο φορτωτής μπορεί να ταξινομηθεί ως απόλυτος φορτωτής, μετακινούμενος φορτωτής και δυναμικός φορτωτής χρόνου εκτέλεσης .
Συμπέρασμα:
Ο σύνδεσμος παίρνει τις ενότητες αντικειμένων ενός προγράμματος από τον assembler και τις συνδέει μεταξύ τους για να δημιουργήσει μια εκτελέσιμη ενότητα ενός προγράμματος. Στη συνέχεια, το εκτελέσιμο στοιχείο φορτώνεται από τον φορτωτή στην κύρια μνήμη για εκτέλεση.