Diferença entre Linker e Loader

Diferença de chave - Linker vs Carregador
 

Um programa de computador é usado para dar instruções ao computador. É 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 seres humanos, mas não pelo computador. Portanto, um programa de alto nível é convertido em linguagem de máquina usando um tradutor de idiomas. 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 do objeto. O vinculador e o carregador são dois programas de software usados ​​para a execução do programa. Este artigo discute a diferença entre o Linker e o Loader. O Linker é o software que vincula o código do objeto a arquivos adicionais, como arquivos de cabeçalho, e cria um arquivo executável com a extensão .exe. O carregador é o software do sistema que carrega o arquivo executável gerado pelo vinculador na memória principal. Esse é o diferença chave entre o Linker e o Loader.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é o Linker
3. O que é o Loader
4. Relação entre Linker e Loader
5. Comparação lado a lado - vinculador vs carregador em forma de tabela
6. Resumo

O que é o Linker?

Um programa de computador é um conjunto de instruções fornecidas a um computador para executar uma determinada tarefa. Um programa de computador pode ser escrito usando uma linguagem de programação. A maioria das linguagens de 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 do idioma com o 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 idiomas. Pode ser um compilador ou intérprete. O código traduzido é conhecido como código do objeto. O código do objeto está na linguagem de máquina. Consiste em zeros e uma vez. O computador pode entender diretamente o código do objeto. Possui a extensão .obj. Se houver um código-fonte como Test.c, ele percorrerá o compilador e o código convertido se tornará Test.obj.

O Linker é o software que vincula o código do objeto a arquivos adicionais, como arquivos de cabeçalho, e cria um arquivo executável com a 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 aos arquivos de cabeçalho necessários usando o vinculador. Ele cria um novo arquivo chamado Test.exe. É um arquivo executável. Portanto, é executável pelo computador.

O que é o 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. Aloca o espaço de memória para o módulo executável na memória principal. Portanto, um carregador faz parte do sistema operacional responsável pelo carregamento de programas e bibliotecas.

Figura 01: Ordem na qual o código fonte é carregado na memória

O carregamento de um programa envolve várias etapas. Isso envolve a leitura do conteúdo do arquivo executável que contém as instruções do programa na memória e também a execução das tarefas de preparação necessárias para executar o arquivo executável. Depois que o carregamento é concluído, 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 o vinculador e o carregador?

  • 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 do objeto a 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.
 Entrada
O vinculador obtém a saída do tradutor de idiomas, que é o código do objeto. O carregador obtém a saída do vinculador, que é o arquivo executável.
Funcionalidade
O vinculador 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 vinculador na memória principal.

Sumário - Linker vs Carregador

Linker e Loader são dois componentes de software relacionados à execução do programa. Este artigo discutiu a diferença entre o vinculador e o carregador. O Linker é o software que vincula o código do objeto a arquivos adicionais, como arquivos de cabeçalho, e cria um arquivo executável com a 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 o Linker e o Loader.

Referência:

1. 'Loader (computing)', Wikipedia, Fundação Wikimedia, 28 de fevereiro de 2018. Disponível aqui