Key Difference – Linker vs Loader
Um programa de computador é usado para dar instruções ao computador. Ele é escrito usando uma linguagem de programação específica. Linguagens de programação como C, Java são linguagens de programação de alto nível e são compreensíveis por humanos, mas não pelo computador. Portanto, um programa de alto nível é convertido em linguagem de máquina usando um tradutor de linguagem. Um programa escrito usando uma linguagem de alto nível é um código-fonte. Após a conversão, o código traduzido é chamado de código objeto. O vinculador e o carregador são dois programas de software usados para execução do programa. Este artigo discute a diferença entre Linker e Loader. Linker é o software que vincula o código objeto com arquivos adicionais, como arquivos de cabeçalho e cria um arquivo executável com extensão.exe. O carregador é o software do sistema que carrega o arquivo executável gerado pelo vinculador na memória principal. Essa é a principal diferença entre Linker e Loader.
O que é Linker?
Um programa de computador é um conjunto de instruções dadas a um computador para realizar uma determinada tarefa. Um programa de computador pode ser escrito usando uma linguagem de programação. A maioria das linguagens de programação são programação de alto nível. Eles são facilmente compreensíveis e legíveis pelo programador. Esses idiomas seguem uma sintaxe semelhante ao idioma inglês. Alguns exemplos de linguagens de alto nível são Java, C e Python. Um programa escrito usando uma linguagem de programação de alto nível é conhecido como código-fonte, arquivo-fonte ou programa-fonte. A extensão do código fonte depende da linguagem com a qual foi desenvolvido. Se o código-fonte estiver escrito em C++, a extensão do arquivo será.cpp. Se o código-fonte estiver escrito em Python, a extensão será.py.
Até o código fonte é compreensível pelo programador; não é compreensível pelo computador. Portanto, o código-fonte deve ser convertido em formato compreensível por máquina usando um tradutor de idioma. Pode ser um compilador ou um interpretador. O código traduzido é conhecido como código objeto. O código objeto está em linguagem de máquina. Consiste em zeros e uma vez. O computador pode entender diretamente o código do objeto. Tem a extensão.obj. Se houver um código-fonte como Test.c, ele passará pelo compilador e o código convertido se tornará Test.obj.
Linker é o software que vincula o código objeto com arquivos adicionais, como arquivos de cabeçalho e cria um arquivo executável com extensão.exe. O programa pode ter usado funções internas. As funcionalidades para essas funções internas estão nos arquivos de cabeçalho. De acordo com o exemplo explicado acima, o código do objeto que é Test.obj é adicionado com os arquivos de cabeçalho necessários usando o Linker. Ele cria um novo arquivo conhecido chamado Test.exe. É um arquivo executável. Portanto, é executável pelo computador.
O que é Loader?
Um programa que deve ser executado deve ser colocado na memória. O vinculador vincula o código do objeto e os arquivos de cabeçalho e gera o arquivo executável. O carregador é o software do sistema que carrega o arquivo executável gerado pelo vinculador na memória principal. Ele aloca o espaço de memória para o módulo executável na memória principal. Portanto, um carregador é uma parte do sistema operacional responsável por carregar programas e bibliotecas.
Figura 01: Ordem em que o Código Fonte é carregado na Memória
Carregar um programa envolve várias etapas. Envolve a leitura do conteúdo do arquivo executável que contém a instrução do programa na memória e também a execução das tarefas de preparação necessárias para executar o arquivo executável. Após a conclusão do carregamento, o sistema operacional inicia o programa passando o controle para o código do programa carregado. Sistemas de computador especiais, como sistemas incorporados, geralmente não possuem carregadores. O código é executado diretamente pela ROM.
Qual é a relação entre Linker e Loader?
A saída do Linker vai para o Loader
Qual é a diferença entre Linker e Loader?
Linker vs Loader |
|
Linker é o software que vincula o código objeto com arquivos adicionais, como arquivos de cabeçalho e cria um arquivo executável com extensão.exe. | O loader é o software do sistema que carrega o arquivo executável gerado pelo linker para a memória principal. |
Entrada | |
O vinculador recebe a saída do tradutor de idioma, que é o código do objeto. | O carregador pega a saída do linker, que é o arquivo executável. |
Funcionalidade | |
O linker vincula o código do objeto e os arquivos de cabeçalho e gera o arquivo executável. | O carregador carrega o arquivo executável obtido do linker para a memória principal. |
Resumo – Linker vs Loader
Linker e Loader são dois componentes de software relacionados à execução do programa. Este artigo discutiu a diferença entre o Linker e o Loader. Linker é o software que vincula o código objeto com arquivos adicionais, como arquivos de cabeçalho e cria um arquivo executável com extensão.exe. O carregador é o software do sistema que carrega o arquivo executável gerado pelo vinculador na memória principal. Essa é a diferença entre Linker e Loader.