CARGA Y MONTAJE
· CARGA
El cargador sitúa él módulo de carga en la memoria principal,
comenzando en la posición X.
En general, se pueden aplicar tres métodos.
Carga absoluta.
Carga reubicable.
Carga dinámica en tiempo de ejecución.
CARGA ABSOLUTA
La carga absoluta necesita al módulo de carga ocupe siempre la misma
posición en la memoria principal.
La asignación de direcciones a la memoria de un programa la puede realizar
tanto el programador como en compilador o el ensamblador.
DESVENTAJAS: La desventaja de asociar las referencias a las direcciones
Especificas previas a la carga es que él módulo dela carga
resultante solo puede situarse en una región de la M. P.
Los programadores tendrán que conocer la estrategia de
asignación para situar los módulos.
Si se hace alguna modificación en el programa que
Suponga borrados en él módulo, se tendrá que cambiarse
todas las direcciones.
Por lo tanto seria conveniente, que las referencias a memoria se expresen simbólicamente.
Todas las referencias a una instrucción o elemento de datos se representan
inicialmente por un símbolo. Cuando se prepara él módulo
para la entrada a un cargador absoluto, el ensamblador o el compilador convertirán
todas estas referencias en direcciones específicas.
CARGAS REUBICABLES
En la carga reubicable el ensamblador o el compilador no genera direcciones
reales de Memoria Principal, sino direcciones relativas a algún punto
conocido (como el comienzo de un programa). Al comienzo del módulo de
carga se le asigna la dirección relativa “ 0 ” y todas las
demás dentro se expresan con relación al comienzo del módulo.
Con toda la memoria esta expresada en forma relativa, situar los módulos
en la posición deseada se convierte en una tarea sencilla. Si al módulo
va a ser cargado comenzando con la posición x, el cargador simplemente
generará x a cada referencia a la memoria a medida que carga él
módulo en la memoria.
CARGA DINAMICA EN TIEMPO DE EJECUCION
El cálculo de direcciones dinámicas proporciona una completa
flexibilidad.
Un programa puede cargarse en cualquier región de la Memoria Principal.
Mas tarde, la ejecución de programa puede interrumpirse y el programa
ser descargado de la Memoria Principal para ser posteriormente cargado en una
posición diferente.
· MONTAJE
Consiste en tomar como entrada una colección de módulos objetos
y generar un módulo de “carga” que:
Contenga módulos de programas y de datos para el cargador.
El montador crea un único módulo de carga que es concatenación
de todos módulos objetos. Además cada referencia interna de un
módulo debe cambiarse de dirección simbólica a una posición
dentro del módulo de carga total.
EDITOR DE MONTAJE
El montaje de direcciones dependerá: Del tipo de módulo de carga
De cuando se produzca el montaje.
Si se desea un módulo de carga reubicable, el montaje se realiza de
la siguiente manera:
_ Cada módulo objeto compilado se crea con referencias relativas al
comienzo del módulo.
_ Los módulos se unen en u único módulo de carga reubicable,
junto con las referencias
relativas al origen del módulo de carga.
Este módulo reubicable puede usarse como una para una carga reubicable
o para una dinámica durante la ejecución.
Los montadores que crean módulos de carga reubicable se conocen como
editores de montajes.
MONTADOR DINAMICO
Como en la carga es posible aplazar algunas funciones de montajes. Se emplea
para resaltar el montaje de algunos módulos externos hasta que él
módulo de carga se haya creado.
Así, él módulo de carga contiene referencias no resueltas
que pueden resolverse tanto a la carga como en la ejecución:
“MONTAJE DINAMICO EN TIEMPO DE CARGA”: se da en las siguientes etapas:
_ El módulo de carga se trae a la Memoria Principal.
_ Cualquier referencia a un módulo externo hace que el cargador lo busque,
lo cargue y
modifique las referencias a direcciones.
Existen ventajas: que podría llamarse carga estática:
Resulta fácil actualizar versiones del módulo externo. En el
estático cualquier cambio en el soporte requerirá volver a montar
él módulo de aplicación por completo.
EJEMPLO:
En los compiladores personales (PC) el software comercial se entrega en forma
de módulo de carga y no las versiones fuentes y objetos.
Tener el código de destino en un archivo de montaje dinámico
prepara el terreno para compartir automáticamente código.
El Sistema Operativo puede darse cuenta de que más de una aplicación
esta empleando el mismo código de destino.
Permite usarse para cargar una única copia del código en ves
de tener que cargar una copia para cada aplicación.
Resulta fácil ampliar la funcionalidad de un S. O. muy empleado.
Un productor puede proponer una nueva función útil para varias
aplicaciones y empaquetarla como un módulo de montaje dinámico.
“MONTAJE DINAMICO EN TIEMPO DE EJECUCIÓN”: parte del montaje
se pospone hasta el momento de la ejecución, las referencias externas
permanecen en el programa cargado cuando se realiza una llamada a un módulo
ausente el Sistema Operativo localiza, carga y lo monta en él módulo
llamador.
La estructura del módulo es estática y permanece sin cambios
durante la ejecución del proceso y de una ejecución a la siguiente.
Por el contrario en algunos casos no es posible determinar antes que módulos
objetos harán falta. La naturaleza de la transacción dictamina
que módulos de programas se necesitan y estos se cargan de la forma apropiada
y se montan con el programa principal.
La ventaja de emplear un montador dinámico es que no hace falta reservar
memoria para las unidades de programa a menos que se hagan referencias a los
mismos. Esta capacidad se emplea como soporte para los sistemas de segmentación.
esta informaciòn fue tomada de http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/GESTME02_archivos/tem3.htm