Różnica między łącznikiem a modułem ładującym

Autor: Laura McKinney
Data Utworzenia: 3 Kwiecień 2021
Data Aktualizacji: 7 Móc 2024
Anonim
Różnica między łącznikiem a modułem ładującym - Technologia
Różnica między łącznikiem a modułem ładującym - Technologia

Zawartość


Linker i Loader to programy narzędziowe, które odgrywają główną rolę w wykonywaniu programu. Kod źródłowy programu przechodzi przed kompilatorem, asemblerem, konsolidatorem, modułem ładującym w odpowiedniej kolejności. Z jednej strony, gdzie linker pobiera kody obiektów generowane przez asembler i łączy je w celu wygenerowania modułu wykonywalnego. Z drugiej strony ładowarka ładuje ten moduł wykonywalny do pamięci głównej w celu wykonania. Omówmy różnicę między Linkerem a modułem ładującym za pomocą tabeli porównawczej.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaLinkerŁadowarka
PodstawowyGeneruje moduł wykonywalny programu źródłowego.Ładuje moduł wykonywalny do pamięci głównej.
WkładPobiera jako dane wejściowe kod obiektu wygenerowany przez asembler.Wymaga modułu wykonywalnego wygenerowanego przez linker.
Funkcjonowa棹czy wszystkie moduły obiektowe kodu źródłowego, aby wygenerować moduł wykonywalny.Przydziela adresy do modułu wykonywalnego w pamięci głównej w celu wykonania.
Typ / podejścieEdytor połączeń, linker dynamiczny.Ładowanie bezwzględne, przenoszenie ruchome i ładowanie dynamiczne w czasie wykonywania.


Definicja Linkera

Asembler generuje kod obiektowy programu źródłowego i przekazuje go konsolidatorowi. Linker bierze ten kod obiektowy i generuje kod wykonywalny dla programu i przekaż go modułowi ładującemu.

Język wysokiego poziomu, programy mają trochę wbudowane biblioteki i pliki nagłówkowe. Program źródłowy może zawierać niektóre funkcje biblioteczne, których definicja jest przechowywana we wbudowanych bibliotekach. Linker łączy te funkcje z wbudowanymi bibliotekami. Jeśli wbudowane biblioteki nie zostaną znalezione, informuje o tym kompilator, a następnie kompilator generuje błąd.

Czasami duże programy są podzielone na podprogramy, które są wywoływane moduły. Teraz, gdy moduły te zostaną skompilowane i złożone, generowane są moduły obiektowe programu źródłowego. Linker ma obowiązek łączenia / łączenia wszystkich modułów obiektowych w celu wygenerowania jednego pliku wykonywalnego programu źródłowego. Mamy dwa rodzaje linkerów.


Edytor powiązań: Jest to linker, który generuje relokowalny moduł wykonywalny.

Dynamic Linker: Odracza / opóźnia połączenie niektórych modułów zewnętrznych do momentu wygenerowania modułu ładowania / modułu wykonywalnego. Tutaj łączenie odbywa się w czasie ładowania lub wykonywania.

Definicja programu ładującego

Ponieważ program, który należy obecnie wykonać, musi znajdować się w głównej pamięci komputera. Jest to obowiązkiem ładowarka, program w systemie operacyjnym, aby załadować plik wykonywalny / moduł programu wygenerowany przez konsolidator do pamięci głównej w celu wykonania. Przydziela przestrzeń pamięci do modułu wykonywalnego w pamięci głównej.

Istnieją trzy rodzaje podejść do ładowania:

  • Absolutne ładowanie
  • Przenoszalne ładowanie
  • Dynamiczne ładowanie w czasie wykonywania

Absolutne ładowanie: Podejście to ładuje plik wykonywalny programu do pliku ta sama lokalizacja pamięci głównej za każdym razem. Ale ma trochę niedogodności podobnie jak programista musi znać strategię przypisywania do ładowania modułów do pamięci głównej. W przypadku, gdy program ma zostać zmodyfikowany z pewnym wstawieniem i usunięciem w programie, wówczas wszystkie adresy programu muszą zostać zmienione.

Przenoszalne ładowanie: W tym podejściu robi to kompilator lub asembler nie tworzy rzeczywistego adresu pamięci głównej. Tworzy adresy względne.

Dynamiczne ładowanie w czasie wykonywania: W tym podejściu adres bezwzględny programu jest generowany, gdy instrukcja modułu wykonywalnego jest faktycznie wykonywana. Jest bardzo elastyczny, do którego można załadować moduł ładowalny / moduł wykonywalny dowolny region pamięci głównej. Program wykonawczy może zostać przerwany pomiędzy nimi i może zostać wymieniony na dysk i tym razem z powrotem do pamięci głównej pod innym adresem pamięci głównej.

  1. Kluczową różnicą między konsolidatorem a modułem ładującym jest to, że linker generuje wykonywalny plik programu, podczas gdy moduł ładujący ładuje plik wykonywalny uzyskany z linkera do główna pamięć do wykonania.
  2. Linker pobiera moduł obiektowy programu wygenerowanego przez asembler. Jednak moduł ładujący przyjmuje moduł wykonywalny wygenerowany przez linker.
  3. Linker łączy wszystkie moduły obiektowe programu do wygenerowania moduły wykonywalne łączy również funkcja biblioteki w module obiektowym do wbudowane biblioteki języka programowania wysokiego poziomu. Z drugiej strony ładowacz przydziela miejsce do pliku wykonywalnego moduł w pamięci głównej.
  4. Linker można sklasyfikować jako edytor linków, i dynamiczny linker podczas gdy moduł ładujący można sklasyfikować jako ładowarka absolutna, ładowarka relokowalna i dynamiczny moduł ładujący.

Wniosek:

Linker bierze moduły obiektowe programu z asemblera i łączy je ze sobą, aby wygenerować moduł wykonywalny programu. Moduł wykonywalny jest następnie ładowany przez moduł ładujący do pamięci głównej w celu wykonania.