jueves, 14 de octubre de 2010

GESTIÓN DE MEMORIA




¿Qué es la Gestión de Memoria?
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.

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.

Espacio de Direcciones
Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos:



  1. Direcciones físicas: Son aquellas que referencia alguna posición en la memoria física.
  2. 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.
  3. Direcciones lineales: Direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado una transformación dependiente de la arquitectura.

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.


Particiones dinamicas



Las particiones son variables en numero y longitud. Al proceso se le asigna exactamente tanta memoria como necesite. Finalmente, hay varios huecos en la memoria. Este fenomeno se denomina fragmentacion externa. Se debe usar la compactacion para desplazar los procesos que esten contiguos, de forma que toda la memoria libre quede junta en un bloque.

Particiones estaticas (de igual tamaño )

Cualquier proceso cuyo tamaño sea menor o igual que el tamaño de la particion puede cargarse en cualquier particion libre. Si todas las particiones estan ocupadas, el sistema operativo puede sacar un proceso de una particion. Un programa puede que no se ajuste a una particion. El programador debe diseñar el programa mediante superposiciones. El uso de la memoria principal es ine ciente. Cualquier programa, sin importar lo pequeño que sea, ocupara una particion completa. Este fenomeno se denomina fragmentacion interna. Pueden asignar cada proceso a la particion mas pequeña en la que quepa. Hace falta una cola para cada particion. Los procesos estan asignados de forma que se minimiza la memoria desaprovechada dentro de cada particion.

Fragmentación

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.

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.

La segmentación permite alcanzar los siguientes objetivos:

  • 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: 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.
  • Comparició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.

VIDEO DE GESTIÓN DEMEMORIA