Optimización de la Gestión de Memoria en Sistemas Operativos

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,53 KB

Gestión de la Memoria en Sistemas Operativos

El módulo de gestión de memoria es el encargado de asignar ciertas porciones de la memoria principal a los diferentes programas, mientras el resto de programas y datos se mantienen en los dispositivos de almacenamiento masivo.

La forma más común de gestión de memoria es crear una memoria virtual utilizando los dispositivos de almacenamiento masivo.

Objetivos Clave de la Gestión de Memoria

  • Ofrecer a cada proceso espacio lógico propio.
  • Permitir que los procesos compartan memoria.
  • Maximizar el rendimiento del sistema.
  • Proporcionar protección entre los procesos.

Requisitos Fundamentales de la Gestión de Memoria

  • Protección: Al sistema operativo (SO) y a los otros procesos de accesos que puedan realizar a sus espacios de direcciones.
  • Reubicación: Memoria compartida por varios procesos, que deben ser cargados y descargados eficientemente.
  • Organización Lógica: Tratar los datos y los programas de los usuarios de acuerdo a su estructura lógica.
  • Organización Física: Gestionar el flujo de información entre la memoria principal y la memoria secundaria.
  • Compartición: En ciertas situaciones, los procesos pueden compartir memoria de forma controlada.

Técnicas de Administración de Memoria

Particiones Estáticas: Desafíos y Limitaciones

  • Un programa puede ser demasiado grande para caber en una partición; de otro modo, podrán estar en memoria aquellos módulos que sean intercambiados a medida que la ejecución progresa.
  • Se malgasta el espacio interno a cada partición cuando el bloque cargado es más pequeño, lo que se conoce como fragmentación interna. Es decir, cualquier proceso, por pequeño que sea, ocupará una partición completa.

Particiones Dinámicas y Algoritmos de Asignación

La asignación de memoria en un esquema con particiones dinámicas consiste en determinar en qué hueco ubicar un nuevo proceso. Para esto, existen tres algoritmos principales:

Algoritmos de Asignación en Particiones Dinámicas:

  • Mejor ajuste: Consiste en ubicar el proceso en el espacio de memoria que más se ajuste a su tamaño.
  • Primer ajuste: Consiste en ubicar el proceso en el primer hueco disponible, recorriendo desde el inicio de la memoria, cuyo tamaño sea suficiente para el proceso.
  • Próximo ajuste: Consiste en ubicar el siguiente hueco disponible, que sea suficientemente grande, a partir de la última asignación de memoria.

Dificultades de las Particiones Dinámicas:

Producto de la entrada y salida de procesos en la memoria, se van generando porciones cada vez más pequeñas de la memoria sin utilizar, lo que se conoce como fragmentación externa.

Paginación y Segmentación: Enfoques Modernos

  • Paginación: Esta técnica consiste en dividir la memoria en espacios de igual tamaño llamados páginas en la memoria lógica y marcos de página en la memoria física.
  • Segmentación: Consiste en dividir la memoria en espacios, pero de diferentes tamaños.

Objetivo Principal de la Gestión de Memoria

Conseguir que varios procesos puedan ejecutarse de forma concurrente, logrando:

  • Evitar los conflictos de uso.
  • Proteger al SO.
  • Aprovechar eficazmente el espacio disponible, lo que implica:
    • Evitar fragmentación.
    • Minimizar memoria ocupada por varias copias del mismo objeto.
    • Optimizar memoria ocupada por las estructuras de datos necesarias para la operación del gestor de memoria.
    • Permitir la carga parcial de memoria sin perjudicar el rendimiento.
    • Reducir la complejidad temporal.
    • Minimizar el tiempo de acceso a memoria.

Características de un Gestor de Memoria Ideal

Un gestor de memoria ideal debería, por tanto:

  • Minimizar la memoria desaprovechada.
  • Tener una complejidad temporal mínima y presentar un recargo por acceso a memoria mínimo.
  • Además, proporcionar una buena protección y una compartición flexible.

Enlace Dinámico (DLL)

Similar a la carga dinámica, pero efectuando el enlace en tiempo de ejecución: DLL (Dynamic Link Library).

Las DLL se cargan en memoria cuando algún proceso llama a una de sus rutinas. Las llamadas a sus funciones se efectúan a través de una tabla de punteros.

Memoria Virtual: Concepto y Aplicación

La memoria virtual es la técnica que permite la ejecución de un proceso que no requiere estar completamente en memoria principal, siendo esta característica transparente para el programador.

Ventajas de la Memoria Virtual

  • Aumenta el grado de multiprogramación al requerir menos memoria real.
  • Los programas pueden ser mayores que el espacio de memoria física disponible.
  • Se requiere menor tráfico de E/S para intercambiar (swapping) un programa.
  • Libera al programador de preocuparse por las limitaciones de memoria física.

Desventajas de la Memoria Virtual

  • Puede disminuir notablemente el desempeño del sistema si no se gestiona correctamente.
  • Se requiere de mecanismos más complejos de administración.

Entradas relacionadas: