You are on page 1of 25

Sistemas Operativos

Administracin de
Memoria I

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Agenda
Introduccin.
Conceptos bsicos.
Preparacin de un programa para ejecutar.
reas de la memoria de un proceso.
Asociacin de direcciones.
Ensamblaje dinmico y bibliotecas compartidas.
Asociacin dinmica de la memoria a nivel de
proceso.
Carga dinmica.
Direccionamiento.
Tipos de direccionamiento.
Proteccin de memoria.
Asignacin de memoria.
Swapping.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Introduccin
La administracin de la memoria es una de las ms
importantes tareas del sistema operativo.
En los sistemas operativos multiprogramados es
necesario mantener varios programas en memoria al
mismo tiempo.
Existen varios esquemas para la administracin de
la memoria y requieren distinto soporte del hardware.
El
sistema
operativo
siguientes tareas:

es

responsable

de

las

Mantener que partes de la memoria estn siendo


utilizadas y por quien.
Decidir cuales procesos sern cargados a memoria
cuando exista espacio de memoria disponible.
Asignar y quitar espacio de memoria segn sea
necesario.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Conceptos bsicos
Preparacin de un programa para ejecutar.
Los programas son escritos, por lo general, en
lenguajes de alto nivel y deben pasar por distintas
etapas antes de ser ejecutados:
Compilacin (compile): Traduccin del cdigo fuente
del programa a un cdigo objeto.
Ensamblaje (linker): Ensamblaje de varios cdigos
objetos en un archivo ejecutable.
Carga (load): Asignacin del archivo ejecutable a la
memoria principal del sistema.
Un programa ejecutable consta de secciones de
instrucciones y de datos.
El linker surge ante la necesidad de modularizar y
reutilizar
cdigo.
Se
resuelven
las
referencias
externas, as como las posiciones relativas de los
smbolos en los diferentes mdulos, formando uno
consolidado.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Conceptos bsicos

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Conceptos bsicos
Cuando un proceso es creado el cargador (loader) del
sistema crea en memoria el espacio necesario para la
diferentes reas y la carga con la informacin.
El compilador, ensamblador, sistema operativo y
libreras dinmicas deben cooperar para administrar la
informacin y realizar la asignacin.
Compilador: genera un archivo objeto para cada
archivo fuente. La informacin est incompleta, ya
que se utilizan informaciones de otros archivos (cmo
llamados a funciones externas).
Ensamblador: combina todos los archivos objetos de
un programa dentro de un nico archivo objeto.
Sistemas operativos: Carga los programa en memoria,
permite compartir la memoria entre varios procesos y
brinda mecanismos a los procesos para obtener ms
memoria en forma dinmica.
Libreras dinmicas: proveen rutinas de asignacin
dinmica (malloc, free).
Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Conceptos bsicos
La memoria de un proceso cuando ejecuta se estructura
en diferentes reas:

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Asociacin de direcciones
(Address binding)
La asignacin de la ubicacin de un programa en
memoria principal puede ser realizada en varios
tiempos:
Tiempo compilacin (compile time): El programa
ser asignado a un lugar especfico y conocido
de la memoria fsica. La direcciones de memoria
son referenciadas en forma absoluta (static
relocation).
Tiempo de carga (load time): La asignacin del
lugar de memoria donde ser cargado el programa
es
hecho
al
momento
de
la
carga.
Las
direcciones de memoria deben ser referenciadas
en forma relativa (dynamic reolcation).
Tiempo
de
ejecucin
(execution
time):
Un
programa puede variar su ubicacin en memoria
fsica en el transcurso de la ejecucin.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Ensamblaje dinmico (dynamic linking)


En la etapa de ensamblaje de un programa las
bibliotecas
compartidas
pueden
incorporarse
al
archivo ejecutable generado (ensamblaje esttico
static linking).
Ej. en Linux: /usr/lib/libc.a
Otra alternativa es que las bibliotecas compartidas
sean cargadas en tiempo de ejecucin (ensamblaje
dinmico dynamic linking).
Ej. en Linux /lib/libc.so, en windows system.dll

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Ensamblaje dinmico (dynamic linking)


En los archivos ejecutables las bibliotecas
estticas son incorporadas, mientras que para las
dinmicas se mantiene una referencia.
Ej. en Linux comando ls:
$ ldd /bin/ls
librt.so.1 => /lib/librt.so.1 (0x4001c000)
libc.so.6 => /lib/libc.so.6 (0x40030000)
libpthread.so.0 => /lib/libpthread.so.0 (0x40149000)
/lib/ld-linux.so.2 (0x40000000)

Esto permite, junto con la carga dinmica, hacer


