RSS

jueves, 19 de noviembre de 2009

4.1.2 ADMINISTRADOR DE LA MEMORIA

El Administrador 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.



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 forma posible el espacio disponible. Existen cuatro tipos de esquema s de asignación de memoria, estos esquemas de la administración de la memoria rara vez se utilizan en los sistemas operativos actuales.
Configuración de un solo usuario
Particiones fijas
Particiones dinámicas
Particiones dinámicas reubicables
Ya que estos eran utilizados en los primeros sistemas de computo. Pero es importante su estudio, ya que cada uno introdujo conceptos fundamentales que ayudaron a la evolución de la administración de la memoria.

ESQUEMA CONTIGUO DE USUARIO UNICO
El primer esquema de asignación de la memoria funcionaba de la siguiente manera:
Si el programa era demasiado grande y no cabía en el espacio de memoria disponible, no se podía ejecutar. A pesar de que las primeras computadoras eran demasiado grandes tenían muy poca memoria.
Esto demuestra un factor limitante para todas las computadoras, tiene una cantidad finita de memoria y si un programa no cabe, hay que incrementar el tamaño de la memoria principal o modificar el programa.
PARTICIONES FIJAS
El primer intento para posibilitar la multiprogramación fue la creación de las particiones fijas o estáticas, en la memoria principal, una partición para cada tarea. El tamaño de la partición se especificaba al encender el sistema, cada partición podía reconfigurarse al volver encender el sistema o reiniciar el sistema.
Este esquema introdujo un factor esencial, la protección del espacio de memoria para la tarea. Una vez asignada una partición a una tarea, no se permitía que ninguna otra tarea entrara en sus fronteras.
Este esquema de partición es mas flexible que la de usuario único, por que permite que varios programas estén en memoria al mismo tiempo.
PARTICIONES DINÁMICAS
Con las particiones dinámicas, la memoria principal disponible aun se conserva en bloques contiguos, pero a las tareas nada mas se les da memoria que solicitan cuando se cargan para su procesamiento. Aunque es una mejoría significativa en relación con las particiones fijas, no se elimina el problema de las mismas.
Un esquema de particiones dinámicas utiliza toda la memoria al cargar las primeras tareas, pero conforme entran nuevas tareas en el sistema que no son del mismo tamaño de las que acaban de salir de la memoria se acomodan en los espacios disponibles de acuerdo con su prioridad.
PARTICIONES DINÁMICAS RE LOCALIZABLES
Con este esquema de asignación de memoria, el administrador de memoria relocaliza los programas para reunir los bloques vacios y compactarlos, para hacer un bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar.
La compactación no es una tarea sencilla. Primero, todos los programas en memoria se deben relocalizar, de manera que queden contiguos; luego hay que ajustar cada dirección y cada referencia a una dirección en todo programa para tomar en consideración la nueva localización del programa en memoria.
ADMINISTRACIÓN DE LA MEMORIA SISTEMAS RECIENTE
ASIGNACIÓN DE LA MEMORIA EN PÁGINAS
Se basa en el concepto de dividir cada tarea de llegada en páginas de igual tamaño. Algunos sistemas operativos escogen el tamaño de la página igual al tamaño de bloque de memoria. Que es el tamaño de las secciones de disco en las cuales se almacena la tarea.

Las secciones de un disco se conocen como “sectores”. Y los sectores de la memoria principal se denominan marcos de página.

Antes de ejecutar un programa, el administrador de la memoria lo prepara mediante:

1.-la determinación del número de páginas del programa.

2.-la ubicación de suficientes marcos de pagina vacios en la memoria principal.

3.-la carga de todas las páginas del programa de los mismos.



PAGINACIÓN POR DEMANDA
La paginación por demanda introdujo la idea de cargar nada más una porción del programa en la memoria para su procesamiento. Fue el primer esquema ampliamente utilizado que elimino la necesidad de colocar toda la tarea en la memora desde el principio hasta el final.
Ejemplo: cuando los usuarios escogen la primera opción del menú de un programa de aplicación, los otros módulos que no se requieren en ese momento se pueden extraer de la memoria y cargar de nuevo cuando sean llamados. No requiere todas las páginas al mismo tiempo.
1.- Los módulos de manejo de errores escritos por el usuario se procesan solo cuando se detectan un error específico durante la ejecución.
2.-Muchos módulos son mutuamente excluyentes.
3.- Ciertas opciones de programa son excluyentes entre si o no resultan siempre accesibles.

ASIGNACIÓN DE MEMORIA EN SEGMENTOS
El concepto de segmentación se basa en la práctica común entre los programadores de estructurar programas en módulos, agrupamientos lógicos de código. Con la asignación de memoria en segmentos, cada tarea se divide en varios segmentos de tamaños diferentes, uno por cada modulo que contiene piezas que ejecutan funciones relacionadas.
La tabla de tareas lista todas las tareas en proceso.
La tabla de mapa de segmentos lista detalles sobre cada segmento.
La tabla de mapa de memoria vigila la asignación de la memoria.
Es una combinación de segmentos y de paginación por demanda y ofrece los beneficios lógicos de la segmentación y las ventajas físicas de la paginación.

4.1.3 JERARQUIA DE MEMORIA



Jerarquía de memorias


En el diseño del sistema informático, en lo que a la decisión de la memoria a utilizar, se ha de encontrar un compromiso entre su capacidad y su velocidad. Ocurre que en algunas situaciones se necesita una gran capacidad de almacenamiento (es el caso de la memoria secundaria) y en otros es conveniente una mayor velocidad (memoria principal, caché, etc..).

La memoria secundaria trata de proveer una gran capacidad de almacenamiento (sacrificando la velocidad), mientras que la memoria que almacena la información que se está procesando en un determinado momento ha de ser rápida aunque no cuente con una gran capacidad.

Desde el punto de vista de la ejecución de un programa, no todos los datos son accedidos con la misma frecuencia estadística. Datos próximos (e instrucciones próximas) tienen una mayor probabilidad de ser accedidos. Por esta razón las cachés, aunque no cuentan con una capacidad suficiente como para almacenar un proceso en ejecución, aumentan notablemente la velocidad del sistema informático.

Actualmente se suelen utilizar dos niveles de caché en los ordenadores domésticos. La caché de primer nivel está integrada en el interior del µP, la caché de segundo nivel normalmente está integrada en la placa base o bien en el circuito impreso que contiene a la CPU.

4.1.4 ESTRATEGIAS PARA LA ADMINISTRACION DE MEMORIA

Se dividen en las siguientes categorías:

• Estrategias de búsqueda:

o Estrategias de búsqueda por demanda.
o Estrategias de búsqueda anticipada.
• Estrategias de colocación.
• Estrategias de reposición.

Las “estrategias de búsqueda” están relacionadas con el hecho de cuándo obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.

En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia.

Se considera que la “búsqueda anticipada” puede producir un mejor rendimiento del sistema.

Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará) un programa nuevo.

Las “estrategias de reposición” están relacionadas con la determinación de qué fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.


4.1.5 MULTIPROGRAMACIÓN DE PARTICIÓN FIJA, PARTICIÓN VARIABLE CON INTERCAMBIO DE ALMACENAMIENTO.



MULTIPROGRAMACIÓN CON PARTICIONES FIJAS

El sistema de multiprogramación en los cuales varios usuarios compiten al mismo tiempo por los recursos del sistema. El trabajo está esperando la terminación de una operación E/S cederá la CPU a otro trabajo que este listo para realizar cálculos. Si es que hay una espera. De esta forma pueden efectuarse simultáneamente las operaciones de E/S y cálculos de la CPU.
PROTECCION EN LOS SISTEMAS CON MULTIPROGRAMACIÓN.

En os sistemas con multiprogramación contigua, la protección se logra a menudo con varios registros de limites. Con dos registros se puede establecer los límites superior e inferior de la partición de un usuario o se puede indicar el límite inferior y la longitud de la región.


