Administración Eficaz de la Memoria en Sistemas Operativos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

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

Gestión de Memoria

El administrador de la memoria tiene como misión llevar un registro de qué partes de la memoria se están utilizando y cuáles no, con el fin de asignar espacio a los procesos que lo requieran y liberarlo cuando terminen. También administra el intercambio entre la memoria principal y el disco en caso de que la primera no pueda albergar todos los procesos. El rendimiento del sistema está condicionado por la eficacia en la gestión de la memoria.

Memoria Principal

Es el recurso central, ya que tanto el procesador como los dispositivos de entrada/salida acceden a ella para leer y/o grabar la información que manejan. Se puede ver como un gran array (tablas en memoria) de palabras, cada una con su propia dirección (las direcciones de memoria se expresan en hexadecimal).

Asignación Dispersa

La memoria lógica se divide en fragmentos, denominados páginas o segmentos, según la técnica utilizada. Estos fragmentos se mapean sobre zonas de memoria física no contiguas. Existen dos tipos de asignación dispersa:

Paginación

No produce fragmentación externa y la fragmentación interna que se produce es insignificante y muy localizada. Con este método, la memoria física se divide en partes iguales, de tamaño fijo, denominadas marcos. La memoria lógica se divide en partes, llamadas páginas, del mismo tamaño que los marcos. El sistema operativo utiliza una tabla de páginas para cada proceso, donde asigna a cada página el marco correspondiente en memoria física (la asignación de marcos no tiene por qué ser contigua). Por tanto, para realizar la traducción de direcciones, hay que tener en cuenta, por una parte, la dirección lógica, que se compone de un número de página y un desplazamiento. Para saber su dirección física, se mira en la tabla de páginas el marco correspondiente y, a partir de este, se obtiene su dirección física.

Segmentación

Se divide la memoria en bloques de longitud variable independientes, denominados segmentos. Los segmentos pueden estar ubicados en zonas de memoria no contiguas. Cada proceso tiene asociada una tabla de segmentos, y cada segmento tiene un descriptor que contiene una dirección base y su longitud para poder obtener su dirección física.

1. Las ventajas de la segmentación son que evita la fragmentación interna, ya que los segmentos se definen del tamaño que se requieran, aunque puede darse fragmentación externa, fenómeno que se produce cuando se manejan bloques de longitud variable.

  • Cada proceso tiene una tabla de segmentos.
  • Cada segmento tiene un descriptor de segmento.
  • El descriptor de segmentos tiene:
    • Dirección base: la primera donde está ubicada la memoria física.
    • Longitud del segmento: tamaño.

Memoria Virtual

La memoria virtual es una técnica que permite la ejecución de procesos parcialmente cargados en memoria principal. Se utiliza el disco como almacén secundario de procesos. La idea es mantener en memoria principal solo los fragmentos de cada proceso que se estén utilizando. Hay dos tipos de técnicas basadas en memoria virtual:

  • Fragmentación Externa: El total de la memoria libre es suficiente para satisfacer una petición, pero el espacio no es contiguo. Se puede reducir mediante la compactación, que consiste en colocar toda la memoria libre en un solo gran bloque. Esto solo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.
  • Fragmentación Interna: Se suele producir en particiones fijas. Es una pérdida de espacio en disco, ya que el archivo (o proceso) que se coloca en esta partición (clúster), aunque sea de menor tamaño que la partición, se referencia como un clúster completo. Por ejemplo, si nuestro clúster es de 18KB, un archivo de 8KB ocupará 18KB en el disco, perdiéndose los 10 KB restantes. No se corrige con la desfragmentación.
  • Desfragmentación: Es el proceso mediante el cual se acomodan los archivos de un disco de tal manera que cada uno quede en un área contigua y sin espacios sin usar entre ellos. Esto se produce al ir borrando y creando archivos continuamente en el disco duro. El espacio que queda al borrar un archivo es fijo; si luego se crea un archivo de mayor tamaño, no se podrá guardar en el mismo espacio y se fragmentará, quedando una parte del archivo en el espacio del anterior y otra parte en otro espacio libre no contiguo. Esto ralentiza el acceso a los archivos.

    Este problema tiene dos soluciones:

    1. Compactación de memoria, que no se suele usar por su coste en tiempo.
    2. Paginación, que permite que la memoria de un programa no sea contigua, de forma que siempre que se disponga de espacio, aunque este no sea adyacente, se pueda asignar a un programa.

Entradas relacionadas: