domingo, 22 de agosto de 2010

Memoria Principal


La memoria principal es uno de los principales componentes del microcomputador la tuvo que pasar por un largo proceso de evolución para llegar a ser lo que es en la actualidad, gracias a la memoria principal podemos realizar utilizar múltiples operaciones simultáneamente esto se debe también en gran medida a la memoria virtual que ayuda a que la memoria principal guarde solo la información que es requerida y la que no lo es, sea soportada por la memoria virtual.
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.
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.

Es la memoria de acceso aleatoria, la computadora utiliza la memoria de acceso aleatorio para almacenar los datos e instrucciones temporalmente, para ejecutar las tareas; de esta manera la CPU puede acceder más rápidamente a los datos e instrucciones. Es una memoria en la que se puede leer e escribir información pero esta memoria es volátil se pierde la información una ves se le deja de suministrar energía eléctrica.

TRANSFORMACIÓN CHIP

La memoria empieza en la playa aunque parezca increíble, la arena de la playa contiene silicio la cual es un componente primario para la fabricación de semiconductores, la cual se derrite, se corta y se pule en wafers de silicio; en la fabricación de chips, los patrones de circuitos se imprimen una ves terminado el proceso los chips se prueban cortan, después de esto se procede a la etapa de enlace este proceso hace la conexión entres los chips y las guías de estaño o oro las pines, después se empacan en gabinetes de plástico o de de cerámica sellados.

TRANSFORMACIÓN A MÓDULOS DE MEMORIA

Aquí se utiliza los componentes como el PCB, los chips de la memoria, las resistencias y los capacitadores su proceso de fabricación es muy similar a los de los chips, se crean trazos de cobre en la superficie de la tarjeta, sistemas automatizados realizan el montaje en la superficie y perforación, se realiza la soldadura, luego pasan por una inspección.

Características de la memoria principal (RAM)

Un sistema de memoria se puede clasificar en función de muy diversas características.
Entre ellas se pueden destacar las siguientes: localización de la memoria,
capacidad, método de acceso y velocidad de acceso. En el caso de la
memoria RAM (Random Access Memory, también denominada memoria principal
o primaria), se puede realizar la siguiente clasificación:

Localización. Interna (se encuentra en la placa base).
Capacidad. Hoy en día, no es raro encontrar ordenadores PC equipados con
64 ó 128 MB de memoria RAM.

Método de acceso. La RAM es una memoria de acceso aleatorio. Esto significa
que una palabra o byte se puede encontrar de forma directa, sin tener en cuenta
los bytes almacenados antes o después de dicha palabra (al contrario que
las memorias en cinta, que requieren de un acceso secuencial). Además, la
RAM permite el acceso para lectura y escritura de información.

Velocidad de acceso. Actualmente se pueden encontrar sistemas de memoria
RAM capaces de realizar transferencias a frecuencias del orden de los Gbps
(gigabits por segundo).

También es importante anotar que la RAM es una memoria volátil, es decir,
requiere de alimentación eléctrica para mantener la información. En otras palabras,
la RAM pierde toda la información al desconectar el ordenador.

MEMORIA VIRTUAL


La memoria virtual es una técnica para proporcionar la simulación  de  un  espacio de  memoria mucho mayor que la memoria física de una máquina. Esta "ilusión" permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física.

        La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de  almacenamiento  rápido  en  disco  duro.  Así en  cualquier  momento  el  espacio  de direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.

             Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de paginación).
            La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales. Y como en un instante dado, en la memoria sólo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria. Es más, se ahorra tiempo, porque los fragmentos que no se usan no se cargan ni se descargan de la memoria. Sin embargo, el S.O debe saber cómo gestionar este esquema.  
            La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física. 
       En un estado estable, prácticamente toda la memoria principal estará ocupada con fragmentos de procesos, por lo que el procesador y el S.O tendrán acceso directo a la mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un fragmento, deberá expulsar otro. Si expulsa un fragmento justo antes de ser usado, tendrá que traer de nuevo el fragmento de manera casi inmediata. Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginación: donde el procesador consume más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el S.O intenta adivinar, en función de la historia reciente, qué fragmentos se usarán con menor probabilidad en un futuro próximo.

