Si buscas hosting web, dominios web, correos empresariales o crear páginas web gratis, ingresa a PaginaMX
Por otro lado, si buscas crear códigos qr online ingresa al Creador de Códigos QR más potente que existe


5. CARGADORES
5.1 Esquema de carga
5.1.1 Cargadores "compile y transferencia"


Una posible forma de ejecutar la función de carga es a través de un cargador denominado cargador “compila y ejecuta”, para ello se contempla que en el mismo proceso de compilado las instrucciones generadas se coloquen directamente en memoria. El cargador consiste en este caso de una sola instrucción que transfiere el control ala dirección de inicio del nuevo programa.

5.1.2 Esquema general de carga

Descripción: http://www.clase.net16.net/wordpress/wp-content/uploads/2012/07/ejecucion.png

5.1.3 Cargadores absolutos

Este es un programa que carga cada instrucción del programa objeto en una posición fija y prestablecida. Por tanto, cada instrucción tiene una dirección absoluta. El cargador absoluto lee simplemente la línea de código objeto que contiene la dirección de inicio de las instrucciones y datos, y carga las palabras (o bytes) sucesivas en posiciones de memoria sucesivas.

El cargador absoluto tiene un serio inconveniente cuando se utiliza en sistemas computadores grandes.
Esto significa que los programas y datos se deben almacenar cada vez en posiciones de memoria distintas. Si se utilizan cargadores absolutos, el programa objeto se tendrá que modificar para que refleje la nueva posición de inicio de memoria. Esta es una actividad larga y sujeta a errores. En tales situaciones, se utilizan cargadores relocatables.

Los cargadores absolutos están diseñados generalmente para verificar cada instrucción que leen. Si se detecta una instrucción ilegal, se interrumpe el proceso de carga.

5.1.4 Encadenamiento de subrutinas

El encadenamiento consiste en juntar en un mismo espacio de direcciones módulos que han sido compilados por aparte y resolver las referencias externas entre ellos.

El encadenamiento se puede realizar:

Al compilar: por ejemplo al utilizar las directivas de compilación #include en C, o uses en Pascal. En este caso el sistema operativo no se ve directamente involucrado en el proceso pues este es responsabilidad del compilador.

Después de compilar y antes de cargar: Cuando se tiene después de compilación un programa.obj y para su ejecución es necesario convertirlo en .exe. En estos casos se recurre a programas que se encargan de realizar el proceso, como por ejemplo link, plink86, etc.

Durante la ejecución. Es el caso del llamado a librerías del tipo .dll (dynamic link library) de Windows, en donde el encadenamiento se realiza durante el tiempo de ejecución.

5.1.5 Cargadores

Un cargador es un programa del sistema que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado. Algunos sistemas tienen un ligador para realizar las operaciones de enlace, y un cargador separado para manejar la relocalización y la carga. Los procesos de ensamblado y carga están íntimamente relacionados.

Las funciones más importantes de un cargador son: colocar un programa objeto en la memoria e iniciar su ejecución. Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalización de programas, su operación es muy simple, pues todas las funciones se realizan en un solo paso. Se revisa el registro de encabezamiento para comprobar se ha presentado el programa correcto para la carga (entrando en la memoria disponible). A medida que se lee cada registro de texto, el código objeto que contiene pasa a la dirección de memoria indicada. Cuando se encuentra el registro de fin, el cargador salta a al dirección especificada para iniciar la ejecución del programa cargado.

5.1.6 Reasignadores

Los cargadores que permiten la relocalización de programas se denominan cargadores relocalizadores o cargadores relativos. Existen dos métodos para la relocalización. El primer método utiliza un registro de modificación para describir cada parte del código que se ha de cambiar al relocalizar el programa.

5.1.7 Cargadores de encadenamiento directo

Una clase particular de cargador que ofrece mayores ventajas se denomina cargador de ligado directo. Para que este tipo de cargador funcione adecuadamente el ensamblador debe proveer los siguientes detalles:
  • La longitud de los segmentos
  • Una lista de los símbolos externos
  • Una lista de símbolos no definidos pero referenciados
  • Información acerca de las direcciones constantes y que tipo de valores tienen
  • El código máquina y las direcciones relativas
5.1.8 Otros sistemas de carga

 
5.1.9 Encuadernadores, cargadores, encadenadores "overlays"

 
5.1.10 Encuadernadores dinámicos

El ligado dinámico ofrece algunas ventajas sobre los otros tipos de ligado. Proporciona la posibilidad de cargar las rutinas sólo cuando y si se necesitan. SI las subrutinas son grandes o tienen muchas referencias externas, se pueden conseguir ahorros considerables de tiempo y espacio de memoria.

Para realizar la carga de ligado de una subrutina llamada se puede utilizar varios mecanismos distintos. En el método que se analiza aquí, las rutinas que se carguen dinámicamente deben llamarse por medio de una solicitud de servicio al sistema operativo. Este método también podría considerarse como una solicitud a una parte del cargador que se mantiene en la memoria durante la ejecución del programa.

Cuando se utiliza ligado dinámico, la asociación de una dirección real y el nombre simbólico de la rutina llamada no se hace hasta que se ejecuta la proposición llamada.

5.2 Diseño de un cargador absoluto

Los cargadores absolutos están diseñados generalmente para verificar cada instrucción que leen. Si se detecta una instrucción ilegal, se interrumpe el proceso de carga.

5.3 Diseño de un cargador de encadenamiento directo
5.3.1 Planteamiento del problema


 
5.3.2 Especificación de las estructuras de datos

 
5.3.3 Formato de la base de datos

Permiten que los campos comiencen en diferentes columnas de las líneas del código fuente con tal que se sigan unas reglas. Típicamente estas reglas incluyen las siguientes:
  • Las etiquetas deben comenzar en la columna 1. En caso contrario la columna 1 debe contener un símbolo que signifique una línea entera de comentario o estar en blanco.
  • Los diferentes campos deben estar separados por uno o más espacios.
  • El carácter espacio se denomina comúnmente como delimitador por que marca las fronteras de cada campo y separa unos de otros.
  • Un comentario que ocupe la línea completa debe indicarse mediante un símbolo especial en la columna 1 de la línea.
5.3.4 Algoritmos
© 2025

26194