FRAGMENTACIÓN EN LA MULTIPROGRAMACIÓN CON PARTICIONES FIJAS.
La fragmentación de almacenamiento ase presenta en todos los sistemas de cómputo, sea cual sea la organización de su almacenamiento. En los sistemas con multiprogramación y particiones fijas, la fragmentación ocurre porque los trabajos de los usuarios no llenan por completo las particiones designadas o porque una partición se queda sin utilizar por ser demasiado pequeña para contener un trabajo en espera.

MULTIPROGRAMACIÓN CON PARTICIONES VARIABLES

Esta hace suposiciones sobre el tamaño de los trabajos. Llega un espacio cuando lo necesite. No hay desperdicio, pues la partición de un trabajo tiene exactamente el tamaño del trabajo.
COMPACTACION DE ALMACENAMIENTO

La técnica de compactación del almacenamiento implica trasladar todas las áreas ocupadas del almacenamiento a algún extremo de la memoria principal. Esto deja un gran vació único de almacenamiento libre, en lugar de los numerosos vacíos pequeños característicos de la multiprogramación con particiones variables. Ahora todo el almacenamiento libre está contiguo, así que un trabajo en espera puede ejecutarse si sus necesidades de memoria son satisfechas por el hueco único resultante de la compactación.


MULTIPROGRAMACIÓN CON INTERCAMBIO DE ALMACENAMIENTO

En el esquema de “intercambio” los programas del usuario no requieren permanecer en la memoria principal hasta su terminación. Una variante consiste en que un trabajo se ejecuta hasta que ya no pueda continuar: Cede el almacenamiento y la CPU al siguiente trabajo. La totalidad del almacenamiento se dedica a un trabajo durante un breve periodo de tiempo. Los trabajos son “intercambiados”, dándose que un trabajo puede ser intercambiado varias veces antes de llegar a su terminación.

Los sistemas de intercambio fueron los predecesores de los sistemas de paginación.

Manteniendo al mismo tiempo varias “imágenes de usuario o imágenes de memoria” en la memoria principal.

Retirando una imagen de usuario de la memoria principal solo cuando es necesario su almacenamiento para una nueva imagen.

Incrementando la cantidad de memoria principal disponible en el sistema.

Las imágenes de usuario (imágenes de memoria) retiradas del almacenamiento principal se graban en el almacenamiento secundario (discos)


4.2 MEMORIA VIRTUAL

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. 


4.2 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.

4.2.1 Administracion de memoria con mapas de bits

Administración de la memoria con mapas de bits



Podemos dividir la memoria en pequeñas unidades, y registrar en un mapa de bits las unidades ocupadas y desocupadas. Las unidades pueden ser de unas pocas palabras cada una, hasta de un par de KB. A mayor tamaño de las unidades, menor espacio ocupa el mapa de bits, pero puede haber mayor fragmentación interna. Desventaja: para encontrar hoyo de n unidades hay que recorrer el mapa hasta encontrar n ceros seguidos (puede ser caro).










Con un mapa de bits, la memoria se divide en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y El tamaño de la unidad de asignación es un aspecto importante del diseño. Mientras más pequeña sea esta unidad, más grande será el mapa de bits. Una memoria de 32n bits utilizará n bits del mapa, de forma que dicho mapa sólo ocupa 1/33 de la memoria. Si la unidad de asignación es grande el mapa de bits será pequeño, pero se podría desperdiciar una parte valiosa de la memoria en la última unidad si el tamaño del proceso no es un múltiplo exacto de la unidad de asignación.


Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamaño del mapa sólo depende del tamaño de la memoria y del tamaño de la unidad de asignación. El problema principal de esto es que, cuando se decide traer a la memoria un proceso de k unidades, el administrador de la memoria debe buscar en el mapa una cadena de k ceros consecutivos.

La búsqueda en un mapa de bits de ciertas cadenas es una operación lenta, por lo que los mapas no se utilizan con frecuencia.