El documento describe tres métodos de carga de programas en memoria principal: carga absoluta, carga reubicable y carga dinámica en tiempo de ejecución. La carga absoluta requiere que los módulos siempre ocupen la misma posición de memoria, mientras que la carga reubicable permite que los módulos se carguen en cualquier posición a través de direcciones relativas. La carga dinámica proporciona la máxima flexibilidad al permitir que los programas se carguen y descarguen en cualquier región de memoria durante
2. CARGA
En el desarrollo de la creación de un proceso activo, el
primer paso consiste en cargar un programa en
memoria principal y crear una imagen del proceso
Bloque control de procesos
Código →→→ Código
Datos →→→ Datos
Código Objeto
Pila
Imagen del Proceso en Memoria
Principal
El cargador se sitúa en el módulo de carga en la
memoria principal, comenzando en la posición x.
En este proceso se deben cumplir las necesidades de
direccionamiento mostradas en la grafica anterior.
4. CARGA ABSOLUTA
El módulo de carga debe ocupar siempre la
misma posición de memoria principal.
La asignación de direcciones especificas a la
referencias de la memoria de un programa
se puede realizar en tiempo de
programación como también en tiempo de
compilación.
Es aconsejable permitir que las referencias a
memoria de un programa se expresen
simbólicamente y que se resuelvan en tiempo
de compilación.
5. Todo programador debe conocer la estrategia de
asignación deseada para situar los módulos en
memoria principal.
Si se realiza alguna modificación en el
programa, que afecte el cuerpo de modulo, se
tendrá que cambiar todas las direcciones de este.
6. CARGA REUBICABLE
El compilador no genera direcciones reales
de Memoria Principal, sino direcciones
relativas a algún punto conocido, que puede
ser 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 a
esta.
Si el 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.
7. DESVENTAJA
Elmódulo de carga resultante sólo puede situarse
en una región de memoria principal.
8. CARGA DINAMICA EN
TIEMPO DE EJCUCIÓN
La carga de direcciones dinámica
proporciona una completa flexibilidad.
Un programa puede cargarse en cualquier
región de la memoria principal.
Por ultimo, la ejecución del programa puede
interrumpirse y el programa que se haya
descargado en la memoria principal después
podrá ser cargado en otra posición.
9. MONTAJE
Consiste en tomar como entrada una
colección de módulos objeto y generar un
módulo de carga, que consiste de un
conjunto integrado de módulos de programa
y de datos para el cargador.
El montador crea un único modelo de carga
que es la unión de todos los módulos objeto.
Cada una de estar referencias puede
expresarse solo simbólicamente en un
módulo objeto no montado.
10. EDITOR DE MONTAJE
Son montadores que generan módulos de
carga reubicable.
Cada módulo objeto compilado se crea con
referencias relativas al comienzo del
módulo, todos estos módulos se unen en un
único modulo de carga reubicable, junto con
todas las referencias relativas al origen de
módulo de carga.
Este modulo puede usarse como entrada
para una carga reubicable o para una carga
dinámica durante la ejecución.
11. MONTADOR DINÁMICO
Se refiere a la practica d retrasar el
montaje d algunos módulos externos
hasta después de que el módulo de
carga se haya creado.
Estas referencias pueden resolverse tanto
en la carga como la ejecución.
12. MONTAJE DINAMICO
EN TIEMPO DE CARGA
Elmodulo de aplicación de trae a
memoria principal
Cualquier referencia a un modulo externo
hace que el cargador busque el módulo
destino. Lo cargue y modifique las
referencias a direcciones relativas de
memoria desde el comienzo del modulo
de aplicación.
13. MONTAJE DINÁMICO EN
TIEMPO DE EJECUCIÓN
Partedel montaje de pospone hasta el
momento de ejecución, las referencias
externas a los módulos destino
permanecen en el programa
cargado, cuando se realiza una llamada
a un módulo ausente, el sistema
operativo localiza el módulo, lo carga y lo
monta en el módulo llamador.