Los argumentos anteriores se basan en el principio de cercanía o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. Por lo tanto, es válida la suposición de que, durante cortos períodos de tiempo, se necesitarán sólo unos pocos fragmentos de un proceso.
Una manera de confirmar el principio de cercanía es considerar el rendimiento de un proceso en un entorno de memoria virtual. 

El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar. Para que la memoria virtual sea práctica y efectiva, se necesitan dos ingredientes. Primero, tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software para gestionar el movimiento de páginas o segmentos entre memoria secundaria y memoria principal.

    Justo después de obtener la dirección física y antes de consultar el dato en memoria principal se busca en memoria-cache, si esta entre los datos recientemente usados la búsqueda tendrá éxito, pero si falla, la memoria virtual consulta memoria principal , ó,  en el peor de los casos se consulta de disco (swapping).

  Memoria Virtual = Memoria Física + Area de Swapping en Disco

PAGINACION

El término memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas.

Cada proceso tiene su propia tabla de páginas y cuando carga todas sus páginas en la memoria principal, se crea y carga en la memoria principal una tabla de páginas. Cada entrada de la tabla de páginas contiene el número de marco de la página correspondiente en la memoria principal. Puesto que sólo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la página correspondiente está presente (P) en la memoria principal o no. Si el bit indica que la página está en la memoria, la entrada incluye también el número de marco para esa página.

Otro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargó en la memoria principal. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente.

Estructura de la tabla de páginas


El mecanismo básico de lectura de una palabra de la memoria supone la traducción por medio de la tabla de páginas de una dirección virtual o lógica, formada por un número de página y un desplazamiento, a una dirección física que está formada por un número de marco y un desplazamiento. 

Con la memoria virtual, la CPU produce direcciones virtuales que son traducidas por una combinación de hardware y software a direcciones físicas, pues pueden ser utilizadas para acceder a memoria principal. Este proceso se denomina correspondencia de memoria o traducción de direcciones. Actualmente los dos niveles de la jerarquía de memoria controlados por la memoria virtual son las DRAM y los Discos magnéticos.
Puesto que la tabla de páginas es de longitud variable, en función del tamaño del proceso, no es posible suponer que quepa en los registros.

La figura anterior sugiere una implementación en hardware de este esquema. Cuando se está ejecutando un proceso en particular, la dirección de comienzo de la tabla de páginas para este proceso se mantiene en un registro. El número de página de la dirección virtual se emplea como índice en esta tabla para buscar el número de marco correspondiente. Este se combina con la parte de desplazamiento de la dirección virtual para generar la dirección real deseada.

La mayoría de los esquemas de memoria virtual almacenan las tablas de páginas en la memoria virtual en vez de en la memoria real. Esto significa que estas tablas de páginas están también sujetas a paginación, de la misma forma que las otras páginas.
  
   Cuando un proceso se está ejecutando, al menos una parte de su tabla de páginas debe estar en la memoria principal, incluyendo la entrada de la tabla de páginas para la página actualmente en ejecución. Algunos procesadores usan un esquema de dos niveles para organizar grandes tablas de páginas, donde hay un directorio de páginas en el que cada entrada señala a una tabla de páginas. Así pues, si la longitud del directorio de páginas es X, y la longitud máxima de una tabla de páginas es Y, un proceso puede estar formado por hasta X x Y páginas. Normalmente, la longitud máxima de una tabla de páginas está limitada a una página. Por ejemplo, el procesador Pentium utiliza este método.

