Naps Tecnología y educación

Administración de memoria: Memoria Real. Panorama general.

En éste artículo analizamos conceptos de Administración de Memoria en Sistemas Operativos. Se enfoca en la memoria real y hablamos de espacio de direccionamiento,  memoria caché, y fragmentación, entre otros.

Qué es la memoria

Una memoria es un dispositivo donde se almacenan datos. En los sistemas de cómputo hay dos varios tipos de memoria, de los que destacan: la memoria principal (RAM) y la memoria secundaria (discos).

El procesador puede usar directamente la memoria principal, por lo que los programas deben ser cargados en memoria antes de ser utilizados. La MMU (Unidad de manejo de memoria) es el hardware que se utiliza para trabajar con la memoria.

Administración de memoria

Espacio de direccionamiento

Cada que se requiere el hardware entrega un cojunto de bits (8, 16,32,64) según la arquitectura.

De forma que:

MMU

Es la encargada de verificar que un proceso no lea o modifique los datos de otro
El sistema operativo no podría encargarse de ésta verificación, o, si lo hiciera el retraso sería mayor.
¿Cómo lo hace?
El SO le da a un proceso un registro base y un registro límite.
Ejemplo: Si a un proceso le asignan 64kb (65536), a partir de la dirección 504214, el registro base es 504212 y el registro límite es 65536. Si una instrucción de ese proceso desea acceder a una dirección inferior a 504212 o superior a 569749, la MMU interrumpe el proceso y le indica al SO. El SO deberá terminar el proceso y notificar al usuario.

Memoria Caché

La velocidad de un procesador es mayor que la velocidad de la memoria.

De modo que es posible que el procesador acceda a la memoria principal en busca de instrucciones y datos, y que se requiera una dirección de memoria y ésta no se encuentre disponible, por lo que el procesador deberá esperar. (No puede cambiar de proceso).

Para evitar éstos retrasos se utiliza la memoria caché.

La memoria caché es una memoria de alta velocidad situada entre el procesador y la memoria principal.

Si se tiene en cuenta que:

Entonces lo mejor es que, cuando el procesador requiere una dirección de memoria, el HW transfiera al procesador todo un bloque completo de direcciones y no solo la dirección solicitada.

Espacio en memoria de un proceso

Un proceso se lleva a memoria siguiendo una estructura:

Resolución de direcciones

Un programa compilado no emplea nombres de variables sino direcciones de memoria. La asignación de las direcciones se puede realizar:

Partición de la memoria

Si se emplea tiempo de carga o tiempo de ejecución, es posible asignar a cada programa un bloque contiguo de memoria de tamaño fijo.

El SO se colocaría en la región más baja (0X00000000) y dejaría el resto a los procesos.

Fragmentación

Cuando los procesos terminan su ejecución y el SO libera la memoria asignada, comienza a aparecer la fragmentación.

El SO seguiría las siguientes estrategias para asignar dirección a un nuevo proceso:

Puede producirse Fragmentación externa, cuando hay muchos bloques libres entre bloques asignados a procesos. La fragmentación interna se refiere a la cantidad de memoria dentro de un bloque que nunca se usará.

Compactación

Puede darse el caso de que haya suficiente espacio libre disponible, pero ningún bloque del tamaño suficiente para que un proceso se aloje en memoria.

Cuando el SO detecta un alto indice de fragmentación se puede lanzar una operación de compactación: mover bloques ocupados para ocupar espacios contiguos.

Intercambio (SWAP)

Cuando la memoria se termina, el sistema puede seguir operando. El SO puede suspender un proceso, almacenar una copia en memoria secundaria, y más adelante puede restaurarlo.

Segmentación

En una arquitectura que soporte segmentación, las secciones de texto, datos, libres y pila de un proceso pueden estar en segmentos diferentes. Esto permite definir permisos diferentes a los segmentos. De ese modo se protege las diferentes secciones del proceso.

Referencias

  1. Wolf, Ruiz, Bergero y Vega (2014). Sistemas operativos. 1a ed. – Iniciativa Latinoamericana de Libros de Texto Abiertos (LATIn)

Reconocimiento por uso de ilustraciones:

  1. Arquitectura de 32 bits vs 64 bits: https://www.xataka.com/basics/que-significa-que-mi-cpu-sea-de-32-o-64-bits-y-cual-es-la-diferencia
  2. MMU: http://faculty.salina.k-state.edu/tim/ossg/Memory/mem_hw.html
  3. https://developers.redhat.com/blog/2016/03/01/reducing-memory-access-times-with-caches/

Te puede interesar:

¿Qué te pareció este artículo?
  • Poco informativo ()
  • No era lo que buscaba ()
  • Excelente ()
  • Interesante ()
  • Regular ()
(Visto 10.294 veces)

Tu comentario

opiniones