Está en la página 1de 27

GESTION DE LA

MEMORIA

StVaN
En un sistema operativo moderno, la gestin de la
memoria corre a cargo de un subsitema bsico que se
encarga de:

Presentar a los procesos un espacio de memoria contiguo, aunque se


estn utilizando diferentes espacios (memoria principal y memoria
secundaria)
Optimizar la manera en la que se utiliza la memoria:
Los datos e instrucciones con los que se trabaja deben estar en memoria principal
Los datos e instrucciones con los que no se trabaja pueden estar descargados a
memoria secundaria
Se debe evitar los fallos de pgina (necesitar algo que est en memoria
secundaria, lo que nos obliga a esperar a que se traiga hasta memoria principal)
Se debe utilizar la memoria principal disponible para acelerar la entrada/salida
(buffers y cach)
Entre los problemas que debe solucionar
la gestin de memoria se encuentran:

Reubicacin:
Como la memoria disponible estar compartida por varios procesos, el programador no
puede conocer mientras programa qu rea de memoria se asignar al proceso que est
programando. Cuando se ejecute el programa, el SO asignar un bloque de memoria libre,
que podr ser diferente en cada ejecucin.
Proteccin:

No resulta conveniente que un proceso pueda acceder


(para leer y/o modificar) al espacio de memoria asignado a
otro proceso. El SO debe garantizar la proteccin de
memoria, de manera que se eviten accesos indebidos
accidentales o intencionados.
Comparticin:
En ocasiones algunos procesos necesitan intercambiar
datos. Estos procesos pueden querer compartir un rea de
memoria a la que ambos tengan acceso. El sistema de
gestin de memoria debe permitir en estos casos que los
procesos autorizados accedan al bloque de memoria que
comparten, de manera similar a como el sistema de
ficheros permite a travs de los permisos que varios
usuarios compartan un fichero.
Organizacin lgica:
Normalmente en un sistema informtico la memoria
principal est organizada de forma lineal como una
secuencia de posiciones de memoria. Del mismo modo la
memoria secundaria se puede ver como una secuencia de
bloques. Esta organizacin fsica no se corresponde con la
visin del programador que estructura su programa en
diferentes mdulos. El sistema gestor de memoria debe
permitir organizar lgicamente partes de la memoria para
acercarse a la visin del programador. La tcnica que ms
fcilmente sastisface esta necesidad es la segmentacin.
Organizacin fsica:
Fsicamente la memoria est organizada en dos espacios
claramente diferenciados:
Memoria principal rpida, voltil y escasa
Memoria secundaria lenta, persistente y abundante
De manera que el SO debe gestionar el trasvase de
informacin entre los dos espacios descargando al
programador de esta tarea.
Memoria virtual

Gracias a la memoria virtual, un sistema operativo moderno


presenta al usuario un espacio de memoria contiguo que puede ser
mayor que la cantidad de memoria principal instalada.
Esto se consigue al utilizar dinmicamente memoria secundaria
para guardar informacin que aparentemente est en memoria
principal (cuando se necesita dicha informacin hay que llevarla de
nuevo a memoria principal). Al espacio de memoria secundaria que
guarda datos que aparentan estar en memoria principal se le llama
espacio de trasiego o intercambio, en el caso de GNU/Linux,
espacio swap
El uso de memoria virtual:
Permite que la cantidad de espacio dedicado a los procesos no est
limitado por la cantidad de memoria principal instalada. Es posible
tener cargados ms procesos y es posible cargar procesos ms grandes.
Reduce la velocidad de ejecucin. Cuando se ejecutan procesos que
corren en memoria secundaria no se puede igualar la velocidad de
proceso que se conseguira si se utilizase memoria principal.
El SO debe gestionar la traduccin de direcciones entre el espacio de
memoria virtual y fsico. Para este fn el SO se apoya en hardware
especfico como la MMU (unidad de gestin de memoria, normalmente
integrada en la CPU).
Cercana de referencias

Cuando se ejecuta un proceso, la prctica demuestra que no todas sus partes tienen el
mismo peso. En cualquier proceso hay bucles, las instrucciones que estn en un bucle se
pueden ejecutar muchas ms veces que el resto de instrucciones. Si el SO utiliza memoria
virtual, puede mantener en memoria principal, como conjunto residente, la informacin
con la que se trabaja ms a menudo. En este caso puede que tener el resto de informacin
del proceso en memoria secundaria no represente una gran prdida de rendimiento.
La cercana de referencias es la caracterstica por la cual, en la prctica, las referencias a
la informacin de un proceso est condicionada por restricciones locales. Normalmente,
excepto en un salto, tras una instruccin se opera con la siguiente. Del mismo modo, datos
contiguos suelen tener ms probabilidad de ser accedidos en secuencia que datos
dispersos. As, el sistema gestor de memoria del SO puede tener una idea aproximada de
qu datos/instrucciones se van a necesitar a continuacin.
Segmentacin

La segmentacin es una tcnica de gestin de memoria que divide dinmicamente la memoria en


diferentes segmentos.
Un segmento:
Tiene un tamao que se ajusta a lo que va a contener. Cada segmento puede tener un tamao
diferente.
Es un rea contigua de memoria, tiene una direccin de inicio (base) y determinado tamao
(nmero de posiciones de memoria que ocupa).
Cuando se utiliza segmentacin:
No existe la fragmentacin interna, pero s hay fragmentacin externa. Pueden ser necesarias
operaciones de compactacin.
El segmento se adapta a la visin del programador. Un mdulo se corresponde con un segmento.
Es fcil compartir datos entre procesos. A cada segmento se le puede asignar unos permisos
diferentes, de manera similar a como se realiza la comparticin de informacin en el sistema de
ficheros
Paginacin

La paginacin es una tcnica de gestin de memoria en la


que se divide toda la memoria principal en marcos de
pgina. Todos los marcos de pgina tienen el mismo
tamao (tpicamente 4K). Los datos con los que se trabaja
estn agrupados en pginas, cuando se necesita una
pgina se puede cargar en cualquier marco de pgina que
est disponible.
Cuando se utiliza paginacin:
No existe fragmentacin externa, pero s hay una pequea cantidad
de fragmentacin interna.
Las estructuras de control del SO pueden incluir:
Por cada proceso una tabla de pginas, con una entrada para cada pgina
correspondiente al proceso.
Descriptor de bloques de disco, para cada pgina hay una entrada que indica
dnde est almacenada.
Tabla de marcos de pgina, describe el estado de cada marco en memoria
principal.
Gestin combinada:
Segmentacin + Paginacin

Se utiliza la segmentacin para definir reas de memoria


para los procesos (segmento de cdigo, datos y pila).
Dentro de los segmentos se utiliza paginacin. De esta
manera se consiguen reunir las ventajas de ambas
tcnicas.
Traduccin de direcciones

Cuando se utiliza memoria virtual, los procesos utilizan


referencias lgicas a otras posiciones de memoria. Sin
embargo el SO, para acabar accediendo a los datos
correctos, debe traducir las direcciones lgicas en
direcciones fsicas. La manera en la que se realiza esta
traduccin depende del esquema de gestin que se utilice.
Normalmente el procesador cuenta con hardware
especfico (la unidad de gestin de memoria, MMU) para
realizar este proceso.
Direccin lgica:
Una direccin de memoria virtual. Identifica un dato en el
espacio de memoria virtual, pero dice muy poco sobre
dnde se encuentra realmente este dato.
Direccin fsica:
Una direccin que identifica una posicin de memoria
principal.
Traduccin de direcciones con paginacin

Una direccin lgica estar compuesta por el nmero de


pgina y desplazamiento. Para obtener la direccin fsica,
se buscar en la tabla de pginas del proceso la entrada
que corresponda a la pgina buscada, y all se obtendr la
direccin de memoria fsica en la que se encuentra
cargada la pgina. Con el desplazamiento se puede
acceder a un dato concreto en el interior de la pgina.
Ejemplo
Suponiendo que un sistema informtico utiliza direcciones
lgicas de 16 bits, de los que se dedican 6 bits al
identificador de pgina y 10 al desplazamiento:
Qu mximo nmero de pginas puede ocupar un proceso
(suponiendo que el SO mantiene una tabla de pginas
independiente por cada proceso) ?
Cuantas posiciones de memoria forman una pgina ?
Cuantas posiciones de memoria puede ocupar un
proceso ?
Qu cantidad mxima de memoria virtual puede ocupar un
proceso ?
Traduccin de direcciones con segmentacin

Cuando se utiliza segmentacin, la traduccin de


direcciones es similar al caso de la paginacin, pero como
los segmentos tienen una longitud variable en la tabla de
segmentos del proceso no slo se guarda la direccin base
del segmento, sin tambin su longitud.
Buffers y cach

Cuando se utiliza segmentacin, la traduccin de


direcciones es similar al caso de la paginacin, pero como
los segmentos tienen una longitud variable en la tabla de
segmentos del proceso no slo se guarda la direccin base
del segmento, sin tambin su longitud.
Actividades

Revisar y describir lo que se muestra al solicitar los sucesos del


sistema.
Ejecute el comando free e indique lo siguiente:
Total de memoria
Memoria utilizada
Memoria libre
Memoria compartida
Bffer y almacenamiento utilizado por el ncleo.
Ejecute el comando vmstat y esplique la informacin que
muestra.
Realice lo mismo con las siguientes indicaciones:
cat /proc/meminfo
cat /proc/self/maps

También podría gustarte