Un enfoque alternativo al uso de tablas de páginas de uno o dos niveles es el uso de una estructura de tabla de páginas invertida. Con este método, la parte del número de página de una dirección virtual se traduce a una tabla de dispersión por medio de una función de dispersión simple. La tabla de dispersión contiene un puntero a la tabla de páginas invertida, que contiene a su vez las entradas de la tabla de páginas.
Con esta estructura, hay una entrada en la tabla de dispersión y en la tabla de páginas invertida por cada página de memoria real en lugar de una por cada página virtual. Así pues, se necesita una parte fija de la memoria real para las tablas, sin reparar en el número de procesos o de páginas virtuales soportados. La técnica de dispersión genera normalmente cadenas cortas, de dos a tres entradas cada una.

Buffer de traducción adelantada

Cada referencia a la memoria virtual puede generar dos accesos a la memoria: uno para obtener la entrada de la tabla de páginas correspondientes y otro para obtener el dato deseado.

Un esquema sencillo de memoria virtual podría tener el efecto de doblar el tiempo de acceso a la memoria. Para solucionar este problema, la mayoría de los esquemas de memoria virtual hacen uso de una cache especial para las entradas de la tabla de páginas, llamada generalmente buffer de traducción adelantada (TLB,Translation Lookaside Buffer) que contiene aquellas entradas de la tabla de páginas usadas hace menos tiempo.

La organización de hardware de paginación resultante se muestra en la figura siguiente.

Dada una dirección virtual, el procesador examinará primero la TLB. Si la entrada de la tabla de páginas buscada está presente se obtiene el número de marco y se forma la dirección real. Si no se encuentra, el procesador emplea el número de página como índice para buscar en la tabla de páginas del proceso y examinar la entrada correspondiente de la tabla de páginas. Si no se encuentra activo el bit de presencia, es que la página está en la memoria principal y el procesador puede obtener el número de marco de la entrada de la tabla de páginas para formar la dirección real. El procesador, además, actualiza la TLB para incluir esta nueva entrada de la tabla de páginas. Si el bit de presencia no está activo, es que la página buscada no está en la memoria principal y se produce un fallo en el acceso a la memoria, llamado fallo de página.

Existe una serie de detalles adicionales sobre la organización real de la TLB. Puesto que la TLB contiene sólo algunas de las entradas de la tabla de páginas completa, no se puede indexar simplemente la TLB por el número de páginas. Cada entrada debe incluir el número de página, además de la entrada completa a la tabla de páginas. El procesador estará equipado con un hardware que permita consultar simultáneamente varias entradas de la TLB para determinar si hay coincidencia en el número de página. Esta técnica se denomina correspondencia asociativa y contrasta con la correspondencia directa, que se emplea para buscar en la tabla de páginas de la figura de Búsqueda directa y asociativa. El diseñador de la TLB también debe considerar la forma en que se organiza las entradas en la TLB y que entrada reemplazar cuando se introduce una nueva.

Por último, el mecanismo de la memoria virtual debe interactuar con el sistema de cache de la memoria principal. La de traducción con buffer ilustra esta interacción. Una dirección virtual estará formada por el número de página más el desplazamiento. Una vez que se ha generado la dirección real, que está en forma de etiqueta(formada por los bits más significativos de la dirección real) y un resto, se consulta la cache para ver si está presente el bloque que contiene dicha palabra. Si lo está, es devuelto a la CPU. Si no, se toma la palabra de la memoria principal.

Tamaño de Página


Hay varios factores que considerar. Uno es la fragmentación interna. Sin duda, cuanto menor sea el tamaño de página, menor será la cantidad de fragmentación interna. Para optimizar el uso de la memoria principal, es positivo reducir la fragmentación interna. Por otro lado, cuanto menor sea la página, mayor será el número de páginas que se necesitan por proceso. Un número mayor de páginas por proceso significa que las tablas de páginas que se necesitan por proceso serán mayores. Así pues, pueden suceder dos fallos de página para una única referencia a la memoria: primero, para traer la parte necesaria de la tabla de páginas y, segundo, para traer la página del proceso.

