Upload
vancong
View
215
Download
0
Embed Size (px)
Citation preview
Facultad de IngenieríaUniversidad de Buenos Aires
75-08 Sistemas OperativosLic. Ing. Osvaldo Clúa
Lic. Adrián Muccio
2015
LinkersLinkers
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 2
Uso del Linker (a) TraducciónUso del Linker (a) Traducción
Programa Fuente 1
Programa Fuente 2
Traductor
Programa Objeto 1
Programa Objeto 2
Programa Fuente 3
Traductor
Programa Objeto 3
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 3
Traducción - ensambladoTraducción - ensamblado● Si el lenguaje es un assembler, la traducción es
un ensamblado (assembly) hecho por un programa ensamblador (assembler).
– Convierte código de lenguaje ensamblador memotécnico a códigos de operación.
– Resuelve identificadores a posiciones de memoria.– Algunos proveen abstracciones de programación
avanzadas.– Existe un assembler distinto para cada
arquitectura, incluso hay assemblers generales
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 4
Traducción - CompilaciónTraducción - Compilación● Si se trata de un
lenguaje de alto o mediano nivel, la traducción es una compilación.
● Un Libro online sobre compiladores del curso de Leonidas Fegaras.
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 5
Traducción - CompilaciónTraducción - Compilación
● Léxico: Vocabulario.Tokenization● Preprocesamiento● Sintáctico/Semántico: a cada
símbolo le asocia las acciones que le corresponden según la gramática: X → X.a1, X.a2
● Código máquina: opcode● Código Optimizado: orden de
instrucciones, uso de registros, etc
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 6
Link-EditorLink-Editor
Programa EjecutablePrograma Objeto 2
Programa Objeto 3
Linker
Programa Objeto 1Mezcla las direcciones de cada módulo en un único espacio de direcciones.
Además de ejecutable la salida puede ser:● Otro programa objeto● Una biblioteca
La entrada puede ser también● Un ejecutable● Una biblioteca
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 7
LoaderLoader
Programa Ejecutable
Memoria
Ejecutable
Bibliotecas
Bibliotecas
Bibliotecasya cargadas
Loader
Se llama binding al proceso de resolver las llamadas a funciones de biblioteca
El binding puede hacerse en ejecución
En algunos sistemas, el compilador llama al linker (gcc llama a ld)
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 8
CompilandoCompilando
Procedure a()integer j;begin ....j=j+10;...b()...end;
00 Start a....20 LR 1,addr(j)24 ADD, 1,=1028 ST 1,addr(j)...60 CALL B...96 END
00 Data a04 DS (j)08 DC 10 #=10...76 End Data a
TXT
DATA
00 Start a....20 LR 1,0424 ADD, 1,0828 ST 1,04...60 CALL B
Paso 1Paso 2
Loc Symbol Pos23 j 0427 =10 0831 j 0463 B ?
Relocation DictionaryRLD
El código objeto contiene, entre otras cosas, TXT, DATA, RLD
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 9
Compilando (2)Compilando (2)
Procedure b()integer j;begin ....j=34;...end;
00 Start b....36 LR 1,0840 ST 1,04...
00 Data b04 DS (j)08 DC 34 (=34)...
TXT
DATA
Loc Symbol Pos39 =34 0843 j 04
Relocation DictionaryRLD
Loc Symbol00 b
Exports TableExT
El espacio de direcciones de b( ) es distinto del de a( )
La ExT es otro componente del objeto
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 10
LinkeandoLinkeando
00 Data a04 DS (j)08 DC 10 #=10...76 End Data a
Loc Symbol Pos23 j 0427 =10 0831 j 0463 B ?
Loc Symbol00 a
00 Start b....36 LR 1,0840 ST 1,04...
Loc Symbol Pos39 =34 0843 j 04
00 Data b04 DS (j)08 DC 34 (=34)...
Loc Symbol00 b
00 Start a....20 LR 1,0424 ADD, 1,0828 ST 1,04...60 CALL B...96 END
Link-editor
en el próximo slide
....
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 11
Linkeando (2)Linkeando (2)
00 Start a....20 LR 1,0424 ADD, 1,0828 ST 1,04...60 CALL 100...96 END
100 Start b....136 LR 1,88140 ST 1,84...
Loc Symbol Pos23 j 0427 =10 0831 j 0463 B 100
00 Data a04 DS (j)08 DC 10 #=10...76 End Data a
80 Data b84 DS (j)88 DC 34 (=34)...
TXT DATA RLD
139 =34 88143 j 84
Loc Symbol00 a
100 b
ExTEl linker mezcló los espacios de direcciones de los dos procedimientos en uno solo(relocación)
Se puede resolver el llamado a B()
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 12
Object file formats (OFF)Object file formats (OFF)
● Es clave para la performance del sistema.● Algunos preveen su interacción con el paginado.● Se suele utilizar el mismo formato para:
– Ejecutables– Objetos– Bibliotecas
● Que dos Sistemas Operativos tengan el mismo OFF no significa que los programas de uno puedan correr en el otro.
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 13
DOS comDOS com● Son los que tienen extensión .com. Microsoft los
llama bin o binary file● Se hacen con exe2bin.● Se cargan en una dirección fija de memoria
(0x100).● Datos y código estan en el mismo segmento.● Su tamaño máximo es de 65,280 (0xFF00) bytes● Se puede decir que es un “null file format”
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 14
DOS exeDOS exe
● Aparece en DOS 2.0.● Su primer byte o
(Magic number) es “MZ”, iniciales de Mark Zbikowski.
● Tiene previsión para relocación en memoria..
RLD
Imagen binaria del TXT
File Header
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 15
Header del DOS .exeHeader del DOS .exe
char signature[2] = "MZ"; // magic number short lastsize; // # bytes used in last block short nblocks; // number of 512 byte blocksshort nreloc; // number of relocation entries short hdrsize; // size of file header in 16 byte paragraphs short minalloc; // minimum extra memory to allocateshort maxalloc; // maximum extra memory to allocate void far *sp; // initial stack pointer short checksum; // ones complement of file sum void far *ip; // initial instruction pointer short relocpos; // location of relocation fixup table short noverlay; // Overlay number, 0 for program char extra[]; // extra material for overlays, etc. void far *relocs[]; // relocation entries, starts at relocpos
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 16
Common Object File FormatCOFF
Common Object File FormatCOFF
● Aparece en Unix pero se usa en otros ambientes.● Se compone de varias secciones separadas por
headers (con limitación de longitud).● Se usa para bibliotecas.
– Aunque no de enlace dinámico. AIX usa XCOFF
● Soporta debug (pero solo de C).● nm(1) lo puede inspeccionar.
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 17
Windows Portable Executable (PE )
Windows Portable Executable (PE )
● Es una adaptación del COFF. El Windows hace un wrapping del COFF.
● Se usa en Intel, ARM y SuperH (Windows CE).● Además Intel lo adoptó para EFI.● Microsoft también lo usa en .net para la máquina
virtual Common Language Runtime .● Mono lo debió adoptar (quiere ser compatible a
nivel binario con .net).
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 18
PE de Microsoft PE de Microsoft● Su magic es “PE” pero comienza con un
“MZ” por “compatibilidad”.● Tiene definido espacio para resources.● Tiene definido tablas para el uso de
bibliotecas compartidas.● Hay herramientas de análisis.● En 64 bits se lo conoce como PE+ o PE32+
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 19
PE de Microsoft PE de Microsoft● No tiene PIC (Position-Independent Code)● Todas las direcciones se fijan en
referencia a una dirección base.● Si esa dirección ya lo uso “otro” se deben
recalcular todas las direcciones.● Las DLLs de Microsoft tiene una dirección
base predefinida para que no colisionen entre sí.
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 20
Executable and Linkable Format(ELF)
Executable and Linkable Format(ELF)
● Sirve para ejecutables y bibliotecas.
● Un directorio permite agregar nuevas secciones.
● Tiene previsiones para emulación– Linux, Solaris, IRIX,
FreeBSD, NetBSD, OpenBSD, PlayStation
Referencias: La especificación y man elf(5).
75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo Clúa
Lic. Adrián MuccioFIUBA 2015 21
Binarios UniversalesBinarios Universales● Mac usa la idea en 2005 para
facilitar el pase de PPC a Mactel. – Ya la había usado al pasar de
68k a PPC.● Se basa en el concepto de
fat binary. El formato es Mach-O.– Puede usar un emulador: Rosetta– Puede tener código ppc-32,ppc-64 y
x86-64 EM64T