Portal para Investigadores y Profesionales

Encuentra más Cursos o Publica tu Contenido en ElPrisma.com





Gestión de Memoria



Enlaces Patrocinados






Navigation bar
  Start Previous page
 1 of 2 
Next page End 1 2  

Gestión de Memoria
La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho
cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de
memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que
sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.
La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor
consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin
de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así
como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria
principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella.
Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los
procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.
El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la
información que accesan deben de estar en la memoria principal (al menos parcialmente) durante la
ejecución.
Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez
en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador
como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el
sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria.
Memoria real
La memoria real o principal es en 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 cache es más rápida que la principal, pero su costo es a su vez mayor.
Memoria virtual
El termino memoria virtual se asocia  a dos conceptos  que normalmente a parecen unidos:
1.
El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener
mas memoria RAM de la que realmente hay en el sistema. Esta ilusión de existe tanto a nivel del sistema,
es decir, teniendo en ejecución mas aplicaciones de las que realmente caben en la memoria principal, sin
que por ello cada aplicación individual pueda usar mas memoria de la que realmente hay  o incluso de forma
mas general, ofreciendo a cada aplicación mas memoria de la que existe físicamente en la maquina.
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.  Esta técnica facilita enormemente la generación de código, puesto que el
compilador no tiene porque preocuparse sobre dónde residirá la aplicación cuando se ejecute.
Espacio De Direcciones
Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos:
Direcciones físicas:  son aquellas que referencian alguna posición en la memoria física.
Direcciones lógicas :  son las direcciones utilizadas por los procesos.  Sufren una serie de
transformaciones , realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas.
Direcciones lineales:  direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado
una transformación dependiente de la arquitectura.
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.  La dirección lógica  podría no tener un dirección física
asociada.  Por ejemplo, la pagina correspondiente a una dirección se puede haber trasladado a una zona de
almacenamiento secundario temporalmente.
Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para
ello.
La MMU se Inicializa para  cada proceso del sistema.  Esto permite que cada proceso pueda usar el
rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones
serán distintas para cada proceso.
En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en
modo privilegiado del procesador.
La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos.
El objetivo del intercambio es dar cabida a la ejecución de mas aplicaciones de las que pueden residir
simultáneamente en la memoria del sistema:
Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de
almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar
mas memoria RAM de la que realmente existe en el sistema.  Esta técnica  puede ser ineficiente ya que se
tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción
del código.
Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar
especial del disco y posteriormente vuelto a memoria y continuada su ejecución..
El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar
copias de las imágenes de memoria de todos los usuarios.
Asignación Contigua
La memoria principal normalmente se divide en dos particiones:
Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupción.
Procesos de usuario en la parte alta.
Asignación de partición simple:
Puede utilizarse un esquema de registro de relocalización y limite para proteger un proceso de usuario de
otro y de cambios del código y datos del sistema operativo .
El registro de relocalización contiene la dirección contiene la dirección física mas pequeña; el registro limite
contiene el rango de las direcciones lógicas cada dirección lógica debe ser menor al registro limite
Asignación de particiones múltiples:
Bloques de distintos tamaños están distribuidos en memoria , cuando llega un proceso se le asigna un
hueco  suficientemente grande para acomodarle.
El sistema operativo debe tener información sobre:
a)
Particiones asignadas
b)
Particiones libres (huecos)
Asignación de partición dinámica
El proceso de compactación es una instancia particular del problema de asignación de memoria dinámica, el
cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Existen muchas
soluciones para el problema. El conjunto de huecos es analizado para determinar cuál hueco es el más
indicado para asignarse. Las estrategias más comunes para asignar algún hueco de la tabla son:
Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede iniciar
ya sea al inicio o al final del conjunto de huecos o en donde terminó la última búsqueda. La búsqueda
termina al encontrar un hueco lo suficientemente grande. 
Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. La
búsqueda se debe de realizar en toda la tabla, a menos que la tabla esté ordenada por tamaño. Esta
estrategia produce el menor desperdicio de memoria posible. 
Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de huecos a
menos que esté organizada por tamaño. Esta estrategia produce los huecos de sobra más grandes, los
cuales pudieran ser de más uso si llegan procesos de tamaño mediano que quepan en ellos. 
Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste
en cuanto a minimizar tanto el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el
mejor en términos de uso de espacio, pero por lo general el primer ajuste es más rápido.
Problema: La fragmentación.
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. Tanto el primer ajuste, como el mejor y el peor producen fragmentación
externa.
La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más
procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de
espera.
La fragmentación puede ser:
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.
La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en
un solo gran bloque, pero esta solo es posible si la relocalización es dinámica y se hace en tiempo de
ejecución.
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. 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 reverencien.
Cada pagina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n
paginas (0,1,2,3…n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de paginas
(0,z,2z,…,(m-1)z)(m*z posiciones). Una dirección virtual a es equivalente a una dirección dada como una
dupla (p, d), en la cual p es el número de la página y d el número de la palabra dentro de la página, de
acuerdo con la relación:
a=p*z+d
(0<=d<z)
p=(a/z) 
parte entera de la división)
d=a mod z
(resto de divisor a/z)
En las maquinas que usan aritmética binaria, el calculo de (p, d) es trivial, si z es potencia de 2. Por ejemplo,
si el campo de direcciones de la instrucción es de m bits (m>6), los cuatro bits mas significativos indican el
numero de la pagina y los m-4 bits restantes, el desplazamiento.
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.
Hasta ahora, los métodos que hemos visto de la administración de la memoria principal, nos han dejado con
un problema: fragmentación, (huecos en la memoria que no pueden usarse debido a lo pequeño de su
espacio) lo que nos provoca un desperdicio de memoria principal.
Una posible solución para la fragmentación externa es permitir que espacio de direcciones lógicas lleve a
cabo un proceso en direcciones no contiguas, así permitiendo al proceso ubicarse en cualquier espacio de
memoria física que esté disponible, aunque esté dividida. Una forma de implementar esta solución es a
través del uso de un esquema de paginación. 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.
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). Estas direcciones generadas
por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco
se divide en unidades llamadas páginas. Las unidades correspondientes en la memoria física se llaman
marcos para página o frames. Las páginas y los frames tienen siempre el mismo tamaño.
Tablas de páginas
Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el
número del marco correspondiente a esa página virtual. Si el bit presente / ausente es 0, se provoca un
señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de
páginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el
cual se copia sin modificaciones de la dirección virtual de entrada. Juntos forman una dirección física de 15
bits. El registro de salida se coloca entonces en el bus de la memoria como la dirección en la memoria
física.
En teoría, la asociación de las direcciones virtuales con las físicas se efectúa según lo descrito. El número
de página virtual se divide en un número de página virtual (los bits superiores)y un ajuste (los bits inferiores).
El número de página virtual se utiliza como un índice en la tabla de páginas para encontrar la entrada de
esa página virtual. El número de marco (si existe) se determina a partir de la tabla de páginas. El número de
marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para formar una
dirección física que se puede enviar a la memoria.
La finalidad de la tabla de páginas es asociar las páginas virtuales con los marcos. En términos
matemáticos, la tabla de páginas es una función, cuyo argumento es el número de página virtual y como
resultado el número del marco físico. Mediante el resultado de esta función, se puede reemplazar el campo
de la página virtual de una dirección virtual por un campo de marco, lo que produce una dirección en la
memoria física. Sin embargo hay que enfrentar dos aspectos fundamentales:
1.
La tabla de páginas puede ser demasiado grande. 
2.
La asociación debe ser rápida. 
El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al
menos 32 bits. Por ejemplo, si el tamaño de página es de 4K, un hueco de direcciones de 32 bits tiene un
millón de páginas; en el caso de un hueco de direcciones de 64 bits, se tendría más información de la que
uno quisiera contemplar.
El segundo punto es consecuencia del hecho de que la asociación virtual – física debe hacerse en cada
referencia a la memoria. Una instrucción común tiene una palabra de instrucción y también un operando de
memoria. Entonces es necesario hacer una, dos o más referencias a la tabla de páginas por cada
instrucción.
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 de tamaño llamados paginas.
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 paginas para trasladar las direcciones lógicas a físicas.
Se produce fragmentación interna.
Ventajas de la paginación
1.
Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el
resto se cargara bajo la solicitud.
2.
No  es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de
compactación cuando existen marcos de paginas libres dispersos en la memoria.
3.
Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.
4.
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.
5.
Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que s
e aumenta su productividad. Se puede programar en función de una memoria mucho más grande a la
existente.
6.
Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el
numero de programas multiprogramándose.
7.
Se elimina el problema de fragmentación externa.
Desventajas de la paginación
1.
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.
2.
Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fija el tamaño de estas,
se crea un problema semejante al de los programas (como asignar un tamaño óptimo sin desperdicio de
memoria, u “ovearhead” del procesador).
3.
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. Debe asignarse un tamaño promedio a las páginas, evitando que si son muy pequeñas, se
necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de
fragmentación interna.
Traducción de Direcciones
La dirección generada por la CPU se divide en:
Numero de pagina (p): utilizado como índice en la tabla de páginas que contiene la dirección base de
cada página en la memoria física.
Offset de la pagina (d): combinado con la dirección base define la dirección física que será enviada a la
unidad de memoria.
Ejemplo de paginación:
Segmentación
Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica;
llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados
segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada
espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la
división lógica del programa.
La segmentación permite alcanzar los siguientes objetivos:
1.
Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y
recopilaciones, sin afectar por ello al resto del programa.
2.
Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este
puede variar.
3.
Protección: se puede proteger los módulos del segmento contra accesos no autorizados.
4.
Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque
no sean propietarios de los mismos.
5.
Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de
comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.
Ventajas de la segmentación
El esquema de segmentación ofrece las siguientes ventajas:
Previous page Top Next page
Comparte ElPrisma.com en:   Tweet     Mister Wong 


Es política de El Prisma.com cumplir con las leyes nacionales y tratados internacionales que protegen la propiedad intelectual y los Derechos de Autor (Copyright). Los textos mostrados en esta página han sido enviados por nuestros usuarios que han declarado ser los autores de los mismos y han permitido su uso por parte de www.elprisma.com, si usted considera que la información contenida en esta página viola sus derechos de autor, por favor envíenos su notificación de infracción a sugerencias1[en]elprisma.com y removeremos los textos de nuestros servidores. Condiciones de Uso.

Administración de Empresas y Negocios, Economía y Finanzas, Mercadeo y Publicidad, Arquitectura, Diseño Gráfico, Diseño Industrial, Teología, Pedagogía, Ciencias Políticas, Derecho, Historia, Bellas Artes, Comunicación y Periodismo, Español y Literatura, Filosofía, Ingeniería Civil, Ingeniería de Minas y Petróleos, Ingeniería de Sistemas e Informática, Ingeniería Eléctrica y Electrónica, Ingeniería Industrial, Ingeniería Mecánica, Ingeniería Química, Biología, Física, Geografía, Matemáticas, Química, Medicina, Odontología, Psicología, Agronomía, Veterinaria, Zootecnia.