SPD U03 Memorias 2007
SPD U03 Memorias 2007
SPD U03 Memorias 2007
MEMORIAS
INTRODUCCIÓN
Es común que a la memoria de la computadora se la denomine “MEMORIA CENTRAL” para diferenciarla
de otro tipo de almacenamiento, por ejemplo los discos, cintas, etc.
Podemos considerar a la memoria como a un conjunto de celdas (casilleros) donde es posible almacenar da-
tos o instrucciones. Estas celdas están numeradas, y la unidad de control (UC) es capaz de identificar a cada
una por ese número o dirección.
Además de identificar a las celdas, la UC puede leer el contenido de una de ellas o reemplazarlo, escribiendo
un nuevo dato o una nueva instrucción.
Byte
Es una unidad de almacenamiento equivalente a 8 bits. Su nombre proviene de Binary Termin (Término Bi-
nario).
Carácter
Es la cantidad de bits necesarios para representar un símbolo de un código alfabético, numérico o especial.
Palabra o word
Es una unidad lógica de información que puede ser manipulada por el procesador en un instante determinado.
Generalmente se encuentra conformada por un número exacto de bytes.
Características
Volatilidad
Es la característica que tienen las memorias de alterar o perder su contenido cuando se produce una falla en
el suministro eléctrico o se produce el corte del mismo.
Lectura
Es la operación mediante la cual se extrae la información contenida en la celda. En el caso de la lectura, la
destrucción o no de la información contenida también depende de la tecnología utilizada. Las memorias que
Dirección de memoria
Es la ubicación física de una palabra en memoria.
Direccionamiento
Es la función desarrollada por el procesador para localizar un dato o una instrucción dentro de la memoria.
Modos de acceso
Básicamente existen dos formas de acceder a una determinada palabra almacenada:
Acceso Secuencial:
En este caso para acceder a un dato determinado, es necesario esperar que pasen ante el dispositivo todos los
elementos previos. Un ejemplo de este tipo de acceso son las cintas magnéticas, donde para acceder a un de-
terminado registro es necesario pasar por encima de todos aquellos que están antes que él.
Tiempo de acceso
Es el tiempo que transcurre entre el instante en que se lanza una operación de lectura en memoria y el instan-
te en que se dispone de la primera información buscada.
Capacidad de memoria
Se denomina así a la cantidad máxima de información que puede contener una memoria. En la actualidad es-
tas capacidades suelen medirse en Mbytes.
1) Memoria Central
Memoria de Registros
Memoria Principal (RAM / ROM)
Memoria Caché:
Interna a la CPU (Caché de primer nivel).
MEMORIA CENTRAL
MEMORIAS DE REGISTROS
Las memorias de registros son el almacenamiento fundamental que utiliza la CPU para la operación de la
máquina. Es una memoria de semiconductores muy rápida, cuyo tiempo de acceso es muy pequeño. Los acu-
muladores, flags (banderas o registro de estado), registros y contadores, entran en esta categoría.
MEMORIA PRINCIPAL
Es aquella en que se almacenan todas las instrucciones del programa usuario y los datos que están bajo pro-
ceso inmediato, además de ciertas instrucciones pertenecientes al Sistema Operativo.
MEMORIAS ACTIVAS
RAM (Random Access Memory - Memoria de acceso aleatorio)
Son memorias de lectura y escritura. Su contenido puede ser modificado mediante un programa, en cualquier
instante. Su mayor desventaja es la volatilidad, dado que al interrumpirse la alimentación, pierde la informa-
ción almacenada en su interior.
Se utilizan como el lugar donde se cargan los programas y los datos del usuario para ser procesados.
Protección De Paridad
Generalmente cada posición de memoria principal tiene asociado un bit adicional, inaccesible para el usuario,
a efectos de poder efectuar un control de paridad. El estado de este bit se calcula automáticamente después
de cada operación a modo de verificación.
MEMORIAS PASIVAS
ROM (Read Only Memory)
Las Memorias Pasivas son memorias pregrabadas por el fabricante (FIRMWARE). Los datos contenidos en
esta memoria pueden ser utilizados por el usuario, pero no pueden se modificados o borrados, por este moti-
vo se dice que es una memoria NO VOLATIL.
Esta definición es válida para las ROM, PROM, EPROM (memorias pasivas reales) y para las EAROM y las
EEROM (memorias que, a pesar de ser consideradas pasivas, pueden modificar su contenido mediante pro-
gramas).
MEMORIAS CACHÉ
Memoria Caché Interna
Es una caché que se encuentra dentro del procesador, y que por su proximidad al lugar donde se cumplen to-
dos los procesos, es mucho más rápida que la externa.
MEMORIA SECUNDARIA
La Memoria Auxiliar
Es aquella memoria utilizada durante el procesamiento en la que se almacenan todos aquellos programas,
subrutinas, datos, etc. que no han podido ser almacenados en la memoria principal debido a las limitaciones
de capacidad. A pesar de que su tiempo de acceso es superior a las memorias internas, permite almacenar una
gran cantidad de bits en forma muy económica. Los discos, cintas, tambores, cassettes, etc. pertenecen a este
nivel.
MODOS DE DIRECCIONAMIENTO
Se denominan modos de direccionamiento o técnicas de acceso a la Memoria Principal a los métodos
utilizados para seleccionar la dirección en la que se quiere extraer o almacenar un dato.
Estas técnicas están relacionadas tanto con la arquitectura del hardware del ordenador como con el software
utilizado.
Antes de entrar al estudio detallado de cada uno de los modos de direccionamiento, debemos tener presente
que:
• Hay tareas de proceso y programas que utilizan varios modos de direccionamiento.
• Cada modo puede combinarse con uno o varios de los otros modos ya conocidos.
Las Unidades Centrales de Proceso de las arquitecturas de los ordenadores que se utilizan hoy en día permi-
ten utilizar varios modos de direccionamiento. Veamos primero cada uno por separado para luego realizar un
estudio de los modos combinados más utilizados.
Direccionamiento inmediato
En él la instrucción contiene ya el operando y no la dirección en que se encuentra.
Direccionamiento directo
Se diferencia del anterior en que el CD de la instrucción no contiene al operando, sino a su dirección final o
efectiva.
Direccionamiento indirecto
En este direccionamiento, conocido también por indirección, el contenido del CD, a diferencia del modo di-
recto, apunta a la dirección de una palabra de memoria, dirección intermedia, cuyo contenido será inter-
pretado como la dirección (DF), lo que implica otro ciclo más de memoria para acceder al operando.
El direccionamiento indirecto se utiliza en muchas aplicaciones que hacen uso de datos alojados en posicio-
nes distantes en la memoria.
La indirección es un método eficaz para transferir los parámetros de un programa principal a subrutinas.
Este direccionamiento permite con una sola instrucción, de un programa, acceder a distintas zonas de la me-
moria.
Todos los ordenadores que utilizan memoria paginada necesitan de un direccionamiento indirecto.
Direccionamiento relativo
Este direccionamiento se caracteriza porque el valor numérico de la dirección final de la palabra a acceder
se consigue tratando conjuntamente la información contenida en el CD del RI y la contenida en algún registro
determinado.
La característica fundamental del direccionamiento relativo es que posibilita el acceso a un conjunto de di-
recciones determinadas, a partir de una considerada como dirección de referencia.
Existen varios modos de direccionamiento relativo, según donde se encuentre almacenada la dirección de re-
ferencia o cuál sea el proceso para determinar la dirección final del dato.
Los ordenadores que tienen algunas instrucciones, cuya longitud del CD es insuficiente para direccionar la
totalidad del mapa de la memoria, van provistos en su diseño de algún direccionamiento relativo a otro regis-
tro distinto del RI.
En algunos casos la relatividad se consigue obteniendo la dirección final mediante cálculos aritméticos senci-
llos, habitualmente sumas o restas, cuyos resultados se transfieren al registro D como dirección de acceso a la
memoria.
Otros métodos transfieren simultáneamente la información al registro D combinándola por campos de bits.
Las posibilidades del direccionamiento relativo pueden ser muy numerosas.
GESTIÓN DE MEMORIA
La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho
cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de me-
moria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que si-
gue generando escasez de memoria en los sistemas multitarea y/o multiusuario.
Los sistemas de administración de memoria se pueden clasificar en dos tipos:
• Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución
• Los que no.
ASPECTOS GENERALES
Memoria Real
La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el
espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de ma-
yor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido ac-
ceso. Sólo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.
Memoria Virtual
El término memoria virtual se asocia a dos conceptos que normalmente a parecen unidos:
1. El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más
memoria RAM de la que realmente hay en el sistema.
2. Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el
espacio de direcciones completo. Esta técnica facilita enormemente la generación de código, puesto que
el compilador no tiene porque preocuparse sobre dónde residirá la aplicación cuando se ejecute.
Espacio de direcciones
Los espacios de direcciones son los conjuntos de direcciones que pueden ser referenciadas.
Las direcciones involucradas en este tipo de espacios pertenecen a tres tipos diferentes:
• Direcciones físicas: son aquellas que referencian alguna posición en la memoria física.
• Direcciones lógicas: son las direcciones utilizadas por los procesos. Sufren una serie de transformacio-
nes, realizadas por la MMU, antes de convertirse en direcciones físicas.
Memory Manager Unit (MMU): es un chip que pertenece a la CPU, y se ocupa de convertir las direcciones
lógicas en direcciones físicas.
• Direcciones lineales: direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado
una transformación dependiente de la arquitectura.
Los programas de usuario siempre tratan con direcciones virtuales; nunca ven las direcciones físicas re-
ales.
FRAGMENTACIÓN
La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria que se
vieron en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentación ex-
terna.
La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más pro-
cesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera.
La fragmentación puede ser:
• Fragmentación Externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es
contigua.
• Fragmentación Interna: la memoria asignada puede ser ligeramente mayor que la requerida; esta refe-
rencia es interna a la partición, pero no se utiliza.
La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en
un solo gran bloque, pero esta solo es posible si la relocalización es dinámica y se hace en tiempo de ejecu-
ción.
Desventajas
Este tipo de asignación genera fragmentación interna.
Asignación Paginada
Es una técnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones físicas de
igual tamaño, denominadas marcos de página.
Los programas se dividen en unidades lógicas, denominadas páginas, que tienen el mismo tamaño que los
marcos de páginas. De esta forma, se puede cargar una página de información en cualquier marco de página.
Las páginas sirven como unidad de almacenamiento de información y de transferencia entre memoria princi-
pal y memoria auxiliar o secundaria. Cada marco se identifica por la dirección de marco físico.
Las páginas de un programa no necesitan estar contiguamente en memoria.
Para tener el control de las páginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas
de Pagina (PMT) para cada uno de los procesos. En esta tabla, cada página tiene un número que se utiliza
como índice en la tabla de páginas, lo que da por resultado el número del marco correspondiente a esa página
virtual.
Características de la Paginación
• El espacio de direcciones lógico de un proceso puede ser no contiguo.
• Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).
• Se divide la memoria en bloques de tamaño llamados páginas.
• Se mantiene información de los marcos libres.
• Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas.
• Se produce fragmentación interna.
Ventajas de la Paginación
• Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto
se cargara bajo la solicitud.
• No es necesario que las páginas estén contiguas en memoria, por lo que no se necesitan procesos de com-
pactación cuando existen marcos de paginas libres dispersos en la memoria.
• Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.
Desventajas de la Paginación
• El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el meca-
nismo de traducción de direcciones necesario.
• Se deben reservar áreas de memoria para las tablas de control. Al no ser fija el tamaño de estas, se crea un
problema semejante al de los programas (como asignar un tamaño óptimo sin desperdicio de memoria, u
"ovearhead" del procesador).
• Aparece el problema de fragmentación interna.
Traducción de direcciones
La dirección generada por la CPU se divide en:
• Número de página (p): utilizado como índice en la tabla de páginas que contiene la dirección base de ca-
da página en la memoria física.
• Offset de la página (d): combinado con la dirección base define la dirección física que será enviada a la
unidad de memoria.
Segmentación
Es un esquema de manejo de memoria semejante al utilizado en la asignación de particiones dinámicas, sólo
que en el caso de la segmentación, las particiones no albergan procesos completos, sino submódulos de estos
llamados segmentos.
Cada uno de estos segmentos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada
espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la di-
visión lógica del programa.
La segmentación permite alcanzar los siguientes objetivos:
• Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopila-
ciones, sin afectar por ello al resto del programa.
• Estructuras de datos de largo variable
• Protección: se puede proteger los módulos del segmento contra accesos no autorizados.
• Enlace dinámico entre segmentos: los enlaces se establecen a medida que van siendo necesarios.
Ventajas de la Segmentación
El esquema de segmentación ofrece las siguientes ventajas:
• El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
• Es posible compilar módulos separados como segmentos.
• Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. Cambios
dentro de un módulo no afectan al resto de los módulos.
• Es fácil el compartir segmentos.
• Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.
• Existe la posibilidad de definir segmentos que aún no existan. Así, no se asignara memoria, sino a partir
del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serían los arreglos cuya
dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso po-
dría retardar la asignación de memoria hasta el momento en el cual se referencia el arreglo u otra estruc-
tura de dato por primera vez.
Desventajas de la Segmentación
• Hay un incremento en los costos de hardware y de software para llevar a cabo la implementación, así co-
mo un mayor consumo de recursos: memoria, tiempo de CPU, etc.
• Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación
externas, lo que puede merecer un plan de reubicación de segmentos en memoria principal.
• Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de ta-
maños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de meca-
nismos más costosos que los existentes para paginación.
• Al permitir que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación a nivel de los
discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos.
• No se puede garantizar, que al salir un segmento de la memoria, este pueda ser traído fácilmente de nue-
vo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño.
• La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales de
hardware y software.
Estas desventajas tratan de ser minimizadas, bajo la técnica conocida como Segmentación paginada que será
vista en otra oportunidad.
CONCLUSIONES
Para concluir se entiende que:
• En la memoria principal son ejecutados los programas y procesos de una computadora y es el espacio real
que existe en memoria para que se ejecuten los procesos.
• La memoria virtual es aquella que le ofrece a las aplicaciones la ilusión de que están solas en el sistema y
que pueden usar el espacio de direcciones completo.
• Las direcciones de memoria son de tres tipos: físicas, lógicas y lineales.
• El objetivo del intercambio (swap) es dar cabida a la ejecución de más aplicaciones de las que pueden re-
sidir simultáneamente en la memoria del sistema.
• La asignación consiste en determinar cuál espacio vacío en la memoria principal es el más indicado para
ser asignado a un proceso.
• Las estrategias más comunes para asignar espacios vacíos (huecos) son: primer ajuste, mejor ajuste, peor
ajuste.
• La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria tal
como la asignación.
• La fragmentación puede ser interna o externa.
• La paginación es una técnica de gestión de memoria en la cual el espacio de memoria se divide en sec-
ciones físicas de igual tamaño llamadas marcos de página, las cuales sirven como unidad de almacena-
miento de información.
• La segmentación es un esquema de manejo de memoria mediante el cual la estructura del programa refle-
ja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño
variable denominados segmentos.