un uso ms eficiente de la memoria, ya que las
bibliotecas dinmicas se cargan una nica vez en
memoria principal.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Asignacin dinmica a nivel de proceso


La asignacin dinmica en un proceso se da a travs
de:
Asignacin en el Stack.
Asignacin en el Heap.
A nivel del stack la memoria se comporta en forma
ms predictiva.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Asignacin dinmica a nivel de proceso


La asignacin en el heap no es predictiva como en
el caso del stack:

En este caso se genera fragmentacin de la memoria.


Los sistemas operativos optan por delegar la
administracin de esta memoria a libreras de
usuario.
Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Carga dinmica (dynamic loading)


El tamao de un proceso en memoria est limitado
por la cantidad de memoria fsica del sistema.
Con el fin de lograr un mayor aprovechamiento de la
memoria se puede utilizar la carga dinmica.
La carga dinmica dispone que una rutina no es
cargada en memoria fsica hasta que no sea invocada.

La ventaja de la carga dinmica es que las rutinas


que no son utilizadas, no son cargadas en memoria
fsica y, por lo tanto, no consumen recursos
innecesariamente.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Tipos de direccionamiento
Se definen varios tipos de direccionamientos:
Direccionamiento
fsico
(physical
address):
La
unidad de memoria manipula direcciones fsicas.
Direccionamiento virtual (virtual address): Son las
direcciones lgicas que se generan cuando existe
asociacin de direccionamiento
en tiempo de
ejecucin.
Para la asociacin de direccionamiento en tiempo de
compilacin o carga, las direcciones lgicas o fsicas
coinciden. No es as para la asociacin en tiempo de
ejecucin.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Tipos de direccionamiento
La traducciones de direcciones lgicas a fsicas
son hechas por la MMU (Memory Management Unit). Los
procesos solo manipulan direcciones lgicas y no
visualizan las fsicas, que solamente son vistas por
la MMU.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Proteccin de memoria

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Asignacin de memoria a nivel del sistema


La memoria, por lo general, es dividida en dos
particiones:
Sistema operativo residente.
Procesos de usuarios.
Es necesario un mecanismo de proteccin de memoria
entre los procesos entre s y el sistema operativo.

El registro de ubicacin (relocation register) y el


registro lmite son utilizados para realizar la
verificacin de accesos vlidos a la memoria.
Toda direccin lgica debe ser menor al valor del
registro lmite.
Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Estructuras para asignacin


El sistema operativo debe llevar
particiones ocupadas y libres.

cuenta

de

las

Los mtodos ms comunes utilizados son a travs de:

Mapa de bits.
Lista encadenada.
Diccionarios (hash).

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Estrategia de asignacin
En la asignacin de memoria a un proceso existe
varias estrategias:
First fit: Asigna el primer agujero de memoria
libre que satisface la necesidad.
Best fit: Asigna el mejor agujero de memoria
libre que exista en la memoria principal.
Worst fit: Asigna el requerimiento en el agujero
ms grande que exista en la memoria principal.
Estudios de simulacin han mostrado que first-fit y
best-fit lograron mejores rendimientos en tiempo de
asignacin y utilizacin de la memoria que la
estrategia worst-fit.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Estrategia de asignacin

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Estrategia de asignacin

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Fragmentacin
Las estrategias de asignacin presentadas muestran
problemas de fragmentacin externa.
En la memoria van quedando una gran cantidad de
agujeros chicos, que no son asignados. La memoria
libre
est
fragmentada
en
una
gran
cantidad
agujeros chicos.

La fragmentacin externa existe cuando existe


suficiente
memoria
libre
en
el
sistema
para
satisfacer un requerimiento de memoria, pero no es
posible asignarlo debido a que no es contiguo.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Swapping
En sistemas multiprogramados ms de un proceso est
cargado en memoria principal. Para obtener un mayor
nivel de multiprogramacin, los procesos que no estn
ejecutando pueden ser llevados a disco temporalmente.
El disco (backing store) es un espacio donde se
dispondrn las imagen de memoria de los procesos.
Al mecanismo de llevar un proceso desde memoria
principal a disco se le denomina swap-out. Al inverso
se le denomina swap-in.
El mayor tiempo consumido
tiempo de transferencia.

en

el

swaping

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

es

el

Swapping

Sistemas Operativos - Terico 2010 - Administracin de Memoria I

Swapping
El lugar de memoria donde ser asignado un proceso
en el momento de swap-in depende del mtodo de
asociacin de direccionamiento (address binding)
utilizado.
En la asociacin en tiempo de compilacin o de
carga (compile, load time) debe ser el mismo lugar,
mientras que si la asociacin es en tiempo de
ejecucin la asignacin del lugar es libre.

Sistemas Operativos - Terico 2010 - Administracin de Memoria I