Diferencia entre Linker y Loader

Autor: Laura McKinney
Fecha De Creación: 3 Abril 2021
Fecha De Actualización: 7 Mayo 2024
Anonim
Various stages of program execution | Assembler, Linker & Loader | Log2Base2
Video: Various stages of program execution | Assembler, Linker & Loader | Log2Base2

Contenido


Linker y Loader son los programas de utilidad que juegan un papel importante en la ejecución de un programa. El código fuente de un programa pasa a través del compilador, ensamblador, enlazador, cargador en el orden respectivo, antes de la ejecución. Por un lado, donde el enlazador toma los códigos de objeto generados por el ensamblador y los combina para generar el módulo ejecutable. Por otro lado, el cargador carga este módulo ejecutable en la memoria principal para su ejecución. Discutamos la diferencia entre Linker y loader con la ayuda de un cuadro de comparación.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónLinkerCargador
BásicoGenera el módulo ejecutable de un programa fuente.Carga el módulo ejecutable en la memoria principal.
EntradaToma como entrada el código objeto generado por un ensamblador.Se necesita un módulo ejecutable generado por un enlazador.
FunciónCombina todos los módulos de objeto de un código fuente para generar un módulo ejecutable.Asigna las direcciones a un módulo ejecutable en la memoria principal para su ejecución.
Tipo / enfoqueEditor de enlaces, enlazador dinámico.Carga absoluta, carga reubicable y carga dinámica en tiempo de ejecución.


Definición de Linker

El ensamblador genera el código objeto de un programa fuente y lo entrega al vinculador. El vinculador toma este código de objeto y genera el código ejecutable para el programa y entregárselo al cargador.

El lenguaje de alto nivel, los programas tienen algunos bibliotecas incorporadas y archivos de encabezado. El programa fuente puede contener algunas funciones de biblioteca cuya definición se almacena en las bibliotecas integradas. El vinculador vincula estas funciones a las bibliotecas integradas. En caso de que no se encuentren las bibliotecas integradas, informa al compilador, y el compilador genera el error.

A veces, los programas grandes se dividen en subprogramas que se llaman módulos. Ahora, cuando estos módulos se compilan y ensamblan, se generan los módulos de objeto del programa fuente. El vinculador tiene la responsabilidad de combinar / vincular todos los módulos de objeto para generar un único archivo ejecutable del programa fuente. Tenemos dos tipos de enlazadores.


Editor de enlaces: Es un enlazador que genera el módulo ejecutable reubicable.

Enlace Dinámico: Difiere / pospone el enlace de algunos módulos externos hasta que se genera el módulo de carga / módulo ejecutable. Aquí, el enlace se realiza durante el tiempo de carga o el tiempo de ejecución.

Definición de cargador

Como el programa que debe ejecutarse actualmente debe residir en la memoria principal de la computadora. Es responsabilidad del cargador, un programa en un sistema operativo, para cargar el archivo / módulo ejecutable de un programa, generado por el enlazador, a la memoria principal para su ejecución. Asigna el espacio de memoria al módulo ejecutable en la memoria principal.

Hay tres tipos de enfoques de carga:

  • Carga absoluta
  • Carga reubicable
  • Carga dinámica en tiempo de ejecución

Carga absoluta: Este enfoque carga el archivo ejecutable de un programa en un misma ubicación de memoria principal cada vez. Pero tiene algo desventajas como un programador debe ser consciente de la estrategia de asignación para cargar los módulos en la memoria principal. En caso de que el programa deba modificarse con alguna inserción y eliminación en el programa, se deben modificar todas las direcciones del programa.

Carga reubicable: En este enfoque, el compilador o ensamblador no produce la dirección de memoria principal real. Produce las direcciones relativas.

Carga dinámica en tiempo de ejecución: En este enfoque, la dirección absoluta de un programa se genera cuando una instrucción de un módulo ejecutable se ejecuta realmente. Es muy flexible, el módulo cargable / módulo ejecutable se puede cargar en cualquier región de la memoria principal. El programa en ejecución se puede interrumpir en el medio y se puede cambiar al disco y volver a la memoria principal esta vez en una dirección de memoria principal diferente.

  1. La diferencia clave entre el vinculador y el cargador es que el vinculador genera el ejecutable archivo de un programa mientras que el cargador carga el archivo ejecutable obtenido del enlazador en memoria principal para ejecución.
  2. El enlazador toma la módulo de objeto de un programa generado por el ensamblador. Sin embargo, el cargador toma el módulo ejecutable generado por el enlazador.
  3. El enlazador combina todos los módulos de objetos de un programa para generar módulos ejecutables también vincula el función de biblioteca en el módulo de objeto para bibliotecas integradas del lenguaje de programación de alto nivel. Por otro lado, cargador asigna espacio a un ejecutable módulo en memoria principal.
  4. El enlazador se puede clasificar como editor de enlaces, y enlazador dinámico mientras que el cargador se puede clasificar como cargador absoluto, cargador reubicable y cargador dinámico de tiempo de ejecución.

Conclusión:

El enlazador toma los módulos de objeto de un programa del ensamblador y los une para generar un módulo ejecutable de un programa. El cargador ejecuta el módulo ejecutable en la memoria principal para su ejecución.