Se puede considerar  el efecto que tiene el tamaño de página en el porcentaje de fallos de página y se basa en el principio de cercanía. Si el tamaño de página es muy pequeño, normalmente estarán disponibles en la memoria principal un gran número de páginas para cada proceso. Después de un tiempo, todas las páginas de la memoria contendrán parte de las referencias más recientes del proceso y la tasa de fallos de página será menor. Cuando de incrementa el tamaño de la página, cada página individual contendrá posiciones cada vez más distantes de cualquier referencia reciente; se atenúa el efecto de principio de cercanía y comienza a aumentar la tasa de fallos de página, que comenzará a bajar cuando, finalmente, el tamaño de página se aproxime al tamaño de todo el proceso. Cuando una sola página abarca todo el proceso, no hay fallos de página.

Una dificultad más es que la tasa de fallos de página viene determinada también por el número de marcos asignados a un proceso. Por último el diseño del tamaño de página está relacionado con el tamaño de la memoria física principal. Al mismo tiempo que la memoria principal se hace mayor, el espacio de direcciones que emplean las aplicaciones también crece. Esta tendencia es más evidente en las computadoras personales y estaciones de trabajo, donde las aplicaciones se hacen cada vez más complejas.

SEGMENTACION

Implicaciones de la memoria virtual

La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (número de segmento, desplazamiento).
Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:

1.Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuán larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.

2. Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver a montar el conjunto de programas por completo.

3.Se presta a la compartición entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.

4.Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrá asignar los permisos de acceso de la forma adecuada.

Organización


En el estudio de la segmentación simple, se llegó a la conclusión de que cada proceso tiene su propia tabla de segmento y que, cuando todos los segmentos se encuentran en la memoria principal, la tabla de segmentos del proceso se crea y se carga en la memoria. Cada entrada de la tabla contiene la dirección de comienzo del segmento correspondiente de la memoria principal, así como su longitud. La misma estructura se necesitará al hablar de un esquema de memoria virtual basado en la segmentación donde las entradas de la tabla de segmentos pasan a ser más complejas. Puesto que sólo algunos de los segmentos de un proceso estarán en la memoria principal, se necesita un bit en cada entrada de la tabla de segmentos para indicar si el segmento correspondiente está presente en la memoria principal. Si el bit indica que el segmento está en la memoria, la entrada incluye también la dirección de comienzo y la longitud del segmento.

Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargó por última vez en la memoria principal. Si no ha habido cambios, no será necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente.

PAGINACION Y SEGMENTACION COMBINADAS

Tanto la paginación como la segmentación tienen sus ventajas. La paginación elimina la fragmentación externa y de este modo, aprovecha la memoria principal de forma eficiente. Además, puesto que los fragmentos que se cargan y descargan de la memoria principal son de tamaño fijo e iguales, es posible construir algoritmos se gestión de memoria sofisticados que aprovechen mejor el comportamiento de los programas. La segmentación tiene las ventajas antes citadas, incluida la capacitación de gestionar estructuras de datos que puedan crecer, la modularidad y el soporte de la compartición y la protección. Para combinar las ventajas de ambas, algunos sistemas están equipados con hardware del procesador y software del S.O.

En un sistema con paginación y segmentación combinadas, el espacio de direcciones de un usuario se divide en varios segmentos según el criterio del programador. Cada segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma longitud que un marco de memoria principal. Si el segmento tiene menor longitud que la página, el segmento ocupará sólo una página. Desde el punto de vista del programador, una dirección lógica todavía está formada por un número de segmento y un desplazamiento en el segmento. Desde el punto de vista de sistema, el desplazamiento del segmento se ve como un número de página dentro del segmento y un desplazamiento dentro de la página.

