Buscar en este blog

lunes, 28 de mayo de 2012

Memoria Principal (RAM)

Acrónimo de Random Access Memory (Memoria de acceso aleatorio), es el nombre que se le da a los dispositivos de memoria que permiten acceder a los datos que almacenan en forma no secuencial, a diferencia de las cintas magnéticas cuyo acceso se hace en forma secuencial. 

La memoria principal o primaria, también llamada memoria central, es aquella memoria de un ordenador, donde se encuentran el código de instrucciones y los datos del programa, que es ejecutado actualmente.

Por ejemplo, cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y recién y recién después lo empieza a ejecutar. lo mismo ocurre cuando necesita procesar una serie de datos; antes de poder procesarlos los tiene que llevar a la memoria principal.

Esta clase de memoria es volátil, es decir que, cuando se corta la energía eléctrica, se borra toda la información que estuviera almacenada en ella. 

En general la principal región de almacenamiento de propósito para el que el microprocesador tiene acceso directo se llama memoria de acceso aleatorio (RAM). En computación, la memoria es cualquier dispositivo o sobre la información que se puede mantener. Los ordenadores tienen dos tipos principales de almacenamiento: memoria de acceso aleatorio (RAM) y las unidades de disco y otros soportes de almacenamiento externo. Otros tipos de almacenamiento incluyen memoria de sólo lectura (ROM) y amortiguadores.


GESTION DE LA MEMORIA


En un sistema  monoprogramado, la memoria principal se divide en dos partes: una parte para el sistema operativo (monitor residente, núcleo) y otra parte para el programa que se ejecuta en ese instante.

En un sistema multiprogramado, la parte de “usuario” de la memoria debe subdividirse para hacer sitio a varios procesos. Esta tarea de subdivisión la lleva a cabo el sistema operativo y se conoce como gestión de memoria.


CARGA DE PROGRAMAS EN MEMORIA

La operación principal de la administración de la memoria es llevar la información a la memoria principal, para poder ser ejecutada por el procesador. En los sistemas modernos, esta administración se llama Memoria Virtual, basada en dos técnicas: Paginación y Segmentación.

Las técnicas que existen para la carga de programas en memoria son:

Partición Fija: Consiste en dividir la memoria libre en varias partes de igual tamaño o de diferentes tamaños. En el caso de la partición fija de partes iguales, se plantean dos dificultades:

Un programa puede ser demasiado grande para caber en la partición. En este caso, el programador debe diseñar el programa mediante superposiciones, para que sólo una parte del programa esté en memoria principal. Cuando se necesita un módulo que no está presente, el programa de usuario debe cargar dicho módulo en la partición del programa, superponiéndose a los programas y datos que se encuentren en ella.

El uso de memoria principal es extremadamente ineficiente. Cualquier programa, sin importar lo pequeño que sea, ocupará una partición completa. Supongamos un programa que ocupa 120 Kb y se carga en una partición de 512 Kb, se malgasta el espacio interno de la partición y ésto se denomina fragmentación interna.

En el caso de particiones de igual tamaño, si todas las particiones estuvieran ocupadas con procesos que no están listos para ejecutar y necesita cargarse un nuevo proceso, debe determinarse qué partición expulsarse de memoria. Esta decisión es una decisión de planificación, que se verá en un capítulo próximo.

Pero en el caso de particiones de distintos tamaños, debe determinarse en que partición (por cuestiones de tamaño) se cargará el nuevo proceso. La forma más simple es asignar cada proceso a la partición más pequeña en que quepa (sin importar si la partición está cargada o no), lo que necesitará de una cola de expulsados para cada partición. Otra forma es asignar el proceso a la partición más pequeña entre aquellas que están libres (usando una única cola para todos los procesos); y si todas las particiones están ocupadas, se debe tomar una decisión de intercambio.

Estamos suponiendo con este método que conocemos la cantidad máxima de memoria que necesitará un proceso, lo que no siempre es cierto.

Partición Dinámica: Este método consiste en particiones de memoria de tamaños variable, o sea, a cada proceso se le asigna la cantidad de memoria que necesita (la cantidad exacta y ni un poco más). Tras el ingreso de nuevos procesos y la expulsión de otras, se generarán huecos de memoria inutilizados. Conforme pasa el tiempo, la memoria comienza a estar más fragmentada y su rendimiento decae; este fenómeno se denomina fragmentación externa.

Una técnica para superar la fragmentación externa es la compactación. De vez en cuando, el sistema operativo desplaza los procesos para que estén contiguos de forma que toda la memoria libre quede junta en un bloque. Las dificultades que presenta la compactación son:
  • Es un procedimiento que consume tiempo de trabajo del procesador.
  • Debe realizarse los movimientos de una región a otra, sin invalidar las referencias a memoria del programa.
 A pesar de la compactación, deben utilizarse algunos algoritmos para la ubicación de procesos en las particiones. Estos algoritmos son:
  • Mejor ajuste (Best-fit): se elige el bloque con el tamaño más parecido al del proceso entrante.
  • Primer ajuste (First-fit): comienza recorriendo la memoria desde el comienzo y escoge el primer bloque disponible en el que entre el proceso entrante.
  • Siguiente ajuste (Next-fit): recorre la memoria desde el lugar de la última ubicación y elige el siguiente bloque disponible que sea suficientemente grande.
  • Peor ajuste (Worst-fit): elige el bloque más grande posible.

En un sistema multiprogramado con particiones dinámicas, habrá algún momento en el que todos los procesos de memoria principal estén en estado bloqueado y la memoria sea insuficiente, aún aplicando la compactación, para un proceso adicional. En este caso, el sistema operativo debe elegir qué proceso reemplazar. Este tema se ve en los temas que tienen que ver con memoria virtual, por lo que lo veremos más adelante.

No hay comentarios:

Publicar un comentario