Académique Documents
Professionnel Documents
Culture Documents
Pg. Introduccin Cargadores y Ligadores Funciones Bsicas del Cargador Caractersticas del Cargador Dependientes de la Maquina Relocalizacin Tablas y Lgica de un Cargador Ligador Caractersticas del Cargador Independientes de la Maquina Bsqueda Automtica en Biblioteca Opciones del Cargador Programas de Superposiciones Opciones de Diseo del Cargador Editores de Ligado Ligado Dinmico Cargadores de Arranque Ejemplos de Cargadores y Ligadores Reales Editor de Ligado del Sistema/370 Ligador del Sistema VAX Cargador del CYBER Anexos Conclusiones 12 13 22 2 3 3 5 5 6 7 7 7 8 9 9 9 10 11 11 11
Software de Sistemas
Bibliografa
23
INTRODUCCION
En el trabajo que se presenta a continuacin damos las definiciones de cargadores y ligadores, tambin hacemos referencia a las funciones bsicas, caractersticas y opciones de diseo de estos programas del sistema; adems agregamos algunos ejemplos de cargadores y ligadores reales as como en la parte de anexos incluimos las tablas, cdigos y diagramas sobre los que hacemos referencia.
Cargadores y Ligadores
Unidad III
Software de Sistemas
CARGADORES Y LIGADORES
Un programa objeto contiene instrucciones traducidas y valores de datos del programa fuente, y especifica direcciones en memoria donde se cargarn estos elementos. Un cargador es un programa del sistema que realiza la funcin de carga (llevar el programa objeto a la memoria para su ejecucin). Algunos sistemas tienen un ligador o editor de ligado (combina dos o ms programas objeto independientes y proporciona la informacin necesaria para realizar referencias entre ellos) para realizar las operaciones de enlace, y un cargador separado para manejar la relocalizacin (modificar el programa objeto de forma que puede cargarse en una direccin diferente de la localidad especificada originalmente) y la carga. En la mayora de los casos todos los traductores de programas (esto es, ensambladores y compiladores) de un sistema en particular producen programas objeto en el mismo formato, de esta forma puede usarse el cargador o ligador del sistema con independencia del lenguaje de programacin fuente original.
Software de Sistemas
localidades de memoria para las cuales no hay registro de texto se representa por xxxx. Esto indica que el contenido previo de esas localidades no se altera. En la figura 3.2 se muestra un algoritmo para la lgica del cargador sencillo analizado. Aunque este proceso es muy simple, hay un aspecto que merece ser comentado. En el programa objeto de ejemplo los bytes de cdigo ensamblado se expresan en representacin hexadecimal en forma de caracteres. Por ejemplo, el cdigo de operacin de mquina para una instruccin STL se representara por el par de caracteres 14. As durante la carga, cada pareja de bytes del registro del programa objeto debe
empaquetarse en un byte. Es muy importante tener en cuenta que en la figura 3.1(a), cada carcter impreso representa un byte del registro del programa objeto. Por otra parte en la figura 3.1(b), cada carcter impreso representa un digito hexadecimal de la memoria (esto es, medio byte). Este mtodo de representar un programa objeto es eficiente desde el punto de vista del espacio y el tiempo de ejecucin por lo que la mayora de las mquinas almacenan los programas objeto en forma binaria almacenndose cada byte en el programa objeto. Lgicamente, con este tipo de representacin un byte puede contener cualquier valor binario. Hay que estar seguro de que las convenciones de archivo y dispositivos no hacen que algunos bytes del programa objeto sean interpretados como caracteres de control, en la que se indica el final de un registro con un byte que contiene un 00 hexadecimal, es inapropiada para usar con un programa objeto binario.
Cargadores y Ligadores
Unidad III
Software de Sistemas
Relocalizacin
Los cargadores que permiten la relocalizacin de programas se denominan cargadores relocalizadores o relativos. El primer mtodo se utiliza un registro de modificacin para describir cada parte del cdigo objeto que se ha de cambiar al relocalizar el programa. En la Fig. 3.3 se muestra un programa SIC/XE que se emplea para ilustrar este primer mtodo de especificacin de la relocalizacin. La mayora de las instrucciones de este programa manejan direccionamiento relativo o inmediato. Las nicas partes del programa ensamblado que contienen direcciones reales son las instrucciones con formato extendido de las lneas 15, 35 y 65.
Cargadores y Ligadores
Unidad III
Software de Sistemas
En la Fig. 3.4 se muestra el cdigo objeto correspondiente al cdigo fuente de la Fig. 3.3. Obsrvese que hay un registro de modificacin para cada valor que se ha de cambiar durante la relocalizacin (en este caso, 15, 35 y 65). Cada registro de modificacin especifica la direccin inicial y la longitud del campo cuyo valor se va alterar y despus describe la modificacin a realizar. En este Ejemplo, todas las modificaciones suman el valor del smbolo COPY, que representa la direccin inicial del programa. Algunos computadores proporcionan una posibilidad de relocalizacin por hardware que elimina en parte la necesidad de que el cargador efecte la relocalizacin de programas.
Cargadores y Ligadores
Unidad III
Software de Sistemas
Cargadores y Ligadores
Unidad III
Software de Sistemas
Programas de Superposiciones
Este mtodo de implantacin reduce la cantidad total de memoria requerida para el ensamblado. En la figura 3.12 (a) se muestra la estructura de superposiciones del programa de ejemplo. Las letras representan nombres de secciones de control y las lneas, transferencias de control entre estas secciones. La estructura de un programa de superposiciones se define al cargador utilizando mandatos; en la figura 3.13 se muestra un conjunto tpico de mandatos para definir la estructura de superposiciones mostrada en la figura 3.12 (a). En la estructura 3.14 (a) se muestra la longitud y la direccin real inicial de cada segmento del programa de ejemplo, y la direccin real inicial. En la figura 3.14 (b) se muestran 3 de esas posibilidades; las dems se dejan como ejercicio. En la figura 3.15 (a) se representa el contenido de la memoria en un momento de la ejecucin. Los segmentos 1, 2 y 4 estn cargados y se estn ejecutando las instrucciones de la seccin de control A. Los segmentos 2 y 4 se cargaron en respuesta a transferencias de control previas. Las reas de transferencia de control de los segmentos 2 y 4 contienen a las secciones de control B y H; las otras reas contienen instrucciones que invocan a MANSUP. Por otra parte, supngase que A ejecuta una llamada a B. El rea de transferencia del segmento 6 contiene instrucciones que invocan a MANSUP, como se ilustra en la figura 3.15 (b). El segmento 4 debe eliminarse debido a que su segmento padre ha sido eliminado. Entonces el control se pasa al punto de entrada del segmento 6, completando la transferencia de control a D. [vase fig. 3.15 (c)].
Software de Sistemas
En esta seccin se analiza algunas alternativas comunes de organizacin de las funciones de carga, incluidas la relocacin y ligado. Los cargadores ligadores realizan el ligado y la relocacin en el momento de la carga. Se analizan dos opciones: los editores de ligado, que realizan el ligado antes del momento de la carga, y el ligado dinmico, en el cul la funcin de ligado se realiza en el momento de la ejecucin.
Editores de Ligado
La diferencia fundamental entre un editor de ligado y un cargador ligador se ilustra en la figura 3.16. Primero se ensambla o compila el programa fuente, produciendo un programa objeto (que puede contener varias secciones de control diferentes). Un cargador ligador realiza todas las operaciones de ligado y relocalizacin, incluyendo bsqueda automtica en bibliotecas, si se especifica, y carga el programa de ligado directamente en la memoria para su ejecucin. Por otro lado, un editor de ligado produce una versin ligada del programa (llamada a menudo mdulo de carga o imagen ejecutable), que se escribe en un archivo o biblioteca para su ejecucin posterior. Cuando el usuario est listo para ejecutar el programa ligado, se puede utilizar un cargador relocalizador simple para cargar el programa en la memoria. La nica modificacin necesaria al cdigo objeto es la suma de una direccin de carga real a los valores relativos del programa. El editor de ligado realiza la relocacin de todas las secciones de control relativas al inicio del programa de ligado.
Ligado Dinmico
En esta seccin se analiza un esquema que pospone la funcin de ligado hasta el momento de la ejecucin: una subrutina se carga y liga al resto del programa al llamarla por primera vez. Este tipo de funcin se suele denominar ligado dinmico, cargado dinmico o carga por llamada. El ligado dinmico proporciona la posibilidad de cargar las rutinas slo cuando y si se necesitan, tambin evita la necesidad de cargar la biblioteca completa para cada ejecucin. Para realizar la carga y ligado de una subrutina
Cargadores y Ligadores Unidad III
Software de Sistemas
llamada se pueden utilizar varios mecanismos distintos. En lugar de ejecutar una instruccin JSUB que hace referencia a un smbolo externo, el programa hace una solicitud de servicio de carga y llamada al sistema operativo. El parmetro de esta solicitud es el nombre simblico de la rutina llamada. [Vase fig. 3.17(a)] El sistema operativo examina sus tablas internas para determinar si la rutina ya se ha cargado o no; en caso necesario, la rutina se carga desde la biblioteca de un usuario o desde el sistema especificado, como se ilustra en la figura 3.17(b). Entonces el control pasa del sistema operativo a la rutina llamada [Fig. 3.17(c)]. Cuando se completa el procesamiento de la subrutina llamada, vuelve a quien la llam. Entones, el sistema operativo devuelve el control al programa que hizo la solicitud; este proceso se ilustra en la fig. 3.17(d). El control puede pasarse del cargador dinmico a la rutina llamada, como en la Fig. 3.17(e).
Cargadores de Arranque
Si el proceso de carga requiere ms instrucciones de las que pueden leerse en un solo registro, el primer registro causa la lectura de otros y estos, a su vez, pueden originar la lectura an de ms registros; de ah el trmino arranque (bootstrap). El primer registro suele denominarse cargador de arranque, y se coloca al inicio de todos los programas objeto que se van a cargar en un sistema vaco e inactivo. Esto incluye, por ejemplo, al propio sistema operativo y a todos los programas independientes que se ejecutan sin sistema operativo.
Software de Sistemas
Software de Sistemas
en la imagen que se esta creando y realizar operaciones con valores de la pila. El lenguaje de mandatos ofrece una gran diversidad de posibilidades: hay mas de 50 cdigos de mandatos posibles. El ligador de VAX puede generar tres tipos de imgenes. Una imagen ejecutable es aquella adecuada para la carga y ejecucin; una imagen compartible no es ejecutable, pero el ligador puede reprocesarla. El tercer tipo de imagen que puede crear el ligador es una imagen de sistema, concebida para ser ejecutada directamente en la maquina VAX, sin los servicios del sistema operativo. El ligador de VAX realiza las funciones usuales de ligado y relocalizacin. Adems, hace parte del trabajo que en otros sistemas realizan el ensamblador o el compilador. El ligador de VAX no utiliza programas de superposiciones, debido en parte a la gran memoria virtual de que disponible VAX.
Cargador de CYBER
El formato del programa objeto utilizado por el cargador de CYBER es un poco ms complejo que el descrito para SIC/XE; sin embargo, dispone de la misma informacin bsica. La tcnica de mscara de bits es especialmente til en CYBER, direccionamiento relativo. Una palabra de CYBER puede contener ms de una instruccin, por lo que no es posible usar un solo bit de relocalizacin por palabra. El cargador de CYBER puede utilizar programas de superposiciones de un tipo ms restringido que el descrito. Una estructura de superposiciones est limitada a un mximo de tres niveles. Cada segmento est identificado por un par ordenado de enteros, y un segmento solamente puede tener un punto de entrada. por no disponer de
ANEXOS
Cargadores y Ligadores Unidad III 12
Software de Sistemas
HCOPY 00100000107A T0010001E1410334820390010362810303010154820613C100300102A0C103900102D T00101E150C1036482061081033400000454F46000003000000 T0020391E041030001030E0205D30205D30203FD8205D3020575490392C205E38203F T002057 C1010364C0000F1001000041030E02079302064509039DC20792C1036 T002073073820644C000005 E001000 (a) Programa Objeto
Software de Sistemas
verifica el nombre del programa y la longitud lee el primer registro de texto mientras el tipo del registro <> E haz comienza {si el cdigo objeto est en forma de caracteres, se convierte en una representacin interna} pasa el cdigo objeto a la localidad de memoria especificada lee el siguiente registro del programa objeto termina salta a la direccin especificada en el registro de fin termina Figura 3.2
Figura 3.12
Cargadores y Ligadores
Unidad III 14
Software de Sistemas
Figura 3.13
Figura 3.14
Cargadores y Ligadores
Unidad III 15
Software de Sistemas
Figura 3.15
Cargadores y Ligadores
Unidad III 16
Software de Sistemas
Figura 3.15
Cargadores y Ligadores
Unidad III 17
Software de Sistemas
Biblioteca
Editor De ligado
Programas ligados
Memoria
Fig. 3.16 Procesamiento de un programa objeto por medio de (a) cargador ligador y (b) editor de ligado.
Cargador Dinmico Cargador Dinmico Cargador Dinmico
Cargadores y Ligadores
Unidad III 18
Software de Sistemas
(a)
(b) FIGURA 3.17.Cargador y llamada de una Subrutina por medio de ligado dinmico.
(c) Lnea 5 10 12
Cargadores y Ligadores
Software de Sistemas
13 15 20 25 30 35 40 45 50 55 60 65 70 80 95 100 105 110 115 120 125 130 132 133 135 140 145 150 155 160 165 170 175 180 185 195 200 205 210 212 215 220 225 230 235
Cargadores y Ligadores
0006 000A 000D 0010 0013 0017 001A 001D 0020 0023 0026 002A 002D 0030 0033 0036
CLOOP
ENDFIL
1036 1038 103A 103C 1040 1043 1046 1049 104B 104E 1051 1053 1056 1059 105C
LENGTH RDREC 4B101036 LENGTH 032026 #0 290000 ENDFIL 332007 WRREC 4B10105D CLOOP 3F2FEC EOF 032010 BUFFER 0F2016 #3 010003 LENGTH 0F200D WRREC 4B10105D @RETADR 3E2003 CEOF 454F46 1 1 1 4096 Subrutina que lee un registro en el Buffer CLEAR CLEAR CLEAR +LDT TD JEQ RD COMPR JEQ STCH TIXR JLT STX RSUB BYTE X A S # 4096 INPUT RLOOP INPUT A,S EXIT BUFFER,X T RLOOP LENGTH XF1 B410 B400 B440 75101000 E32019 332FFA DB2013 A004 332008 57C003 B850 3B2FEA 134000 4F0000 F1
BASE +JSUB LDA COMP JEQ +JSUB J LDA STA LDA STA +JSUB J BYTE RESW RESW RESB
RLOOP
Subrutina que escribe el registro en el Buffer CLEAR LDT TD JEQ LDCH WD TIXR X LENGTH OUTPUT WLOOP BUFFER,X OUTPUT T B410 774000 E32011 332FFA 53C003 DF2008 B850
Unidad III 20
Software de Sistemas
OUTPUT
3B2FEF 4F0000 05
H,COPY ,000000,001077 T,000000,1D,17202D,69202D,4B101036,032026,290000,332007,4B10105D,3F2FEC,032010 T,00001S,13,0F2016,010003,0F200D,4B10105D,3E2003,454F46 T,001036,1D,410,B400,B440,75101000,E32019,332FFA,DB2013,A004,332008,57C003,B850 T,001053,1D,B2FEA,134000,4F0000,F1,B410,774000,E32011,332FFA,53C003,DF2008,B850 T,001070,07,3B2FEF,4F0000,05 M,000007,05+COPY M,000014,05+COPY M,000027,05+COPY E,000000 Figura 3.4 (Programa objeto con relocalizacin por medio de registros de modificacin)
CONCLUSIONES
Cargadores y Ligadores
Unidad III 21
Software de Sistemas
Este trabajo nos ayudo a comprender el significado y la importancia de los conceptos de cargadores y ligadores . Hemos visto la necesidad y utilidad de dichos programas y tambin aprendimos su funcionamiento.
BIBLIOGRAFA
Cargadores y Ligadores
Unidad III 22
Software de Sistemas
Cargadores y Ligadores
Unidad III 23