La entrada de la tabla de segmentos contiene la longitud del segmento. Los bits de presencia y modificación no son necesarios, puesto que estos elementos se gestionan en la página. Pueden usarse otros bits de control para comparición y protección. La entrada de la tabla de páginas es, la misma que se usa en un sistema de paginación pura. Cada número de página se convierte en el número de marco correspondiente si la página está presente en la memoria. El bit de modificación indica si se necesita escribir la página en el disco cuando se asigna el marco a otra página.

PROTECCION Y COMPARTIMIENTO


     Un proceso de usuario sólo puede acceder memoria localizada en su espacio de direccionamiento virtual y un espacio de memoria compartido para sus procesos-hijo.





    Habilidad de separar completamente las tareas, al poder dar a cada tarea un espacio de direcciones virtuales diferentes. Esto se hace dando un mapa de traducción de direcciones virtuales diferente a cada tarea.


    Los otros mecanismos funcionan dentro de una tarea: para proteger al propio sistema operativo de la intrusión por parte de esa tarea, y al uso de registros especiales del procesador e instrucciones reservadas únicamente al sistema operativo.


    Sólo un proceso kernel puede controlar y acceder cualquier espacio de direccionamiento.

Además la segmentación se presta a la implementación de políticas de protección, puesto que cada entrada de la tabla de segmentos incluye la longitud, además de la dirección base, un programa no podrá acceder por descuido a una posición de la memoria principal más allá de los límites de un segmento.



Para conseguir la compartición, es posible que un segmento se referencia desde las tablas de segmentos de más de un proceso. Este mismo mecanismo es válido en un sistema de paginación.



     Se pueden ofrecer también mecanismos más sofisticados. Un esquema habitual consiste en usar una estructura de anillo de protección donde los anillos interiores gozan de mayores privilegios que los anillos externos. Normalmente, el anillo 0 está reservado para las funciones del núcleo del S.O y las aplicaciones están situadas a un nivel más alto. Algunos servicios del S.O pueden ocupar un anillo intermedio. Los principios básicos del sistema de anillos son los siguientes:



1.       1.          Un programa puede acceder sólo a datos que estén en el mismo anillo o en un anillo de menor privilegio.


2.       2.          Un programa puede hacer llamadas a servicios que residan en el mismo anillo o en anillos más privilegiados.

SOFTWARE DEL SISTEMA OPERATIVO


El diseño del gestor de memoria en un sistema operativo depende de tres áreas fundamentales de decisión:
v  v      Si se emplean o no técnicas de memoria virtual.
v  v      El uso de paginación, segmentación o ambas.
v  v      Los algoritmos empleados para los problemas de la gestión de memoria.

Las decisiones tomadas en las dos primeras áreas dependen de la plataforma de hardware disponible. Las decisiones del tercer punto (los algoritmos) son del dominio del software del S.O.. En las políticas, elementos claves de diseño, que luego se desarrollarán, el punto clave es el rendimiento: se busca minimizar el porcentaje de fallos de página. Los fallos de página originan una considerable sobrecarga en el software. Como mínimo, la sobrecarga incluye la decisión que el S.O. debe tomar sobre las páginas residentes o páginas que se deben reemplazar y la E/S de intercambiar páginas. Además, el S.O. debe planificar la ejecución de otro proceso durante el intercambio de página, dando lugar a un cambio de proceso.
Los elementos clave del diseño son los desarrollados a continuación:

POLÍTICAS DE LECTURA (FETCH)


Es la que está relacionada con la decisión de cuándo se debe cargar una página en la memoria principal. Las dos alternativas más comunes son:

Ø      Paginación por demanda: Se trae una página a la memoria principal sólo cuando se hace referencia a una posición en dicha página. 

Ø      Paginación previa: Se cargan otras páginas distintas a las demandadas debido a un fallo de página.

Esta política no es efectiva si la mayoría de las páginas extra que se traen no se referencian.
La utilidad no ha sido demostrada.