Recomendado, 2024

La Elección Del Editor

Diferencia entre el enlazador y el cargador

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, vinculador, cargador en el orden respectivo, antes de la ejecución. Por un lado, donde el enlazador ingresa 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 el enlazador y el cargador con la ayuda de un cuadro comparativo.

Gráfica comparativa

Bases para la comparaciónEnlazadorCargador
BASICGenera el módulo ejecutable de un programa fuente.Carga el módulo ejecutable a la memoria principal.
EntradaToma como entrada, el código objeto generado por un ensamblador.Toma módulo ejecutable generado por un enlazador.
FunciónCombina todos los módulos 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 / EnfoqueLinkage Editor, enlazador dinámico.Carga absoluta, carga reubicable y carga dinámica en tiempo de ejecución.

Definición de enlazador

El ensamblador genera el código objeto de un programa fuente y lo entrega al enlazador. El enlazador toma este código objeto y genera el código ejecutable para el programa, y ​​lo entrega al cargador.

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

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

Linkage Editor : es un enlazador que genera el módulo reubicable y ejecutable.

Dynamic Linker : difiere / pospone el enlace de algunos módulos externos hasta que se genere el módulo de carga / módulo ejecutable. Aquí, la vinculación se realiza durante el tiempo de carga o el tiempo de ejecución.

Definición de cargador

Como el programa que se tiene que ejecutar actualmente, debe residir en la memoria principal de la computadora. Es responsabilidad del cargador, un programa en un sistema operativo, cargar el archivo / módulo ejecutable de un programa, generado por el enlazador, en 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 una misma ubicación de memoria principal cada vez. Pero tiene algunas desventajas, como que un programador debe conocer la estrategia de asignación para cargar los módulos en la memoria principal. En caso de que el programa se modifique con alguna inserción y eliminación en el programa, entonces todas las direcciones del programa deben modificarse.

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 en realidad se ejecuta una instrucción de un módulo ejecutable. Es muy flexible, el módulo cargable / módulo ejecutable se puede cargar en cualquier región de la memoria principal . El programa de ejecución puede interrumpirse en el medio y puede cambiarse al disco y volver a la memoria principal esta vez en una dirección de memoria principal diferente.

Diferencias clave entre el enlazador y el cargador

  1. La diferencia clave entre el vinculador y el cargador es que el vinculador genera el archivo ejecutable de un programa, mientras que el cargador carga el archivo ejecutable obtenido del vinculador en la memoria principal para su ejecución .
  2. El enlazador ingresa al módulo objeto de un programa generado por el ensamblador. Sin embargo, el cargador ingresa al 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 la función de biblioteca en el módulo de objetos con las bibliotecas integradas del lenguaje de programación de alto nivel. Por otro lado, el cargador asigna espacio a un módulo ejecutable en la memoria principal.
  4. El vinculador puede clasificarse como editor de vinculación y vinculador dinámico, mientras que el cargador puede clasificarse como cargador absoluto, cargador reubicable y cargador dinámico en tiempo de ejecución .

Conclusión:

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

Top