Diferença entre Linker e Loader

Autor: Laura McKinney
Data De Criação: 3 Abril 2021
Data De Atualização: 7 Poderia 2024
Anonim
Diferença entre Linker e Loader - Tecnologia
Diferença entre Linker e Loader - Tecnologia

Contente


Linker e Loader são os programas utilitários que desempenham um papel importante na execução de um programa. O código-fonte de um programa passa pelo compilador, montador, vinculador, carregador na respectiva ordem, antes da execução. Por um lado, onde os vinculador recebe os códigos de objeto gerados pelo assembler e os combina para gerar o módulo executável. Por outro lado, o carregador carrega este módulo executável na memória principal para execução. Vamos discutir a diferença entre o Linker e o carregador com a ajuda de um gráfico de comparação.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoLinkerCarregador
BasicEle gera o módulo executável de um programa de origem.Carrega o módulo executável na memória principal.
EntradaToma como entrada, o código do objeto gerado por um assembler.É necessário um módulo executável gerado por um vinculador.
FunçãoEle combina todos os módulos de objeto de um código-fonte para gerar um módulo executável.Ele aloca os endereços para um módulo executável na memória principal para execução.
Tipo / AbordagemEditor de ligação, vinculador dinâmico.Carga absoluta, carga realocável e carga dinâmica em tempo de execução.


Definição de Linker

O Assembler gera o código do objeto de um programa de origem e o entrega ao vinculador. O vinculador pega esse código de objeto e gera o código executável para o programa e entregue-o ao Loader.

A linguagem de alto nível, os programas têm alguns bibliotecas embutidas e arquivos de cabeçalho. O programa de origem pode conter algumas funções de biblioteca cuja definição é armazenada nas bibliotecas internas. O vinculador vincula essas funções às bibliotecas internas. Caso as bibliotecas internas não sejam encontradas, ela informa ao compilador e o compilador gera o erro.

Às vezes, os grandes programas são divididos em subprogramas chamados módulos. Agora, quando esses módulos são compilados e montados, os módulos de objeto do programa de origem são gerados. O vinculador tem a responsabilidade de combinar / vincular todos os módulos de objeto para gerar um único arquivo executável do programa de origem. Temos dois tipos de vinculadores.


Editor de ligação: É um vinculador que gera o módulo executável relocável.

Dynamic Linker: Adia / adia a ligação de alguns módulos externos até que o módulo de carregamento / módulo executável seja gerado. Aqui, a vinculação é feita durante o tempo de carregamento ou tempo de execução.

Definição de Carregador

Como o programa que deve ser executado atualmente deve residir na memória principal do computador. É de responsabilidade do carregador, um programa em um sistema operacional, para carregar o arquivo / módulo executável de um programa, gerado pelo vinculador, na memória principal para execução. Aloca o espaço de memória para o módulo executável na memória principal.

Existem três tipos de abordagens de carregamento:

  • Carga absoluta
  • Carregamento relocável
  • Carregamento dinâmico em tempo de execução

Carga absoluta: Essa abordagem carrega o arquivo executável de um programa em um mesma localização de memória principal cada vez. Mas tem algum desvantagens como um programador, deve estar ciente da estratégia de atribuição para carregar os módulos na memória principal. Caso o programa deva ser modificado, envolvendo alguma inserção e exclusão no programa, todos os endereços do programa deverão ser alterados.

Carregamento relocável: Nesta abordagem, o compilador ou montador faz não produza o endereço real da memória principal. Produz os endereços relativos.

Carregamento dinâmico em tempo de execução: Nesta abordagem, o endereço absoluto para um programa é gerado quando uma instrução de um módulo executável é realmente executada. É muito flexível, o módulo carregável / módulo executável pode ser carregado no qualquer região da memória principal. O programa em execução pode ser interrompido no meio e pode ser trocado para o disco e novamente para a memória principal dessa vez em um endereço de memória principal diferente.

  1. A principal diferença entre o vinculador e o carregador é que o vinculador gera o executável arquivo de um programa, enquanto o carregador carrega o arquivo executável obtido do vinculador no memória principal para execução.
  2. O vinculador recebe o módulo objeto de um programa gerado pelo assembler. No entanto, o carregador recebe o módulo executável gerado pelo vinculador.
  3. O vinculador combina todos os módulos de objetos de um programa para gerar módulos executáveis também vincula o função de biblioteca no módulo de objeto para bibliotecas embutidas da linguagem de programação de alto nível. Por outro lado, carregador aloca espaço para um executável módulo na memória principal.
  4. O vinculador pode ser classificado como editor de ligação, e vinculador dinâmico considerando que o carregador pode ser classificado como carregador absoluto, carregador relocável e carregador de tempo de execução dinâmico.

Conclusão:

O vinculador pega os módulos de objeto de um programa do assembler e os vincula para gerar um módulo executável de um programa. O módulo executável é então carregado pelo carregador na memória principal para execução.