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

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:

  • Una arquitectura de 8 bits, puede direccionar 2^8 direcciones (256)
  • Una de 16 bits = 65536 bytes (64 KB).
  • Una de 32 bits = 4294967269 bytes ( 4096 MB = 4 GB)
  • Una de 64 bits puede direccionar hasta 16 exabytes

Administración de memoria

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.

Administración de memoria mmu

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:

  • Un recurso empleado recientemente, puede volverse a necesitar (Localidad temporal)
  • Un recurso puede ser requirido si está cerca de otro recurso cercano. (Localidad espacial)
  • Un recurso tiende a ser requerido de forma secuencial (Localidad secuencial)

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.

Administración de memoria Cache

Espacio en memoria de un proceso

Un proceso se lleva a memoria siguiendo una estructura:

  • Sección de texto: Las instrucciones a ser ejecutadas.
  • Sección de datos: Variables globales y datos inicializados. (El espacio es fijado en tiempo de compilación y no puede ser cambiado, aunque los datos sí.)
  • Espacio de libres: Espacio para asignación dinámica de memoria durante la ejecución
  • Pila de llamadas: Almacena la secuencia de funciones, con sus parámetros y variables locales.

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:

  • En tiempo de compilación: El programa tiene la dirección absoluta de las variables y funciones.
  • En tiempo de carga: Al cargarse a memoria el sistema operativo actualiza las referencias a memoria para que apunten al lugar correcto.
  • En tiempo de ejecución: Las direcciones se refieren a una base y a un desplazamiento. Esto permite que un proceso sea reubicado en memoria mientras está siendo ejecutado.

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:

  • Primer ajuste: Tomar el primer bloque con tamaño suficiente para alojar un proceso
  • Mejor ajuste: Buscar el bloque que mejor se ajuste al tamaño del proceso
  • Peor ajuste: Buscar el bloque más grande disponible.

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.

Administración de memoria Fragmentacion Segmentación

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.293 veces)
Facebooktwitterlinkedinmail

Tu comentario

opiniones

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *







41 − 39 =