Traducción de direcciones

Anuncio
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
Descargar