Administracion de memoria

 

 

Diferencia entre Memoria Física y Memoria Virtual.

 

La memoria física hace referencia a los chips de memoria RAM que están insertados en las placas madres. Se distinguen de la memoria virtual que no existe realmente como chip, sino que es simulada empleando otro medio de almacenamiento (generalmente el disco duro).
La Memoria virtual es una técnica que permite al software usar más memoria principal que la que realmente posee el ordenador. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.

 

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 está en la posición física de la primera palabra en el marco de página.

 

 

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.

 

ESQUEMA DE TRADUCCIÓN DE DIRECCIONES.

 

 

El almacenamiento a un sólo nivel puede llevarse a cabo mediante una técnica llamada paginación, según la cual el espacio de direcciones virtuales se divide en páginas del mismo tamaño, la memoria principal se divide también en marcos o páginas físicas del mismo tamaño, estos marcos son compartidos entre los distintos procesos que haya en el sistema, de forma que en cualquier momento un proceso dado tendrá unas cuantas páginas residentes en la memoria principal (sus páginas activas) y el resto en la memoria secundaria (sus páginas inactivas).

 

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 páginas.
• Se mantiene información en los marcos libres.
• Para correr un programa de n paginas de tamaño, se necesitan encontrar 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 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.
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.
6. Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el número 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 más 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
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 páginas (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 páginas, 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.

 

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.
Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.
Protección: se puede proteger los módulos del segmento contra accesos no autorizados.
Comparación: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.
Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa.

Dado que en cada proceso se manejan direcciones lógicas, el sistema operativo debe obtener una dirección lógica el sistema operativo debe también asegurarse de que cada dirección lógica esté dentro del rango de direcciones empleado por el proceso para esto el sistema operativo implementa la tabla de segmentos como un arreglo de registros base limites.
VENTAJAS DE LA SEGMENTACIÓN.


El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
• Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.
• Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. Cambios dentro de un modulo no afecta al resto de los módulos.
• Es fácil el compartir segmentos.
• Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.
• Existe la posibilidad de definir segmentos que aun no existan. Así, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa.

DESVENTAJAS DE LA SEGMENTACIÓN.

• Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.
• Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal.
• Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación.
• Al permitir que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos.
• No se puede garantizar, que al salir un segmento de la memoria, este pueda ser traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño.
• La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.
CARACTERISTICAS.
• Este método consiste en la asignación de bloques de memoria de tamaño variable, llamados segmentos.
• El tamaño de cada segmento será el requerido según la petición, como el tamaño del proceso a cargar.
• El tamaño máximo para un segmento estará determinado por la capacidad de direccionamiento del hardware de la computadora, esto es, de cuantos bits se dispone para almacenar una dirección.
• El acceso a cada elemento individual (byte) en la memoria se hace mediante una dirección de memoria que se integra por dos elementos: una dirección de segmento y una de desplazamiento.
• La combinación (suma) de la dirección de segmento y la de desplazamiento generan la dirección de memoria absoluta a accesar.

 
En un sistema con un número muy grande de procesos, segmentos o paginas, ésta estructura puede consumir una parte muy importante de la memoria real. La cuestión es que la traducción de direcciones puede realizarse con rapidez pero si se tienen demasiadas tablas, el sistema puede soportar menos procesos y bajar su rendimiento

 

SEGMENTACION PAGINADA.

 

Tanto la paginación como la segmentación tienen sus ventajas y desventajas, también es posible combinar estos dos esquemas para mejorar con el sistema operativo Multics, las direcciones lógicas estaban formadas a partir de un número de segmento de 18 bits y un desplazamiento de 16 bits, aunque este esquema crea un espacio de direcciones correspondiente a una dirección de 34 bits, la tabla de segmentos tiene un tamaño tolerable, puesto que el número variable de segmentos conduce naturalmente al uso de un Registro de Longitud de Tabla de Segmentos, necesitamos tan solo el mismo número de entradas en la tabla de segmentos que segmentos; no tenemos por qué tener entradas vacías en la tabla de segmentos.

 

 

En el caso, de que un segmento sea de tamaño inferior o igual al de una pagina, no se necesita tener la correspondiente PMT, actuándose en igual forma que bajo segmentación pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no.

VENTAJAS DE LA SEGMENTACIÓN PAGINADA.

• Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la compartición y enlace.
• Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento.
• Se elimina el problema de la fragmentación externa y la necesidad de compactación.

 

DESVENTAJAS DE LA SEGMENTACIÓN PAGINADA.


• Las tres componentes de la dirección y el proceso de formación de direcciones hace que se incremente el costo de su implantación.
• Se hace necesario mantener un número mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento.
• Sigue existiendo el problema de fragmentación interna de todas- o casi- todas las páginas finales de cada uno de los segmentos. Bajo paginación pura se desperdician solo la última página asignada, mientras que bajo segmentación, paginada el desperdicio puede ocurrir en todos los segmentos asignados.
CONCLUSIONES.

• En la memoria principal son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos.
• La paginación es una técnica de gestión de memoria en la cual el espacio de memoria se divide en secciones físicas de igual tamaño llamadas marcos de pagina, las cuales sirven como unidad de almacenamiento de información.
• La 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.

http://arqordenadores.wiki-site.com/index.php/Paginaci%C3%B3n_y_Segmentaci%C3%B3n

 

ADMINISTRACIÓN DE MEMORIA.

 

La administración de memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible.

Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria más extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera más eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario.

Las técnicas que existen para la carga de programas en la memoria son: partición fija, que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica, que son las particiones de la memoria en tamaños que pueden ser variables, según la cantidad de memoria que necesita cada proceso.

Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera e la memoria principal para maximizar la utilización del procesador; la protección, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en común.

http://www.mastermagazine.info/termino/3780.php

 

VENTAJAS Y DESVENTAJAS DEL USO DE LA MEMORIA VIRTUAL.