Está en la página 1de 36

Memoria

Primera Parte
Versin: Agosto 2014
Palabras Claves: Procesos, Espacio de Direcciones, Memoria, Seguridad,
Particiones, Fragmentacin


Algunas diapositivas han sido extradas de las ofrecidas para
docentes desde el libro de Stallings (Sistemas Operativos)
y el de Silberschatz (Operating Systems Concepts).
Tambin se incluyen diapositivas cedidas por Microsoft
S.A.


Divisin Lgica de la Memoria para alojar a
mltiples procesos
La Memoria debe ser asignada
eficientemente para contener el mayor
numero de procesos como sea posible.
Reubicacin
El programador no debe ocuparse de conocer
donde ser colocado el programa para ser ejecutado.
Mientras un proceso se ejecuta, puede ser sacado y
trado a la memoria (swap) y colocarse en diferentes
lugares.
Las referencias a la memoria se deben traducir
segn direccin actual del proceso.
Proteccin
Los procesos no deben ser capaces de referencias
direcciones de memoria de otros procesos (salvo que
tengan permiso)
El chequeo se debe realizar durante la ejecucin:
El SO no puede anticipar todas las referencias a memoria
que un proceso puede realizar.
Comparticin
Permitir que varios procesos accedan a la misma
porcin de memoria.
Ej: Rutinas comunes, libreras, espacios explcitamente
compartidos, etc.
Lleva a un mejor uso de la memoria, evitando
copias incesaras de instrucciones

