Introducción a Memoria

De Departamento de Informatica
Saltar a: navegación, buscar
Una memoria Ram, un tipo de almacenamiento primario.

La memoria es uno de los principales recursos de un computador, ya que se trata de un componente indispensable para la operación de cualquier sistema informático moderno. La memoria es una gran tabla o matriz de palabras o bytes, cada uno referenciado a una dirección propia y única.

Contenido

Memoria principal

La memoria principal es el espacio real de memoria donde son ejecutados programas y procesos. Esta memoria es de mayor costo que la memoria secundaria pero es de más rápido acceso. En cuanto a rapidez de acceso, sólo la memoria caché es más rápida que la principal, pero a su vez es de mayor costo. La CPU extrae instrucciones de este almacén de datos dependiendo del contador del programa; es por esto que el tamaño máximo del código de un programa no debería exceder del tamaño de la memoria principal, es también compartida por dispositivos I/O y es de carácter volátil.

La memoria principal junto con los registros dentro del propio procesador son los únicos almacenes de datos que la CPU puede acceder directamente, es decir, todas las instrucciones en ejecución además de los datos utilizados por estas instrucciones deberán estar almacenados en alguno de estos dispositivos. Esto es porque las instrucciones toman como argumentos datos en memoria, pero no así direcciones de disco. Si estos datos no están en memoria, deberán moverse hasta allí antes que la CPU los necesite para trabajar sobre ellos.

El procesador en general puede acceder rápidamente a los registros integrados en la CPU; a la velocidad de un ciclo del reloj del procesador, siendo más lento en el caso de la memoria principal ya que se necesitaría de un bus para realizar la transacción. Esta comunicación es muy lenta porque requiere de varios ciclos del reloj de procesador que además podría implicar que este último se detenga por no disponer de los datos necesarios para completar una instrucción. Este marco de acción es poco admisible, por lo que se implementa un buffer de memoria entre la CPU y la memoria principal; la memoria caché, debido a la gran frecuencia con la que son requeridos los datos en memoria.

Un sistema operativo debe mantener la estructura de datos donde almacena la información sobre qué zona de la memoria ocupa cada proceso, así como también las zonas de la memoria libres. La parte del sistema operativo encargado de la administración y gestión de memoria se denomina administrador de memoria. El administrador se encarga de tomar registros desde memoria que estén o no siendo utilizados, esto con la finalidad de dar el espacio a procesos que necesiten memoria y liberarla al finalizar.

El SO, si se está ejecutando en modo kernel tiene acceso total a la memoria tanto propia como a la de los usuarios. Esto permite cargar los programas y procesos correspondientes a los usuarios en la memoria de los usuarios así como también interrumpir esos programas en caso de error y tener control sobre los parámetros de las llamadas a sistema.

La memoria principal cada día perfecciona más su capacidad de almacenamiento y su velocidad de transmisión de datos, la cual trata de estar acorde a las nuevas exigencias del nuevo software, los cuales exigen cada día memorias con un mejor funcionamiento. [1]

Para cumplir todos estos retos las nuevas memorias tienen que cambiar muchas veces su diseño establecido ya que a causa de una mayor transmisión de datos estas tienden a producir mayor calor las cuales necesitan estar cada vez mas alejadas y consumir una menor energía eléctrica, lo cual conlleva a una evolución de la memoria que dada día se hace mas perfectible.

Hardware Básico y Acceso en memoria a los procesos

Vista de la protección del hardware para el acceso a memoria.

La memoria principal y los registros dentro del propio procesador son los únicas áreas de almacenamiento donde la CPU puede acceder directamente. Todas las instrucciones en ejecución deberá estar almacenado si o si en uno en uno de estos almacenamientos directos, en el caso contrario deberán llevarse hasta ahí antes de que la CPU pueda trabajar con ellos.

La manera en como el sistema operativo sabe en que lugar de la memoria principal están los procesos es almacenando la dirección base de donde está el proceso y su límite que es el tamaño máximo del programa indicando donde termina la región en donde está el proceso. Al momento de acceder a la memoria se comprueba si la dirección es mayor a el registro base y a la vez es menor que el registro base más el límite, si ésto se cumple se accede a la dirección de memoria con normalidad, en caso contrario se lanza un trap (una interrupción por software) al sistema operativo.

Recordar que el acceso a memoria puede requerir varios ciclos de reloj para poder completarse, por lo que el procesador necesitará detenerse. El remedio para esto es añadir una memoria rápida entre la CPU y la Memoria Principal denominado caché.

Además debemos preocuparnos de la seguridad para proteger al sistema operativo de los posibles procesos de parte de los usuarios. Esta debe ser brindada por el hardware.

Procesos en la RAM ejemplificando la utilización del registro base y límite.

Vinculación en memoria

Generalmente los programas viven en un disco en forma de un archivo binario ejecutable, pero como este debe ser cargado en memoria y colocado dentro de un proceso. Normalmente esto consiste en tomar un proceso de una Cola de Entrada y llevarlo a memoria.

La vinculación de instrucciones y datos en la memoria puede ocurrir en tres tiempos distintos, estos son: en tiempo de compilación, en tiempo de carga o en tiempo de ejecución. La vinculación en tiempo de compilación consta en que si la región de la memoria ya se conoce aproximadamente se general código absoluto, en caso contrario, se recompila. La vinculación en tiempo de carga consiste en generar código relocalizable si al compilar no se conoce la región de memoria. Y la vinculación en tiempo de ejecución consiste en postergar hasta el momento de la ejecución la vinculación si es que se puede mover el proceso de un segmento de memoria a otro, en este caso se necesita la ayuda del hardware para los registros bases y límite.

Espacios de direcciones lógicos y físicos

Las direcciones lógicas son aquellas generadas por la CPU, a diferencia de las que se cargan en el registro de direcciones de la memoria denominadas direcciones físicas. El esquema de resignación de direcciones en tiempo de ejecución hacen que estas dos direcciones difieran. En este caso llamamos a la dirección lógica como dirección virtual. La correspondencia entre las direcciones físicas y virtuales es establecida por un dispositivo llamado Unidad de Gestion de Memoria (MMU).

Carga Dinámica y Montaje Dinámico

Para poder tener una mejor utilización del espacio de memoria se utiliza el mecanismo llamado carga dinámica. La gran ventaja es que una rutina no utilizada, nunca se cargará en memoria, ya que esta no se carga hasta que se invoca. Este mecanismo no requiere ayuda especial por parte del sistema operativo, ya que es responsabilidad de los que diseñan el programa aprovechar este método.

El montaje dinámico pospone el montaje y no la carga como el método anterior. Utilizando este método, cada programa de un sistema incluirá una copia de su biblioteca de lenguaje dentro de la imagen ejecutable. Esto hace que se pierda espacio tanto en el disco, como en la memoria principal. A diferencia de la carga dinámica, el montaje requiere ayuda del sistema operativo, ya que distinguirá si la rutina se encuentra dentro del espacio de memoria de otro proceso.

Bibliografía

“Fundamentos de Sistemas Operativos”, Silberschatz, Galvin, Gagne, Séptima Edición, 2005.

Referencias

  1. [1]Memoria Principal y Virtual
Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas