You are on page 1of 39

Estructura y programacin de

computadoras
Semestre 2014-2

El cargador

Ing. Samuel Huerta Molina

CARGADORES Y LIGADORES
Los compiladores y ensambladores suelen traducir
un procedimiento a la vez

Guardan en memoria secundaria el resultado de la
traduccin.

Antes de que pueda ejecutarse el programa, todos
los procedimientos traducidos deben recuperarse y
ligarse correctamente.
La traduccin completa de un programa fuente se
efecta en dos pasos:

Compilacin o ensamblaje de los procedimientos
fuente

Encadenamiento (linking) o montaje de los
mdulos objeto.
CARGADOR
Es un programa especial, parte del sistema
operativo que tiene como propsito colocar
en la memoria las instrucciones y datos de un
programa o informacin codificada en
lenguaje mquina, para que entonces la
computadora pueda procesarla.

Un cargador es un programa que realiza la
funcin de carga, pero muchos cargadores
tambin incluyen relocalizacin y ligado.

Algunos sistemas tienen un
ligador para realizar las
operaciones de enlace, y un
cargador separado para
manejar la relocalizacin y
la carga. Los procesos de
ensamblado y carga estn
ntimamente relacionados.

El cargador es normalmente
un programa pequeo que
permite al usuario entrar
directamente las palabras de
instruccin y datos a
direcciones concretas de la
memoria mediante, un
teclado una cinta
magntica.
Las funciones mas importantes de un
cargador son: colocar un programa objeto
en la memoria e iniciar su ejecucin. Si
tenemos un cargador que no necesita
realizar las funciones de ligado y
relocalizacin de programas, su operacin
es simple pues todas las funciones se
realizan en un solo paso. Se revisa el
registro de encabezamiento para comprobar
se ha presentado el programa correcto
para la carga (entrando en la memoria
disponible).
A medida que lee cada registro de texto,
el cdigo objeto que contiene pasa a
direccin de la memoria indicada. Cuando
se encuentra el registro de fin, el
cargador salta a la direccin
especificada para iniciar la ejecucin
del programa cargado. Un programa objeto
contiene instrucciones traducidas y
valores de datos del programa fuente y
especfica direcciones en memoria dnde
cargaran estos elementos.
Carga que lleva el programa objeto a la
memoria para su ejecucin.

LIGADOR
Es un programa que enlaza todos los
programas o mdulos obteniendo lo
que denominamos programa
ejecutable.

Es un programa que enlaza distintos
mdulos o programas que poseen
subprogramas. Adems incorporan las
denominadas rutinas de libreras en
caso de solicitarlas el propio programa.
FUNCION
CARGADOR LIGADOR

-Colocar un programa
objeto en la memoria
e iniciar su ejecucin.
-Extraer informacin
De algn medio
Exterior a memoria .


-Enlazar cdigo intermedio
compilado independientemente
en un solo mdulo de carga

-Incorpora las denominadas
rutinas de libreras en caso de
solicitarlas el propio programa.

- Reducir procedimientos
traducidos por separado y
enlazarlos para que se ejecuten
como una unidad llamada
programa ejecutable.
LIGADOR
DIFERENCIAS ENTRE CARGADOR Y
LIGADOR
*Un cargador tiene como funcin
principal la de subir un programa objeto
que se encuentra en almacenamiento
secundario a la memoria para que pueda
ser ejecutado; durante el proceso de
carga, si el programa que se va a
ejecutar requiere o tiene definidas
algunas referencias externas que pueden
ser partes de programas o programas en
si, entonces es cuando entra el proceso
de liga.
Cmo funciona un cargador?

*El ncleo del sistema
operativo trae el programa a
memoria y empieza a
ejecutarlo. Para empezar el
programa, el sistema
operativo realiza los
siguientes pasos:
*Lee la cabecera del fichero ejecutable
para determinar el tamao de los
segmentos de texto y datos.

*Crea un espacio de direcciones nuevo
para el programa. Este espacio de
direcciones es suficientemente grande
para albergar los segmentos de texto y de
datos, junto con el segmento de pila.

*Copia instrucciones y datos del fichero
ejecutable en el nuevo espacio de
direcciones .

*Copia los argumentos pasados al programa
en la pila.

*Inicia los registros de la maquina, por
lo general todos los registros se ponen a
cero, pero al puntero de la pila hay que
asignarle la direccin de la primera
posicin libre de la pila.

*Salta a la rutina de inicio que copia los
argumentos del programa de la pila a registros y
llama a la rutina main del programa, si la
rutina main retorna, la rutina de inicio termina
el programa con la llamada al sistema de salida.

CARGADOR
PROGRAMA CARGADO A MEMORIA
TIPOS DE CARGADORES
CARGADORES INICIALES

Indican a la computadora la forma de
poner, dentro de la memoria principal,
unos datos que estn guardados en un
perifrico de memoria externa (cinta,
disco, etc.). Sirven para cargar en la
memoria pequeos programas que
inician el funcionamiento de una
computadora.

Algunas computadoras de
carcter general no tienen
en memoria ningn programa
de forma permanente y cuando
se desconectan pierden toda
la informacin de su memoria
interna. Al volverlos a
conectar no son capaces de
controlar ningn perifrico
(teclado, discos, etc.).

Cargadores absolutos

Este es un programa que carga cada
instruccin del programa objeto en una
posicin fija y preestablecida. Por tanto, cada
instruccin tiene una direccin absoluta. El
cargador absoluto lee simplemente la lnea
de cdigo objeto que contiene la direccin de
inicio de las instrucciones y datos, y carga las
palabras (o bytes) sucesivas en posiciones de
memoria sucesivas.

