Requisitos de la gestión de memoria
a)
Reubicación
: capacidad de colocar un proceso en un área distinta de
memoria una vez éste se ha vuelto a cargar para su ejecución.
b)
Protección
: debe poder evitar las interferencias (accidentales o
intencionadas) no deseadas entre procesos de manera que un proceso no
puede hacer referencia a posiciones de memoria ocupadas por otro.
c)
Comportimiento
: cuando es necesario que varios procesos accedan a la
misma zona de memoria, la gestión de memoria ha de ser capaz de permitir
este acceso sin comprometer la protección comentada en el apartado b)
d)
Organización lógica
: esto lo veremos a lo largo de este tema. Con el tiempo
han existido muchas técnicas para llevar esta organización como puede ser la
segmentación de la que hablaremos más adelante.
e)
Organización física
: esto sería lo ya estudiado sobre jerarquía de memoria
Jerarquía de memoria
De Wikipedia, la enciclopedia libre
Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles, que tienen los ordenadores
. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias
.
Los puntos básicos relacionados con la memoria pueden resumirse en:
Cantidad
Velocidad
Coste
La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer operandos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible.
Como puede esperarse los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son válidas:
A menor tiempo de acceso mayor coste
A mayor capacidad mayor coste
A mayor capacidad menor velocidad
Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida.
Los niveles que componen la jerarquía de memoria habitualmente son:
Nivel 0:
Registros
Nivel 1:
Memoria caché
Nivel 2:
Memoria principal
Nivel 3:
Disco duro (con el mecanismo de memoria virtual
)Nivel 4:
Redes(Actualmente se considera un nivel más de la jerarquía de memorias)
C uando todas las regiones tienen límites fijos del mismo tamaño
En este caso, cuando un proceso debe ser cargado en memoria
– Si éste es de tamaño igual o inferior a ese otro tamaño establecido (en el
dibujo 8M), lo hará en cualquier partición que esté libre. En el caso que
todas las particiones estuvieran ocupadas, el S.O. sacará un proceso de
alguna partición y cargará este otro proceso listo para ser ejecutado.
– Si éste es de tamaño superior (en el ejemplo, superior a 8M), se cargará
sólo una parte de ese proceso (los programadores de la época diseñaban
los programas con esa idea de cargar sólo una parte) y cada vez que se
necesite otra, el S.O. se encargará de cargarla
C uando todas las regiones tienen límites fijos de diferente tamaño
En este caso hay dos maneras de asignar un proceso a una partición
– Cargando cada proceso en la partición más pequeña en la que quepa.
En este caso hay una cola de espera por cada tamaño de partición.
PROBLEMA de esta técnica:
1. Pueden haber particiones con cola y otras vacías por no tener un proceso de tamaño similar
– Cargando cada proceso en la partición más pequeña en la que quepa.
En este caso se organizan los procesos en una única cola y, por motivos
de optimización, cuando una partición queda libre se buscará en la cola
de espera aquél proceso más grande que quepa en ella.
PROBLEMA de esta técnica:
1. Habrá procesos que tarden mucho en cargarse porque haya
otros que mejor cumplan el requisito de tamaño.
Particiones dinámicas
Para superar algunas de las dificultades del particionamiento estático se desarrolló una
solución denominada partición dinámica. Con este sistema, las particiones son variables
en número y longitud de manera que cuando se carga un proceso en memoria, se le
asigna exactamente tanta memoria como necesita y no más.
Este método comienza bien PERO finalmente desemboca en una situación en la que hay
un gran número de huecos pequeños en la memoria. Conforme pasa el tiempo, la
memoria comienza a estar más fragmentada y su rendimiento decae.
Para solucionar esto se inventaron cosas como:
– Los algoritmos de ubicación (sistema para elegir cuál es el mejor proceso, de los que
se encuentran en espera, para cargar en memoria).
– Los algoritmos de reemplazo (sistema para elegir qué proceso quitar de memoria y así
ubicar el nuevo proceso)
– La compactación o desplazamiento de los procesos para que estén contiguos y así
dejar más memoria libre.
Concepto de memoria real o principal:
Es donde son ejecutados los programas y procesos de una computadora y es el
espacio real que existe en memoria para que se ejecuten los procesos. Por lo
general esta memoria es de mayor costo que la memoria secundaria, pero el
acceso a la información contenida en ella es de más rápido acceso. Solo la
memoria caché es más rápida que la principal, pero su costo es a su vez mayor
(recordaros de la jerarquía de la memoria visto en la introducción a los sistemas
informáticos)
Concepto de memoria virtual:
El término memoria virtual se asocia a dos conceptos que normalmente aparecen
unidos:
1. El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más memoria RAM de la que realmente hay en el sistema
2. Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que
por lo tanto, pueden usar el espacio de direcciones completo.
Relacionados con la memoria virtual hay otros conceptos:
A) Espacio de direcciones:Las direcciones involucradas en el manejo de la memoria son: ·
Dirección física
: es una posición real en memoria principal
Direcció lógica
: es una referencia a una posición de memoria
independiente de la asignación actual de datos a la memoria. Sufre una
serie de transformaciones, realizadas por el procesador (la Memory
Management Unit), antes de convertirse en dirección física.
· ·
Dirección relativa
: es un tipo de dirección lógica en la cual la
dirección se expresa como una posición relativa a algún punto conocido.
NOTA: Los programas de usuario siempre tratan con direcciones virtuales;
nunca ven las direcciones físicas reales.
Unidad de Manejo de Memoria:
La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones
Son:
·
Convertir las direcciones lógicas emitidas por los procesos en direcciones
físicas.
·
Comprobar que la conversión se puede realizar
Comprobar que el proceso que intenta acceder a una cierta dirección de
memoria tiene permisos para ello.
Fragmentación
La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión
de memoria que se vieron en los métodos anteriores.
Tipos de fragmentación
·
Fragmentación Externa
: existe el espacio total de memoria para satisfacer un
requerimiento, pero no es contigua.
Fragmentación Interna
: la memoria asignada puede ser ligeramente mayor que
la requerida; esta referencia es interna a la partición, pero no se utiliza.
Paginación
Es una técnica de manejo de memoria, en la cual el espacio de memoria se divide en
secciones físicas de igual tamaño, denominadas marcos de página (frames)
.
Los programas se dividen en unidades lógicas, denominadas páginas, que tienen el
mismo tamaño que los marcos de páginas. De esta forma, se puede cargar una página de
información en cualquier marco de página.
Las páginas sirven como unidad de almacenamiento de información y de transferencia
entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por
la dirección de marco, que esta en la posición física de la primera palabra en el marco de
página.
Las páginas de un programa necesitan estar contiguamente en memoria, aunque el
programador lo observe de esta forma. Los mecanismos de paginación permiten la
correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las
direcciones reales de la memoria que se referencien.
Para tener el control de las páginas, debe mantenerse una tabla en memoria que se
denomina tabla de mapas de Pagina (PMT) para cada uno de los procesos.
NOTA: Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus
de memoria, sino que van a una unidad administradora de la memoria (MMU Memory
Management Unit).
La paginación evita el considerable problema de ajustar los pedazos de memoria de
tamaños variables que han sufrido los esquemas de manejo de memoria anteriores.
Dado a sus ventajas sobre los métodos previos, la paginación, en sus diversas formas, es
usada en muchos sistemas operativos
.
Características de la paginación:
–
El espacio de direcciones lógico de un proceso puede ser no contiguo
Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames)
Se divide la memoria en bloques del mismo tamaño llamados páginas
Se mantiene información en los marcos libres
Para correr un programa de n paginas de tamaño, se necesitan encontrara n marcos y
cargar el programa.
–
Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas
Se produce fragmentación interna
Ventajas
-Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en
memoria, y el resto se cargara bajo la solicitud.
–
No es necesario que las páginas estén contiguas en memoria
–
Es fácil controlar todas las páginas, ya que tienen el mismo tamaño
El mecanismo de traducción de direcciones DAT permite separar los conceptos de
espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente
al usuario.
– Se libera al programador de la restricción de programar para un tamaño físico de
memoria
-Al no necesitarse cargar un programa completo en memoria para su ejecución, se
puede aumentar el numero de programas multiprogramándose.
–
Se elimina el problema de fragmentación externa
Desventajas
– El costo de hardware y software se incrementa, por la nueva información que debe
manejarse y el mecanismo de traducción de direcciones necesario. Se consume
mucho mas recursos de memoria, tiempo en el CPU para su implantación.
–
Se deben reservar áreas de memoria para las PMT de los procesos
Aparece el problema de fragmentación interna. Así, si se requieren 5K para un
programa, pero las paginas son de 4K, deberán asignárseles 2 paginas (8k), con lo
que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma
puede ser mayor que el de varias paginas, pero no podrá ser utilizados.
SEGMENTACIÓN
–La memoria se divide en bloques de
longitud variable llamados segmentos.
-La dirección virtual se compone de dos
partes: un segmento y un
desplazamiento.
-Cuando se referencia un segmento que
no se encuentra en la memoria, se
produce un fallo de segmento.
-Conduce a fragmentación externa.
Facilita la protección de la memoria y
evita la fragmentación interna.
Segmentación paginada
Puede hacerse una combinación de segmentación y paginación para obtener las ventajas
de ambas. En lugar de tratar un segmento como una unidad contigua, este puede
dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.
Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que
todas las páginas se encuentren en memoria principal a la vez; además las páginas de un
mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan
estarlo en memoria real.
Se deberán usar varias tablas.