Rango de direcciones (a memoria) posibles que un
proceso puede utilizar para direccionar sus
instrucciones y datos.
Varia en un rango dependiendo de la arquitectura
32 bits: 0 .. 2
32
- 1
64 bits: 0 .. 2
64
1
Debe ser independiente de la ubicacin real del
proceso en la memoria
Lgicas
Referencia a una localidad de memoria independiente de la
asignacin actual de los datos en la memoria.
Se debe realizar una traduccin a una direccin fsica.
Fsicas
La direccin absoluta en la memoria principal.
Registro Base
Direccin de comienzo del proceso.
Registro Limite
Direccin final del proceso o medida del proceso.
Su valor se fija cuando el proceso es cargado
a memoria.
Se utiliza la direccin lgica junto con el
registro base para obtener una direccin
fsica (segn la tcnica utilizada).
El resultado se compara con el valor del
registro limite (segn la tcnica utilizada).
Si la direccin generada es incorrecta, se
genera una interrupcin al SO.
Las direcciones en los
programas fuentes son
simblicas
Compiladores relaciones
direcciones simblicas a
direcciones reubicables
El linkeditor/cargador
relaciona las direcciones
reubicables en direcciones
absolutas
Source
program
Compiler or
assembler
Object
module
other
object
modules
Linkage
editor
Load
module
loader
System
libraries
In-memory
binary
memory
image
dynamically
loaded
system
libraries
load
time
Compile
time
execution
time
(run time)
La CPU trabaja con direcciones lgicas. Para acceder a memoria
principal, se deben transformar en direcciones absolutas
Resolucin de direcciones (address-binding): transformar la
direccin lgica en la direccin fsica correspondiente
Resolucin en momento de compilacin y en tiempo de
carga
Direcciones Lgicas y Fsicas son idnticas
Resolucin en tiempo de ejecucin
Direcciones Lgicas y Fsicas son diferentes
Direcciones Lgicas son llamadas Direcciones Virtuales
El mapeo entre Virtuales y Fsicas es realizado por hardware
(MMU (Memory Management Unit)

Dispositivo de Hardware que mapea direcciones
virtuales a fsicas
Es parte del Procesador
Re-programar el MMU es una operacin privilegiada
que solo puede ser realizada en Kernel Mode
El valor en el registro de realocacin es sumado a
cada direccin generada por el proceso de usuario al
momento de acceder a la memoria.
Los procesos nunca ver direcciones fsicas






MMU
memory
CPU
relocation
register


+
logical
address
642
physical
address
7642
7000
Una rutina no es cargada hasta que no es llamada
Todas las rutinas se mantienen en el disco en un formado
reubicable
Cuando una rutina invoca a otra:
Se chequea que ya no haya sido cargada
Si no se cargo, se llama al cargador para que la cargue
El cargador actualiza el espacio de direcciones del proceso
El control es pasado a la nueva rutina
Mejor utilizacin de la memoria
Rutinas no utilizadas no son nunca cargadas
Similar a la carga dinmica
El linkeo es postergado hasta el momento de run-time
Las libreras dinmicas no son adjuntadas estticamente al
proceso, solo un pequeo stub es adjuntado.
El stub indica como cargar la rutina apropiada
Todos los programas pueden utilizar la misma
copia de una librera (cdigo) (DLLs)
El Linkeo Dinmico requiere soporte del S.O.
S.O. es el nico que puede localizar una librera en el
espacio de direcciones de otro proceso
La memoria principal debe ser organizada para contener el S.O.
(rutinas, libreras, estructuras) y procesos
El S.O. debe protegerse de cambio de los procesos
Procesos deben protegerse unos de otros
nica Particin:
Los procesos ocupan una nica particin de memoria
La proteccin se implementa por un limite y un registro de
reubicacin





CPU
<
limit
register
relocation
register
+
memory
trap, addressing error
logical
address
no
yes
physical
address
OS
La memoria es dividida en varias regiones
(particiones).
Los procesos (su espacio de direcciones) se
colocan en las particiones segn su tamao.
Tcnicas:
Particiones Fijas
Particiones Dinmicas
Regiones definidas con limites fijados
Tamaos:
Igual Tamao
Cualquier proceso cuyo tamao es menor igual que la
particin puede ser colocado en una particin libre.
Si todas estn ocupadas Swap
Un programa puede no entrar en la particin
Ineficiencia: Cualquier programa, sin importar su tamao,
ocupara una particin

Diferente Tamao
Evita el problema de las particiones de igual tamao.
Complejidad en el algoritmo de seleccin de particin para
un proceso.

Las particiones son de tamao y numero
variable
Los procesos son colocados exactamente en
particiones de igual a su tamao (generadas
dinmicamente)

Espacio libre de la memoria que no puede ser
utilizado por NO encontrarse de manera contigua
Interna Particiones Fijas
Espacio dentro de la particin sin utilizar
Externa Particiones Dinmicas
Cada vez que entra y sale un proceso se genera huecos en la
memoria, en los que eventualmente un proceso no podra
entrar, pero si entrara si unimos todos los huecos
COMPACTACION
Particiones Fijas de igual tamao
No se necesita un algoritmo
Particiones Fijas de diferente tamao y
Particiones Dinmicas:
First Fit
Best Fit
Worst Fit
Next Fit

Best fit
Selecciona la particin mas pequea que contiene al proceso
Mucho overhead en la bsqueda
En particiones dinmicas: se generan muchos huecos
pequeos de memoria libre Fragmentacin externa
First Fit
Recorre las particiones libres en orden, buscando la primera
que contenga el proceso.


Next fit
Mantiene las particiones libres como una lista circular.
Selecciona la primer particin que encuentra que contenga el
proceso
Worst Fit
Selecciona la particin libre mas grande que contenga el
proceso.
Mal uso en Particiones Fijas
Buen uso en Particiones Dinmicas.
El tamao de los procesos y sus datos
puede exceder el tamao de la
memoria
Conceptos:
Separar el programa en mdulos
Cargar los mdulos alternativamente
El dispositivo de superposiciones
localiza los mdulos en el disco
Los mdulos superpuestos se
guardan como imgenes absolutas de
memoria
Se requiere soporte de los
compiladores
Symbol
table
Common
routines
Overlay
driver
Example:
multi-pass compiler
Pass 1
Pass 2
Un proceso puede ser temporalmente
sacados de la memoria (swapped out) a
un disco de manera de permitir la
ejecucin de procesos.
Si se descarga considerando las
direcciones fsicas
Al hacer swapped in se debe cargar en
el misma espacio de memoria que
ocupaba antes
Si se descarga considerando las
direcciones lgicas
Al hacer swapped in se puede cargar en
cualquier espacio de direcciones de
memoria
Process
P
1
Process
P
2
Swap
out
Swap
in
Main memory
Backing store
Operating
system
User
space
FIN



Consultas?

También podría gustarte