75-08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio
Facultad de Ingeniería Universidad de Buenos Aires LinkersLinkers Uso del Linker (a) Traducción
Programa Fuente 1 Programa Objeto 1
Traductor
Programa Fuente 2 Programa Objeto 2
Traductor Programa Fuente 3 Programa Objeto 3
75-08 Sistemas Operativos 2 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Traducció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 3 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Traducció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 4 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Link-Editor
Mezcla las direcciones de cada módulo Programa Objeto 1 en un único espacio de direcciones.
Programa Objeto 2 Linker Programa Ejecutable
Además de ejecutable la salida puede ser: ● Programa Objeto 3 Otro programa objeto ● Una biblioteca La entrada puede ser también ● Un ejecutable ● Una biblioteca
75-08 Sistemas Operativos 5 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Loader
Memoria
Programa Ejecutable Loader Ejecutable
Se llama binding al proceso de resolver El binding Bibliotecas las llamadas a puede hacerse en Bibliotecas funciones de biblioteca ejecución
Bibliotecas En algunos sistemas, el compilador llama ya cargadas al linker (gcc llama a ld)
75-08 Sistemas Operativos 6 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Compilando Paso 1 TXT Paso 2 00 Start a .... 00 Start a Procedure a() 20 LR 1,addr(j) .... integer j; 24 ADD, 1,=10 20 LR 1,04 begin 28 ST 1,addr(j) 24 ADD, 1,08 ...... 28 ST 1,04 j=j+10; 60 CALL B ...... 60 CALL B b() 96 END ... end; DATA Relocation Dictionary RLD 00 Data a El código objeto 04 DS (j) Loc Symbol Pos contiene, entre otras 08 DC 10 #=10 23 j 04 ... cosas, TXT, DATA, 76 End Data a 27 =10 08 RLD 31 j 04 63 B ?
75-08 Sistemas Operativos 7 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Compilando (2) TXT 00 Start b Relocation Dictionary .... RLD Procedure b() 36 LR 1,08 integer j; Loc Symbol Pos begin 40 ST 1,04 ...... 39 =34 08 j=34; 43 j 04 ... end; Exports Table ExT DATA Loc Symbol El espacio de direcciones de 00 Data b 00 b b( ) es distinto del de a( ) 04 DS (j) 08 DC 34 (=34) ... La ExT es otro componente del objeto
75-08 Sistemas Operativos 8 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio 00 Start a .... Linkeando 20 LR 1,04 00 Start b 24 ADD, 1,08 .... 28 ST 1,04... 36 LR 1,08 60 CALL B 40 ST 1,04 ...... 96 END 00 Data b 00 Data a 04 DS (j) 04 DS (j) 08 DC 34 (=34) 08 DC 10 #=10 Link-editor ...... 76 End Data a Loc Symbol Pos 39 =34 08 Loc Symbol Pos 43 j 04 23 j 04 Loc Symbol 27 =10 08 00 b 31 j 04 en el próximo 63 B ? slide .... Loc Symbol 00 a
75-08 Sistemas Operativos 9 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Linkeando (2)
TXT DATA RLD
00 Data a Loc Symbol Pos 00 Start a 04 DS (j) 23 j 04 .... 08 DC 10 #=10 27 =10 08 20 LR 1,04 ... 31 j 04 24 ADD, 1,08 76 End Data a 63 B 100 28 ST 1,04... Se 60 CALL 100 80 Data b 139 =34 88 puede ... 84 DS (j) 143 j 84 resolver 96 END 88 DC 34 (=34) el ... llamado ExT 100 Start b El linker mezcló los a B() .... espacios de Loc Symbol 136 LR 1,88 00 a 140 ST 1,84 direcciones de los ... dos procedimientos 100 b en uno solo (relocación)
75-08 Sistemas Operativos 10 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio 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 11 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio DOS 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 12 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio DOS exe
File Header ● Aparece en DOS 2.0. RLD ● Su primer byte o (Magic number) es Imagen binaria del TXT “MZ”, iniciales de Mark Zbikowski. ● Tiene previsión para relocación en memoria..
75-08 Sistemas Operativos 13 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Header del DOS .exe char signature[2] = "MZ"; // magic number short lastsize; // # bytes used in last block short nblocks; // number of 512 byte blocks short nreloc; // number of relocation entries short hdrsize; // size of file header in 16 byte paragraphs short minalloc; // minimum extra memory to allocate short 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 14 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Common Object File Format COFF
● 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 15 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio 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 16 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio 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 17 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio 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 18 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Executable and Linkable Format (ELF)
● Sirve para ejecutables y bibliotecas.
● Un directorio permite agregar nuevas secciones.
● Tiene previsiones para emulación
– Linux, Solaris, IRIX, Referencias: La especificación FreeBSD, NetBSD, y man elf(5). OpenBSD, PlayStation
75-08 Sistemas Operativos 19 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Binarios 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
75-08 Sistemas Operativos 20 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio