jueves, 8 de septiembre de 2011

TIPOS DE MEMORIA

INTRODUCCION

La memoria es un bloque fundamental del computador, cuya misión consiste en almacenar los datos y las instrucciones. La memoria principal, es el órgano que almacena los datos e instrucciones de los programas en ejecución.

A veces la memoria principal no tiene la suficiente capacidad para contener todos los datos e instrucciones, en cuyo caso se precisan otras memorias auxiliares o secundarias, que funcionan como periféricos del sistema y cuya información se traspasa a la memoria principal cuando se necesita.

La memoria solo puede realizar dos operaciones básicas: lectura y escritura. En la lectura, el dispositivo de memoria debe recibir una dirección de la posición de la que se quiere extraer la información depositada previamente. En la escritura, además de la dirección, se debe suministrar la información que se desea grabar.

EVOLUCION DE LAS MEMORIAS

En las calculadoras de la década de los 30 se emplean tarjetas perforadas como memorias. La dirección de las posiciones quedaba determinada por la posición de ruedas dentadas. Luego se emplearon relés electromagnéticos.

El computador ENIAC utilizaba, en 1946, válvulas electrónicas de vacío para construir sus biestables que actuaban como punto de memoria. Además, tenía una ROM de 4 bits construida a base de resistencias.

Al comienzo de la década de los 50, se usaron las líneas de retardo de mercurio con 1 Kbit por línea, como memoria. Igualmente se empleo el tubo de Williams, que tenía una capacidad de 1200 bits y consistía en un tubo de rayos catódicos con memoria.

En UNIVAC I introdujo en 1951 la primera unidad comercial de banda magnética, que tenía una capacidad de 1,44 Mbit y una velocidad de 100 pulgadas/s.

El primer computador comercial que uso memoria principal al tambor magnético fue el IBM 650 en 1954. Dicho tambor giraba a 12500 r.p.m y tenía una capacidad de 120 Kbits.

En 1953, el Mit dispuso de la primera memoria operativa de ferritas, que fue muy popular hasta mediados de los años 70.

Fue IBM, en 1968, quien diseño la primera memoria comercial de semiconductores. Tenía una capacidad de 64 bits.

También, el modelo 350 de IBM en 1956 fue quien utilizo el primer disco con brazo móvil y cabeza flotante. Su capacidad era de 40 Mbits y su tiempo de acceso, de 500 ms.

Tecnologías nuevas, como la de burbujas magnéticas, efecto Josephon, acoplamiento de carga, de tipo óptico y otras, compiten en la actualidad por desplazar a las memorias de semiconductor basadas en silicio, que ya han alcanzado capacidades superiores a 1 Mbit en una pastilla con rapidísimo tiempo de acceso y coste razonable.

CUERPO DEL INFORME

MEMORIA DE FERRITA

Aunque hoy en día están en desuso, la práctica totalidad de las memorias principales, desde mediados de la década de los 50, hasta los años 70, se han construido con ferritas. Una muestra de su importancia es que es el escudo de las Facultades y Escuelas de Informática se basa en un toro de ferrita.

El punto de memoria es un toro o anillo de ferrita, que presenta dos direcciones de magnetización. Las primeras ferritas tenían un diámetro exterior de 0.3 cm y las ultimas de 0.05 cm.

La conexión a los transductores se realiza mediante hilos de cobre barnizados, que pasan por el interior de las ferritas. La conexión se hacía con 2, 3 ó 4 hilos. Evidentemente el cosido con menos hilos era más sencillo, pero complicaba los transductores.

Las propiedades fundamentales de estas memorias son las siguientes:

·  Memoria estática con direccionamiento cableado, tipo RAM.

·  No volátil, pues, si se deja de alimentar, las polarizaciones de las ferritas se mantienen invariables.

·  De lectura destructiva. La escritura exige un borrado previo, pues solamente se puede basar del “0” al”1”.

·  Solo se considera el tiempo de ciclo (lectura + escritura) pues los accesos siempre requieren un ciclo. La velocidad de los primeros prototipos era de 20

s y se ha llegado a modelos de 275ns.


·  La capacidad de estas memorias varia de unos pocos K a unos pocos Megas. Se construían con modelos de 4K.

·  Valores típicos de anchos de palabra han sido 8, 16, 32 y 36.

MEMORIAS DE PELICULA DELGADA Y DE HILO PLATEADO.

Ambos tipos de memoria fueron un intento, de poco éxito comercial, de sustituir ferritas de dos hilos por una estructura de fabricación más sencilla, de menor tamaño y, por tanto, de mayor velocidad.

En los dispositivos de película delgada se parte de una fina capa magnetizable sobre la que se establece una matriz de hilos conectados a los transductores. La zona proximal al cruce de dos hilos realiza la misma función que un toro de ferrita de dos hilos. Dicha capa se deposita sobre un soporte y tiene un espesor de unos 10 -4mm.

En los dispositivos de hilo plateado el material magnético se deposita en una fina capa que recubre uno de los dos conductores. La zona de este depósito, próxima al cruce de ambos hilos, forma el equivalente a la ferrita.

MEMORIAS DE SEMICONDUCTORES

Este tipo de memoria se emplea actualmente, con carácter universal, como memoria principal de los computadores.

Todas las memorias que se van a tratar en este apartado son de direccionamiento cableado, o sea, de acceso aleatorio o RAM. Sin embargo, dentro de estas memorias se ha desarrollado otra terminología que resulta un poco confusa, pues repite términos empleados con otro sentido. Se puede establecer la siguiente clasificación:

·  de lectura y escritura(RAM)

·         Estáticas.

·         Dinámicos o con refresco.

·  de sólo lectura

·         ROM (Read Only Memory)

·         PROM (Programmable Read Only Memory)

·         EPROM (Erasable Programmable Read Only Memory)

·         EEPROM (Electrically Erasable Read Only Memory )

Las memorias de semiconductores se presentan en pastillas integradas que contienen una matriz de memoria, un decodificador de direcciones, los transductores correspondientes y el tratamiento lógico de algunas señales de control.

Existen muchas configuraciones, pero la mayoría de estas memorias manejan los siguientes elementos y señales.

·  Bus de Datos: es un colector o conjunto de líneas triestado que transportan la información almacenada en memoria. El bus de datos se puede conectar a las líneas correspondientes de varias pastillas.

·  Bus de Direcciones: cuando se está completo, es un conjunto de m líneas que transportan la dirección y que permite codificar 2 posiciones de memoria. Pude estar multiplexado, de forma que primero se transmiten m/2 bits y luego, el resto.

·  Señales de control típicas:

OE: activa la salida triestado de la memoria.

CS ó CE: activa la pastilla o chip.

WE: señal de escritura. Para realizar una escritura, además de activarse esta señal, también lo estarán CS ó CE.

RAS ó CAS: las líneas RAS (Row Address Strobe) y CAS (Column Address Strobe) sirven para decodificar las filas y columnas de la RAM dinámicas.

d) Ancho de palabra típico: 1,4 u 8 bits.

MEMORIA RAM

Es la memoria de acceso aleatorio (Random Access Memory). Se llama de acceso aleatorio porque el procesador accede a la información que está en la memoria en cualquier punto sin tener que acceder a la información anterior y posterior.

Es la memoria que se actualiza constantemente mientras el ordenador está en uso y que pierde sus datos cuando el ordenador se apaga.

Hay dos tipos básicos de RAM:

DRAM (Dynamic RAM), RAM dinámica,

SRAM (Static RAM), RAM estática

Los dos tipos difieren en la tecnología que usan para almacenar los datos. La RAM dinámica necesita ser refrescada cientos de veces por segundo, mientras que la RAM estática no necesita ser refrescada tan frecuentemente, lo que la hace más rápida, pero también más cara que la RAM dinámica. Ambos tipos son volátiles, lo que significa que pueden perder su contenido cuando se desconecta la alimentación.

En el lenguaje común, el termino RAM es sinónimo de memoria principal, la memoria disponible para programas. Se refiere a la memoria RAM tanto como memoria de lectura y escritura como así a un tipo de memoria volátil.

Tipos de Memoria RAM:

1) DRAM (Dynamic Random Access Memory)

Es la memoria de acceso aleatorio dinámica. Está organizada en direcciones de memoria (Addresses) que son reemplazadas muchas veces por segundo.

Es la memoria de trabajo, por lo que a mayor cantidad de memoria, más datos se pueden tener en ella y más aplicaciones pueden estar funcionando simultáneamente, y por supuesto a mayor cantidad mayor velocidad de proceso, pues los programas no necesitan buscar los datos continuamente en el disco duro, el cual es muchísimo más lento.

·  SRAM (Static Random Access Memory)

Memoria estática de acceso aleatorio es la alternativa a la DRAM. No necesita tanta electricidad para su refresco y reemplazo de las direcciones y funciona más rápido porque no está reemplazando constantemente las instrucciones y los valores almacenados en ella. La desventaja es su altísimo coste comparado con la DRAM. Puede almacenar y recuperar los datos rápidamente y se conoce normalmente como MEMORIA CACHE.

3) VRAM (video RAM)

Memoria de propósito especial usada por los adaptadores de vídeo. A diferencia de la convencional memoria RAM, la VRAM puede ser accedida por dos diferentes dispositivos de forma simultánea. Esto permite que un monitor pueda acceder a la VRAM para las actualizaciones de la pantalla al mismo tiempo que un procesador gráfico suministra nuevos datos. VRAM permite mejores rendimientos gráficos aunque es más cara que la una RAM normal.

4) SIMM ( Single In Line Memory Module)

Un tipo de encapsulado consistente en una pequeña placa de circuito impreso que almacena chips de memoria, y que se inserta en un zócalo SIMM en la placa madre o en la placa de memoria. Los SIMMs son más fáciles de instalar que los antiguos chips de memoria individuales, y a diferencia de ellos son medidos en bytes en lugar de bits.

5) DIMM (Dual In Line Memory)

Un tipo de encapsulado, consistente en una pequeña placa de circuito impreso que almacena chips de memoria, que se inserta en un zócalo DIMM en la placa madre y usa generalmente un conector de 168 contactos.

·  DIP (Dual In Line Package)

Un tipo de encapsulado consistente en almacenar un chip de memoria en una caja rectangular con dos filas de pines de conexión en cada lado.

·  RAM Disk

Se refiere a la RAM que ha sido configurada para simular un disco duro. Se puede acceder a los ficheros de un RAM disk de la misma forma en la que se acceden a los de un disco duro. Sin embargo, los RAM disk son aproximadamente miles de veces más rápidos que los discos duros, y son particularmente útiles para aplicaciones que precisan de frecuentes accesos a disco.

Dado que están constituidos por RAM normal. los RAM disk pierden su contenido una vez que la computadora es apagada.

·  MEMORIA CACHE O RAM CACHE

Un caché es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad independiente. Hay dos tipos de caché frecuentemente usados en las computadoras personales: memoria caché y caché de disco. Una memoria caché, llamada también a veces almacenamiento caché ó RAM caché, es una parte de memoria RAM estática de alta velocidad (SRAM) más que la lenta y barata RAM dinámica (DRAM) usada como memoria principal.

La memoria caché es efectiva dado que los programas acceden una y otra vez a los mismos datos o instrucciones. Guardando esta información en SRAM, la computadora evita acceder a la lenta DRAM.

Cuando un dato es encontrado en el caché, se dice que se ha producido un impacto (hit), siendo un caché juzgado por su tasa de impactos (hit rate). Los sistemas de memoria caché usan una tecnología conocida por caché inteligente en el cual el sistema puede reconocer cierto tipo de datos usados frecuentemente.

El caché de disco trabaja sobre los mismos principios que la memoria caché, pero en lugar de usar SRAM de alta velocidad, usa la convencional memoria principal. Los datos más recientes del disco duro a los que se ha accedido se almacenan en un buffer de memoria. Cuando el programa necesita acceder a datos del disco, lo primero que comprueba es la caché del disco para ver si los datos ya están ahí. La caché de disco puede mejorar drásticamente el rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de veces más rápido que acceder a un byte del disco duro.

Tipos de Memoria CACHE

De acuerdo con el modo de traducción de las direcciones de memoria principal a direcciones de memoria cache, estas se clasifican en los siguientes tipos:

·  De correspondencia directa.

·  De asociación completa.

·  De asociación de conjuntos.

·  De correspondencia vectorizada.

Memoria cache de correspondencia directa.

Se establece una correspondencia entre el bloque K de la memoria principal y el bloque k, modulo n, de la cache, siendo n el numero de bloques de la memoria cache.

Este tipo simple y económico, por no requerir comparaciones asociativas en las búsquedas. De todas formas, en sistemas multiprocesador pueden registrarse graves contenciones en el caso de que varios bloques de memoria correspondan concurrentemente en un mismo bloque de la cache.

Una dirección de memoria consta de 3 campos:

Campo de etiqueta.

Campo de bloque.

Campo de palabra.

Memoria asociativa completa

En este modelo se establece una correspondencia entre el bloque k de la memoria y el bloque j de la cache, en la que j puede tomar cualquier valor.

No se produce contención de bloques y es muy flexible, pero su implementación es cara y muy compleja, ya que el modelo se basa completamente en la comparación asociativa de etiquetas.

Memoria cache de asociación de conjuntos

Se divide la memoria en c conjuntos de n bloques, de forma que al bloque k de memoria corresponde uno cualquiera de los bloques de la memoria del conjunto k, modulo c. La búsqueda se realiza asociativamente por el campo de etiqueta y directamente por el numero del sector. De este modo se reduce el costo frente al modelo anterior, manteniendo gran parte de su flexibilidad y velocidad. Es la

Estructura más utilizada.

Memoria cache de correspondencia vectorizada

El modelo divide a la memoria principal y a le cache en n bloques. La relación se establece de cualquier sector a cualquier sector, siendo marcados los bloques no referenciados del sector como no validos. Esta estructura también reduce costos, minimizando el núcleo de etiquetas para la comparación asociativa.

·  SDRAM (Synchronous DRAM)

DRAM síncrona, un tipo de memoria RAM dinámica que es casi un 20% más rápida que la RAM EDO. SDRAM entrelaza dos o más matrices de memoria interna de tal forma que mientras que se está accediendo a una matriz, la siguiente se está preparando para el acceso. SDRAM-II es tecnología SDRAM más rápida esperada para 1998. También conocido como DDR DRAM o DDR SDRAM (Double Data Rate DRAM o SDRAM), permite leer y escribir datos a dos veces la velocidad bús.

·  FPM (Fats Page Mode)

Memoria en modo paginado, el diseño más común de chips de RAM dinámica. El acceso a los bits de memoria se realiza por medio de coordenadas, fila y columna. Antes del modo paginado, era leído pulsando la fila y la columna de las líneas seleccionadas. Con el modo pagina, la fila se selecciona solo una vez para todas las columnas (bits) dentro de la fila, dando como resultado un rápido acceso. La memoria en modo paginado también es llamada memoria de modo Fast Page o memoria FPM, FPM RAM, FPM DRAM. El término "fast" fué añadido cuando los más nuevos chips empezaron a correr a 100 nanoseconds e incluso más.

11) EDO (Extended Data Outpout)

Un tipo de chip de RAM dinámica que mejora el rendimiento del modo de memoria Fast Page alrededor de un 10%. Al ser un subconjunto de Fast Page, puede ser substituida por chips de modo Fast Page.

Sin embargo, si el controlador de memoria no está diseñado para los más rápidos chips EDO, el rendimiento será el mismo que en el modo Fast Page.

EDO elimina los estados de espera manteniendo activo el buffer de salida hasta que comienza el próximo ciclo.

·  BEDO (Burst EDO)

Es un tipo más rápido de EDO que mejora la velocidad usando un contador de dirección para las siguientes direcciones y un estado 'pipeline' que solapa las operaciones.

·  PB SRAM (Pipeline Burst SRAM)

Se llama 'pipeline' a una categoría de técnicas que proporcionan un proceso simultáneo, o en paralelo dentro de la computadora, y se refiere a las operaciones de solapamiento moviendo datos o instrucciones en una 'tubería' conceptual con todas las fases del 'pipe' procesando simultáneamente. Por ejemplo, mientras una instrucción se está ejecutando, la computadora está decodificando la siguiente instrucción. En procesadores vectoriales, pueden procesarse simultáneamente varios pasos de operaciones de coma flotante

La PB SRAM trabaja de esta forma y se mueve en velocidades de entre 4 y 8 nanosegundos.

TAG RAM

Este tipo de memoria almacena las direcciones de cualquier dato de memoria DRAM que hay en la memoria caché. Si el procesador encuentra una dirección en la TAG RAM, va a buscar los datos directamente a la caché, si no, va a buscarlos directamente a la memoria principal.

Cuando se habla de la CACHEABLE MEMORY en las placas para Pentium con los chipsets 430FX, 430VX, 430HX y 430TX de Intel, nos referimos a la cantidad de TAG RAM, es decir, la cantidad de datos de memoria que se pueden almacenar en la caché. Una de las desventajas del chipset 430TX frente al chipset 430HX es que solo se pueden almacenar los datos de 64 MB de memoria RAM, con lo cual, en ciertos casos, en las placas con este chipset se produce un descenso del rendimiento de memoria al tener instalados más de 64 MB de memoria RAM en el equipo. Por ello, a pesar de la modernidad del diseño, en los servidores o las estaciones gráficas quizás sería más conveniente utilizar una placa base con el chipset 430HX de Intel.

MEMORIA ROM

Estas letras son las siglas de Read Only Memory (memoria de solo lectura) y eso es exactamente lo que es, una memoria que se graba en el proceso de fabricación con una información que está ahí para siempre, para lo bueno y lo malo. No podemos escribir en ella pero podemos leer cada posición la veces que queramos. Se trata de la memoria interna de la máquina, que el procesador lee para averiguar el qué, el cuándo y el cómo de una multitud de tareas diferentes; por ejemplo: lee las diversas instrucciones binarias que se necesitan cada vez que se teclea un carácter por el teclado, o cada vez que se tiene que presentar algo en pantalla.

En la ROM está almacenado también el programa interno que nos ofrece la posibilidad de hablar con el ordenador en un lenguaje muy similar al inglés sin tener que rompernos la cabeza con el lenguaje de máquina (binario). Todas estas cosas suman tanta información que es muy probable que la memoria ROM de un ordenador tenga una capacidad de 8K a 16K, un número suficientemente grande para que esté justificado asombrarse ante la cantidad de información necesaria para llenar tal cantidad de posiciones, especialmente cuando sabemos que los programas ROM están escritos por expertos en ahorrar memoria. Ello sirve para poner de manifiesto la gran cantidad de cosas que pasan en el interior de un ordenador cuando éste está activo.

La memoria ROM presenta algunas variaciones: las memorias PROM, EPROM y EEPROM.

MEMORIA PROM

Para este tipo de memoria basta decir que es un tipo de memoria ROM que se puede programar mediante un proceso especial, posteriormente a la fabricación.

PROM viene de PROGRAMABLE READ ONLY MEMORY (memoria programable de solo lectura).Es un dispositivo de almacenamiento solo de lectura que se puede reprogramar después de su manufactura por medio de equipo externo . Los PROM son generalmente pastillas de circuitos integrados.

Características principales de rom y prom:

·         Solo permiten la lectura.

·         Son de acceso aleatorio

·         Son permanentes o no volátiles: la información no puede borrarse

·         Tienen un ancho de palabra de 8 bits, con salida triestado.

MEMORIA EPROM

La memoria EPROM (la E viene de ERASABLE -borrable-) es una ROM que se puede borrar totalmente y luego reprogramarse, aunque en condiciones limitadas. Las EPROM son mucho más económicas que las PROM porque pueden reutilizarse.

MEMORIA EEPROM

Aún mejores que las EPROM son las EEPROM (EPROM eléctricamente borrables) también llamadas EAROM (ROM eléctricamente alterables), que pueden borrarse mediante impulsos eléctricos, sin necesidad de que las introduzcan en un receptáculo especial para exponerlos a luz ultravioleta.

Las ROM difieren de las memorias RAM en que el tiempo necesario para grabar o borrar un byte es cientos de veces mayor, a pesar de que los tiempos de lectura son muy similares.

Características principales de este tipo de memorias:

·         Solo permiten la lectura.

·         Son de tipo no volátil, aunque pueden borrarse.

·         Son de acceso aleatorio.

·         Tienen un ancho de palabra de 8 bits, con salida triestado.

MEMORIA VIRTUAL

Es una manera de reducir el acceso constante a memoria por parte del procesador.

Cuando se está ejecutando un programa, y especialmente si se tienen varias aplicaciones abiertas, el ordenador tiene que cargar en memoria RAM los valores e instrucciones de dicho/s programa/s. Pero, ¿qué ocurre cuando el programa o programas que se están ejecutando requieren más memoria de la que tiene el equipo?

En este caso, el procesador toma una parte del disco duro y la convierte en memoria RAM. Es decir, se utiliza el disco duro para almacenar direcciones de memoria, y aunque el disco duro es mucho más lento que la memoria RAM (10-15 milisegundos para un disco duro moderno frente a 70-10 nanosegundos para la memoria actual), es mucho más rápido tomar los datos en formato de memoria virtual desde el disco duro que desde las pistas y sectores donde se almacenan los archivos de cada programa.

Los distintos modelos de memoria virtual se diferencian por sus políticas de solapamiento y por los métodos que emplean en la organización de la memoria. Los más importantes son:

·         Memoria Paginada

·         Memoria Segmentada

·         Memoria de segmentos paginados

Todos estos sistemas encuentran como problema critico que los requerimientos de la memoria de algunos programas específicos son difíciles de predecir, y por ello, la fracción de memoria que debe asignarse a un programa es variable en cada caso.

Además, la política de solapamiento y compartición debe tener en cuenta ciertas características internas de los programas que, invariablemente, determinan la construcción modular y estructurada de los mismos. Dichas características son:

1.- Localización Temporal: Es la tendencia de un proceso a referirse, en un futuro próximo, a elementos utilizados recientemente. Las variables y los stacks del proceso son ejemplos de elementos que ejercitan esta característica.

2.- Localización espacial: es la tendencia que tienen los procesos a referirse a elementos próximos al espacio virtual antes recorrido.

3.- Localización Secuencial: tendencia de los procesos a referenciar elementos de la secuencia inmediata.

Para decidir que fracción de memoria principal ha de ser destruida o cargada en disco si ha sido modificada cuando se necesita leer otra, las reglas o criterios más empleados son:

·  Regla FIFO. Se destruye la fracción que más tiempo lleva en la memoria principal para dejar un hueco en esta.

·  Regla LRU. La porción que lleva más tiempo sin haber sido usada o actualizada.

· Regla LIFO. El hueco aparece en la memoria principal destruyendo o devolviendo a disco (si se ha modificado) la parte que lleva en memoria el menor tiempo.

·  Regla LFO. Deja hueco la porción que se ha pedido menos veces desde que comenzó el proceso.

·  Regla RAND. Se elige una porción al azar.

·  Regla CLOCK. Cuando se coloca un bit de uso en cada entrada de una cola FIFO y se establece un puntero que la convierte en circular. Es una aproximación al algoritmo LRU con una cola FIFO simple.

MEMORIA PAGINADA

Este método organiza el espacio virtual y el físico en bloques de tamaño fijo, llamados paginas. En un momento determinado la memoria principal contendrá algunos de los bloques lógicos. Como las distintas posiciones de un bloque lógico y uno físico están ordenadas de forma idéntica, simplemente hay que traducir el numero del bloque lógico al correspondiente del bloque físico.

Los métodos de traducción son diversos, desde el más básico de correspondencia directa al más complejo de correspondencia asociativa, donde la búsqueda se realiza mediante el contenido de una memoria asociativa que mantiene las correspondencias virtual - física más recientemente utilizadas. En la práctica se utiliza una técnica mixta en la que las páginas más recientemente empleadas se encuentran en una memoria asociativa y todas ellas en una tabla de correspondencia directa.

Método de correspondencia directa:

La dirección virtual consta de dos campos: un número de página virtual (npv) y un desplazamiento (d), dentro de la pagina indicada. Con el número de la página virtual se accede a una entrada de una tabla de páginas (TP) que proporciona la dirección física de la pagina y una serie de información complementaria.

Localizada la pagina física, el desplazamiento (d) sirve para completar la posición concreta dentro de ella.

En el momento de arranque, cada proceso activo del sistema crea en la memoria principal una Tabla de Paginas (TP) que contiene una entrada por cada posible página virtual. La configuración de las entradas de TP consta de los siguientes campos:

1.- Bit de validación (V), que, cuando esta activado, indica que la pagina existe. Si V=0, la pagina no existe y se creara cuando haga falta.

2.- Bit de Modificación (M), que indica si la pagina ha sido modificada en memoria. Este bit se utiliza en los algoritmos de reemplazo y actualización de la memoria.

3.- Código de acceso autorizado a la pagina (CAA), que puede ser de lectura, escritura y/o ejecución; son 2 bits.

4.- Dirección de la Pagina(DP), que contiene la dirección de la pagina en memoria principal o la dirección de la misma en memoria virtual o disco, según que la pagina este activa o inactiva de acuerdo con el señalizador D.

La dirección donde comienza la Tabla de Paginas (TP) esta almacenada en el Registro de Base de la Tabla de Paginas (RBTP). Para acceder, sucesivamente, a las entradas de la TP se incrementa el valor correspondiente al número de página virtual (npv) al que se guarda en RBTP.

Para calcular la dirección física en memoria se concatena DP (numero de pagina) con el desplazamiento d. Esto, si la pagina se encuentra en la memoria principal.

El problema de este método estriba en el que el número de entradas a la Tabla de Paginas (TP) ha de coincidir con el número de páginas virtuales, que es muy grande.

Método de correspondencia asociativa

En este caso se dispone de una tabla inversa en tecnología asociativa, esto es, con memoria tipo CAM, que se encarga ella misma de soportar el proceso de búsqueda a muy alta velocidad, suministrando el numero de pagina física o indicación de que la palabra lógica direccionada no se encuentra en memoria, en cuyo caso se elimina una página de la memoria principal (si no se ha modificado) y se trae la nueva al hueco que deja.

La memoria asociativa es aquella en la que se producen múltiples accesos de forma simultánea. En un simple acceso se pueden direccionar todas las posiciones que satisfacen un criterio de selección. Dado el elevado coste de las memorias asociativas, la tabla CAM suele ser incompleta, albergando el conjunto de paginas “activas” en un momento determinado. Si la CAM origina falta, hay que acudir a la TP para comprobar si está en la memoria principal y, en su caso, actualizar la CAM. Si da falta la TP, hay que proceder a un cambio de pagina entre memoria principal y CAM.

MEMORIA SEGMENTADA

Este método explota el concepto de modularidad de los programas construidos estructuralmente. Los módulos son conjuntos de informaciones que pueden tratarse independientemente y que se relacionan mediante llamadas interprocedimientos, constituyendo programas que se denominan segmentos.

La segmentación es una técnica que organiza el espacio virtual en bloques de tamaño variable, que reciben el nombre de segmentos y que se colocan en memoria mediante algoritmos de localización de espacio libre.

Los elementos de un segmento se identifican mediante la dirección del segmento al que pertenecen y un desplazamiento dentro del mismo. A semejanza con el modelo anterior, existe un Registro Base de la Tabla de Segmentos (RBTS), que direcciona el comienzo de la Tabla de Segmentos (TS), de las que existe una por cada proceso activo. Cada entrada de la Tabla de Segmentos se compone de los siguientes campos:

1.- Código de Acceso Autorizado (CAA), que indica el modo de acceso permitido al segmento.

2.- Campo de Longitud (L), que indica la longitud del segmento.

3.- Bit de Memoria/ Disco (D), que indica si el segmento esta o no en memoria.

4.- Campo de Dirección de Segmento (DS), que contiene la dirección absoluta del segmento en memoria o la posición del segmento en disco, según el valor del señalizador D.

Dada la naturaleza variable en cuanto a longitud de los segmentos, se precisa algún algoritmo que localice espacio libre para que resida el segmento apropiado, ya que no es corriente encontrar un bloque continuo en la memoria, para colocarlo completo. Estos algoritmos forman parte del mecanismo de interrupción de falta de página y los más relevantes son:

a) De mejor ajuste: Minimiza el desperdicio, seleccionando el mejor agujero o fragmento inútil en el que se puede colocar el segmento.

b) De peor ajuste: Localiza el agujero que maximiza el desperdicio al colocar el segmento.

c) De primer ajuste: Localiza el agujero con una dirección inicial inferior en el que se puede colocar el segmento.

d) Algoritmo Buddy: Utiliza técnicas de compactación de memoria, fusionando espacios inútiles, de forma que se configuran bloques continuos del tamaño adecuado.

Evidentemente los segmentos pueden ser compartidos por muchos procesos. Algunos sistemas utilizan tablas auxiliares, que apoyan la búsqueda de segmentos compartidos, como la Tabla de Segmentos Activos(TSA), que indica cuales son los segmentos activos en memoria en cada instante y la Tabla de Segmentos Conocidos(TSC), que contiene en cada entrada un nombre-segmento/numero segmento por cada segmento ya utilizado en el proceso.

Uno de los procedimientos más aceptados para la gestión de la memoria virtual es el que utilizan los minicomputadores PDP-II de Digital Equpiment Corporation. Por ej. la dirección virtual de 16 bits, se divide en un campo de 3 bits, que selecciona uno de los 8 registros basa de 12 bits existentes, y otro campo de 13 bits de desplazamiento. La dirección física de 18 bits se calcula sumando el registro base, los 7 bits de más peso del desplazamiento precedidos de cinco ceros, y concatenando al resultado los 6 bits menos peso del desplazamiento. Se logra variar la longitud de los segmentos entre 64 bytes y 8 Kbytes.

MEMORIA CON SEGMENTOS PAGINADOS

Esta memoria combina las ventajas de los dos modelos anteriores. Cada segmento se divide en páginas, de forma que, para acceder a cualquier elemento de un segmento, el sistema acude a la Tabla de Páginas (TP) de dicho segmento.

Si se aplica la técnica asociativa, para realizar la traducción, el tratamiento de las interrupciones de “fallo en el acceso” debe contemplar los siguientes aspectos:

·  Ausencia en el número de página en la memoria asociativa, en cuyo caso se obtendrá la dirección de página de la TP correspondiente.

·  Ausencia del numero de segmento en la memoria asociativa, supone una búsqueda en la Tabla de Segmentos activos (TSA), en el peor de los casos, en el directorio de ficheros del disco, para recuperar el segmento y/o los atributos.

·  En sistemas multiprogramados, la activación de un nuevo proceso que genera su propio espacio de dirección invalida las entradas anteriores de la memoria asociativa.

CONCLUSION

Este trabajo ha servido para conocer lo que son las memorias no solo superficialmente, sino como realizan su gestión dentro del computador mismo, dándose cuenta que cada una es distinta a la otra en la forma de operar, pero aun así teniendo en cuenta puntos similares.


jueves, 1 de septiembre de 2011

Algoritmos de Planificación



·         FCFS, FIFO: Por orden de arribo (first-come, first-served)

·         SPN, SRT: Primero el trabajo más corto o con menor tiempo restante (shortest process next, shortest remaining time)

·         RR: Por turno rotatorio usando quantums, i.e. interrupciones periódicas de reloj (Round-robin scheduling)

·         FB: Realimentación Multinivel, maneja prioridades dinámicas con múltiples colas penalizando a los procesos más viejos (Feedback)

Planificadores Especiales

·         Planificación de Multiprocesadores: para equipos con más de un procesador (Multiprocessing)

·         Planificación: sistemas con altos requerimientos de precisión, eficiencia, determinismo, bajo tiempo de respuesta, tareas periódicas, configuración avanzada, tolerancia a fallas, etc.

Planificación en Linux

·         Los procesos de Linux son preemptive, sin embargo el kernel es non-preemptive

·         A cada proceso se le permite ser ejecutado por un breve período de tiempo de 200ms (time-slice ó quantum)

·         Linux utiliza un algoritmo simple de planificación basado en prioridades dinámicas, i.e schedule function

·         Linux cuenta con dos tipos de prioridades: normal y real-time

·         Linux Kernel 2.4 soporta con eficiencia sistemas multiprocesadores

·         Utilerías: top, ps -au

jueves, 25 de agosto de 2011

CONCURRENCIA

El Problema de Control de Concurrencia

Cuando dos o más transacciones se ejecutan concurrentemente, sus operaciones se ejecutan en un modelo intercalado. Esto significa que las operaciones de un programa se ejecutan entre dos operaciones de otro programa. Esta intercalación puede causar que los programas no funcionen correctamente, o interfieran, y de esta manera, dejaría inconsistente a la base de datos. Esta interferencia se debe completamente a la intercalación de las operaciones, puesto que puede ocurrir a pesar de que cada programa funciona correctamente cuando se ejecuta de forma individual y no se presenta falla alguna en el sistema. El objetivo del control de concurrencia es evitar la interferencia y, por ende, los errores.

Veamos algunos ejemplos para entender cómo es que los programas pueden interferir con otros. Volviendo al ejemplo del banco, supongamos que tenemos un programa llamado Depositar, el cual deposita dinero en una cuenta.
Procedure Depositar (Cuenta, Monto)
begin
Start;
temp := Leer(Cuentas[Cuenta]);
temp := temp + Monto;
Escribir(Cuentas[Cuenta],temp);
Commit;
end

Supongamos que la cuenta 7 tiene un saldo de US$1000 y que el cliente 1 deposita US$100 en la cuenta 7 en el mismo instante en el que el cliente 2 deposita US$100000 en la cuenta 7. Cada uno de los clientes llama al procedimiento Depositar de tal manera que se crea una transacción para realizar su actualización. La ejecución concurrente de éstos depósitos produce una secuencia de lecturas y escrituras en la base de datos, tales como
Leer1(Cuentas[7]) devuelve el valor de US$1000
Leer2(Cuentas[7]) devuelve el valor de US$1000
Escribir2(Cuentas[7], US$101000
Commit2
Escribir1(Cuentas[7], US$1100)
Commit1
El resultado de esta ejecución es que la Cuenta[7] contiene US$1100. A pesar que el depósito del cliente 2 concluyó satisfactoriamente, la interferencia con la ejecución de Depósito del cliente 1 causó que el depósito del cliente 2 se pierda. Este fenónemo de actualización perdida ocurre cuando dos transacciones, mientras intentan modificar un dato, ambas leen el valor antiguo del elemento antes que ninguna haya modificado su valor.

Otro problema del control de concurrencia se ilustra con el siguiente programa, llamado ImprimirSuma, el cual imprime la suma de los saldos de dos cuentas.
Procedure ImprimirSuma(Cuenta1, Cuenta2)
begin
Start;
temp1 := Leer(Cuentas[Cuenta1]);
output(temp1);
temp2 := Leer(Cuentas[Cuenta2]);
output(temp2);
temp1 := temp1 $+$ temp2;
output(temp1);
Commit;
end

Supongamos que las cuentas 8 y 9 tiene un saldo de US$200 cada una, y que el cliente 3 imprime los saldos de las cuentas 8 y 9 (utilizando ImprimirSuma) en el mismo instante en el que el cliente 4 transfiere US$100 de la cuenta 8 a la cuenta 9 (utilizando Transferir). La ejecución concurrente de estas dos transacciones puede originar la siguiente ejecución de operaciones de la base de datos.
Leer4(Cuentas[8]) devuelve el valor de US$200
Escribir4(Cuentas[8], US$100)
Leer3 (Cuentas[8]) devuelve el valor de US$100
Leer3 (Cuentas[9]) devuelve el valor de US$200
Leer4 (Cuentas[9]) devuelve el valor de US$200
Escribir4 (Cuentas[9], US$300)
Commit4
Commit3

El procedimiento Transferir interfiere con ImprimirSuma en esta ejecución, causando que ImprimirSuma imprima el valor de US$300, la cual no es la suma correcta de los saldos de las cuentas 8 y 9. El procedimiento ImprimirSuma no capturó los US$100 en tránsito de la cuenta 8 a la cuenta 9. Es importante recalcar que, a pesar de la interferencia, Transferir todavíia asigna los valores correctos en la base de datos.

Este tipo de interferencia se denomina análisis inconsistente que ocurre cuando una transacción lee un dato antes que otra transacción lo actualice y lea otro dato después que la misma transacción lo ha actualizado. Es decir, la extracción (lectura) de los datos sólo percibe algunos de los resultados de la transacción de actualización.

Para conseguir el objetivo del control de concurrencia se utiliza un sincronizador. Un sincronizador es un programa (o una colección de ellos) que controla la ejecución concurrente de las transacciones; su función radica en ordenar las operaciones que forman parte de las transacciones que se requieren ejecutar concurrentemente, de tal manera que la ejecución resultante sea correcta. Usando tres operaciones básicas (ejecución, rechazo y retraso de una operación) el sincronizador puede controlar el orden en el cual las operaciones son ejecutadas por el Administrador de Datos (DM). Cuando éste recibe una operación de la transacción (mediante el TM), usualmente trata de pasarla al DM inmediatamente, si no produce alguna ejecución incorrecta. Si el sincronizador decide que la ejecución de la operación puede producir resultados incorrectos, puede o retrasarla (en caso de que pueda procesar correctamente la operación más adelante) o rechazarla (si no es posible procesarla en el futuro de tal manera que produzca resultados correctos).

Por ejemplo, retomemos la ejecución concurrente de dos transacciones Depositar, que depositan US$100 y US$100,000 en la cuenta 7
Leer1 (Cuentas[7]) devuelve el valor de US$1000
Leer2 (Cuentas[7]) devuelve el valor de US$1000
Escribir2 (Cuentas[7], US$101000)
Commit2
Escribir1(Cuentas[7], US$1100)
Commit1

Para evitar esta ejecución incorrecta, un sincronizador debe decidir rechazar Escribir1 provocando que la transacción T1 sea cancelada. En este caso, el usuario o el Administrador de Transacciones puede reenviar T1 , la cual ahora se puede ejecutar sin interferir con T2. Como otra alternativa, el sincronizador puede prevenir la ejecución anterior retrasando Leer2 hasta que reciba y procese Escribir1 y de esta forma evitando que se rechace Escribir1 más adelante.

Por lo tanto, un DBMS que controla la ejecución concurrente de sus transacciones tiene una estructura como la siguiente :

SERIABILIDAD


Teoría de Seriabilidad

En los ejemplos anteriores, los errores fueron causados por la ejecución intercalada de operaciones de transacciones diferentes. Los ejemplos no muestran todas las posibles formas en las que la ejecución de dos transacciones pueden interferir, pero sí ilustran dos de los problemas que surgen con frecuencia debido a la intercalación. Para evitar estos problemas, se deben controlar las intercalaciones entre transacciones.

Una forma de evitar los problemas de interferencia es no permitir que las transacciones se intercalen. Una ejecución en la cual ninguna de dos transacciones se intercala se conoce como serial. Para ser más precisos, una ejecución se dice que es serial si, para todo par de transacciones, todas las operaciones de una transacción se ejecutan antes de cualquier operación de la otra transacción. Desde el punto de vista del usuario, en una ejecución serial se ve como si las transacciones fueran operaciones que el DBS procesa atómicamente. Las transacciones seriales son correctas dado que cada transacción es correcta individualmente, y las transacciones que se ejecutan serialmente no pueden interferir con otra.

Si el DBS procesara transacciones serialmente, significaría que no podría ejecutar transacciones concurrentemente, si entendemos concurrencia como ejecuciones intercaladas. Sin dicha concurrencia, el sistema usaría sus recursos en un nivel relativamente pobre y podría ser sumamente ineficiente.

Una solución puede ser ampliar el rango de ejecuciones permisibles para incluir aquellas que tienen los mismos efectos que las seriales. Dichas ejecuciones se conocen como serializables. Entonces, una ejecución es serializable si produce el mismo resultado y tiene el mismo efecto sobre la base de datos que alguna ejecución serial de las mismas transacciones. Puesto que las transacciones seriales son correctas, y dado que cada ejecución serializable tiene el mismo efecto que una ejecución serial, las ejecuciones serializables también son correctas.

Las ejecuciones que ilustran la actualización perdida y el análisis inconsistente no son serializables. Por ejemplo, ejecutando las dos transacciones de Depositar serialmente, en cualquier orden, da un resultado diferente al de la ejecución intercalada que pierde una actualización, por lo tanto, la ejecución intercalada no es serializable. Similarmente, la ejecución intercalada de Transferir e ImprimirSuma tiene un efecto diferente a los de cada ejecución serial de las dos transacciones, y por ello no es serializable.

Aunque éstas dos ejecuciones intercaladas no son serializables, muchas otras sí lo son. Por ejemplo, consideremos la siguiente ejecución intercalada de Transferir e ImprimirSuma. Esta ejecución tiene el mismo efecto que la ejecución serial de Transferir seguida de ImprimirSuma por lo tanto es serializable.

Leer4 (Cuentas[8]) devuelve el valor de US$200
Escribir4 (Cuentas[8], US$100)
Leer3 (Cuentas[8]) devuelve el valor de US$100
Leer4 (Cuentas[9]) devuelve el valor de US$200$
Escribir4 (Cuentas[9], US$300)
Commit4
Leer3 (Cuentas[9]) devuelve el valor de US$300
Commit3



La teoría de Seriabilidad es una herramienta matemática que permite probar si un sincronizador trabaja o no correctamente. Desde el punto de vista de la teoría de Seriabilidad, una transacción es una representación de una ejecución de operaciones de lectura y escritura y que indica el orden en el que se deben ejecutar estas operaciones. Además, la transacción contiene un Commit o un Abort como la última operación para indicar si la ejecución que representa terminó con éxito o no. Por ejemplo, la ejecución del siguiente programa

Procedure P

begin

Start;
temp := Leer(x);
temp := temp + 1;
Escribir(x, temp);
Commit;

end



puede ser presentado como r1[x] -› w1[x] -› c1. Los subíndices identifican esta transacción particular y la distinguen de cualquier otra transacción que acceda al mismo dato. En general, usaremos r1[x] (o w1[x] para denotar la ejecución de Leer (o Escribir) ejecutado por la transacción T1 sobre el dato x.

Cuando se ejecuta concurrentemente un conjunto de transacciones, sus operaciones deben estar intercaladas. La manera de modelar esto es usando una estructura llamada historia. Una historia indica el orden en el que se deben ejecutar las operaciones de las transacciones en relación a otras. Si una transacción Ti especifica el orden de dos de sus operaciones, estas dos operaciones deben aparecer en ese mismo orden en cualquier historia que incluya a Ti. Además, es necesario que una historia especifique el orden de todas las operaciones conflictivas que aparezcan en ella.

Se dice que dos operaciones están en conflicto si ambas operan sobre el mismo dato y al menos una de ellas es una operación de escritura (Escribir). Por lo tanto, Leer(x) está en conflicto con Escribir(x), mientras que Escribir(x) está en conflicto tanto con Leer(x) como con Escribir(x). Si dos operaciones están en conflicto, es muy importante su orden de ejecución. Consideremos las siguientes transacciones

T1 = r1[x] -› w1[x] -› c1
T3 = r3[x] -› w3[y] -› w3[x] -› c3
T4 = r4[y] -› w4[x] -› w4[y] -› w4[z] -› c4



Una historia completa sobre T1, T3, T4 es

H1 = r4[y] r1[x] w1[x] c1 w4[x] r3[x] w4[y] w3[y] w4[z] w3[x] c4 c3