Kluczowa różnica – Linker vs Loader
Program komputerowy służy do przekazywania instrukcji komputerowi. Jest napisany przy użyciu określonego języka programowania. Języki programowania, takie jak C, Java, są językami programowania wysokiego poziomu i są zrozumiałe dla ludzi, ale nie dla komputera. Dlatego program wysokiego poziomu jest konwertowany na język maszynowy za pomocą translatora języka. Program napisany w języku wysokiego poziomu jest kodem źródłowym. Po konwersji przetłumaczony kod nazywa się kodem wynikowym. Linker i loader to dwa programy, które są używane do wykonywania programu. W tym artykule omówiono różnicę między konsolidatorem a programem ładującym. Linker to oprogramowanie, które łączy kod obiektowy z dodatkowymi plikami, takimi jak pliki nagłówkowe i tworzy plik wykonywalny z rozszerzeniem.exe. Loader to oprogramowanie systemowe, które ładuje plik wykonywalny wygenerowany przez linker do pamięci głównej. To jest kluczowa różnica między Linkerem a Loaderem.
Co to jest linker?
Program komputerowy to zestaw instrukcji przekazywanych komputerowi w celu wykonania określonego zadania. Program komputerowy można napisać przy użyciu języka programowania. Większość języków programowania to programowanie wysokiego poziomu. Są łatwo zrozumiałe i czytelne dla programisty. Języki te mają składnię podobną do języka angielskiego. Niektóre przykłady języków wysokiego poziomu to Java, C i Python. Program napisany przy użyciu języka programowania wysokiego poziomu jest znany jako kod źródłowy, plik źródłowy lub program źródłowy. Rozszerzenie kodu źródłowego zależy od języka, w którym został opracowany. Jeśli kod źródłowy jest napisany w C++, rozszerzenie pliku to.cpp. Jeśli kod źródłowy jest napisany w Pythonie, rozszerzenie to.py.
Nawet kod źródłowy jest zrozumiały dla programisty; nie jest zrozumiałe dla komputera. Dlatego kod źródłowy powinien zostać przekonwertowany na format zrozumiały dla komputera za pomocą tłumacza języka. Może to być kompilator lub interpreter. Przetłumaczony kod jest znany jako kod obiektowy. Kod obiektowy jest w języku maszynowym. Składa się z zer i raz. Komputer może bezpośrednio zrozumieć kod wynikowy. Ma rozszerzenie.obj. Jeśli istnieje kod źródłowy jako Test.c, przechodzi on przez kompilator i przekonwertowany kod staje się Test.obj.
Linker to oprogramowanie, które łączy kod obiektowy z dodatkowymi plikami, takimi jak pliki nagłówkowe, i tworzy plik wykonywalny z rozszerzeniem.exe. Program mógł korzystać z wbudowanych funkcji. Funkcjonalności tych wbudowanych funkcji znajdują się w plikach nagłówkowych. Zgodnie z powyższym przykładem kod obiektowy, którym jest Test.obj jest dodawany z niezbędnymi plikami nagłówkowymi za pomocą Linkera. Tworzy nowy plik o nazwie Test.exe. Jest to plik wykonywalny. Dlatego jest wykonywalny przez komputer.
Co to jest program ładujący?
Program, który powinien zostać uruchomiony, musi być umieszczony w pamięci. Konsolidator łączy kod obiektu i pliki nagłówkowe oraz wyprowadza plik wykonywalny. Loader to oprogramowanie systemowe, które ładuje plik wykonywalny wygenerowany przez linker do pamięci głównej. Przydziela przestrzeń pamięci modułowi wykonywalnemu w pamięci głównej. Dlatego loader jest częścią systemu operacyjnego, która odpowiada za ładowanie programów i bibliotek.
Rysunek 01: Kolejność ładowania kodu źródłowego do pamięci
Ładowanie programu obejmuje kilka kroków. Polega na wczytaniu do pamięci zawartości pliku wykonywalnego zawierającego instrukcję programu, a także wykonaniu niezbędnych zadań przygotowawczych do uruchomienia pliku wykonywalnego. Po zakończeniu ładowania system operacyjny uruchamia program, przekazując kontrolę do załadowanego kodu programu. Specjalne systemy komputerowe, takie jak systemy wbudowane, zazwyczaj nie mają programów ładujących. Kod jest wykonywany bezpośrednio przez ROM.
Jaka jest relacja między Linkerem a Loaderem?
Wyjście konsolidatora trafia do modułu ładującego
Jaka jest różnica między konsolidatorem a programem ładującym?
Łącznik kontra program ładujący |
|
Linker to oprogramowanie, które łączy kod obiektowy z dodatkowymi plikami, takimi jak pliki nagłówkowe, i tworzy plik wykonywalny z rozszerzeniem.exe. | Program ładujący to oprogramowanie systemowe, które ładuje plik wykonywalny wygenerowany przez linker do pamięci głównej. |
Wprowadź | |
Konsolidator pobiera dane wyjściowe tłumacza języka, którym jest kod obiektowy. | Program ładujący pobiera dane wyjściowe z konsolidatora, którym jest plik wykonywalny. |
Funkcjonalność | |
Konsolidator łączy kod obiektowy z plikami nagłówkowymi i wyprowadza plik wykonywalny. | Program ładujący ładuje plik wykonywalny uzyskany z konsolidatora do pamięci głównej. |
Podsumowanie – linker kontra program ładujący
Linker i Loader to dwa komponenty oprogramowania związane z wykonywaniem programu. W tym artykule omówiono różnicę między konsolidatorem a modułem ładującym. Linker to oprogramowanie, które łączy kod obiektowy z dodatkowymi plikami, takimi jak pliki nagłówkowe i tworzy plik wykonywalny z rozszerzeniem.exe. Loader to oprogramowanie systemowe, które ładuje plik wykonywalny wygenerowany przez linker do pamięci głównej. To jest różnica między Linkerem a Loaderem.