.
Los programas y datos se deben
almacenar cada vez en posiciones de
memoria distintas. Si se utilizan
cargadores absolutos, el programa
objeto se tendr que modificar para
que refleje la nueva posicin de
inicio de memoria. Esta es una
actividad larga y sujeta a errores.
En tales situaciones, se utilizan
cargadores con reubicacin .
Cargadores con reubicacin

En ocasiones, un mismo programa necesita
ejecutarse en diferentes posiciones de
memoria. Para esto la traduccin debe estar
realizada en forma adecuada, es decir, no
utilizando referencias absolutas a direcciones
de memoria, sino referencias relativas a una
direccin especial llamada direccin de
reubicacin.

El clculo de las
direcciones reubicables lo
realiza el propio cargador a
medida que va guardando las
instrucciones en el espacio
de memoria que le indique el
usuario o el propio sistema
operativo de la mquina.

Cargadores ligadores

Conocidos tambin por su trmino ingls Link editor o
simplemente Linker, A la accin de montar se le
llama asimismo vulgarmente <<lincar>>.

Montar un programa consiste en aadir al programa
objeto obtenido en la traduccin las rutinas
externas a las que hace referencia dicho programa.

El ensamblador debe permitir dichas referencias y las
rutinas deben estar a su vez en lenguaje mquina
guardadas en algn elemento accesible por el
montador.

Dichas rutinas se encuentran
guardadas en un fichero especial al
que suele denominarse librera,
porque estn almacenadas todas las
rutinas externas susceptibles de
ser utilizadas por los diferentes
programas del usuario.

All va el programa ligador cuando
esta realizando el montaje de un
programa a buscarlas y las adjunta
al programa objeto.


CARGADORES BOOTSTRAP

El programa cargador, una vez situado en
la memoria del computador, cargar el
programa de aplicacin y los datos.
Pero, previamente, se ha debido cargar
el cargador en la memoria y esto se
puede realizar por uno de los mtodos
siguientes:


Entrada Manual: Mediante el
teclado.
Entrada por ROM: Es posible
tener las instrucciones de
inicializacin almacenadas
permanentemente en alguna
porcin de la ROM, Al estar
el programa almacenado en
ROM se elimina tambin la
posibilidad de borrados
accidentales.
Bootstrap: En ingles
(bootstrapping), Es generalmente un
trmino ms extenso para
el arranque, o proceso de inicio de
cualquier ordenador. Suele
referirse al programa que arranca
un sistema operativo como por
ejemplo GRUB, Lilo o NTLDR. Se
ejecuta tras el proceso POST de
la BIOS.
Se ejecuta tras el proceso POST de
la BIOS. Tambin es llamado "Bootstrap
Loader" (cargador de inicializacin). Una
vez el PC arranca, comienza a ejecutarse
el cdigo que se encuentra en la dir.
F000:FFF0 el cual pertenece al ROM-BIOS y
es el encargado de realizar una serie de
tests e inicializaciones. Esta rutina se
llama POST (Power On Self-Test). Una vez
que la BIOS termina con sus tests e
inicializaciones carga el primer sector
BOOTSTRAP
Un cargador efecta la tarea
de introducir los programas
en la memoria de la
computadora. Se estudiarn
tres tipos de introductores
o cargadores: Cargadores
binarios, cargadores
localizadores y cargadores
encadenadores .
CARGADOR BINARIO
Cuando un programa se usa muchas
veces es conveniente tener una
copia, ya ensamblada en binario
absoluto y en cualquier medio
externo (fichas cintas, discos,
etctera) para evitar el tiempo de
ensamblaje cuando se pretenda
ejecutar otra vez.
Este programa en binario
absoluto se introduce en la
computadora mediante un
cargador binario . cuyo
trabajo es muy sencillo, y
slo suele tener como
caracterstica especial el
que efecta una comprobacin
de la informacin que pasa a
la memoria
Un cargador localizador acta
sobre un programa en binario
localizable (subprogramas) que
lleva, como ya se ha visto,
informacin complementaria para
facilitar la conversin en
direcciones absolutas. De esa forma
se convierte en un programa en
binario absoluto en a memoria de
la computadora y se le aade a cada
direccin relativa la direccin
origen del programa.
Cuando los programas son
grandes puede faltar sitio en
la memoria para mantener
simultneamente el cargador y
el programa que est siendo
introducido; por lo cual se
suele guardar el cargador en el
espacio que ser usado para el
almacenaje de datos.
CARGADORES DE ENCADENAMIENTO
Es, en cierto modo, la unin de
un editor de encadenamiento con
un cargador localizador. Parte
de un subconjunto de
subprogramas en formato
semicompilado o simblico
binario y lo convierte en un
solo programa en binario
absoluto almacenado en memoria.
CARGADORES DE ARRANQUE Con la
mquina vaca e inactiva, no hay
necesidad de hacer relocalizacin
de programas, tan solo se puede
especificar la direccin absoluta
del programa que se cargue en
primer lugar. En la mayora de los
casos, este programa es el sistema
operativo, que ocupa un lugar
predefinido en la memoria.
Esto significa que se necesitan algunos
medios para realizar las funciones de un
cargador absoluto. Una opcin es que el
operador introduzca en la memoria el
cdigo objeto de un cargador absoluto,
utilizando los interruptores en la
consola del computador. Algunos
computadores requeran que el operador
hiciera exactamente eso. Sin embargo,
este proceso es demasiado incmodo y
propenso a errores para ser una buena
solucin del problema .