viernes, 10 de septiembre de 2010

Introducción


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.

Requisitos que debe cumplir la gestión de memoria en un sistema con multiprogramación.


El sistema de memoria debe ofrecer a cada proceso un espacio lógico propio.
El sistema de memoria debe proporcionar protección entre los procesos.
El sistema de memoria debe permitir que los procesos compartan memoria.
El sistema de memoria debe dar soporte a las regiones del proceso.
El sistema de memoria debe maximizar el rendimiento del sistema.
El sistema de memoria debe proporcionar a los procesos mapas de memoria muy grandes.
Las bibliotecas dinámicas ofrecen múltiples ventajas con respecto a las estáticas. Entre otras, disminuyen el tamaño del ejecutable y permiten una actualización dinámica.

OBJETIVOS DEL SISTEMA DE GESTIÓN DE MEMORIA

En un sistema con multiprogramación, el sistema operativo debe encargarse de realizar un reparto Transparente, eficiente y seguro de los distintos recursos de la máquina entre los diversos procesos, De forma que cada uno de ellos crea que «tiene una máquina para él solo». Esto es, el sistema Operativo debe permitir que los programadores desarrollen sus aplicaciones sin verse afectados por La posible coexistencia de su programa con otros durante su ejecución. En el caso de la memoria, el sistema operativo, con el apoyo del hardware de gestión de memoria del procesador, debe repartir el almacenamiento existente proporcionando un espacio de memoria independiente para cada proceso y evitando la posible interferencia voluntaria o involuntaria de cualquier otro proceso.

Se podría considerar que, en el caso del procesador, se realiza un reparto en el tiempo, mientras que en el de la memoria, se trata de un reparto en el espacio (Aclaración 4.1). La acción combinada de estos dos mecanismos ofrece a los programas una abstracción de procesador virtual que les independiza del resto de los procesos.

LA MEMORIA COMO RECURSO CENTRAL


Para poder procesar un programa en un ordenador es necesario que previamente tanto el cómo los datos que maneja estén cargados en la memoria principal. 

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.

Memoria virtual

El término 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 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

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 posicion 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 logicas tras haber aplicado una transformación dependiente de la arquitectura.

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 una dirección física asociada. 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.

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.


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.

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. 

Compactación de memoria

Cuando un proceso llega y necesita memoria, el sistema operativo busca en la tabla de huecos alguno lo suficientemente grande para el proceso. Si el hueco es muy grande, lo parte en dos. Una parte es asignada al proceso y la otra se identifica como hueco. Cuando el proceso termina y la memoria es liberada, el espacio es identificado como un hueco más en la tabla y si el nuevo hueco es adyacente con otro, ambos huecos se unen-

Administración de la memoria con mapas de bits


 Este tipo de administración divide la memoria 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 1 si está ocupada (o viceversa). La figura 6 muestra una parte de la memoria y su correspondiente mapa de bits.