Marisa Gil Procesos y Flujos Traducción de direcciones 1. Compilación 2. Montaje 3. Carga/ejecución 4. Reubicación/protección Bibliografía Silberschat and Galvin Sistemas Operativos. Conceptos fundamentales. Parte III: Administración de almacenamiento Stallings Operating Systems. Fourth Edition. Chap 7.1, 7.2, Appendix 7A (Loading and Linking) Levine Linkers&Loaders Morgan Kaufmann Publishers, 2.000 Introducció als Sistemes Operatius 1 Marisa Gil TRADUCCION DE DIRECCIONES Recordar..... • Todo lo que se ejecuta ha de estar en memoria principal • Multiprogramación => varios procesos en memoria física • Todos los procesos comparten el mismo espacio físico => • el SO ha de garantizar protección • después de la CPU, la memoria es el recurso más importante para gestionar memoria física .EXE .C ... fichero fuente Introducció als Sistemes Operatius fichero ejecutable fichero cargado 2 Marisa Gil TRADUCCION DE DIRECCIONES Construcción de un fichero ejecutable • EDICIÓN: editar en LAN el programa, con nombres de variables y funciones con un significado para el programador. • COMPILACIÓN: a partir de los nombres, genera símbolos identificando tipos, direcciones.... Marca los nombres desconocidos (no resueltos) que están en otros ficheros o en librerías. • MONTAJE: sustituye los símbolos por números; busca todas las referencias no resueltas vinculándolas a direcciones relativas generando un único fichero de salida; ajusta las direcciones de memoria del código y de los datos. Generalmente, también genera una tabla de símbolos para el cargador, debugger u otros programas posteriores. • CARGA: copia un fichero ejecutable en memoria física. Tiene que ver con la reubicación. Introducció als Sistemes Operatius 3 Marisa Gil TRADUCCION DE DIRECCIONES Construcción de un fichero ejecutable cargador librerías con otros módulos objeto editor montador compilador código compilar código objeto fuente (LAN) montar DISCO Introducció als Sistemes Operatius código ejecutable cargar en memoria física MEMORIA 4 Marisa Gil TRADUCCION DE DIRECCIONES Compilación int a() {.....} /* Tabla de símbolos */ a: proc 500 func: proc extern main() COMPILACIÓN { a(); func(); /* Codigo */ 0: /* Inicio main */ ..... } fichero fuente 100: call 500 102: call func ..... 500: /* codigo de a */ ..... fichero objeto Introducció als Sistemes Operatius 5 Marisa Gil TRADUCCION DE DIRECCIONES Montaje (linker) • El montaje es la única etapa del proceso de compilación que maneja todo el código del programa junto y hace transformaciones que afectan al programa como unidad. • El trabajo básico de un montador o cargador es la resolución de símbolos: vincular nombres de más abstracto a más concreto. • Tiene una fase de reubicación de código: traduce direcciones de módulos a direcciones relativas al programa como unidad. Reubicación: Proceso de asignar direcciones cargadas en las diversas partes de un programa y ajustar los datos y el código en el programa para reflejar las direcciones asignadas. El montador construye un programa a partir de múltiples subprogramas. Introducció als Sistemes Operatius 6 Marisa Gil TRADUCCION DE DIRECCIONES Carga Definición: copia de un programa desde un almacenamiento secundario (por ejemplo, disco) a memoria principal. • Las direcciones en las cuales se ejecuta un programa no se conocen hasta que el SO carga el programa en memoria • En el proceso de carga, el programa es reubicado como un todo en la dirección de carga. • Aunque hay un considerable solapamiento de tareas en la actualidad, se puede decir que el montador trata principalmente con la resolución de símbolos y el cargador con la carga de programas. • Ambos pueden reubicar. • Ambos trabajan con código objeto. Introducció als Sistemes Operatius 7 Marisa Gil TRADUCCION DE DIRECCIONES Carga librerías fichero ejecutable programa montaje del programa carga del programa ficheros en código objeto memoria física Introducció als Sistemes Operatius 8 Marisa Gil TRADUCCION DE DIRECCIONES Memoria lógica versus memoria física Espacio de direcciones lógicas FFFFFFFFh Vista del Programador 1 Memoria física Sistema (2 GB) Usuario 1 (2 GB) 00000000h Vista del Programador 2 FFFFFFFFh Sistema (2 GB) 00000000h Usuario 2 (2 GB) FFFFFFFFh Sistema (2 GB) Vista del Programador 3 00000000h Introducció als Sistemes Operatius Usuario 3 (2 GB) 9 Marisa Gil TRADUCCION DE DIRECCIONES Espacio de direcciones • Protege a cada proceso del resto de procesos • Protege al SO de los procesos de usuario • Proporciona una gestión eficiente del almacenamiento disponible Es un concepto fuertemente ligado a la protección espacio de direcciones Introducció als Sistemes Operatius 10 Marisa Gil TRADUCCION DE DIRECCIONES Protección entre espacios de direcciones 0xFFFFF Programa de usuario multiprogramación programa 1 programa 2 programa 3 S.O. S.O. 0 • Modo de ejecución (usuario-kernel) • Fronteras entre espacios (direcciones límite) Introducció als Sistemes Operatius 11 Marisa Gil TRADUCCION DE DIRECCIONES Espacio de direcciones del SO • Accesible por todos los programas • Direcciones lógicas que pertenecen al espacio de direcciones de cada programas espacio del usuario espacio del sistema Introducció als Sistemes Operatius espacio lógico llamadas al sistema PCB buffers de E/S ... 12 Marisa Gil TRADUCCION DE DIRECCIONES Multiprogramación • Cuánta memoria asignar a cada proceso • Equiparticiones • Cantidad fija • Cantidad variable • Dónde ubicar a cada proceso • Momento de vincular la dirección lógica a la física • Vínculo estático/variable en ejecución • Grado de multiprogramación • Número máximo de procesos que se pueden cargar en memoria Introducció als Sistemes Operatius 13 Marisa Gil TRADUCCION DE DIRECCIONES MMU Alguien se ha de encargar de: • direcciones lógicas iguales convivan en el espacio físico sin problemas, • exista protección entre procesos y para el SO, • la gestión del espacio físico (libre y ocupado) sea eficiente @ lógica @ física CPU MMU Introducció als Sistemes Operatius 14 Marisa Gil TRADUCCION DE DIRECCIONES Registro de reubicación • También se conoce como Registro Base: • Contiene la dirección a partir de la cual está cargado el programa • El Sistema Operativo tiene su propio Registro de Reubicación (RR) • Además, el SO pude saltarse si quiere el RR y generar direcciones físicas • utilizar el RR del programa de usuario • generar directamente direcciones físicas MMU CPU @ lógica @física @ física (bypass del circuíto) Introducció als Sistemes Operatius 15 Marisa Gil TRADUCCION DE DIRECCIONES Registro de reubicación • Fijo: lo inicializamos al principio y ya no se modifica en toda la ejecución del programa. REUBICACIÓN ESTÁTICA. • Variable: puede modificarse su valor durante la ejecución de un programa: un programa puede moverse en memoria durante su ejecución. REUBICACIÓN DINÁMICA. RRS SO RRU 0 Carga en memoria P PSW RRU RRS 00 01 10 11 modo RRU bypass (inhibir el multiplexor) CPU Introducció als Sistemes Operatius RRS @lógica + @física 16 Marisa Gil TRADUCCION DE DIRECCIONES Protección • Controlar por hardware que no se supere la zona de memoria asignada RRU RRS RRU + TAMAÑO modo TAMAÑO CPU @lógica < sí + @física no error Introducció als Sistemes Operatius 17